2010-07-09 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
4         it can now eliminate more than just bounds checks.
5
6         * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
7         an extra 'fault' argument.
8
9         * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
10         later.
11
12         * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
13         decomposition.
14
15         * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
16         no longer generated when LLVM is used.
17
18         * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
19
20 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
21
22         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
23
24 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
25
26         * driver.c: Moonlight: Force line buffering for stdout.
27
28 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
29
30         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
31         are only callable using invoke.
32
33 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
34
35         * mini-llvm.c (process_bb): Use emit_load () in one more place.
36
37         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
38         MONO_LLVM=xxx is actually usable.
39
40         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
41         since LLVM might be able to hoist them out of loops.
42         (emit_store): Ditto.
43
44 2010-07-08  Neale Ferguson <neale@sinenomine.net>
45
46         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
47         in typeload-unaligned test.
48
49 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
50
51         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
52
53         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
54         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
55         generic trampolines+rgctx fetch trampolines.
56
57 2010-07-08  Geoff Norton  <gnorton@novell.com>
58
59         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
60
61 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
62
63         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
64
65         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
66         is not defined in the LLVM case to keep the imt arg alive.
67
68 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
69
70         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
71         functions, now its 'llvm_<FOO>_trampoline'.
72
73         * method-to-ir.c (emit_imt_argument): Fix llvm support.
74
75         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
76         cannot be passed in the same call.
77
78         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
79         register to be the same as the RGCTX register, the two can't be used together on
80         the same call.
81
82 2010-07-05  Miguel de Icaza  <miguel@novell.com>
83
84         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
85         that allows the user to force the VM to use llvm or sgen.
86
87 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
88
89         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
90         before processing the exception on PPC too.
91
92         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
93
94         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
95         'this' is always passed as the first argument, before the vtype ret arg. This
96         simplifies get_this_arg_reg () and LLVM integration.
97
98 2010-07-05  Martin Baulig  <martin@ximian.com>
99
100         * exceptions-x86.c (mono_arch_handle_exception): Port this to
101         Windows; apply my patch from r159782 in the mono-2-6 branch.
102
103 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
104
105         * Makefile.am: Don't build the debug assembler files if we're building without
106         debugger support.
107
108 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
109
110         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
111
112 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
113
114         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
115         length.
116
117         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
118         regs [ARMREG_FP] instead.
119
120         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
121
122         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
123         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
124
125         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
126
127         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
128
129         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
130
131         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
132         without IMT_REG defined (ARM).
133
134         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
135         the trampolines.
136
137 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
138
139         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
140
141 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
142
143         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
144         definitions to match their declarations and vice-versa.
145
146 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
147
148         * Makefile.am (common_sources): Add mini-llvm.h.
149
150         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
151
152 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
153
154         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
155         compiling.
156
157 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
158
159         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
160         implemt the option of loading the llvm backend from a module so
161         that we can have a single binary and the bloat from llvm is
162         only experienced when it is actually loaded.
163
164 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
165
166         * mini-llvm.c: remove direct access to mono_defaults.
167
168 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
169
170         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
171         a no-op.
172
173         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
174
175         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
176         is now mono_arch_nullify_class_init_trampoline ().
177         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
178         opcodes, they are no longer needed.
179
180         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
181         now mono_arch_nullify_class_init_trampoline ().
182         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
183         opcodes, they are no longer needed.
184
185         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
186         vtable on platforms which support it.
187
188         * driver.c: Print the full LLVM version we are compiled against in --version.
189
190         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
191         a bit better. Decode nesting information to fix eh support for llvm+aot.
192
193         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
194         methods.
195
196         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
197
198         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
199         is always passed as the first argument, before the vtype ret arg. This simplifies
200         get_this_arg_reg () and LLVM integration.
201
202 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
203
204         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
205         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
206         most of the vcall specific code to mono_vcall_trampoline () from
207         common_call_trampoline ().
208
209 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
210
211         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
212         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
213         if the callsite is patched.
214
215         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
216         the llvm branch.
217
218         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
219         the trampoline in the xdebug info.
220
221         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
222         as well.
223
224 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
225
226         * mini-llvm.c: Fix a few problems exposed by make check.
227
228 2010-06-25  Mark Probst  <mark.probst@gmail.com>
229
230         * mini-trampolines.c (common_call_trampoline): An ugly hack to
231         work around a potentially very hard to fix problem with inflating
232         generic methods.
233
234 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
235
236         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
237         problem has been fixes.
238
239 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
240
241         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
242
243         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
244         It might be be better to define a MonoGCJitOptions structure later and have the
245         GC return that.
246
247         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
248
249         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
250
251         * debugger-agent.c (get_objref): Implement support for sgen.
252
253         * driver.c: Remove the unused gc_wrapper.h include.
254
255         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
256         implementation.
257
258 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
259
260         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
261
262         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
263         in MonoCompile.
264
265         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
266         instead.
267
268 2010-06-23  Miguel de Icaza  <miguel@novell.com>
269
270         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
271         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
272
273         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
274         it only for Boehm diagnostics.
275
276         * Makefile.am: Make the file a bit more consistent.
277
278         * debug-debugger.c: Wrap the entire file with an #ifdef
279         MONO_DEBUGGER_SUPPORTED to simplify the build.
280
281         * Makefile.am: Fix the opcodes build issue by including the
282         source, not by including the .lo file directly
283
284         Always bring the MDB sources into the build, to drop the
285         dependency on the AM_CONDITIONAL from configure.in as the hard
286         debugger supports Boehm, but not Sgen, this simplifies the build. 
287
288         * Renamed the *.s files into *.S
289
290 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
291
292         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
293         wb for now on 64bits systems while issues with valuetype returns
294         are not fixed.
295
296 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
297
298         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
299         passes by calling createStandardFunctionPasses ().
300
301 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
302
303         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
304
305 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
306
307         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
308         MONO_INST_FAULT.
309
310         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
311         allow better optimization if the OP_LDADDR which caused the flag to be set was
312         optimized away.
313
314         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
315
316         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
317         the type token.
318
319         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
320
321         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
322
323 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
324
325         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
326         to handle the code sequence generated for non-near calls. Fixes #616056.
327
328 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
329
330         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
331
332         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
333
334         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
335         nesting clause too.
336         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
337         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
338         trampoline which saves the context, so changes made to callee saved registers in
339         finally clauses are visible to a nesting catch clause.
340
341         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
342
343         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
344         in LLVM compiled code.
345         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
346         the finally handler has ran.
347
348         * mini.h (ResumeState): New structure containing information required to resume
349         exception handling after executing LLVM compiled finally clauses.
350
351         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
352         bit, by passing all the registers as one argument.
353
354 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
355
356         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
357         to avoid an assert.
358
359 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
360
361         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
362
363         * aot-compiler.c aot-runtime.c: Fix LLVM support.
364
365         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
366         pad, branch to a new bblock instead.
367
368         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
369         orig_method.
370
371         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
372
373         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
374
375 2010-06-17  Geoff Norton  <gnorton@novell.com>
376
377         * mini-arm.h:
378         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
379         can be used by sgen.
380
381 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
382
383         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
384
385         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
386         fails.
387
388         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
389         the ip done by throw_exception (), it is not needed for corlib exceptions.
390
391 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
392
393         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
394         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
395         of size > 5 words. This support fast barriers for value types up to
396         256/512 bytes which     beyond that the copying itself is the major issue.
397
398         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
399         for gsharing, so use it.
400
401         This eliminate all calls to mono_value_copy from managed code in
402         gmcs, fsharp and ipy.
403
404         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
405
406         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
407         performance kept
408
409         * mini.c (mini_init): Register new icall.
410
411 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
412
413         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
414         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
415
416 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
417
418         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
419         value types as the overhead is huge. Manually expand it up to 5 words to
420         avoid code bloat.
421
422         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
423         is an exception that performance is dominated by mono_value_copy.
424
425         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
426
427 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
428
429         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
430         trampolines on x86, since those have their own cconv.
431
432         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
433         exception trampolines.
434
435         * tramp-x86.c: Add xdebug info for a few trampolines.
436
437         * mini-llvm.c: Set the name of the arguments.
438
439         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
440         using a block address if using the LLVM mono branch.
441
442         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
443         trampolines.
444
445 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
446
447         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
448
449         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
450
451         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
452
453         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
454
455         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
456         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
457         to identify the vtable slot address plus the method which needs to be compiled.
458
459         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
460         using llvm.
461
462         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
463         'this' is always passed as the first argument, before the vtype ret arg. This
464         simplifies get_this_arg_reg () and LLVM integration.
465
466         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
467         the latest changes.
468
469         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
470         these trampolines.
471
472         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
473
474         * mini-llvm.c: Fix compilation with llvm 2.6.
475
476         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
477
478         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
479         defined.
480
481         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
482         is always passed as the first argument, before the vtype ret arg. This simplifies
483         get_this_arg_reg () and LLVM integration.
484
485 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
486
487         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
488
489         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
490         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
491         translate into much nicer code.
492
493 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
494
495         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
496         parameter index information. Use this to simplify a lot of code.
497
498         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
499
500 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
501
502         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
503         to fix infinite generic recursion. Fixes #612702.
504
505 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
506
507         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
508         imt trampoline per imt slot when using LLVM.
509
510 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
511
512         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
513
514 2010-06-09  Levi Bard  <levi@unity3d.com>
515
516         * debugger-agent.c: Clear unloaded types on appdomain unload.
517
518 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
519
520         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
521         Fixes #612206.
522
523         * exceptions.cs: Add a test.
524
525 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
526
527         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
528
529         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
530
531         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
532         so it doesn't have to do it.
533
534         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
535         process does not mix with ours.
536
537         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
538         ones.
539
540         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
541         loads/stores which can throw exceptions inside clauses.
542
543 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
544
545         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
546         one ENDFINALLY.
547
548         * mini.c (mini_init): Register mono_resume_unwind as an icall.
549
550 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
551
552         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
553
554         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
555         locals.
556
557 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
558
559         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
560         appdomain.
561
562 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
563
564         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
565         Use a separate generic class init trampoline for llvm, since it needs a different
566         signature.
567
568         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
569         includes the location of this/rgctx.
570
571         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
572         branch.
573
574 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
575
576         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
577
578         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
579         clause.
580
581 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
582
583         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
584         says so.
585
586         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
587
588         * aot-compiler.c (patch_to_string): New debugging helper function.
589
590 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
591
592         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
593         trampoline.
594
595         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
596
597         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
598
599         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
600
601         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
602         clauses.
603
604         * mini.c (create_jit_info): Print EH clause info for LLVM too.
605
606 2010-05-28  Mark Probst  <mark.probst@gmail.com>
607
608         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
609         cpobj with reference types.
610
611 2010-05-28  Mark Probst  <mark.probst@gmail.com>
612
613         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
614         write barrier for reference types.
615
616 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
617
618         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
619         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
620
621 2010-05-31  Martin Baulig  <martin@ximian.com>
622
623         Fix #608271.
624
625         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
626         clear_breakpoint() on all breakpoint events and remove them from the list.
627
628 2010-05-27  Martin Baulig  <martin@ximian.com>
629
630         Fix #605698.
631
632         * debugger-agent.c (method_commands, type_commands): Temporarily
633         set the appdomain while executing this method; do all metadata
634         calls in the debuggee's appdomain where user assemblies are loaded.
635
636 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
637
638         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
639
640 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
641
642         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
643
644 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
645
646         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
647         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
648         be referenced even after the header is freed.
649
650         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
651         section.
652
653 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
654
655 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
656
657         * genmdesc.c (main): Fixing the detection of the nacl switch.
658
659         Code is contributed under MIT/X11 license.
660
661 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
662
663         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
664
665         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
666
667         * mini.h (LLVM_CHECK_VERSION): New helper macro.
668
669 2010-05-25  Miguel de Icaza  <miguel@novell.com>
670
671         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
672         the Perl program
673
674         * genmdesc.c: Added support for nacl: key on the machine
675         description files to support the extra space required by Google
676         Native Client.
677
678 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
679
680         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
681
682 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
683
684         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
685         mono_runtime_class_init_full ().
686         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
687
688 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
689
690         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
691
692 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
693
694         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
695         two are not the same on ilp32.
696
697 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
698
699         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
700         added by mistake.
701
702         * mini-ppc.c: Fix the DISABLE_JIT build.
703
704 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
705
706         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
707         (make_writable): Remove this unused function.
708
709 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
710
711         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
712         structure. Make the labels to plt entries local symbols instead of assembler local
713         labels, since tha latter causes problems for the iphone linker.
714
715 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
716
717         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
718
719 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
720
721         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
722         (ppc_patch_full): Ditto.
723
724         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
725
726         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
727         if gshared is enabled, to avoid asserts in the trampoline code.
728
729         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
730         on ia64.
731
732 2010-05-15  Geoff Norton  <gnorton@novell.com>
733
734         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
735         xdebug mode.
736
737 2010-05-14  Geoff Norton  <gnorton@novell.com>
738
739         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
740         misaligned stack on darwin.
741
742 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
743
744         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
745         arm.
746
747 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
748
749         * xdebug.c: Fix ARM support.
750
751 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
752
753         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
754         and do most of the work on the normal stack.
755         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
756
757 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
758
759         * aot-compiler.c: Put non-code data into the .rodata section on linux.
760
761 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
762
763         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
764
765 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
766
767         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
768         and do most of the work on the normal stack.
769
770 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
771
772         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
773         and do most of the work on the normal stack even if sigaltstack is disabled.
774
775 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
776
777         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
778         UCONTEXT_REG_ constants are available on linux as well.
779         (mono_arch_monoctx_to_sigctx): Ditto.
780         (mono_arch_ip_from_context): Ditto.
781
782 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
783
784         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
785         other domains.
786
787 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
788
789         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
790         no longer needed.
791
792 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
793
794         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
795         if a breakpoint cannot be inserted.
796
797 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
798
799         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
800
801 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
802
803         * debugger-agent.c (frame_commands): Return an error instead of asserting if
804         no JIT info is found for the method.
805
806 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
807
808         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
809         in debug printf.
810
811 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
812
813         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
814         a list of arch specific trampolines.
815
816         * aot-compiler.c (emit_trampolines): Use it.
817
818 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
819
820         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
821         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
822         get rid of the _full from their name.
823
824 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
825
826         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
827         get_nullified_class_init_trampoline to remove some code duplication.
828
829 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
830
831         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
832         attach.
833
834 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
835
836         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
837
838         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
839
840         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
841         there is no need to jump through the first plt entry.
842
843         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
844
845         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
846         arch-specific function.
847         (mono_aot_get_plt_info_offset): Ditto.
848
849         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
850         mono_arch_init () to register jit icalls called from full-aot trampolines.
851         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
852         to mini-<ARCH>.c.
853
854         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
855         the specialized throw corlib exception trampoline, use a variant of the normal
856         trampoline along with a new C function which does the call to
857         mono_exception_from_token (), just like on x86.
858
859 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
860
861         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
862         Reorganize the full aot trampoline creation functions, instead of taking a bunch
863         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
864         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
865         creation functions on architectures which have the full-aot ones.
866
867 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
868
869         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
870
871 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
872
873         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
874         explicitly, this seems to be required by some gcc versions at -O2.
875
876         * mini-arm.c: Ditto.
877
878 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
879
880         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
881         has_target delegate invokes.
882
883 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
884
885         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
886         info fields.
887
888         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
889         add patches/unwind info arguments, move to mini.c.
890
891         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
892
893 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
894
895         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
896         command which returns full path names.
897
898 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
899
900         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
901         code_size output variable.
902
903         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
904         mono_get_lmf_addr.
905         
906 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
907
908         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
909         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
910         (mono_arch_cpu_enumerate_simd_versions): Ditto.
911
912 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
913
914         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
915         apple assembler.
916
917 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
918
919         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
920
921 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
922
923         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
924
925 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
926
927         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
928
929 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
930
931         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
932         line number support works with eglib.
933
934 2010-04-27  Miguel de Icaza  <miguel@novell.com>
935
936         * driver.c, mini.c: Since linking with LLVM makes the default Mono
937         dirty an extra 70kb pages on startup we are now going to choose a
938         different strategy: ship mono and mono-llvm binaries, with the
939         second being the one that links with LLVM and defaults to LLVM
940         being enabled.
941
942 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
943
944         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
945         Implement full-aot support on x86.
946
947         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
948         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
949         the first register returned by get_global_int_regs ().
950
951         * cpu-x86.md: Fix the length of insertx_u1_slow.
952
953         * iltests.il.in: Disable tail call tests when running with full-aot.
954
955 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
956
957         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
958
959 2010-04-24  Mark Probst  <mark.probst@gmail.com>
960
961         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
962         in the initializer, because it's non-constant.
963
964 2010-04-23  Miguel de Icaza  <miguel@novell.com>
965
966         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
967         of LLVM on by default.   Used for buildbots and other setups.
968
969 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
970
971         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
972
973 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
974
975         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
976         initonly static fields when using moving GC.
977
978         Contributed under MIT/X11 license.
979
980 2010-04-23  Geoff Norton  <gnorton@novell.com>
981
982         * mini-amd64.h: Darwin x86_64 support.
983
984 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
985
986         * exceptions-arm.c: Remove platform checks in favor of configure checks.
987
988 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
989
990         * exceptions-arm.c: Add Android support for sigcontext structure.
991
992 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
993
994         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
995         wrappers correctly now that their wrapper info is NULL.
996
997 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
998
999         * mini.c (mono_jit_compile_method_inner): Avoid calling
1000         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
1001
1002 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
1005         so the latter can be #ifndef DISABLE_JIT-ed.
1006
1007         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
1008
1009 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1010
1011         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
1012
1013 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1014
1015         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
1016         stack.
1017
1018 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
1019
1020         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
1021         calling mono_class_num_methods (). Fixes #592244.
1022
1023 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1024
1025         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1026
1027         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1028
1029 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1030
1031         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1032         version.
1033         * (handle_alloc): Ditto.
1034         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1035         change, its not needed anymore.
1036
1037 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1038
1039         * mini-posix.c (sigusr1_signal_handler): Fix build on
1040         non x86/amd64 systems.
1041
1042 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1043
1044         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1045         calls where the constrained class needs a context. Fixes #595863.
1046
1047         * iltests.il.in: Add a test.
1048
1049 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1050
1051         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1052         2.6/SVN seems to have broken support for them.
1053
1054 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1055
1056         * mini-llvm.c: Fix support for LLVM 2.6.
1057
1058 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1061         MonoInternalThread belonging to the thread.
1062
1063 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1064
1065         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1066         unsafe optimization that will remove bound checks.
1067
1068 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1069
1070         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1071         CompareExchange not to be inlined for I8.
1072
1073         Contributed under MIT/X11 license.
1074
1075 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1076
1077         * array.cs: Add tests for cast between primitive array types.
1078
1079 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1080
1081         * Makefile.am: create a convenience library for moon to link with
1082
1083 2010-04-07 Paolo Molaro <lupus@ximian.com>
1084
1085         * method-to-ir.c: optimize array accesses from generic interfaces.
1086
1087 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1088
1089         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1090
1091 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1092
1093         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1094         of marshalbyref classes.
1095
1096         Fixes #515884.
1097
1098 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1099
1100         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1101         information.
1102
1103         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1104         information.
1105
1106         * mini.h: Increase AOT version.
1107
1108 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1109
1110         * mini-x86.h: Only enable soft debugger when using sigaction or on
1111         Windows. Fixes build on Haiku (lacks siginfo_t).
1112
1113         Code is contributed under MIT/X11 license.
1114
1115 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1116
1117         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1118         BeOS-style signal handlers.
1119
1120         Code is contributed under MIT/X11 license.
1121         
1122 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1123
1124         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1125
1126 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1127
1128         * mini-exceptions.c: Fix win32 build.
1129
1130 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1131
1132         * mini.c, driver.c: Call mono_gc_base_init() before
1133         mono_debug_init().
1134
1135 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1136
1137         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1138         call_method]): Delegate the actual work in security-core-clr.c
1139         to ease code sharing.
1140
1141 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1142
1143         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1144         float conv.ovf.un opcodes are encountered, instead of asserting later.
1145         Fixes #566296.
1146
1147 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1148
1149         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1150
1151         * iltests.il.in: Add a test.
1152
1153 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1154
1155         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1156         large. Fixes #567040.
1157
1158         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1159
1160 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1161
1162         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1163         #592711.
1164
1165 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1166
1167         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1168         mono_create_handler_block_trampoline with the proper #ifdef so that it
1169         compiles on amd64.
1170
1171 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1172
1173         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1174         allows to select if it's new or old context that is passed to 
1175         the callback.
1176
1177         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1178         case when executing a guarded handler from the EH machinery.
1179
1180         * mini-exceptions.c (mono_install_handler_block_guard): New function
1181         responsible for checking for handler blocks, installing the guard and
1182         clearing abort state.
1183
1184         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1185         to check for handler blocks and skip interruption logic if one was found.
1186
1187         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1188         by the handler block guard trampoline. Resumes interruption by raising the
1189         pending ThreadAbortException.
1190
1191         * mini.c (create_jit_info): Calculate the end address of a finally block.
1192
1193         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1194         of a finally block to a specified address and return the old one.
1195
1196         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1197         trampoline patches the original return address and calls the trampoline function.
1198
1199 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1200
1201         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1202
1203         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1204         does the patching if the callee is in the same domain.
1205
1206         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1207         of mono_arch_patch_plt_entry ().
1208
1209 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1210
1211         * mini.c (create_jit_info): Fix try block hole length encoding.
1212
1213 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1214
1215         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1216         duplicate information and print offsets instead of absolute addresses.
1217
1218 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1219
1220         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1221         event is sent. Fixes #591733.
1222
1223 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1224
1225         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1226         OpenBSD.
1227
1228 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1231         thread_to_tls hash table.
1232
1233         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1234         section. Fixes #591000.
1235
1236 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1237
1238         * Makefile.am (version.h): Check for pure .git directory only,
1239         fixes SVN revision when using git without git-svn.
1240
1241         Contributed under MIT/X11 license.
1242
1243 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1244
1245         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1246
1247 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1248
1249         * basic-simd.cs: Test for vector x scalar binary operators.
1250
1251 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1252
1253         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1254         intrinsics with expanded scalar arguments.
1255
1256 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1257
1258         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1259         don't have an exception class, so don't decode it. This would crash
1260         with filter clauses.
1261
1262 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1263
1264         Make sure that trunk builds with DISABLE_JIT, an update to the
1265         PlayStation 3 port.
1266         
1267         * mini.c (mini_get_shared_method): this code seems to be necessary
1268         regardless of whether DISABLE_JIT has been defined.
1269
1270         (mono_jit_compile_method_inner): it seems that this method is
1271         required even in full AOT mode, so ifdef out only the pieces that
1272         try to genrate code (the body of code that applies patches to the
1273         code).  
1274
1275         (mini_method_compile): do not compile when using DISABLE_JIT.
1276
1277         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1278         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1279         compile when DISABLE_JIT is set.
1280
1281 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1282
1283         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1284         arch really supports it.
1285
1286 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1287
1288         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1289
1290 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1291
1292         * exceptions-s390x.c: Add support for
1293         mono_arch_get_throw_corlib_exception and fix throw by name.
1294
1295         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1296         logic (especially for varargs); Correct localloc sizing; Add
1297         mono_arch_get_this_arg_from_call and
1298         mono_arch_get_this_arg_from_call.
1299
1300         * mini-s390x.h: Add support for facility list extraction;
1301         Correct/update MONO_ARCH_xxx settings.
1302
1303         * mini-s390.c: Minor corrections to instruction output for
1304         varargs. No IMT implementation - I think it's time to deprecate
1305         s390 and just leave s390x.
1306
1307         * tramp-s390x.c: Correct creation of trampoline instruction
1308
1309
1310         * cpu-s390x.md: Update some instruction lengths
1311
1312 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1313
1314         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1315         can be hit with partial sharing.
1316
1317         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1318         in non-shared classes correctly.
1319         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1320         Turn on partial sharing.
1321
1322 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1323
1324         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1325         by mistake.
1326
1327 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1328
1329         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1330         mono_method_signature ().
1331
1332         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1333
1334         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1335         error checking, so later calls do not need error checking.
1336
1337 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1338
1339         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1340
1341         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1342
1343 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1344
1345         * mini-exceptions.c (mono_handle_exception_internal): Don't
1346         check try_end for archs different than s390. 
1347
1348         * mini.c (create_jit_info): Don't crash if the finallt block is the
1349         last one.
1350
1351 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1352
1353         * driver.c (mono_main): Don't free global codeman under linux since
1354         glic now peeks at code on stack for more archs than just amd64.
1355
1356 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1357
1358         * mini.c, method-to-ir.c: changes to support compressed interface
1359         bitmaps.
1360
1361 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1362
1363         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1364         Use sigaction on OpenBSD too.
1365
1366 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1369
1370 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1371
1372         * debugger-agent.c: #include sys/select.h for fd_set.
1373
1374         Code is contributed under MIT/X11 license.
1375
1376 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1377
1378         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1379         (openbsd+amd64 ?).
1380
1381 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1382
1383         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1384         some large methods with lots of exception handlers. Fixes #440924.
1385
1386 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1387
1388         * method-to-ir.c: remove code duplication for interface checks.
1389
1390 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1391
1392         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1393         (assembly_unload): Clear all event requests referencing the to-be unloaded
1394         assembly.
1395
1396
1397 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1398
1399         * mini.h, mini-exceptions.c: restore the state of the stack
1400         guard page permissions.
1401
1402 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1405         call site patching code, it doesn't appear to be needed.
1406
1407 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1410         sharing generic methods whose type arguments are a mix of reference and
1411         non-reference types. Not yet turned on.
1412
1413         * mini.c (mini_get_shared_method): New helper function to return
1414         the method which will be compiled/registered in the JIT tables when doing
1415         generic sharing.
1416         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1417         use mini_get_shared_method ().
1418
1419         * mini.c (mini_method_compile): Register the same method which is compiled when
1420         doing generic sharing.
1421
1422         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1423
1424         * generics.cs: Add partial sharing tests.
1425
1426 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1427
1428         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1429                    Add an enum value that or's all possable values together. Add an enum value
1430                    that marks the end of the used bit indexes.
1431
1432         * mini-amd64.c : Make changes to match the changes in mini.h 
1433
1434         * mini-x86.c : Make changes to match the changes in mini.h
1435
1436         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1437                    simd_version to support more simd versions. Changed the name of
1438                    simd_version to simd_version_flags to make it more intuitive that
1439                    it now contains bit flags. Reordered the *_intrinsics arrays to
1440                    match the changes above. Changed emit_intrinsics() to use the new
1441                    setup mentioned above.
1442
1443         Code is contributed under MIT/X11 license.
1444
1445 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1446
1447         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1448         remaining archs. Alpha and hppa maintainers, please stand up.
1449
1450 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1453         is needed even when fail_tramp!=NULL.
1454
1455 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1456
1457         * debugger-agent.c (insert_breakpoint): Write a log message.
1458
1459 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1460
1461         * iltests.il.in: Add a few tests for LEAVE going over multiple
1462         finally clauses.
1463
1464 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1465
1466          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1467
1468 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1469
1470         * mini.h (MonoBasicBlock): Add native_length field.
1471         * mini.h (MonoCompile): Add try_block_holes field.
1472         * mini.h (MonoInst): Add exception_clause pointer to
1473         the data union.
1474
1475         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1476         * mini.c (mono_cfg_add_try_hole): New function to register possible
1477         holes in try blocks.
1478         * mini.c (create_jit_info): Fill in the holes information.
1479
1480         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1481         by a try block.
1482
1483         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1484
1485 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1486
1487         * jit-icalls.c: adjusted for the array API changes.
1488
1489 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1490
1491         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1492
1493 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1494
1495         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1496         the 'pending' flag. This fixes support for appdomains too.
1497
1498
1499 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1500
1501         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1502
1503 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1506         when using LLVM, LLVM generates it itself when needed.
1507
1508         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1509
1510         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1511         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1512         OP_ANDNPS/OP_ANDNPD.
1513
1514 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1515
1516         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1517         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1518         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1519
1520 2010-03-11  Martin Baulig  <martin@ximian.com>
1521
1522         * debugger-agent.c (type_commands): Add NULL check to
1523         `CMD_TYPE_GET_SOURCE_FILES'.
1524
1525 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1526
1527         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1528
1529 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1530
1531         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1532         #586664.
1533
1534         * iltests.il.in: Add a test.
1535
1536 2010-03-05  Martin Baulig  <martin@ximian.com>
1537
1538         Add support for aborting invocations.
1539
1540         * debugger-agent.c
1541         (InvokeData): Added `InvokeData *last_invoke'.
1542         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1543         added a new `invoke' field to keep the `InvokeData *' throughout
1544         the invocation.
1545         (ErrorCode): Added `ERR_NO_INVOCATION'.
1546         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1547         (mono_debugger_agent_handle_exception): Don't report any exception
1548         if an abort was requested.
1549         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1550         a thread abort if necessary.
1551         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1552
1553 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1554
1555         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1556         so we can release the whole list and not just the first one. Free
1557         it in more places as well.
1558
1559 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1560
1561         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1562
1563 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1564
1565         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1566
1567 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1568
1569         * driver.c: report also other misc build options.
1570
1571 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1572
1573         * method-to-ir.c: Generate better code for the NewObject
1574         intrinsic.
1575         
1576 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1577
1578         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1579         is disabled. Fixes #582322.
1580
1581         * iltests.il.in: Add a test.
1582
1583 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1584
1585         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1586         the handling of obj->synchronization == null and owner != current thread to
1587         mono_monitor_exit ().
1588
1589         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1590
1591
1592 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1593
1594         * mini.c: change the way emulated opcode info is stored and save about
1595         4 KB of runtime memory.
1596
1597 2010-03-04  David S. Miller  <davem@davemloft.net>
1598
1599        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1600        that don't provide the siginfo in the second signal handler argument
1601        are buggy, and this has been fixed for years.
1602        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1603        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1604
1605 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1606
1607         * aot-runtime.c (find_symbol): Fix a leak.
1608         (decode_patch): Ditto.
1609
1610 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1611
1612         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1613
1614 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1615
1616         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1617
1618 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1619
1620         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1621
1622 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1623
1624         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1625         to check for errors, it's enough to create the metadata open.
1626
1627         Fixes #562150
1628
1629 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1630
1631         * trace.c|h:
1632         * mini-exceptions.c: Add support for printing stack traces when handling
1633         exceptions, and when printing exceptions thrown while tracing also print
1634         the exception message.
1635
1636 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1637
1638         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1639         since the exclude token is a valid string character.
1640
1641 2010-03-02  Levi Bard  <levi@unity3d.com>
1642
1643         * debugger-agent.c: Invalidate thread stacks on domain unload.
1644
1645 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1646
1647         * method-to-ir.c: Emit dummy_use for stored reference after write
1648         barriers to make sure the object is pinned if the GC interrupts
1649         before the write barrier is done.
1650
1651 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1652
1653         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1654
1655 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1656
1657         * debugger-agent.c: Add a log message printing the protocol version.
1658
1659 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1660
1661         * debugger-agent.c: Add a new command to communicate the protocol version used
1662         by the client. This could be used to allow newer runtimes to communicate with
1663         older clients.
1664
1665 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1666
1667         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1668
1669 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1670
1671         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1672         type.
1673
1674 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1675
1676         * mini-arm.c: make the arm cpu arch configurable with the
1677         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1678         Bug #584198.
1679
1680 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1681
1682         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1683         support for the perf tool on Linux.
1684
1685 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1686
1687         * method-to-ir.c: make string.InsertenalSetChar() specialization
1688         effective.
1689
1690 2010-03-01  Robert Jordan  <robertj@gmx.net>
1691
1692         * Makefile.am: fix the non-static build.
1693
1694 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1695
1696         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1697         here.
1698
1699 2010-02-26  Robert Jordan  <robertj@gmx.net>
1700
1701         * tasklets.c (continuation_store): Return from an error condition
1702         immediately.
1703
1704 2010-02-26  Martin Baulig  <martin@ximian.com>
1705
1706         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1707
1708         * debug-mini.c
1709         (MonoDebuggerThreadInfo): Added `internal_flags'.
1710         (MonoDebuggerInternalThreadFlags): New enum.
1711         (_mono_debugger_throw_exception): Don't signal the debugger if a
1712         type abort was requested.
1713         (_mono_debugger_unhandled_exception): Likewise.
1714         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1715         (mono_debugger_runtime_invoke): If the debugger requested a thread
1716         abort during the invocation, reset it here.
1717
1718 2010-02-26  Martin Baulig  <martin@ximian.com>
1719
1720         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1721         instead of `MonoThread *'.
1722
1723 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1724
1725         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1726         code offsets table, as it is mostly sorted.
1727
1728 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1729
1730         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1731         Fixes #582991.
1732
1733 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1734
1735         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1736
1737 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1738
1739         * Makefile.am: build the new ABI version of the libmono library.
1740         * debugger-agent.c, mini.c: fix warnings with the new API.
1741         * jit.h: don't depend on glib.h being included.
1742
1743 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1746
1747 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1748
1749         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1750         ThreadStatic variables.
1751
1752 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1753
1754         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1755         data is not freed yet. Fixes #582460.
1756
1757 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1758
1759         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1760         event requests. Bump protocol minor version.
1761
1762 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1763
1764         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1765
1766 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1769         #581950.
1770
1771         * iltests.il.in: Add a test.
1772
1773 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1774
1775         * mini.c (inline_method): Check for loader errors.
1776
1777 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1778
1779         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1780         instead of mono_method_get_header as it doesn't decode locals
1781         so the called method can have unresolved dependencies that will only
1782         be satisfied after the current method is JIT'd.
1783
1784         Fixes #550968.
1785
1786 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1787
1788         * basic.cs (test_0_div_opt): Speed this up a bit.
1789
1790 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1791
1792         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1793
1794         * mini.c (mono_jit_create_remoting_trampoline): Call
1795         mono_create_specific_trampoline () instead of
1796         mono_arch_create_specific_trampoline ().
1797
1798         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1799
1800 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1801
1802         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1803         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1804
1805         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1806
1807         * mini-amd64.c: Fix DISABLE_JIT support.
1808
1809 2010-02-20  Geoff Norton  <gnorton@novell.com>
1810
1811         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1812
1813 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1814
1815         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1816         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1817         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1818         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1819         handle_exception.
1820
1821 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1824         edx/ecx too. This is needed to support OP_SEQ_POINT.
1825
1826 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1829
1830         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1831
1832 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1833
1834         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1835         LLVM+AOT+exceptions, not enabled yet.
1836
1837 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1838
1839         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1840
1841 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1842
1843         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1844         xdebug info for these.
1845
1846         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1847         in a few places.
1848
1849         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1850         not used yet.
1851
1852 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1855
1856 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1857
1858         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1859         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1860
1861         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1862         for mtouch.
1863
1864 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1865
1866         * debugger-agent.c: handle incomplete reads and EINTR in
1867         recv()/send(). This could have been causing random
1868         disconnections.
1869
1870 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1871
1872         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1873         points.
1874
1875         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1876         so they have small offsets. Fixes #566311.
1877
1878 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1879
1880         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1881
1882 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1883
1884         * mini-amd64.c: Remove the special casing of byref in a few places now that
1885         mini_type_get_underlying_type () handles it.
1886
1887         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1888         by returning native int. Fixes #577984.
1889
1890 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1891
1892         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1893         a macro.
1894
1895         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1896         of putting the clause itself.
1897
1898         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1899
1900 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1903         might be unaligned.
1904
1905 2010-02-10  Geoff Norton  <gnorton@novell.com>
1906
1907         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1908
1909 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1910
1911         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1912         llvm methods too.
1913
1914         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1915         it is not an LLVM generated symbol.
1916
1917         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1918
1919         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1920         implementation in gshared mode because it causes regressions.
1921
1922         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1923
1924         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1925         should be done by the caller.
1926
1927         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1928
1929         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1930
1931         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1932         since mono_jit_info_table_find () doesn't do it anymore.
1933
1934         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1935         instead of mono_jit_info_table_find ().
1936
1937 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1938
1939         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1940
1941         * aot-compiler.c (encode_method_ref): Update after the removal of
1942         mono_gc_get_managed_allocator_type ().
1943
1944         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1945         Fixes #564538.
1946
1947 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1948
1949         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1950         generic params as well.
1951         (handle_isinst): Ditto.
1952
1953         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1954         instead of always calling an icall.
1955
1956         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1957         computing the size of the got.
1958
1959         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1960         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1961         the assembly directive '.set' so it points to the first LLVM emitted method.
1962
1963 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1964
1965         * mini.c (mini_method_verify): Report the method which failed to verify.
1966
1967 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1968
1969         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1970         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1971         runtime MS verifier.
1972
1973 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1974
1975         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1976         #561962.
1977
1978 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1979
1980         * mini-llvm.c: Init the jit module only when first JITting.
1981
1982         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1983
1984         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1985
1986         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1987         replaced with the real got.
1988
1989         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1990
1991         * image-writer.c: Reduce the amount of #ifdefs a bit.
1992
1993         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1994         llvm on darwin/arm.
1995
1996         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1997
1998         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1999         global.
2000
2001 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2002
2003         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
2004         (mono_llvm_emit_method): Fix unaligned stores too.
2005
2006         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
2007         so async stack walks don't crash.
2008
2009 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2010
2011         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
2012         was not patched if the callee needed an rgctx trampoline.
2013
2014 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2015
2016         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
2017         vtable address in AOT code.
2018
2019 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2020
2021         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
2022         MonoInst's.
2023
2024 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2025
2026         * genmdesc.pl: remove dependency on external cpp.
2027
2028 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2029
2030         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2031         using LLVM, its not needed, and abcrem can't handle it.
2032
2033 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2034
2035         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2036         it easier to group instructions and reduce duplication.
2037
2038 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2039
2040         * decompose.c: Move the array/soft float decompose routines here from
2041         method-to-ir.c.
2042
2043         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2044
2045 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2046
2047         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2048         to tell LLVM that the got is constant, not used yet.
2049
2050         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2051
2052 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2053
2054         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2055         managed wrappers.
2056
2057 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2058
2059         * aot-compiler.c (add_wrappers): Commit the hack which generates
2060         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2061         custom attribute.
2062
2063 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2064
2065         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2066         a fault, only used by the LLVM backend.
2067
2068         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2069         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2070
2071         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2072         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2073
2074         * mini-llvm.c: Only generate volatile loads from load instructions which have
2075         the MONO_INST_FAULT flag set.
2076
2077 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2078
2079         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2080         64 bit platforms.
2081
2082 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2083
2084         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2085         sequence points. Fixes #571236.
2086
2087 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2088
2089         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2090         end of the appdomain unload process, after assemblies have been unloaded.
2091         Fixes #574842.
2092
2093 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2094
2095         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2096         works.
2097
2098         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2099         Fixes #573988.
2100
2101 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2102
2103         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2104
2105 2010-01-26  Geoff Norton  <gnorton@novell.com>
2106
2107         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2108         with struct marshalability.
2109
2110 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2113         it supports class names as well.
2114
2115         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2116         needed by the GC map code.
2117
2118         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2119         flags if needed.
2120
2121         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2122         if cfg->init_ref_vars is set.
2123
2124         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2125         cfg->disable_initlocals_op_refs is set.
2126
2127         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2128         using liveness info if cfg->compute_precise_live_ranges is set.
2129
2130         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2131         volatile variables correctly. Add comments about the live ranges. Not enabled
2132         yet.
2133
2134 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2135
2136         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2137         0x2a into them in method prologs.
2138
2139         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2140
2141 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2142
2143         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2144         classes, since llvm is compiled with -fno-rtti.
2145
2146         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2147
2148         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2149         llvm does not require it.
2150
2151         * aot-runtime.c (load_method): Print the full name of the last aot method.
2152
2153 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2154
2155         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2156         thread has not fully started yet.
2157
2158 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2159
2160         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2161
2162 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2163
2164         * driver.c: Do not abort if LLVM is not supported, print a
2165         warning and add the information to the Mono JIT information.
2166
2167 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2168
2169         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2170         using explicit null checks.
2171
2172 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2175         related code.
2176
2177         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2178         () in one place.
2179         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2180         its no longer needed.
2181
2182         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2183
2184         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2185         define for platforms still using it (s390). Get rid of the
2186         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2187
2188         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2189         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2190
2191         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2192         the caller pushed the arguments.
2193
2194         * mini-llvm.c: Enable throwing exceptions on x86.
2195
2196         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2197         "Thread (nil) may have been prematurely finalized" messages if this is called
2198         on a thread not registered with the runtime.
2199
2200         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2201
2202 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2203
2204         * jit-icalls.c (mono_array_new_3): New jit icall.
2205
2206         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2207
2208         * arrays.cs: Add a test for 3 dimensional arrays.
2209
2210 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2211
2212         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2213         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2214         used.
2215
2216         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2217         thrown on x86.
2218
2219         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2220
2221         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2222
2223         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2224
2225 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2226
2227         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2228           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2229
2230         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2231
2232         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2233
2234         Code is contributed under MIT/X11 license.
2235
2236 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2237
2238         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2239
2240         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2241
2242         * mini.c (mini_method_compile): Set the new flag when running under the
2243         debugger.
2244
2245 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2246
2247         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2248         a ref/noref value + a global pin flag, so parts of stack frames can still be
2249         precisely marked even if they include stuff which needs pinning. Improve logging.
2250         Fix many bugs. Not enabled yet.
2251
2252         * gc-test.cs: Add a few tests.
2253
2254         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2255         the normal -v options. Avoid propagating liveness information through bblocks
2256         which end with a NOT_REACHED opcode.
2257
2258         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2259         after cfg has been freed.
2260
2261 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2262
2263         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2264         if a clause is skipped because it uses the exception object, since it could
2265         have caught the exception.
2266
2267         * exceptions.cs: Add a test.
2268
2269 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2270
2271        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2272
2273         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2274         ICollection<T> wrappers.
2275
2276 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2279
2280 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2283         NOMAP32BIT or optimize_for_xen is set.
2284
2285 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2288         mono_metadata_str_hash () instead.
2289
2290 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2291
2292         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2293         sizeof (void*).
2294
2295         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2296
2297 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2298
2299         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2300         flag is set.
2301
2302         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2303         throwing code correctly.
2304
2305         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2306
2307 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2310         ftnptrs created by us, handle RGCTX_FETCH correctly.
2311         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2312
2313         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2314         ftnptr added by mono_aot_get_named_code ().
2315
2316 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * mini-arm.c: Fix a few LLVM problems.
2319
2320         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2321
2322 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2323
2324         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2325         AOT compiling.
2326
2327 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2328
2329         * jit.h, method-to-ir.c: added ability to set the policy for
2330         inserting breakpoints from the break IL instruction or the
2331         Debugger.Break () API call.
2332
2333 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2334
2335         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2336         assemblies need to be eagerly loaded.
2337
2338 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2341
2342 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2343
2344         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2345         an argument which matches any exception.
2346
2347 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2350         optimization if the called method is gshared and marshalbyref, since gshared
2351         methods can' have wrappers. Fixes #569390.
2352
2353         * generics.cs: Add a test.
2354
2355 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2356
2357         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2358         callable from gdb.
2359
2360 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2361
2362         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2363
2364 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2367         since it is not supported in win2000.
2368
2369 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2370
2371         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2372         error if loading an assembly fails.
2373         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2374
2375         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2376         if exists.
2377
2378         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2379         compiled methods.
2380
2381         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2382
2383         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2384         is not supported yet.
2385
2386         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2387
2388 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2389
2390         * method-to-ir.c: All types with variant arguments must fallback to the
2391         slow path. This makes cast of variant delegates work.
2392
2393         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2394         argument that is set to TRUE is the returned vtable slot is for a variant
2395         interface. Changed a g_print + g_assert_not_reached to a g_error.
2396
2397         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2398         a similar fashion of generic virtual methods.
2399
2400 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2401
2402         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2403         when cfg is null.
2404
2405         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2406         method using a variance aware function.
2407
2408         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2409
2410 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2411
2412         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2413         do an icall for now.
2414
2415 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2416
2417         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2418         If LLVM decides to set the code model to Large, reset it to Default.
2419
2420 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2421
2422         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2423         stripped binaries as well.
2424
2425 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2428         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2429
2430         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2431         reg.
2432
2433 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2434
2435         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2436         separate function.
2437
2438         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2439         as the type info to llvm.eh.selector.
2440         (exception_cb): Use the type info for filling out some fields of
2441         MonoJitExceptionInfo like the flags and the exception class. This is needed
2442         because the LLVM produced exception handling clauses might not match the original
2443         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2444
2445         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2446         separate function. Add an extra argument which returns the type infos
2447         corresponding to the exception clauses.
2448
2449         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2450         exception handling clauses.
2451
2452 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2453
2454         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2455         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2456         to fix an AOT case.
2457
2458 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2459
2460         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2461         internal assembly.
2462
2463 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2464
2465         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2466         llvm code.
2467
2468 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2469
2470         * mini.c (mini_method_compile): Verify the method before calling
2471         mono_compile_create_vars as this might crash since it uses method
2472         information.
2473
2474         Fixes #560196.
2475
2476 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2477
2478         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2479         one case if AOTing, since the class might not be a concrete class.
2480
2481 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2482
2483         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2484         functions which are now defined in mempool-internals.h.
2485
2486         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2487
2488         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2489
2490 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2491
2492         * mini.c:
2493         * method-to.ir.c:
2494         * mini-*.c: Properly handle generic enums.
2495
2496         Fixes #566294
2497
2498 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2501         in a few more places.
2502
2503 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2506         nullable parameters. Fixes #567351.
2507
2508 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2509
2510         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2511
2512 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2513
2514         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2515         mono_get_generic_context_from_code () call.
2516
2517         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2518
2519 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2520
2521         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2522         needed.
2523
2524 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2525
2526         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2527         mono_method_get_signature returns NULL. Fix #567084
2528
2529 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2530
2531         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2532         instead of once for each module.
2533
2534 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2535
2536         * debugger-agent.c (ss_start): Implement step over for the last sequence
2537         point in methods.
2538
2539         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2540         have the STEP_LOC flag set.
2541
2542         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2543         fails. Fixes #566689.
2544
2545 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2546
2547         * mini.c (mono_add_seq_point): New helper function.
2548         (mono_save_seq_point_info): New function to save sequence point info, extracted
2549         from mini_method_compile ().
2550
2551         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2552
2553         * mini.h (MonoSeqPointInfo): New structure containing information about
2554         the sequence points of a JITted method.
2555         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2556         'bucket' field.
2557
2558         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2559         point information is stored, use a MonoSeqPointInfo structure instead of a
2560         GPtrArray. For each seq point, compute a list of successor seq points.
2561
2562         * debugger-agent.c: Use the successor list to implement step-over more
2563         efficiently: instead of single stepping until a different line/IL offset is
2564         reached, place breakpoints into all successor seq points.
2565
2566         * mini.h: Bump AOT file format version.
2567
2568 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2569
2570         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2571
2572         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2573
2574 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2575
2576         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2577         build.
2578
2579 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2580
2581         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2582         alloca as g_malloc is not signal safe.
2583
2584 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2585
2586         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2587         VALGRIND_DISCARD_TRANSLATIONS.
2588
2589         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2590         checks, they are no longer needed.
2591
2592         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2593         a function into a sigctx which can handle function pointers.
2594
2595         * mini-ppc.c: Implement soft debugger support on ppc64.
2596
2597         * mini-ppc.c: Implement soft debugger support.
2598
2599 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2600
2601         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2602
2603 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2604
2605         * mini.c (mono_get_runtime_build_info): include Mono version in
2606         the returned value.
2607
2608         * driver.c (mono_main): VERSION is now included in the string
2609         returned from mono_get_runtime_build_info()
2610
2611 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2612
2613         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2614         signatures. Fixes #565143.
2615
2616         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2617
2618 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2619
2620         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2621
2622 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2623
2624         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2625         making max stack 10x smaller.
2626
2627 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2628
2629         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2630
2631 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2632
2633         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2634
2635 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2636
2637         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2638         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2639
2640         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2641
2642         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2643
2644         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2645
2646         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2647         the compilation.
2648
2649 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2650
2651         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2652         raise an invalid program exception.   
2653
2654         For other opcodes that we might not handle use a g_warning and
2655         raise the exception.   Beats termination.
2656
2657         Fixes #561724
2658
2659 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2660
2661         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2662
2663         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2664         by merging the LLVM and !MAP_32BIT cases.
2665
2666 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2667
2668         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2669         sigctx being passed in, as we have no CONTEXT available in the APC.
2670
2671         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2672         for now.
2673
2674         Code contributed under MIT/X11 license.
2675
2676 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2679         in the LLVM backend on AMD64.
2680
2681         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2682         FDE.
2683
2684         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2685
2686         * mini-llvm.c: Export mono_personality for AOT.
2687
2688         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2689
2690         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2691         implicit exception can occur.
2692
2693         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2694         OP_IMPLICIT_EXCEPTION instruction.
2695
2696         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2697
2698         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2699
2700         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2701         inside a protected block.
2702
2703         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2704         trampolines doesn't include the argument.
2705
2706         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2707         trampolines on amd64.
2708
2709         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2710         of RDI.
2711
2712         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2713         disabled for methods with clauses.
2714
2715         * mini-llvm.c: Enable support for catch clauses.
2716
2717         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2718         end of an LLVM compiled finally clause.
2719         (mono_handle_exception_internal): Save the exception handling state in TLS
2720         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2721         resume unwinding from that point.
2722
2723         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2724         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2725         to obtain the addresses of the exception handling regions.
2726
2727         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2728         finally clauses are supported.
2729
2730         * mini.c (mini_method_compile): Add support for LLVM code with exception
2731         handlers.
2732
2733 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2734
2735         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2736         proper size.
2737
2738 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2739
2740         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2741         as a primitive type.
2742
2743 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2744
2745         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2746         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2747         #564000.
2748
2749 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2750
2751         * method-to-ir.c (mini_redirect_call): do not redirect the
2752         InternalAllocateStr internal call if string profiling is enabled.
2753
2754 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2755
2756         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2757         generic methods.
2758
2759         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2760         unwind.h header file.
2761
2762         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2763         newer valgrind versions seems to handle this fine.
2764
2765 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2766
2767         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2768         on the debugger thread.
2769
2770 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2771
2772         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2773
2774         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2775
2776         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2777
2778         * cpu-<ARCH>.md: Make call_handler clob:c.
2779
2780         * mini.c: Reenable SSA for methods with clauses.
2781
2782         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2783         as it causes failures on x86.
2784
2785 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2786
2787         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2788         returns NULL (e.g. a bad assembly).
2789
2790 2009-12-08  Geoff Norton  <gnorton@novell.com>
2791
2792         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2793         stepping out into native code.  There were issues with nested invokes
2794         like .cctors.
2795
2796 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2797
2798         * mini.c (mini_method_compile): Do the disable_llvm checks early
2799         and avoid the LLVM compile pass if the checks fail.
2800
2801         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2802
2803         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2804         LLVM optimizations don't try to remove them.
2805
2806         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2807         different file so the original remains.
2808
2809 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2810
2811         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2812
2813         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2814
2815         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2816         support for non-inline unwind descriptors.
2817
2818 2009-12-07  Geoff Norton  <gnorton@novell.com>
2819
2820         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2821         the interrupt_count slightly differently.  Native threads were never
2822         marked as resumed.
2823
2824 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2825
2826         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2827         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2828         yet generate this info.
2829
2830         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2831
2832         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2833         client can distinguish between intptrs and longs.
2834
2835 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2836
2837         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2838         blob.
2839
2840         * aot-runtime.c (load_function): Update after the change above.
2841
2842         * mini.h: Bump AOT file format version.
2843
2844         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2845         if the delegate class is dynamic.
2846
2847         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2848         in gshared code too using the new rgctx info type
2849         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2850
2851 2009-12-04  Geoff Norton  <gnorton@novell.com>
2852
2853         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2854         we need to track the original suspend count so the thread properly
2855         wakes up in resume_thread.
2856
2857 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2858
2859         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2860         code.
2861
2862         * generics.cs: Add a test.
2863
2864         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2865         is 0. Simplify a lot of code using this.
2866
2867         * mini-trampolines.c (mono_delegate_trampoline): Call
2868         mono_create_static_rgctx_trampoline () before saving the final address in
2869         delegate->method_code, to avoid calling it each time a delegate is first called.
2870
2871         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2872         which need static rgctx trampolines.
2873
2874         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2875         keyed on the method+addr pair, since addr could be either the method addr or
2876         an unbox trampoline in the AOT case. Fixes #560246.
2877
2878 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2879
2880         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2881         place it was called before too.
2882
2883 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2884
2885         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2886         if no security manager is present, to speed up the AOT case. Call
2887         mono_class_vtable () full with raise_on_error == TRUE instead.
2888
2889 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2890
2891         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2892         the local optimization passes can take its result into account. Fixes
2893         #559876.
2894
2895         * exceptions.cs: Add a test.
2896
2897 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2898
2899         This patch is contributed under the terms of the MIT/X11 license
2900
2901         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2902
2903 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2904
2905         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2906
2907         * debugger-agent.c: Rework the handling of stack traces of running threads to
2908         avoid crashes if compute_frames () tries to walk the stack of running thread.
2909
2910         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2911
2912         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2913
2914         * mini.h (StackFrameInfo): Add an 'lmf' field.
2915
2916 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2917
2918         * debugger-agent.c (suspend_current): Always set really_suspended.
2919
2920         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2921
2922         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2923
2924 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2925
2926         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2927         really suspended.
2928
2929 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2930
2931         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2932
2933 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2934
2935         * mini-trampolines.c: Fix MSVC build.
2936
2937 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2938
2939         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2940
2941 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2942
2943         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2944         the instruction following an OP_FCOMPARE is optimized away.
2945
2946 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2947
2948         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2949         emit_autoreg () into this arch-specific function.
2950
2951         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2952         code, it is no longer needed.
2953
2954         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2955
2956         * mini.h: Bump AOT file format version.
2957
2958         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2959         using the sorted_code_offsets array, instead of reading it from the
2960         exception debug info.
2961         (load_method): Call mono_aot_find_jit_info instead of
2962         decode_exception_debug_info ().
2963
2964         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2965         LLVM compiled as a flag.
2966
2967 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2968
2969         * debugger-agent.c (resume_thread): Fix a warning.
2970
2971         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2972         generated.
2973
2974 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2975
2976         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2977         contents to MonoAotFileInfo.
2978
2979 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2980
2981         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2982         Put all binary data into a giant blob, similarly to the way .net assemblies
2983         store binary data. Emit offset tables in a compact form to reduce their size.
2984
2985         * mini.h: Bump AOT file format version.
2986
2987         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2988         places.
2989
2990         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2991         avoid linear searches at runtime.
2992
2993         * aot-runtime.c (find_symbol): Update this to use the hash.
2994
2995         * mini.h: Bump AOT file format version.
2996
2997 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2998
2999         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
3000         container.
3001
3002         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
3003         too.
3004
3005         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
3006         the distribution of got slot types.
3007
3008         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
3009
3010         * method-to-ir.c: Add support for generating explicit null checks.
3011
3012 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
3013
3014         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
3015         on a random thread if possible.
3016
3017         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
3018         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
3019         correctly.
3020
3021         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
3022         regs. Pass the real size of the regs array to mono_unwind_frame ().
3023
3024         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3025         ones instead.
3026
3027 2009-11-24  Geoff Norton  <gnorton@novell.com>
3028
3029         * mini-darwin.c: Work around apple bug rdar://7209349  See
3030         http://openradar.appspot.com/7209349 for details.  Synopsis,
3031         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3032         never been initialized before.
3033
3034 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3037
3038         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3039
3040 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3041
3042         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3043         OP_SHL_IMM is not 32 bit.
3044
3045 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3046
3047         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3048
3049 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3050
3051         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3052         encountered.
3053
3054         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3055         > 0 since some threads can resume if their resume_count is > 0.
3056         (invoke_method): Avoid reading freed memory.
3057
3058         * debugger-agent.c (process_suspend): Extract the suspend code from
3059         process_single_step_inner () to a separate function. Rework the code to prevent
3060         races between this function and thread interrupts.
3061
3062         * debugger-agent.c (suspend_current): Check the resume_count field instead
3063         of resume_one so suspends+resumes during single threaded invokes work
3064         correctly.
3065
3066 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3067
3068         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3069         to make the generated code smaller.
3070
3071         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3072         sequence generated by recent LLVM versions.
3073
3074         * mini-llvm.c: Add support for a few simple cases which weren't supported
3075         before.
3076
3077         * mini-trampolines.c (mono_magic_trampoline): Don't call
3078         mono_arch_get_vcall_slot () when llvm is enabled.
3079
3080         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3081
3082         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3083         into a new function called common_call_trampoline () which is used by the
3084         llvm vcall trampoline as well.
3085
3086         * debugger-agent.c: Implement single threaded invokes.
3087
3088         * debugger-agent.c: Revert change which broke the agent on linux.
3089
3090         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3091         #557606.
3092
3093         * generics.cs: Add a test.
3094
3095 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3096
3097         * debugger-agent.c: Fix the cygwin build.
3098
3099 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3100
3101         * cprop.c: Remove this unused file.
3102
3103 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3104
3105         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3106         #557262.
3107
3108         * basic.cs: Add a test.
3109
3110 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3111
3112         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3113         in one more place.
3114
3115 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3116
3117         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3118         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3119         it. Use this flag to control llvm related code paths instead of #ifdef
3120         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3121         AOT code.
3122
3123         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3124
3125         * mini.h: Bump AOT file format version.
3126
3127         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3128         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3129
3130         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3131         was used as an assembly filter.
3132
3133 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3134
3135         * unwind.c: Fix support for ppc.
3136
3137         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3138         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3139
3140 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3141
3142         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3143         port.
3144         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3145         added by the ps3 changes.
3146
3147 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3148
3149         * mini-gc.c: Resurrect this, so at least it compiles.
3150
3151         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3152
3153 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3154
3155         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3156         create_event_list () so assembly filters can be used.
3157
3158         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3159         from the LMF.
3160
3161 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3162
3163         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3164         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3165         is disabled.
3166
3167         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3168         classes for char/bool too.
3169
3170         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3171
3172         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3173         used.
3174
3175         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3176         Fix warnings.
3177
3178 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3179
3180         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3181         
3182         Code contributed under MIT/X11 license.
3183
3184 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3185
3186         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3187         threads in native code work.
3188
3189         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3190         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3191         version.
3192
3193 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3194
3195         * debugger-agent.c: Implementation for Windows platform.
3196
3197         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3198         primitives. Use SEH to implement breakpoints and single stepping.
3199
3200         * mini-x86.h: Enable soft debugger on Windows.
3201
3202         Code contributed under MIT/X11 license.
3203
3204 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3205
3206         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3207         under XEN. Fixes #522894.
3208
3209         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3210
3211         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3212         interface calls in LLVM AOT code.
3213
3214         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3215         is found.
3216
3217         * mini-llvm.c: Add support for OP_VPHI.
3218
3219         * objects.cs: Add a test.
3220
3221 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3222
3223         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3224         this is called on the debugger thread.
3225
3226 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * mini-llvm.c: Add soft-float support.
3229
3230         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3231         FCALL which returns an R4.
3232
3233         * driver.c (mono_main): Add a missing '\n'.
3234
3235         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3236         platforms which doesn't support the LLVM IMT trampoline.
3237
3238 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3241
3242         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3243
3244         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3245         virtual calls.
3246
3247         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3248
3249 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3250
3251         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3252         Instead of emitting a method_order table, sort the contents of the code_offsets
3253         table and do a binary search in the sorted table. The previous approach doesn't
3254         work with LLVM which emits methods in a arbitrary order.
3255
3256         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3257         in the .eh_frame section in ELF files.
3258
3259         * mini.h: Bump corlib file format version.
3260
3261         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3262
3263         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3264         LDMIA->LDM macro name change.
3265
3266 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3267
3268         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3269         x86.
3270
3271         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3272         SVN.
3273
3274         * aot-compiler.c: Ditto.
3275
3276         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3277         &align to mini_type_stack_size_full ().
3278
3279         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3280
3281         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3282
3283 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3284
3285         * mini-arm.c: Compute the stack space used by arguments using
3286         mini_type_stack_size_full ().
3287
3288 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3289
3290         * optflags-def.h: Remove dead TREEPROP optimization.
3291
3292 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3293
3294         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3295
3296         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3297
3298 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3299
3300         * driver.c (mono_jit_parse_options): New public API function to parse options
3301         as done by the runtime executable.
3302
3303         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3304         when handling named arguments.
3305
3306 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3307
3308         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3309         for passing small vtypes in registers, make the CallInfo structures more
3310         similar to the code on the other platforms.
3311
3312         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3313         the code in the prolog requires it.
3314
3315 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3316
3317         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3318         (koush@koushikdutta.com).
3319
3320         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3321         where the thunk memory should be allocated from. Fixes appdomain unloading
3322         on arm.
3323
3324 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3325
3326         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3327         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3328
3329 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3330
3331         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3332         AOT, as it is not implemented yet.
3333
3334         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3335
3336 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3337
3338         * debugger-agent.c: Fix windows build.
3339
3340 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3341
3342         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3343         after the client connects/disconnects.
3344
3345         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3346         when an exception of a given type is thrown.
3347
3348         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3349         only on an uncaught exception.
3350
3351         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3352
3353         * debugger-agent.c: Add a 'launch' option.
3354
3355 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3356
3357         * debugger-agent.c: Add a 'timeout' option.
3358
3359 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3360
3361         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3362         the JDWP agent.
3363
3364 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3365
3366         * debugger-agent.c (set_breakpoint): Emit a log message.
3367
3368 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3369
3370         * mini-arm.c: Fix the arm build.
3371
3372 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3373
3374         * aot-compiler.c: don't leak the value returned from
3375         mono_type_full_name().
3376
3377 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3378
3379         * debugger-agent.c: defer including mono-mutex.h until we know the
3380         agent is supported.
3381
3382 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3383
3384         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3385         of pthreads directly.
3386
3387         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3388         exception handlers. Pass info argument.
3389
3390         * mini.h: Adjust signatures of soft debugger functions to pass void*
3391         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3392
3393         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3394         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3395         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3396         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3397
3398         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3399
3400         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3401         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3402         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3403         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3404
3405         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3406
3407         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3408
3409         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3410
3411         * mono-semaphore.h: Skeleton implementation for Windows.
3412
3413         Code contributed under MIT/X11 license.
3414
3415 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3416
3417         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3418
3419         Code contributed under MIT/X11 license.
3420
3421 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3422
3423         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3424
3425         Code contributed under MIT/X11 license.
3426
3427 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3428
3429         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3430         debug info to 100 because 10 still slows down gdb too much.
3431
3432         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3433         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3434         them in the wrappers.
3435
3436 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3437
3438         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3439
3440         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3441
3442         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3443         function mono_aot_get_array_helper_from_wrapper ().
3444
3445         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3446         array helper methods.
3447
3448 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3449
3450         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3451         the value was loaded from memory.
3452
3453         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3454         the value was loader from there.
3455
3456         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3457         without constant swizzle.
3458
3459 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3460
3461         * mini-amd64.c: Put soft debugger functions behind a
3462         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3463
3464         * mini-amd64.h: disable the soft debugger in windows.
3465
3466         Code contributed under MIT/X11 license.
3467
3468 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3469
3470         * mini-x86.c: Put soft debugger functions behind a
3471         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3472
3473         Code contributed under MIT/X11 license.
3474
3475 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3476
3477         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3478         to mono_arch_find_jit_info_ext.
3479
3480         Code contributed under MIT/X11 license.
3481
3482 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3483
3484         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3485
3486         * debugger-agent.c: Add support for filtering events by assemblies.
3487
3488         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3489         the agent is not enabled.
3490
3491 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3492
3493         * exceptions-x86.c: hopefully last change to fix the windows build.
3494         This one courtesy of Jonathan Chambers.
3495
3496 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3497
3498         * debugger-agent.c: remove unused function.
3499
3500 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3501
3502         * debugger-agent.c: add #ifdefs for a few header files.
3503         * mini-x86.h: disable the soft debugger in windows.
3504         Step 1 of 2 to make this compile on windows with gcc.
3505
3506 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3507
3508         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3509         as it breaks the build.
3510
3511 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3512
3513         Merge the soft debugger branch.
3514
3515         * debugger-agent.h debugger-agent.c: New files containing the soft
3516         mode debugger module.
3517
3518         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3519         at the appropriate locations.
3520
3521         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3522         opcode.
3523
3524         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3525         enable/disable single stepping.
3526
3527         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3528         which returns all information in a StackFrameInfo structure, and can handle the
3529         LMF frames added by the debugger.
3530
3531         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3532         about an LMF frame.
3533
3534         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3535         walker function which works on a specific thread and passes a StackFrameInfo
3536         structure to its callback.
3537
3538         * mini.c (mini_init): Initialize the debugger agent.
3539
3540         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3541
3542         * mini-ops.h: Add OP_SEQ_POINT opcode.
3543
3544         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3545         arguments to the debugger agent.
3546
3547 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3548
3549         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3550         speed things up.
3551
3552         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3553
3554         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3555
3556         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3557
3558         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3559         if needed.
3560         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3561         sets the IMT argument and makes a virtual call.
3562
3563         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3564
3565 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3566
3567         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3568         the windows build.
3569
3570 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3571
3572         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3573         runtime. Fixes #551228.
3574
3575 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3576
3577         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3578
3579         * basic.cs: Add a test.
3580
3581         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3582         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3583         CONSTRAINED. Fixes #550964.
3584
3585         * generics.cs: Add a test.
3586
3587 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3588
3589         * mini-posix.c (add_signal_handler): Use
3590         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3591
3592 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3593
3594         Contributed under the terms of the MIT/X11 license by
3595         Jerry Maine <crashfourit@gail.com>.
3596
3597         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3598         sse4a for simd intrinsics.
3599
3600         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3601         sse4a for simd intrinsics.
3602
3603 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3604
3605         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3606         instead of inst_p1 which is not the same on ILP32 platforms.
3607
3608 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3609
3610         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3611         not the mscorlib one before calling mono_get_lmf_addr.
3612
3613         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3614         of the ip to the LMF.
3615
3616         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3617         immediate in the op->op_imm optimization.
3618
3619         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3620         understand. VTypes now work, but are not abi compliant, as they are
3621         split into 4 byte parts instead of 8.
3622         (emit_memcpy): Fix the unrolled case to work on the PS3.
3623
3624         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3625
3626         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3627         the default when static linking.
3628
3629         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3630
3631         * aot-compiler.c: Add an autoreg option to automatically register
3632         statically linked aot modules using ELF .ctors.
3633
3634         * genmdesc.pl: Add __ppc64__ to allowed defines.
3635
3636 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3637
3638         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3639         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3640
3641 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3642
3643         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3644
3645 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3646
3647         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3648         which will contain the domain where the method was found.
3649
3650         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3651         mini_jit_info_table_find ().
3652
3653         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3654
3655         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3656
3657 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3658
3659         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3660         set, its not supported yet.
3661
3662 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3663
3664         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3665         iface wrapper is not found.
3666         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3667
3668 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3669
3670         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3671         which have a different name.
3672
3673         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3674         wrappers and Array.GetGenericValueImpl ().
3675
3676         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3677         because of the change above.
3678
3679         * generics.cs: Add a test for full aot + generic array ifaces.
3680
3681 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3682
3683         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3684         that hides the previous one.
3685
3686 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3687
3688         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3689         marshalled. Fixes #541623.
3690
3691 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3694
3695 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3696
3697         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3698
3699 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3700
3701         * mini-posix.c (sigprof_signal_handler):
3702         Implemented support for building stat call chans in different ways.
3703
3704 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3705
3706         * mini-exceptions.c (mono_find_jit_info):
3707         Also check that a jit info has been found (fixes a profiler crash).
3708
3709 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3710
3711         * mini.c (mono_codegen):
3712         Call mono_profiler_code_buffer_new with correct code address.
3713
3714 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3715
3716         * driver.c (mono_main): Change the date in the copyright.
3717
3718 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3719
3720         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3721         allocator in shared generic code for open classes, because we
3722         can't get those classes' vtables.  We need to make managed
3723         allocators not depend on the vtable at compile-time to solve this.
3724
3725 2009-10-13  Martin Baulig  <martin@ximian.com>
3726
3727         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3728         `const guint8 *trampoline' argument; send both the old and the new
3729         notification.
3730
3731 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3732
3733         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3734         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3735         (can_marshal_struct): Skip structures with auto layout.
3736
3737         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3738
3739 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3740
3741         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3742         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3743         a variable to hold the stack slot used by the int<->float conversion opcodes.
3744
3745         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3746
3747 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3748
3749         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3750         when using full-aot.
3751
3752 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3753
3754         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3755         each instance of Comparer<T>.
3756
3757         * generics.cs: Add a new test.
3758
3759 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3760
3761         * driver.c (parse_debug_options): Add a 'gdb' option.
3762
3763         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3764
3765         * image-writer.c: Add support for emitting the image into a memory buffer.
3766
3767         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3768
3769         * aot-compiler.c: Add support for registering debug info with GDB using the
3770         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3771         MONO_XDEBUG to 'gdb'.
3772
3773 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3774
3775         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3776         gdb mode.
3777
3778 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3779
3780         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3781         can be used to set breakpoints in gdb.
3782
3783         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3784         segment to an absolute address.
3785
3786 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3787
3788         * method-to-ir.c: Use the managed array allocator method if
3789         available.
3790
3791 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3792
3793         * aot-compiler.c : Fix the MSVC builds
3794
3795         Code is contributed under MIT/X11 license.
3796
3797 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3798
3799         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3800         avoid registering 1 symbol file per method with gdb.
3801
3802 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3803
3804         * mini-sparc.c: Fix the handling of enums with base type long.
3805
3806         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3807
3808         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3809         instead of using type->data.klass as the later doesn't work with generics.
3810
3811 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3812
3813         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3814         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3815         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3816         works differently now and we don't handle it in the JIT anymore.
3817
3818         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3819         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3820         the Thread class split.
3821
3822 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3823
3824         * driver.c: Don't run tests with the obsolete treeprop optimization.
3825
3826         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3827         variable volatile. Fixes #541577.
3828
3829         * basic-calls.cs: Add a new test.
3830
3831         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3832
3833 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3834
3835         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3836         work/required with recent iphone sdk versions.
3837
3838         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3839         structures.
3840
3841         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3842         in the VCALL decomposition code.
3843
3844 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3845
3846         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3847
3848         * basic.cs: Add a test.
3849
3850         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3851         generic invokes.
3852
3853         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3854         searches all the domains of the current thread.
3855
3856         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3857
3858 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3859
3860         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3861         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3862
3863         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3864         for non-jit trampolines.
3865
3866         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3867
3868         * aot-compiler.c (add_wrappers): Ditto.
3869
3870         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3871         the size of the param area used by dyn_call to 6 which covers the majority of
3872         methods.
3873
3874         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3875
3876         * mini-arm.c: Implement support for passing/receiving
3877         longs and receiving floats in the dyn_call code.
3878
3879         * mini-amd64.c: Implement support for receiving vtypes in registers in
3880         the dyn_call code.
3881
3882         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3883         the dyn_call code.
3884
3885 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3886
3887         * mini-arm.c (get_call_info): Return more precise information in
3888         ArgInfo->regtype.
3889         (dyn_call_supported): Use the information in CallInfo.
3890
3891         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3892
3893         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3894         code.
3895
3896         * mini-arm.c: Update after the dyn_call api changes.
3897
3898         * mini.c (mini_create_jit_domain_info): Register a destructor function
3899         for the runtime_invoke_hash.
3900
3901         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3902         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3903         this function.
3904         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3905         (dyn_call_supported): Simplify this by using get_call_info ().
3906         (mono_arch_dyn_call_free): New destructor function.
3907
3908         * generics.cs: Remove a printf.
3909
3910         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3911
3912         * mini-arm.c: Add support for enum return values and passing a few arguments
3913         on the stack.
3914         
3915         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3916         dyn invoke.
3917
3918         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3919
3920         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3921         the dynamic invoke wrappers.
3922
3923         * mini-arm.c: Implement OP_DYN_CALL for arm.
3924
3925         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3926         supported by the dynamic runtime invoke wrapper.
3927
3928         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3929         runtime invoke wrapper.
3930
3931         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3932         if possible when running with full-aot.
3933
3934         * mini-ops.h: Add OP_DYN_CALL opcode.
3935
3936         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3937         with dynamic arguments lists similar to libffi.
3938
3939 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3940
3941         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3942         
3943         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3944         to NEWARR.
3945
3946         * iltests.il.in: Add a new test.
3947         
3948 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3949
3950         * aot-compiler.c (add_generic_instances): Add more instances of
3951         GenericEqualityComparer.
3952
3953 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3954
3955         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3956
3957 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3958
3959         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3960         comments on some functions that now can fail.
3961
3962 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3963
3964         * Makefile.am: Add Info.plist to EXTRA_DIST
3965
3966 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3967
3968         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3969         static synchronized wrappers. Fixes #539500.
3970
3971 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3972
3973         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3974         properly.
3975
3976 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3977
3978         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3979         lmf before calling filter clauses as well. Fixes #539550.
3980
3981         * exceptions.cs: Add a test.
3982         
3983 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3984
3985         * aot-compiler.c (add_generic_class): Add instances of
3986         Array.GetGenericValueImpl as well.
3987
3988         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3989         can be tested too.
3990
3991         * generics.cs: Add a fullaot linq test.
3992
3993 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3994
3995         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3996         reg r1 on arm.
3997
3998 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3999
4000         * mini-trampolines.c (mono_delegate_trampoline) : Call
4001           mono_cominterop_get_invoke if the delegate target object
4002           is a COM object.
4003
4004         Code is contributed under MIT/X11 license.
4005
4006 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
4007
4008         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
4009         internal call is defined outside platform code. Reduce code 
4010         duplication with existing [Method|Field]AccessException
4011
4012 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4013
4014         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
4015         if the return value is a small struct passed on regs.
4016
4017 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
4018
4019         * cpu-arm.md mini-arm.c: Remove unused opcodes.
4020
4021         * mini-codegen.c: Enable the cpu description validation for arm.
4022
4023 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4024
4025         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4026         test which depends on structs to objects.cs.
4027         
4028         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4029         require object model related stuff working.
4030
4031         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4032
4033         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4034
4035         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4036         against the instruction metadata in mini-ops.h. amd64 only for now.
4037
4038         * mini-ops.h: Fix some instruction descriptions.
4039
4040         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4041         unused instructions.
4042
4043 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4044
4045         * exceptions.cs: Add a new test.
4046
4047 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4048
4049         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4050
4051 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4052
4053         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4054         skip empty phi opcodes.
4055         
4056         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4057         correctly by zero extending after loads. Skip methods containing calls
4058         to the monitor enter/exit trampolines.
4059
4060         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4061         when calling mono_thread_force_interruption_checkpoint ().
4062
4063         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4064
4065         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4066         64 bit thunks.
4067         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4068
4069         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4070         bootstrap could run.
4071
4072 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4073
4074         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4075
4076 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4077
4078         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4079         of the method to
4080         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4081         LLVM might be very short.
4082
4083         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4084         in OP_THROW/RETHROW.
4085
4086         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4087         alignment on osx.
4088
4089 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4090
4091         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4092         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4093         LLVM might be very short.
4094
4095 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4096
4097         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4098         the alignment for the value of sp.
4099
4100 2009-09-01  Geoff Norton  <gnorton@novell.com>
4101
4102         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4103         managed wrappers in full aot.
4104
4105 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4106
4107         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4108
4109 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4110
4111         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4112
4113 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4114
4115         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4116
4117         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4118         saved info.
4119
4120         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4121
4122         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4123         depend on the info MonoMethodHeader which could be missing in IL stripped
4124         assemblies.
4125
4126 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4127
4128         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4129         they are only 4 byte aligned.
4130
4131 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4132
4133         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4134         was done previously, since using SP causes too many problems.
4135
4136         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4137         frames without a frame pointer works.
4138
4139         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4140         global register in methods with calls, since the calls can go through
4141         a static rgctx trampoline which doesn't save it.
4142
4143 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4144
4145         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4146
4147 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4148
4149         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4150
4151 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4152
4153         * method-to-ir.c: Fix warnings for uninitialized variables.
4154
4155 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4156
4157         * mini-exceptions.c:
4158         * aot-compiler.c: Fix printf warnings.
4159
4160 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4161
4162         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4163         Add GetGenericValueImpl<string>.
4164         
4165         * aot-compiler.c (add_generic_instances): Add instances of
4166         GenericEqualityComparer<T> for primitive types. Only emit the array
4167         wrappers into the mscorlib image.
4168
4169 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4170
4171         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4172         the methods_loaded array using amodule->info->nmethods.
4173
4174         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4175         (MONO_AOT_FILE_VERSION): Bump this.
4176
4177         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4178         to work.
4179
4180         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4181         MonoJitInfo doesn't belong to its methods aot image.
4182
4183 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4184
4185         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4186
4187         * mini-arm.c: Fix warnings.
4188         
4189         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4190
4191         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4192         supports it.
4193
4194 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4195
4196         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4197         avoid clobbering IP.
4198
4199         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4200         hold the trampoline argument, so its initial value is available during
4201         debugging.
4202
4203 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4204
4205         * exceptions-arm.c:
4206         * exceptions-hppa.c:
4207         * mini.c:
4208         * exceptions-s390x.c:
4209         * exceptions-mips.c:
4210         * exceptions-ppc.c:
4211         * exceptions-sparc.c:
4212         * exceptions-alpha.c:
4213         * aot-runtime.c:
4214         * mini-trampolines.c:
4215         * exceptions-x86.c:
4216         * exceptions-s390.c: add and use #define's instead of sizeof()
4217         for MonoJitInfo and MonoJitInfoTable.
4218
4219 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4220
4221         * tramp-arm.c:
4222         * tramp-amd64.c:
4223         * tramp-ppc.c:
4224         * tramp-x86.c: use a #define instead of sizeof() for a few
4225         structures that use a zero-length array.
4226
4227 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4228
4229         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4230         case when the method is dynamic. Fixes #529238.
4231
4232 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4233
4234         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4235         of asserting when a method is JIT compiled in full-aot mode.
4236
4237 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4238         
4239         Contributed under the terms of the MIT/X11 license by
4240         Jerry Maine <crashfourit@gail.com>.
4241         
4242         * fixed wrong dates in changelog.
4243
4244 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4245         
4246         Contributed under the terms of the MIT/X11 license by
4247         Jerry Maine <crashfourit@gail.com>.
4248
4249         * basic-simd.cs: added test for packed double square root.
4250         * cpu-amd64.md: added opcode info for packed double square root.
4251         * cpu-x86.md: added opcode info for packed double square root.
4252         * mini-ops.h: added IR opcode for packed double square root.
4253         * mini-x86.c: added IR to native translation code for packed double square root.
4254         * mini-amd64.c: removed todo for packed double square root.
4255         * simd-intrinsics.c: added method to IR opcode converstion for
4256         packed double square root.
4257
4258 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4259
4260         Contributed under the terms of the MIT/X11 license by
4261         Jerry Maine <crashfourit@gail.com>.
4262
4263         * mini-amd64.c: Added a change to help tell the difference as 
4264         to what perpose the xmm register is being used--mainly to help
4265         with debuging.
4266         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4267         (one used for special cases) xmm registers for both fp
4268         and simd ops. Added define to turn on new feature in the regalloc
4269         that allows fp and simd ops to share the xmm regs happily.
4270         * codegen.c: Added code to detect for which perpose an xmm reg is
4271         being used (fp or simd) and to translate back and forth to the
4272         correct logical reg bank (fp or simd) for 'spill load's.
4273
4274 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4275
4276         Contributed under the terms of the MIT/X11 license by
4277         Jerry Maine <crashfourit@gail.com>.
4278
4279         * basic-simd.cs: Added tests for stressing the regalloc when running with
4280         16 simd regs and when simd and fp ops share the same reg bank.
4281
4282 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4283
4284         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4285         in shared generic code, we might have to look up the class in the
4286         RGCTX.  If we use the class directly, compute its GC descriptor.
4287
4288 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4289
4290         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4291
4292 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4293
4294         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4295         check for errors. Fixed the case when the class with the Main
4296         method is broken.
4297
4298 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4299
4300         Contributed under the terms of the MIT/X11 license by
4301         Jerry Maine <crashfourit@gail.com>.
4302
4303         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4304
4305 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4306
4307         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4308
4309 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4310
4311         * method-to-ir.c: Fix naming of stelem and ldelem.
4312
4313 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4314
4315         * driver.c (main_thread_handler): Check that the assembly loaded
4316         matches the filename when doing AOT.
4317
4318 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4319
4320         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4321         call it anymore.
4322
4323         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4324         utils/mono-sigcontext.h).
4325
4326         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4327         #ifdef.
4328
4329 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4330
4331         * mini.c (mono_codegen):
4332         Call profiler hook to keep track of method code buffers.
4333
4334 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4335
4336         * method-to-ir.c: Invoke write barriers for the
4337         Interlocked.(Compare)Exchange JIT intrinsics.
4338
4339 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4340
4341         * Makefile.am (version.h): Fix issues when built out of tree.
4342         Remove some redundant 'grep's piped through 'sed's.
4343
4344 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4345
4346         This patch is contributed under the terms of the MIT/X11 license
4347
4348         * mini-ppc.c (mono_arch_output_basic_block):
4349         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4350         for bits 32-47 with signed load/store diplacements for bits
4351         48-63.  Use prefered base/offset order for indexed form.
4352         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4353         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4354         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4355         OP_LOADI2_MEMBASE): Same.
4356         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4357         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4358         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4359         indexed form.
4360         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4361         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4362         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4363         OP_LOADI1_MEMINDEX): Same
4364         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4365         OP_STORER8_MEMINDEX): Same
4366         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4367         computations.
4368         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4369         for bits 32-47 with signed load/store diplacements for bits
4370         48-63.  Use prefered base/offset order for indexed form.
4371
4372 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4373
4374 This patch is contributed under the terms of the MIT/X11 license
4375
4376         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4377         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4378         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4379         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4380         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4381         cfg->stack_usage to avoid size warnings.
4382         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4383         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4384         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4385         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4386         to convert.
4387         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4388         after code varible is initialized.
4389         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4390         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4391         (mono_arch_emit_epilog): 
4392         Move Use ppc_load32 for cfg->stack_usage to avoid size
4393         warnings.
4394
4395 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4396
4397         * method-to-ir.c: The write barrier doesn't do the store anymore,
4398         so we have always to emit it.  Also, emit the wbarrier after the
4399         store.
4400
4401 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4402
4403         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4404         for argument count 3 too.
4405
4406 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4409         the caller handle the exceptions.
4410         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4411         method. Fixes #524498.
4412
4413 2009-07-22  Geoff Norton  <gnorton@novell.com>
4414
4415         * mini-exceptions.c: Fix build on ia64.
4416
4417 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4418
4419         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4420         barriers.
4421
4422 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4423
4424         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4425         code.
4426
4427 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4428
4429         * basic-simd.cs (Main): Pass args to the test driver.
4430
4431 2009-07-20  Geoff Norton  <gnorton@novell.com>
4432
4433         * mini-x86.h: Fix the x86 version guards to use Apple's
4434         properly defined macros.
4435
4436 2009-07-20  Geoff Norton  <gnorton@novell.com>
4437
4438         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4439         aligned access.
4440
4441 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4442
4443         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4444         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4445         the information which is needed for invokes, so only one locking+hash table
4446         lookup is needed.
4447
4448         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4449         
4450         * aot-compiler.c (add_generic_instances): Emit instances of 
4451         GenericComparer<T> for primitive types.
4452
4453 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4454
4455         * mini-posix.c: Fix linux build.
4456
4457 2009-07-19  Geoff Norton  <gnorton@novell.com>
4458
4459         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4460         mono_gdb_render_native_backtraces
4461         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4462         so we implement the sane semantics to the runtime here
4463         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4464         so we need to call it differently (mono_gdb_render_native_backtraces)
4465         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4466         here for default implementations.
4467         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4468         support Apple's weird syscall (SYS_fork) implementation and not busy
4469         loop in abort() on native crashes on OSX anymore.
4470
4471 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4472
4473         * aot-runtime.c (load_method): Change the handling of the
4474         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4475         are used.
4476
4477         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4478
4479 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4480
4481         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4482         seems to break the aot tests.
4483         
4484         * mini.c (mono_patch_info_equal): Fix the handling of 
4485         MONO_PATCH_INFO_RGCTX_FETCH.
4486
4487 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4488
4489         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4490
4491         * mini.c (mono_patch_info_hash): Fix the handling of 
4492         MONO_PATCH_INFO_INTERNAL_METHOD.
4493         (mono_patch_info_equal): Ditto.
4494
4495 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4496
4497         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4498         in a few places.
4499         
4500         * mini-llvm.c: Add some infrastructure for AOT support.
4501
4502 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4503
4504         * mini-llvm-cpp.c: Update to the latest llvm api.
4505         
4506         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4507         option to false to prevent llvm from installing signal handlers which
4508         trip up the gc.
4509         
4510 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4511
4512         * cpu-x86.md:
4513         * cpu-amd64.md: Revert previous change as those instructions
4514         take 2 separate arguments. Remember to read the arch docs more
4515         carefully next time.
4516
4517 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4518
4519         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4520
4521 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4522
4523         * mini-ppc.c: exploit multiple load/store units if available (rest of
4524         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4525         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4526
4527 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4528
4529         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4530         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4531
4532 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4533
4534         * cpu-x86.md: Fix missing clobbering from trancendental simd
4535         ops.
4536
4537         * cpu-amd64.md: Same.
4538
4539 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4540
4541         Contributed under the terms of the MIT/X11 license by
4542         Jerry Maine <crashfourit@gail.com>.
4543
4544         * basic-simd.cs: Added tests for single and doulble indexers.
4545
4546         * cpu-amd64.md: Added simd opcode information.
4547
4548         * mini-amd64.c: Added IR to native simd generation code.
4549         Added simd register names and function that returns them.
4550
4551         * mini-amd64.h: Added marcos to turn on simd code compilation in
4552         amd64. Added max simd register count marco. Added caller/callee
4553         register mask marcos. Added marcos to use simd register bank.
4554
4555         * mini.h: Added helper marco for shufling dwords and simple
4556         floats.
4557
4558 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4559
4560         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4561
4562         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4563
4564         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4565         the length of the native code as well.
4566
4567         * basic-simd.cs: Add a test for #521662.
4568
4569 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4570
4571         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4572
4573 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4574
4575         * mini.c: Register function for getting the IP from a signal
4576         context with metadata.
4577
4578 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4579
4580         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4581         call a generic class init trampoline if needed. Fixes #519336.
4582
4583         * generics.cs: Add a test.
4584         
4585 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4586
4587         * method-to-ir.c: When doing a call which might be remote from
4588         shared generic code to other shared code with open type arguments,
4589         get the remoting invoke wrapper from the RGCTX and do an indirect
4590         call to it.
4591
4592 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4593
4594         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4595         after the unbox trampoline in the full-aot case.
4596
4597 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4598         
4599         * mini.c: Move initialization of jit_mutex before debugger initialization
4600         
4601         to avoid crashes.
4602         
4603         
4604         * Info.plist: added Info.plist and link flag to enable the mono executable
4605         to access other processes. Requires codesigning of the executable to work.
4606         
4607         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4608         
4609         compile on OS X.
4610         
4611
4612 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4613
4614         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4615
4616 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4617
4618         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4619         when the generic instance is an instantiation of a subclass of the
4620         methods class. Fixes #517166.
4621
4622 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4625         code.
4626
4627         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4628         AOTed code.
4629
4630         * CMakeLists.txt: Add minimal support for installation.
4631
4632 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4633
4634         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4635         determine whenever a method is directly callable to a separate function.
4636
4637         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4638         needed ones as a result of the previous change.
4639
4640         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4641         type of register arrays.
4642
4643         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4644         type of register arrays.
4645
4646 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4647         
4648         Contributed under the terms of the MIT/X11 license by
4649         Jerry Maine <crashfourit@gail.com>.
4650
4651         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4652
4653 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4654
4655         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4656
4657 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4658
4659         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4660         dump of structure return value. Fix some formatting.
4661         * cpu-s390x.md: Fix lengths of instruction sequences.
4662         * mini-s390.c: Minor formatting changes.
4663
4664 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4665
4666         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4667         Use sigaction on freebsd as well.
4668
4669 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4670
4671         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4672         uses #ifdef on it.
4673         
4674         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4675
4676 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4677
4678         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4679
4680 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4681
4682         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4683
4684 2009-06-20  Martin Baulig  <martin@ximian.com>
4685
4686         * debug-mini.c
4687         (MonoDebuggerThreadFlags): New enum typedef.
4688         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4689         (mono_debugger_thread_created): Added `gpointer func' argument;
4690         initialize the new `thread_flags' field.
4691
4692 2009-06-18  Martin Baulig  <martin@ximian.com>
4693
4694         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4695         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4696
4697         * debug-debugger.c
4698         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4699         flag in `MONO_DEBUGGER__info.runtime_info'.
4700
4701         * driver.c
4702         (mono_main): Call mini_debugger_set_attach_ok() if generics
4703         sharing is disabled.
4704
4705 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * aot-compiler.c (add_wrappers): Fix a warning.
4708
4709         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4710         the ppc load/store macro changes.
4711
4712 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4713
4714         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4715
4716         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4717         not just the got symbol.
4718
4719         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4720         on ppc.
4721
4722         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4723         ppc.
4724         
4725         * aot-compiler.c: Remove some fixmes.
4726
4727         * driver.c (mono_main): Print a helpful message when cross-compiling.
4728
4729         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4730
4731         * method-to-ir.c (initialize_array_data): Do the optimization if the
4732         target byte order is little endian, instead of the host byte order.
4733
4734         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4735         wrappers into the mscorlib image, Emit a unique plt symbol for each
4736         image, emit symbols for plt entries.
4737
4738         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4739         a .size directive.
4740         
4741 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4742
4743         * aot-compiler.c (add_wrappers): Avoid calling 
4744         mono_marshal_get_type_info () since it can assert for some types.
4745
4746         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4747         ldtoken are used inside wrappers.
4748
4749         * helpers.c: Add support for prefixing tools with the arch name.
4750
4751         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4752         quantities when using ilp32.
4753
4754         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4755         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4756
4757         * image-writer.c: Use .long on ilp32.
4758
4759         * aot-compiler.c: Use 32 bit loads on ilp32.
4760         
4761 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4762
4763         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4764
4765         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4766
4767         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4768
4769         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4770         second got slot of every aot image.
4771         
4772         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4773         aot on platforms with function pointers.
4774
4775         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4776         support for aot/full aot on ppc/ppc64.
4777         
4778         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4779         arguments which are needed on ppc.
4780
4781         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4782         argument.
4783
4784         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4785         
4786         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4787
4788         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4789
4790         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4791
4792         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4793
4794 2009-06-17  Geoff Norton  <gnorton@novell.com>
4795
4796         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4797
4798 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4799
4800         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4801         to control whenever the dwarf writer is in xdebug or aot mode.
4802         (emit_class_dwarf_info): Use a separate abbrev for structures without
4803         children.
4804
4805         * aot-compiler.c: Pass the appending parameter to 
4806         mono_dwarf_writer_create ().
4807
4808         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4809         falls through to its next bblock. Fixes #513931.
4810
4811         * iltests.il: Add a test.
4812
4813         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4814         infor even if emit_line is FALSE, as the apple linker seems to require it.
4815
4816         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4817
4818         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4819         gcc does.
4820         (emit_fde): Ditto.
4821
4822 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4823
4824         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4825         mips build.
4826
4827 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4828
4829         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4830         'has_call_handler' fields.
4831
4832         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4833
4834         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4835         first bblock if not needed. Fixes #512790.
4836         
4837 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4838
4839         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4840         
4841         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4842         wrappers.
4843
4844         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4845         remoting-invoke-with-check wrappers, which are not needed when running with
4846         full-aot, since it doesn't support remoting.
4847         
4848 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4849
4850         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4851
4852         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4853         method info, it is not used anymore.
4854
4855         * mini.h: Bump AOT file format version.
4856         
4857         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4858         word smaller.
4859
4860         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4861         change above.
4862         
4863         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4864
4865         * mini.h: Bump AOT file format version.
4866         
4867 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4868
4869         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4870         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4871         iphone.
4872
4873         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4874         of CKFINITE and FBGE for VFP.
4875
4876 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4877
4878         * aot-compiler.c: Don't align code to 16 bytes on arm.
4879         
4880         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4881         before the methods they belong to.
4882
4883         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4884         the full-aot case if possible, since the trampoline will be called right 
4885         away.
4886
4887         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4888         trampolines to 1024 after the change above.
4889
4890         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4891         trampoline to save 8 bytes per trampoline.
4892
4893         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4894         change above.
4895
4896 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4897
4898         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4899
4900 2009-06-08  Martin Baulig  <martin@ximian.com>
4901
4902         * debug-mini.c
4903         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4904         (_mono_debugger_throw_exception): Don't make this static.
4905         (_mono_debugger_unhandled_exception): Likewise.
4906         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4907
4908         * debug-mini.c
4909         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4910         (_mono_debugger_throw_exception): Add function prototype.
4911         (_mono_debugger_unhandled_exception): Likewise.
4912
4913         * mini-exceptions.c
4914         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4915         arg; return the first exception handler if the exception is caught
4916         and we're running inside the debugger.
4917         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4918         improve exception handle inside runtime-invoke, check whether the
4919         exception is actually caught in the method being invoked and not
4920         by the runtime-invoke-wrapper.
4921
4922 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4923
4924         * image-writer.c: Improve support for the osx assembler.
4925
4926         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4927         support them.
4928
4929 2009-06-08  Martin Baulig  <martin@ximian.com>
4930
4931         * debug-mini.c
4932         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4933         (_mono_debugger_throw_exception): Don't make this static.
4934         (_mono_debugger_unhandled_exception): Likewise.
4935         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4936
4937         * debug-mini.c
4938         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4939         (_mono_debugger_throw_exception): Add function prototype.
4940         (_mono_debugger_unhandled_exception): Likewise.
4941
4942         * mini-exceptions.c
4943         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4944         arg; return the first exception handler if the exception is caught
4945         and we're running inside the debugger.
4946         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4947         improve exception handle inside runtime-invoke, check whether the
4948         exception is actually caught in the method being invoked and not
4949         by the runtime-invoke-wrapper.
4950
4951 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4952
4953         * image-writer.c (append_subsection): Don't align subsections of the
4954         debug_line section as a workaround.
4955
4956         * dwarfwriter.c: Emit line number info in the AOT case as well.
4957
4958 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4959
4960         This patch is contributed under the terms of the MIT/X11 license
4961
4962        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4963        code_len <= code_size
4964
4965 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4966
4967         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4968
4969 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4970
4971         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4972         invoke wrappers, we now use trampolines instead.
4973
4974 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4975
4976         * mini-darwin.c: The exception thread must not be registered with
4977         the GC.
4978
4979 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4980
4981         * mini-gc.c: Disable the code because it makes SGen crash.
4982
4983 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4984
4985         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4986         instead of asserting.
4987
4988 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4989
4990         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4991         output file after the code has been compiled.
4992
4993 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4994
4995         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4996
4997 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4998
4999         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
5000         entries distinction to simplify the code.
5001
5002         * mini.h: Bump AOT file format version.
5003         
5004 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5005
5006         * objects.cs: Fix the signature of one of the tests.
5007
5008         * mini.c (mini_create_ftnptr): New helper function, moved here from
5009         object.c.
5010         (mini_get_addr_from_ftnptr): Ditto.
5011         (mini_init): Install the new helpers.
5012
5013 2009-05-28  Martin Baulig  <martin@ximian.com>
5014
5015         Correctly initialize the debugger when embedding Mono.
5016
5017         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
5018         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
5019         see documentation in mini_debug_running_inside_mdb().
5020
5021         * debug-debugger.c
5022         (mini_debug_running_inside_mdb): New function to check whether
5023         we're running inside mdb.
5024
5025         * mini.c (mini_init): Call mini_debugger_init() if we're running
5026         inside the debugger.
5027
5028         * driver.c (mono_main): Moved the call to mini_debugger_init()
5029         into mini_init() to make this work when embedding Mono.
5030
5031         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5032         calls to mini_debugger_init().
5033
5034         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5035         mono_debugger_main() -> mini_debugger_main() and put them inside a
5036         `MONO_DEBUGGER_SUPPORTED' conditional.
5037
5038 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5039
5040         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5041         this is no longer in use.
5042         * mini.h: Same.
5043
5044 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5045
5046         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5047
5048         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5049         methods.
5050
5051 2009-05-27  Martin Baulig  <martin@ximian.com>
5052
5053 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5054
5055         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5056         long_conv_to_r_un to 64 bits.
5057
5058         * cpu-x86.md: Increase the instruction size due to the changes.
5059
5060         * iltests.il.in: Add regression test.
5061
5062         Fixes #467201.
5063
5064 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5065
5066         * objects.cs: Move the previous test from basic.cs to here.
5067
5068 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5069
5070         * basic.cs: Add regression test for #506915.
5071
5072 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5073
5074         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5075         optimization we must check the bb of the first byte of stobj as
5076         it's the only one set in cil_offset_to_bb.
5077
5078         Fixes #506915.  
5079
5080 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5081
5082         * image-writer.c: Fix pointer directive on ppc64.
5083
5084 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5085
5086         * image-writer.c (asm_writer_emit_section_change): Avoid using
5087         .bss subsections on ppc too.
5088
5089 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5090
5091         * image-writer.c: Fix the definition of TARGET_ASM_....
5092         
5093         * image-writer.c: Fix the emission of assembler directives in the last
5094         change.
5095
5096         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5097         exception throwing code to accomodate ppc64.
5098
5099         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5100         size to work on ppc64 too.
5101
5102         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5103         too.
5104
5105         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5106         the assembler dialect instead of using platform specific defines.
5107
5108 2009-05-22  Geoff Norton  <gnorton@novell.com>
5109
5110         * mini-arm.c (get_call_info): If a structure is split between the stack
5111         and argument registers, we should not advance the stack pointer by the entire
5112         native size, but just by the amount that spilled.
5113
5114 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5115
5116         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5117         correctly.
5118
5119 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5120
5121         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5122         wrappers normally.
5123         
5124         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5125         methods so wrapper don't get added twice.
5126         (add_generic_instances): Don't add methods of arrays.
5127
5128         * generics.cs: Mark one test as !FULLAOT.
5129
5130 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5131
5132         * mini-x86.c (emit_move_return_value): Remove unused vars.
5133
5134 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5135
5136         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5137         decomposing 8 bytes structs into a LCALL.
5138
5139         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5140         pointer for where to store the returned regs.
5141
5142         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5143         state the concern.
5144
5145         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5146
5147 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5148
5149         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5150         without getenv.
5151
5152 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5153
5154         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5155
5156         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5157         generics.
5158
5159 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5160
5161         * local-propagation.c (mono_local_cprop): Avoid local propagation
5162         across paired add/sub if the first instruction dest reg is it's
5163         source reg. For example:
5164
5165         int_add_imm R12 <- R12 [1] clobbers: 1
5166         int_sub_imm R42 <- R12 [1] clobbers: 1
5167
5168         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5169         maintain the math identify.
5170
5171         Fixes #505375.
5172
5173 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5174
5175         * Makefile.am: avoid going on the network just to get the revision,
5176         use git log instead
5177
5178 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5179
5180         Fixed estimate for short branches on amd64 (they were off mark, and
5181         enabling call prolog-epilog instrumentations caused assertions).
5182         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5183         estimate for the maximum length of this basic block.
5184         * mini-amd64.c:
5185         - mono_arch_emit_prolog: compute max_length for each basic block
5186           (instead of max_offset), and inflate size estimate also for entry bb
5187           in case of code instrumentation.
5188         - mono_arch_output_basic_block: get rid of "cpos" (the current
5189           estimated "position" in the code), and always use "offset" instead,
5190           which is accurate; at the beginning of the function quickly recompute
5191           max_offset for all the remaining blocks, starting from the current
5192           cfg->code_len (which is correct, and not estimated) and using the
5193           estimated block lengths computed previously.
5194
5195 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5196
5197         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5198         functions, it is already done in the caller.
5199
5200         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5201
5202         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5203         MONO_ARCH_GSHARED_SUPPORTED define.
5204
5205         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5206
5207         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5208         function.
5209
5210 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5211
5212         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5213         call to mono_marshal_get_rgctx_invoke ().
5214
5215         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5216         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5217         gshared use the static rgctx trampolines now.
5218         
5219         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5220         platform supports it.
5221
5222 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5223
5224         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5225
5226         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5227
5228 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5229
5230         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5231
5232         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5233         for ppc.
5234
5235 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5236
5237         Made it possible for mono_arch_instrument_epilog to preserve
5238         argument registers, otherwise instrumenting the "epilogue" before
5239         a tail call would clobber them.
5240         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5241         if like mono_arch_instrument_epilog but with an additional parameter
5242         that states if argument registers must be preserved.
5243         * mini.c: implemented mono_arch_instrument_epilog as a call to
5244         mono_arch_instrument_epilog_full without asking to preserve argument
5245         registers (this makes the existing code work as usual).
5246         * mini-amd64.c:
5247         - mono_arch_instrument_epilog: add parameter to transform it into
5248         mono_arch_instrument_epilog_full, and preserve argument registers
5249         when required.
5250         - mono_arch_output_basic_block, OP_TAILCALL case: call
5251         mono_arch_instrument_epilog_full.
5252         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5253         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5254         only transformed mono_arch_instrument_epilog into
5255         mono_arch_instrument_epilog_full.
5256
5257 2009-05-15  Geoff Norton  <gnorton@novell.com>
5258
5259         * mini-darwin.c: This works on arm now.
5260
5261 2009-05-14  Geoff Norton  <gnorton@novell.com>
5262
5263         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5264         embedding api.
5265
5266 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5267
5268         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5269         label names.
5270
5271         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5272         wrappers during full aot mode correctly.
5273
5274         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5275         methods correctly.
5276
5277         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5278         mono_metadata_type_hash ().
5279
5280 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5281
5282         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5283         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5284         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5285         Removed MONO_INST_BRLABEL from the instruction flags, and the
5286         remaining code that used it, because we do not support branches inside
5287         basic blocks (and branch target labels) anymore.
5288         * Makefile.am: As part of the above cleanup, remove reference to
5289         BURG files which don't exist anymore.
5290
5291 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5292
5293         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5294         osx.
5295
5296         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5297         to use mono_arch_throw_corlib_exception.
5298
5299         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5300         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5301
5302         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5303         domain mempool.
5304
5305         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5306
5307         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5308         for the got to make debugging easier and to avoid confusing it with the
5309         system got.
5310         
5311         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5312         method so a breakpoint can be set when using gdb.
5313
5314 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5315
5316         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5317         on mono_method_get_imt_slot ().
5318
5319         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5320         num_decodes variables.
5321
5322         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5323         change as it doesn't seem to work.
5324         
5325         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5326         wrappers.
5327
5328 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5329
5330         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5331         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5332
5333         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5334         builder when using full aot.
5335
5336         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5337         here, it is already handled.
5338         
5339         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5340         correctly for IMT.
5341
5342         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5343
5344         * mini-arm.h: Enable IMT for full aot.
5345         
5346         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5347         arch doesn't support it.
5348
5349         * mini.c (mini_init): Don't disable IMT for full aot if the
5350         architecture supports it.
5351
5352         * mini.h (MonoAotTrampoline): New enum containing the different types
5353         of 'numerous' trampolines.
5354         (MONO_AOT_FILE_VERSION): Bump this.
5355
5356         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5357         static rgctx trampolines. Add support for full-aot IMT thunks.
5358
5359         * mini-amd64.h: Enable IMT for full aot.
5360
5361         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5362         to exclude tests belonging to a category.
5363
5364         * generics.cs: Mark some tests with a !FULLAOT category.
5365
5366         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5367         generics tests.
5368
5369 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5370
5371         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5372         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5373         (emit_plt): Fix a warning.
5374
5375 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5376
5377         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5378         back into aot-compiler.c to a place where the other functions shared by
5379         the runtime and aot compiler are.
5380         
5381         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5382         as done previously, instead of in MonoAotFileInfo, since pointers might have
5383         alignment requirements.
5384
5385         * mini.h: Bump AOT file format version.
5386
5387 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5388
5389         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5390         that is used at runtime from the aot-compiler.c, this makes it
5391         work on setups that remove the AOT compiler from the output
5392         image. 
5393
5394 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5395
5396         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5397         PPC.
5398
5399         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5400
5401         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5402
5403         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5404         stuff to mono_arch_decompose_long_opts ().
5405         (mono_decompose_opcode): Remove some dead code.
5406
5407 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5408
5409         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5410         cmethod can be null for quite a some reasons.
5411
5412 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5413
5414         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5415
5416 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5417
5418         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5419
5420 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5421
5422         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5423         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5424         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5425         calls returning structures by addr on amd64.
5426
5427         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5428
5429         * iltests.il.in: Restructure the tail call tests a bit.
5430         
5431 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5432
5433         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5434         for virtual methods too.
5435
5436 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5437
5438         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5439         due to regression in verifying System.dll.
5440
5441 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5442
5443         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5444         in dynamic methods.
5445
5446         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5447         instances.
5448
5449         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5450         g_str_hash () which can change.
5451
5452         * driver.c (mini_regression): Disable optimizations not supported by
5453         the cpu. Fixes #500019.
5454
5455         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5456         build.
5457
5458 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5459
5460         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5461         to the latest LLVM code.
5462
5463 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5464
5465         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5466
5467 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5468
5469         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5470         x86/amd64.
5471
5472         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5473         no longer saving offsets, so just save the patch types along with the other
5474         info.
5475         * aot-runtime.c (load_patch_info): Update after the changes to 
5476         encode_patch_list ().
5477         (decode_got_entry): Removed, merged into load_patch_info ().
5478         (is_shared_got_patch): Removed, call the same function from
5479         aot-compiler.c.
5480
5481         * mini.h: Bump aot file format version.
5482         
5483         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5484         half-finished no-dlsym code.
5485
5486         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5487         option.
5488
5489         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5490         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5491
5492 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5493
5494         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5495         buffer length to work with AOT code.
5496
5497         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5498         ldfld/stfld opcodes.
5499
5500         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5501         as it is not used.
5502
5503         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5504
5505         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5506
5507         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5508         LLVM API.
5509
5510         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5511         if needed. Don't decompose long operations when using llvm.
5512
5513 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5514
5515         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5516         PAGESIZE constant.
5517
5518         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5519
5520 2009-05-03  Martin Baulig  <martin@ximian.com>
5521
5522         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5523         mono_debugger_insert_method_breakpoint() since the class init
5524         handler we're inserting at the top of the method already gives us
5525         a notification.
5526
5527 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5528
5529         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5530         to mono_arch_decompose_long_opts () for x86 and arm.
5531
5532 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5533
5534         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5535         TARGET_AMD64 here.
5536
5537 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5538
5539         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5540         JIT code.
5541
5542 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5543
5544         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5545         number of trampolines used in full-aot mode.
5546
5547         * aot-compiler.c: Add an ntrampolines option to set the number of 
5548         trampolines emitted in full-aot mode.
5549
5550 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5551
5552         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5553         a volatile load. Get rid of get_tempname (), llvm assigns names
5554         automatically.
5555
5556         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5557         builder function.
5558
5559         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5560         a value.
5561
5562         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5563         level 1.
5564
5565         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5566         to the same register as a fixed sreg2. Fixes #497271.
5567
5568         * iltests.il.in: Add a new test.
5569
5570 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5571
5572         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5573         stack, since pushes complicate exception handling.
5574
5575         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5576         the stack if they are passed using moves.
5577
5578         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5579
5580         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5581         when using llvm.
5582
5583         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5584         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5585         of FMOVE if it is an R4.
5586
5587 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5588
5589         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5590
5591         * mini.h (LLVMCallInfo): New structure to store calling convention 
5592         information for the LLVM back end similar to the CallInfo structures in 
5593         the back-ends.
5594
5595         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5596         call information in a format usable by LLVM.
5597         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5598
5599         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5600         mono_llvm_emit_call () when compiling using LLVM.
5601
5602         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5603         comments to all functions. Fix memory leaks. Add a public init/cleanup
5604         function.
5605
5606         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5607
5608         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5609         mono_array_new_va () jit icall.
5610         
5611 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5612
5613         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5614         multiple machine description files to be specified.
5615         * mini-ops.h: fixes for cross-compilation.
5616
5617 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5618
5619         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5620         some porting work.
5621
5622 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5623
5624         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5625         to prevent asserts in various passes. Fixes #497220.
5626
5627 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5628
5629         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5630         a racy assert.
5631
5632         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5633         table to avoid duplicates.
5634
5635         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5636         
5637         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5638         option is used.
5639
5640 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5641
5642         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5643         is for method or field access.
5644
5645 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5646
5647         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5648         a Value to stdout.
5649
5650         * mini-llvm.c (mono_llvm_emit_method): Use it.
5651         
5652         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5653         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5654         on volatile values.
5655
5656         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5657         synchronized methods.
5658
5659         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5660
5661         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5662
5663         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5664         OP_LOADI8_MEM.
5665
5666         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5667         allowing some options to be set dynamically.
5668
5669 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5670
5671         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5672         unconditional branch.
5673
5674         * mini.h (MonoTrampolineType): Add new trampoline type 
5675         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5676         compiled code.
5677
5678         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5679         function.
5680
5681         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5682         creation function.
5683
5684         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5685         is enabled. Instead, use the llvm vcall trampoline.
5686         
5687         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5688
5689         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5690         
5691         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5692         functions.
5693
5694         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5695         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5696
5697         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5698         OP_IA64_CSET opcode.
5699
5700         * mini.c: Fix a warning.
5701
5702         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5703         THROW to the appropriate llvm type.
5704
5705 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5706
5707         * mini.c (mini_method_compile): Add statistics for methods JITted
5708         with/without LLVM.
5709
5710 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5711
5712         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5713         OP_IA64_CMP_<cond>_IMM opcodes.
5714
5715 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5716
5717         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5718         corlib exceptions.
5719
5720         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5721         correctly.
5722
5723         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5724         GENERICINST.
5725
5726 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5727
5728         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5729
5730 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5731
5732         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5733         support.
5734
5735         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5736         rgctx invoke trampolines for x86.
5737
5738         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5739         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5740         (mono_arch_get_vcall_slot): Simplify this.
5741
5742 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5743
5744         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5745         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5746
5747 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5748
5749         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5750         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5751
5752         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5753
5754         * liveness.c (visit_bb): Remove a needless assert.
5755
5756 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5757
5758         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5759         full aot support to the arch specific code.
5760
5761         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5762
5763         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5764
5765         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5766         
5767         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5768         collect information about the delegate invoke impl trampolines.
5769
5770         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5771         to save trampolines during full-aot mode.
5772
5773         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5774         creation function which returns a trampoline which sets the rgctx
5775         argument.
5776         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5777         wrapper if possible.
5778         (mono_delegate_trampoline): Ditto.
5779
5780         * mini.c (mono_jit_runtime_invoke): Ditto.
5781
5782         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5783         
5784         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5785
5786         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5787         
5788 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5789
5790         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5791         just setting the opcode to OP_NOP.
5792
5793 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5794
5795         * mini.c (mini_method_compile): Put the last change inside an 
5796         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5797         
5798         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5799         and extend live ranges to cover the whole method when using xdb.
5800
5801         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5802         do it in the trampolines.
5803
5804         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5805         needed.
5806
5807         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5808         
5809         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5810         call code in full-aot mode since IMT is disabled there.
5811         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5812         new JIT no longer has that restriction.
5813
5814         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5815
5816         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5817         a more compact format.
5818         (mono_aot_wrapper_name): New function to return a unique name for a
5819         wrapper method, also used by the AOT runtime.
5820
5821         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5822         aot-compiler.c.
5823
5824         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5825         when a ICollection<T> etc is encountered.
5826         (add_generic_instances): Process method arguments/locals too.
5827         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5828         trampoline names.
5829
5830         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5831         
5832 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5833
5834         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5835
5836         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5837
5838         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5839         representing the result of the decomposition. Nullify instructions
5840         instead of setting them to OP_NOP since nops can't have registers
5841         set.
5842
5843 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5844
5845         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5846         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5847         info. Strip 'mapping symbols' on ARM.
5848
5849         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5850         
5851         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5852         this with the native genmdesc.
5853
5854 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5855
5856         * aot-runtime.c:  Fixing the MSVC build.
5857
5858         Code is contributed under MIT/X11 license.
5859
5860 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5861
5862         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5863         JITted code depends on it.
5864
5865 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5866
5867         * aot-compiler.c: Use new MonoGenericParam accessors.
5868
5869 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5870
5871         Reduce memory usage and improve correctness wrt MonoGenericParam
5872         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5873         handing.  Avoid allocating MonoGenericParams, but use the ones in
5874         the container itself.
5875
5876 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5877
5878         * tasklets.c: Return exceptions in the out argument.
5879
5880 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5881
5882         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5883         opcode. Use pointer types in more places instead of casting them to 
5884         integers.
5885
5886         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5887         optimizations.
5888         (mono_llvm_optimize_method): New helper function to optimize a method.
5889
5890         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5891         widening code so it could be called from more places.
5892         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5893         code paths in the call opcodes.
5894
5895 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5896
5897         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5898
5899 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5900
5901         * dwarfwriter.c: Use _ to separate class name 
5902         components as gdb can't handle '.'. Represent reference variables
5903         as 'class <NAME>&'.
5904         
5905         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5906
5907         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5908         
5909         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5910
5911         * gc-test.cs: New file with GC stack marking tests.
5912         
5913         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5914         negative numbers for vfp.
5915
5916         * basic-float.cs: Add a test.
5917         
5918 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5919
5920         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5921
5922 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5923
5924         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5925         part of tasklet/continuation support.
5926
5927 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5928
5929         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5930         amd64 opcodes inside an ifdef.
5931
5932         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5933         of complex types.
5934         
5935         * dwarfwriter.c (emit_type): Emit the class info for classes.
5936
5937 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5938
5939         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5940
5941         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5942
5943         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5944
5945         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5946
5947 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5948
5949         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5950
5951         * mini-llvm.c: Update comments.
5952
5953         * mini.h (COMPILE_LLVM): New macro.
5954
5955         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5956
5957         * ssa.c (mono_ssa_compute): Ditto.
5958         
5959         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5960         the unwind ops from a DWARF FDE.
5961
5962         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5963         methods by extracting the dwarf unwind ops from the unwind info generated
5964         by LLVM.
5965         
5966         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5967         calls.
5968
5969         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5970         addressing modes.
5971
5972 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5973
5974         * Makefile.am (llvm_sources): Enable this.
5975
5976         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5977         failing back to the JIT if something cannot be handled.
5978
5979         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5980         compiling with LLVM.
5981
5982         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5983         compiling with LLVM.
5984
5985         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5986         compiling with LLVM.
5987
5988         * mini-ops.h: Add a few opcodes needed by LLVM.
5989
5990         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5991         has no unwind info.
5992
5993         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5994         backend.
5995
5996         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5997
5998         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5999
6000 2009-04-01  Mark Probst  <mark.probst@gmail.com>
6001
6002         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
6003         ridiculously large methods.
6004
6005 2009-03-31  Martin Baulig  <martin@ximian.com>
6006
6007         * debug-debugger.c (debugger_remove_breakpoint): Call
6008         mono_debugger_remove_class_init_callback ().
6009
6010 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
6011
6012         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
6013         right before emitting code, not at the start.
6014
6015         * mini.c (mono_postprocess_patches): Extract this into a separate function
6016         from mono_codegen ().
6017
6018         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
6019         byref types correctly.
6020
6021 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6022
6023         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6024         by the last change.
6025
6026 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6027
6028         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6029         indirect calls, this avoids problems where get_vcall_slot () would get
6030         confused by the native code for the instruction preceeding the call.
6031         (mono_arch_get_vcall_slot): Simplify this.
6032         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6033
6034         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6035         register allocator now seems to depend on them instead of the data in
6036         cpu-<ARCH>.md.
6037
6038         * mini.c (mini_method_compile): Throw the correct type of exception if
6039         mono_method_get_header () fails because of a loading error.
6040
6041 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * mini.c (mini_method_compile): Clear the loader error if the method
6044         header cannot be decoded.
6045
6046         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6047         interface methods on proxies correctly.
6048
6049         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6050         this argument for vtype methods. Add precise liveness info for arguments.
6051
6052         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6053         LIVERANGE_START/END opcodes.
6054
6055         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6056         for arguments and values in registers.
6057
6058 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6059
6060         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6061         return a valuetype. Fixes #487518.
6062
6063         * iltests.il: Add a test.
6064         
6065         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6066
6067         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6068         closed over a null reference correctly.
6069
6070 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6071
6072         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6073
6074 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6075
6076         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6077         allocated to the same registers as fixed sregs.
6078
6079 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6080
6081         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6082         ATOMIC_CAS_IMM ops.
6083
6084         * method-to-ir.c: Handle more cases for
6085         Interlocked.CompareExchange.
6086
6087         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6088         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6089         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6090
6091 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6092
6093         * aot-runtime.c (decode_method_ref): Fix a warning.
6094
6095         * unwind.c (mono_unwind_frame): Ditto.  
6096
6097 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6098
6099         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6100         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6101
6102         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6103         fix the handling of large values in the ALU_PC_G0_NC relocation.
6104
6105 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6108
6109 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6110
6111         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6112         ops.
6113
6114 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6115
6116         * method-to-ir.c: MINI_OP3 needs a comma.
6117
6118         * method-to-ir.c, mini.h, mini.c: Remove
6119         mono_init_op_sreg_counts ().
6120
6121 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6122
6123         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6124         OP_JMP.
6125         
6126         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6127         assertion.
6128
6129         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6130
6131         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6132         code somewhat.
6133
6134 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6135
6136         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6137         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6138         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6139         operations.
6140
6141 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6142
6143         * driver.c: Change location of gc_wrapper.h.
6144
6145         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6146         inside finally clauses correctly. Fixes #485721.
6147
6148         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6149         after the change above.
6150
6151         * exceptions.cs: Add a test.
6152         
6153 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6154
6155         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6156
6157         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6158         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6159         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6160
6161         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6162         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6163
6164 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6165
6166         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6167         Simplify logic for ensure_method_is_allowed_to_call_method. 
6168         Handle wrappers on callers.
6169
6170 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6171
6172         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6173         them don't run yet.
6174
6175         * basic-simd.cs: Fix the names of some test methods.
6176
6177 2009-03-18  Geoff Norton  <gnorton@novell.com>
6178
6179         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6180
6181 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6182
6183         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6184
6185 2009-03-17  Jb Evain  <jbevain@novell.com>
6186
6187         * driver.c: remove now uneeded call to mono_gc_base_init before
6188         mono_profiler_load.
6189
6190 2009-03-17  Jb Evain  <jbevain@novell.com>
6191
6192         * dwarfwriter.c (token_handler): handle more cases.
6193
6194 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6195
6196         * method-to-ir.c: Remove more dead code (that was required only
6197         because of method_is_safe). Fix compiler warnings.
6198
6199 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6200
6201         * method-to-ir.c: Remove unneeded/useless method_is_safe
6202         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6203
6204 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6205
6206         * mini.c (mini_method_compile): Print the method been compiled with
6207         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6208         for people not familiar with the runtime.
6209
6210 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6211
6212         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6213         a managed object which is later put into a GList. Return its class instead.
6214
6215         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6216         stack slots when using sgen.
6217
6218 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6219
6220         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6221
6222 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6223
6224         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6225         > so it works on the first vreg as well.
6226
6227 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6228
6229         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6230         trigger randomly.
6231
6232         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6233         
6234         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6235         implement GArray.
6236
6237 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6238
6239         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6240         native->IL offset mapping.
6241
6242 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6243
6244         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6245
6246         * basic.cs: Add a test.
6247
6248 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6249
6250         * mini-x86.c (mono_arch_output_basic_block): Use different
6251         registers in case the ones we want to overwrite are used by the
6252         other operand.  Fixes regression in #480807.
6253
6254 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6255
6256         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6257
6258         * dwarfwriter.c (emit_line_number_info): The line number info for
6259         IL code was off by one. Fix that.
6260
6261         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6262         stack.
6263
6264 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6265
6266         Contributed under the terms of the MIT/X11 license by Steven
6267         Munroe <munroesj@us.ibm.com>.
6268
6269         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6270         Fixes #483462.
6271
6272 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6273
6274         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6275         as well.
6276
6277 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6278
6279         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6280         the delegate ctor handling code. Fixes #482638.
6281         
6282         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6283         #481458.
6284
6285         * iltests.il.in: Add a test.
6286         
6287         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6288         mini-posix.c.
6289
6290 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6291
6292         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6293         is shared generic code, return the trampoline, even if the method
6294         has already been compiled.  Fixes #479763.
6295
6296         * mini.c, mini.h: New function
6297         mono_jit_find_compiled_method_with_jit_info() which is the same as
6298         mono_jit_find_compiled_method() but also returns the jit info.
6299
6300 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6301
6302         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6303         for methods which actually have one.  For all other methods, make
6304         sure the this argument var is live the whole method.
6305
6306         * mini.c (mini_method_compile): Every shared method has a
6307         this/vtable/mrgctx info.  Fixes #480807.
6308
6309 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6310
6311         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6312         generic/imt thunks where some entries branch through the vtable,
6313         while other entries branch directly.
6314
6315 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6318
6319         * mini-windows.c: Ditto.
6320         
6321         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6322         ctors.
6323
6324 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6325
6326         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6327         down an assert.
6328
6329 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6330
6331         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6332         #481403.
6333
6334 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6335
6336         * exceptions-x86.c: Include debug-mini.h - fixes build.
6337
6338 2009-03-04  Martin Baulig  <martin@ximian.com>
6339
6340         * debug-mini.c: Clean up the exception API and add documentation.
6341         (mono_debugger_handle_exception): New public method; this is
6342         called when throwing an exception or encountering an unhandled one.
6343         (mono_debugger_call_exception_handler): Formerly known as
6344         mono_debugger_handle_exception(); this is used to tell the
6345         debugger that we're about to invoke an exception handler.
6346
6347 2009-03-04  Martin Baulig  <martin@ximian.com>
6348
6349         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6350         ../metadata/mono-debug-debugger.c; save and reset exception state.
6351
6352 2009-03-02  Martin Baulig  <martin@ximian.com>
6353
6354         * debug-mini.c: Moved the debugger exception handling here from
6355         ../metadata/mono-debug-debugger.c.
6356
6357         * debug-mini.h
6358         (MonoDebuggerExceptionAction): New exception typedef.
6359
6360         * debug-mini.c
6361         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6362
6363         * exceptions-amd64.c
6364         (mono_amd64_throw_exception): Use the new debugger exception
6365         handling code.
6366
6367         * mini-exceptions.c
6368         (mono_handle_exception_internal): Don't call
6369         mono_debugger_unhandled_exception() here.
6370
6371 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6372
6373         * mini.c aot-compiler.c: Update after the changes to 
6374         mono_marshal_get_runtime_invoke ().
6375
6376         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6377         Virtual generic methods might not have method->slot set, work around
6378         that.
6379
6380         * generics.cs: Add a test.
6381
6382 2009-03-02  Geoff Norton  <gnorton@novell.com>
6383
6384         * mini.c:
6385         * driver.c: Allow signal chaining of SIGFPE as well.
6386
6387 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6388
6389         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6390         this since it now receives the method not its generic context in the
6391         IMT reg.
6392
6393         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6394         generic/imt thunks where some entries branch through the vtable, while
6395         other entries branch directly.
6396
6397         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6398
6399         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6400         support for interface methods as well.
6401
6402         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6403         using the normal IMT thunks.
6404
6405         generics.cs: Add new tests.
6406         
6407         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6408         the generic inst to the generic imt thunks. This fixes AOT support, 
6409         improves consistency with the normal IMT thunks, and makes it easier to
6410         add support for interface generic virtual methods later.
6411
6412         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6413         
6414 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6415
6416         * driver.c (mono_set_signal_chaining): New public API function to enable
6417         signal chaining on POSIX platforms.
6418
6419         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6420         (si@lindenlab.com) to implement signal chaining. The original patch was
6421         contributed under the MIT X/11 license:
6422         https://bugzilla.novell.com/show_bug.cgi?id=318894
6423
6424 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6425
6426         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6427         too until it can be made to run on amd64.
6428
6429 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6430
6431         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6432         to  get_generic_context_from_code () + get_call_info () if possible.
6433
6434 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6435
6436         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6437         suspend-on-sigsegv functionality.
6438
6439         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6440         to suspend when a native SIGSEGV is received. This is useful for debugging
6441         crashes which don't happen under gdb, since a live process contains more
6442         information than a core file.
6443
6444         * mini-exceptions.c (mono_print_thread_dump): Use 
6445         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6446
6447         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6448
6449         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6450         
6451         * basic-float.cs: Disable the tests which currently fail on amd64.
6452
6453         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6454         value to mono_arch_patch_callsite () to fix crashes.
6455         
6456         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6457
6458 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6459
6460         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6461         nop code by patching the call address to point to the nullified class init
6462         trampoline, as the former does not seem to be safe on SMP machines.
6463
6464 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6465
6466         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6467         they were wrong.
6468
6469 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6470
6471         * basic-float.cs basic-calls.cs: Fix warnings.
6472
6473 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6474
6475         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6476         correct frame pointer in the LMF.  Should fix #478394.
6477
6478 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6479
6480         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6481
6482         * image-writer.c: Make the binary writer less verbose.
6483
6484 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6485
6486         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6487         are called from runtime invoke wrappers.
6488
6489 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6490
6491         * cpu-ppc.md (store_memindex): Increase the size of this.
6492
6493 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6494
6495         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6496
6497         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6498
6499         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6500         OP_LCONV_TO_R_UN.
6501
6502         Last fix for of #467201.
6503
6504
6505 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6506
6507         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6508
6509         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6510         and long_conv_to_r8_2:
6511
6512         Fixed part of #467201.
6513
6514 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6515
6516         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6517
6518         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6519         conversion to 32 bits.
6520
6521         * cpu-x86.md: Increase the size of int_conv_to_r4.
6522
6523         * basic-float.cs: Add a test for this.
6524
6525         Fixed part of #467201.
6526
6527 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6528
6529         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6530
6531         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6532         conversion to 64 bits.
6533
6534         * basic-float.cs: Add a test for this.
6535
6536         Fixed part of #467201.
6537
6538 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6539
6540         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6541
6542         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6543         This behavior is compatible with MS.
6544
6545         * iltest.il.in: Add a test for this.
6546
6547         Fixed part of #467201.
6548
6549 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6550
6551         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6552
6553         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6554         change the precision of the value.
6555
6556         * cpu-x86.md: Define len for float_conv_to_r4.
6557
6558         * basic-float.cs: Add a test for this.
6559
6560         Fixed part of #467201.
6561
6562 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6563
6564         * mini.c: Adjust locking order to the new semantics where the loader lock
6565         comes first.
6566
6567 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6568
6569         * aot-runtime.c:
6570         * mini-amd64.c:
6571         * mini-arm.c:
6572         * mini-ia64.c:
6573         * mini-mips.c:
6574         * mini-ppc.c:
6575         * mini-sparc.c:
6576         * mini-trampolines.c:
6577         * mini-x86.c:
6578         * mini.c:
6579         * tramp-alpha.c:
6580         * tramp-amd64.c:
6581         * tramp-arm.c:
6582         * tramp-hppa.c:
6583         * tramp-ia64.c:
6584         * tramp-mips.c:
6585         * tramp-ppc.c:
6586         * tramp-s390.c:
6587         * tramp-s390x.c:
6588         * tramp-sparc.c:
6589         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6590
6591 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6592
6593         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6594         as it is incorrect.
6595
6596 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6597
6598         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6599         for cctors if needed.
6600
6601 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6602
6603         * mini-ppc.c: Fix build on Darwin.
6604
6605 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6606
6607         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6608         version instead of 3 as valgrind doesn't like version 3.
6609
6610         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6611
6612         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6613         usable for hashing methods.
6614         (emit_extra_methods): Use the new hash to avoid putting every method in the
6615         same hash bucket.
6616
6617         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6618
6619         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6620         whenever a method ref could match a method.
6621         
6622         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6623         test to fail.
6624         
6625         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6626         methods refs.
6627
6628         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6629
6630         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6631         the encoding buffer.
6632
6633         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6634         mono_method_get_header () on inflated methods as an optimization.
6635
6636 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6637
6638         * ssa.c (fold_ins): Fix another crash if the instruction following the
6639         switch was optimized away.
6640
6641 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6642
6643         Contributed under the terms of the MIT/X11 license by Steven
6644         Munroe <munroesj@us.ibm.com>.
6645
6646         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6647
6648 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6649
6650         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6651         around the mono_domain_alloc calls, it is now done by the functions
6652         themselves.
6653
6654         * aot-compiler.c (compile_method): Only add wrappers referenced by
6655         the method if compiling with full AOT.
6656         (mono_compile_assembly): Error out if --aot=full is specified on
6657         a platform where it is not supported.
6658
6659         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6660         on ARM too.
6661
6662         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6663         AOT support.
6664
6665         * aot-runtime.c (load_named_code): Handle 
6666         mono_arm_throw_exception_by_token.
6667
6668         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6669
6670         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6671         unaligned.
6672
6673         * Makefile.am (fullaotcheck): Exit if a test fails.
6674
6675         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6676         on ARM.
6677         (mono_compile_assembly): Handle the assembler failing.
6678
6679         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6680         accepting subsections of .bss.
6681
6682         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6683         was optimized away.
6684
6685         * aot-compiler.c: Remove some unused includes.
6686         
6687         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6688         now in MonoImageWriter.
6689
6690         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6691         code sequence which matches a non-virtual call. Fixes #472654.
6692
6693 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6694
6695         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6696         xdebug code.
6697         
6698         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6699         use the image/dwarf writers directly.
6700
6701         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6702         field.
6703
6704         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6705         MonoDwarfWriter.
6706
6707         * image-writer.h: Fix some typos.
6708
6709         * dwarfwriter.h dwarfwriter.c: New files.
6710         
6711         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6712         separate module.
6713
6714         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6715         argument to return unwind info.
6716
6717         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6718
6719         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6720         
6721         * aot-runtime.c (decode_method_ref): Add a case for 
6722         MONO_AOT_METHODREF_WRAPPER_NAME.
6723
6724         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6725         for AOT.
6726
6727         * aot-compiler.c (encode_method_ref): Use the new constants.
6728
6729         * aot-runtime.c (decode_method_ref): Ditto.
6730
6731         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6732         be compiled, not the icall itself.
6733
6734 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6735
6736         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6737         using decode_method_ref ().
6738
6739         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6740         convert it to an in32. Fixes #475859.
6741
6742         * arrays.cs: Add a test.
6743
6744 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6745
6746         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6747         OP_LCONV_TO_U2.
6748
6749         * basic-long.cs: Add a test.
6750
6751 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6752
6753         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6754         remove the frame pointer in leaf methods which don't receive any
6755         arguments, don't throw exceptions and don't do dynamic stack
6756         allocations.
6757
6758 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6759
6760         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6761         the fail_tramp changes. Hopefully fixes #475132.
6762
6763 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6764
6765         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6766         instead of mono_metadata_signature_dup_full.
6767
6768 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6769
6770         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6771         for processing jump tables. Fixes #473787.
6772
6773 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6774
6775         * mini-generic-sharing.c: mini_method_get_context() just calls
6776         mono_method_get_context_general() now.
6777
6778         * mini.c, mini.h: Moved get_object_generic_inst(),
6779         construct_object_context_for_method() and
6780         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6781
6782 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6783
6784         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6785         basic block fell through to its successor bblock without a branch. Fixes
6786         #474718.
6787
6788         * iltests.il.in: Add a test.
6789         
6790         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6791         (can_encode_patch): We can now handle arrays of generic parameters and
6792         array methods.
6793
6794         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6795
6796         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6797         the AOT file to avoid some #ifdefs in aot-runtime.c
6798
6799         * mini.h: Bump AOT file format version.
6800
6801 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6802
6803         * Makefile.am (fullaotcheck): Make this run the tests.
6804
6805         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6806
6807 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6808
6809         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6810         individually.  Fixes #473482.
6811
6812 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6813
6814         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6815
6816 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6817
6818         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6819         (mono_compile_assembly): Hush compile warnings about
6820         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6821         code path.
6822
6823 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6824
6825         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6826
6827         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6828
6829         * aot-compiler.c: Fix arm support.
6830
6831         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6832         img_writer_emit_unset_mode () function.
6833
6834         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6835         (mono_unwind_get_dwarf_pc_reg): Ditto.
6836
6837         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6838         Move almost all platform specific code to a set of arch_ functions, 
6839         and document them to ease porting.
6840         
6841         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6842
6843         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6844
6845         * aot-compiler.c: Extract the image writing functionality into a separate
6846         module to reduce the size of this file.
6847
6848 2009-02-09  Geoff Norton  <gnorton@novell.com>
6849
6850         * mini-s390.c: Fix the signature of emit_sig_cookie.
6851
6852 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6853
6854         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6855
6856         * aot-runtime.c (is_shared_got_patch): Ditto.
6857
6858         * aot-runtime.c (load_named_code): Cope with the fact that 
6859         decode_got_entry () won't decode the patch fully if its corresponding got
6860         entry is already filled.
6861         
6862         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6863         Initialize *ji.
6864         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6865
6866         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6867         as the moving pointer instead of 'buf' for consistency with the rest of the
6868         codebase.
6869         (mono_arch_create_monitor_exit_trampoline): Ditto.
6870
6871         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6872         generic_class_init trampolines.
6873         (add_generic_class): Extract some code from add_generic_instances () into a
6874         separate function so it can be called from other places too.
6875         (compile_method): Call add_generic_class () for the classes of inflated methods
6876         referenced by the method.
6877         (can_encode_patch): Allow references to generic parameters.
6878
6879         * aot-runtime.c: Add support the patches required by the new trampolines.
6880         
6881         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6882         support.
6883
6884         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6885         full-aot support.
6886
6887         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6888         this from get_throw_pending_exception, make the signature full aot compatible.
6889
6890         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6891
6892         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6893
6894         * exceptions.cs: Add a test.
6895
6896 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6897
6898         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6899         use the DWARF_DATA_ALIGN constant instead.
6900
6901         * exception-<ARCH>.c: Update after the above change.
6902
6903         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6904         dwarf unwinder.
6905
6906         * mini-arm.c: Enable the dwarf unwinder.
6907
6908         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6909         instead of mono_class_setup_vtable ().
6910
6911 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6914         dwarf unwinder.
6915
6916         * mini-x86.h: Enable the dwarf unwinder.
6917
6918 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6919
6920         Fix mcs/tests/test-7.cs
6921         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6922         2009-02-03.
6923
6924 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6925
6926         * mini.c (print_jit_stats): Remove some unused statistics.
6927
6928 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6929
6930         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6931
6932 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6933
6934         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6935         the method we get from mono_object_get_virtual_method() because
6936         that function does it properly, now.
6937
6938 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6939
6940         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6941         opcodes. Fixes #472775.
6942
6943 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6944
6945         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6946         fact that mono_find_jit_info() sometimes returns the context
6947         corresponding to the jit info in new_ctx.  Fixes #472600.
6948
6949 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6950
6951         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6952         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6953         klass->enum_basetype directly.
6954
6955         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6956         enum subtypes.
6957
6958         * unwind.c: Avoid 0 sized arrays.
6959
6960 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6961
6962         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6963         size on systems with 64k pages. Fixes #471389.
6964
6965 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6966
6967         Contributed under the terms of the MIT/X11 license by Steven
6968         Munroe <munroesj@us.ibm.com>.
6969
6970         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6971         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6972         necessary.
6973
6974 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6975
6976         Contributed under the terms of the MIT/X11 license by Steven
6977         Munroe <munroesj@us.ibm.com>.
6978
6979         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6980         comparison fix.
6981
6982         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6983         The trampoline can be longer on PPC64.
6984
6985 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6986
6987         Contributed under the terms of the MIT/X11 license by Steven
6988         Munroe <munroesj@us.ibm.com>.
6989
6990         * mini-ppc.c: Compiler warning fixes and trivial code
6991         simplifications.
6992
6993 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6994
6995         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6996         ins->dreg which could be a hardware register, not a vreg.
6997
6998         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6999         
7000         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
7001         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
7002
7003         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
7004         
7005         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
7006         ->dreg, that is not the vreg we are looking for.
7007
7008         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
7009
7010         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
7011         LIVERANGE_END.
7012
7013         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
7014         strange crashes.
7015
7016 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
7017
7018         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
7019
7020         * aot-compiler.c (emit_line_number_info): Fix line number emission when
7021         the line diff is 0.
7022
7023         * aot-compiler.c: Add xdebug support on x86.
7024
7025         * unwind.c: Add x86 support.
7026         
7027         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7028         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7029
7030         * mini.c (mini_method_compile): Ditto.
7031         
7032         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7033         the variable index.
7034
7035         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7036         which mimic .push_section/.pop_section in GAS.
7037         
7038         * aot-compiler.c: Emit precise live range information for variables.
7039
7040         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7041
7042         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7043         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7044         them.
7045
7046         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7047         the live ranges of variables.
7048
7049         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7050         of the variable in terms of native offsets.
7051
7052 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7053
7054         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7055         
7056 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7057
7058         Contributed under the terms of the MIT/X11 license by Steven
7059         Munroe <munroesj@us.ibm.com>.
7060
7061         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7062         order (offset then base reg) for ppc_load_multiple_regs.
7063         (emit_save_saved_regs) Correct operand order for
7064         ppc_store_multiple_regs.
7065         (mono_arch_get_call_filter): Correct operand order for
7066         ppc_load_multiple_regs.
7067
7068         * mini-ppc.c (emit_memcpy): Fix operand order for
7069         ppc_load_reg_update and ppc_store_reg_update.
7070         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7071         (mono_arch_emit_epilog): Correct operand order for
7072         ppc_load_multiple_regs.
7073
7074         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7075         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7076
7077 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7078
7079         * cpu-ppc64.md: Fixed storer4_memindex length.
7080
7081 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7082
7083         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7084         line number info.
7085         
7086         * aot-compiler.c (emit_line_number_info): Optimize this.
7087
7088 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7089
7090         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7091         
7092         * aot-compiler.c: Add debug info for methods without debug info by
7093         emitting an IL file and having the line number info referencing that file.
7094
7095         * aot-compiler.c: Optimize the size of the generated line number info.
7096
7097         * aot-compiler.c: Emit line number info in xdebug mode.
7098
7099         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7100         million arguments.
7101
7102 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7103
7104         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7105
7106         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7107         is used.
7108
7109 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7110
7111         * basic-calls.cs: Test for the weird crash found on arm.
7112         
7113 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7114
7115         * cpu-arm.md: Increase the size of storer8_membase_reg and
7116         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7117
7118         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7119         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7120         reg to LR otherwise we'll be loading/storing from just the offset.
7121
7122 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7123
7124         Question: if we are storing gint32's inside the "*native_offset",
7125         should we change the signature to "gint32 *native_offset" to
7126         ensure that we do not have type definition problems?
7127         
7128         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7129         an int * as this is what the other function expects, causes
7130         problems with Freescale's compiler that defined int32_t to be a
7131         long and makes int incompatible 
7132
7133 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7134
7135         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7136         filename conflict with bjam.
7137
7138 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7139
7140         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7141         as it might use decomposed ops.
7142
7143 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7144
7145         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7146
7147         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7148         is defined.
7149
7150         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7151
7152         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7153         offsets.
7154
7155         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7156         way registers are stored in MonoContext on arm.
7157
7158         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7159         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7160
7161         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7162
7163         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7164
7165         * mini.c (mini_init): Register mono_isfinite.
7166
7167         * jit-icalls.c (mono_isfinite): New jit icall.
7168
7169         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7170         
7171         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7172         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7173         the parent frame.
7174
7175 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7176
7177         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7178         separate frame and stack pointers, so we must use FP to find the register
7179         spill area.
7180         The FP reg is retrieved from the MonoContext::regs array.
7181
7182 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7183
7184         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7185         as FPA requires it.
7186
7187 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7188
7189         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7190         return R4 and R8 when not running under softfloat.
7191
7192         Fixes basic-calls.exe
7193
7194 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7195
7196         * mini-arm.c: Implement some overflow opcodes.
7197
7198 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7199
7200         * ssa.c: handle another alloca.h
7201
7202         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7203         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7204         MONO_ARCH_USE_SIGACTION. 
7205
7206         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7207         capability defines.
7208
7209         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7210
7211         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7212         PPC targets as sigaction does not exist on all platforms, define
7213         this on a per-platform basis.
7214
7215         Instead of erroring out if the platform is not defined, include
7216         mini-ppc-os.h, and expect that the OS specific setting provides
7217         the required information.   
7218
7219 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7220
7221         * aot-compiler.c: Fix --enable-minimal=aot.
7222
7223 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7224
7225         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7226         previous change.
7227
7228 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7229
7230         * exceptions-arm.c: Fix warnings.
7231
7232         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7233         ARM.
7234
7235         * mini-x86.c: Fix --enable-minimal=jit build.
7236
7237         * mini.c: Really fix --enable-minimal=jit build.
7238         
7239         * mini.c (construct_object_context_for_method): Move this outside
7240         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7241
7242         "Backported" of r124984 from 2.0 branch.
7243         
7244         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7245
7246         "Backport" of r124977 + r124978 from 2.0 branch.
7247         
7248         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7249         to avoid calling mono_exception_from_token () from the throw trampoline.
7250         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7251         for throwing corlib exceptions, this fixes full-aot support for corlib
7252         exceptions.
7253
7254         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7255
7256 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7257
7258         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7259         part of the changes to split the code in mini into operating
7260         system specific files.
7261
7262         This patch was done by copying mini.c to the respective files to
7263         preserve SVN history.
7264
7265 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7266
7267         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7268
7269 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7270
7271         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7272         remoting-invoke-with-check wrappers of shared methods.
7273
7274         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7275
7276 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7277
7278         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7279         optimization if the top of stack is the last instruction in the
7280         bblock.  Otherwise it might have been used after its definition.
7281         Fixes #469742.
7282
7283 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7284
7285         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7286         method as well when get_vcall_slot () fails to match a code sequence.
7287
7288         * mini-arm.c: Fix the android build, which doesn't have
7289         __aeabi_read_tp.
7290
7291 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7292
7293         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7294         the s390x build.
7295
7296 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7297
7298         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7299
7300 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7303         and put its id into jinfo->used_regs. This is only used on amd64,
7304         which is currently the only platform generating unwind info.
7305
7306         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7307         the dwarf unwinder. This is required to correctly handle async exceptions
7308         like thread abort and stack overflows, which can happen while a method
7309         is in the middle of its prolog or epilog.
7310         
7311         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7312         the unwind info belonging to an AOTed method.
7313
7314         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7315         into cfg->unwind_ops.
7316         
7317         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7318
7319         * mini.c (mini_init): Call mono_unwind_init ().
7320         (mini_cleanup): Call mono_unwind_cleanup ().
7321
7322         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7323         unwind info to be shared between methods.
7324
7325         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7326         saved in the LMF.
7327
7328         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7329         get_throw_pending_exception () to avoid initialization races.
7330
7331         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7332         mono_arch_exceptions_init () function.
7333
7334         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7335
7336 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7337
7338         * mini.c (mono_get_domain_intrinsic): New helper function.
7339         (mono_get_thread_intrinsic): Ditto.
7340
7341         * mini-arm.c mini-ia64.c: Use the new helper functions.
7342         
7343         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7344         the last constrained_call change, since it is needed in the non-AOT
7345         case as well.
7346
7347         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7348         
7349         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7350         mono_get_lmf_addr () on arm eabi linux.
7351
7352 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7353
7354         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7355         code sequence which matches a non-virtual call.
7356
7357 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7358
7359         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7360         stack pointer (r1).
7361
7362 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7363
7364         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7365         runtime-invoke wrappers, since they are also shared based on signature.
7366
7367 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7368
7369         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7370         info from the (correct) context.
7371
7372 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7373
7374         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7375         
7376         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7377         using dwarf unwinding info. Not yet used.
7378
7379         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7380
7381 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7382
7383         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7384         descriptors.
7385
7386         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7387         special case and handle mono_arch_delegate_invoke_impl() returning
7388         function descriptors.
7389
7390         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7391         trampolines return function descriptors, too.
7392
7393 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7394
7395         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7396         out_of_line optimization.
7397
7398 2009-01-21  Martin Baulig  <martin@ximian.com>
7399
7400         * mini.h
7401         (MonoCompile): Added `disable_deadce_vars' to disable removing
7402         unused variables.
7403
7404         * mini.c
7405         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7406         inside the debugger.
7407
7408         * liveness.c (mono_analyze_liveness): Don't remove any unused
7409         variables if `cfg->disable_deadce_vars' is set.
7410
7411 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7412
7413         * method-to-ir.c: Only apply exception constructor optimization if
7414         the the method actually belongs to an exception class.  Fixes
7415         #467456.
7416
7417 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7418
7419         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7420         change inside a #ifdef __mono_ppc64__.
7421
7422         * aot-compiler.c (compile_method): Remove the previous limitation.
7423
7424         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7425         on type variables in AOTed code.
7426         
7427         * aot-compiler.c (compile_method): Skip generic methods having type 
7428         constraints on their generic parameters.
7429
7430         * aot-compiler.c (compile_method): Check for methods which cannot be
7431         encoded inside RGCTX_FETCH patches as well.
7432
7433         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7434         build.
7435
7436 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7437
7438         * method-to-ir.c: Force the vtable variable in shared generic code
7439         for the case that they might show up on a stack trace where they
7440         are needed.
7441
7442         * mini-exceptions.c: Save and use generic sharing info as well as
7443         IP in stack traces to resolve shared generic instantiations.
7444
7445 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7446
7447         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7448         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7449
7450 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7451
7452         * method-to-ir.c: Do generic sharing for array constructors.
7453
7454 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7455
7456         * mini-exceptions.c (mono_print_thread_dump): Add information
7457         about the thread state using wapi_current_thread_desc.
7458
7459 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7460
7461         * basic-simd.cs: Tests for the new constructors. 
7462
7463 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7464
7465         * mini-ops.h: Added OP_EXPAND_*
7466
7467         * cpu-x86.md: Same.
7468
7469         * mini-x86.c (mono_arch_output_basic_block): Same.
7470         
7471         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7472
7473 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7474
7475         * iltests.il.in: Add a test for #467385.
7476
7477 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7478
7479         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7480         thread been cleaned up is not the same currently in execution.
7481
7482         Fixes appdomain-unload crashes on windows, osx and linux variants
7483         without the __thread keyword.
7484
7485 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7486
7487         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7488         (koush@koushikdutta.com). Implement this for android.
7489
7490         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7491         begins with a digit.
7492
7493         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7494         mono_marshal_get_write_barrier ().
7495
7496 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7497
7498         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7499         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7500         that pass them on a register pair.
7501
7502         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7503         test was crashing due to that.
7504
7505 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7506
7507         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7508         trampoline code. Include ucontext.h only if available.
7509
7510 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7511
7512         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7513         and doesn't check whether it's sharable, like it was before
7514         removing the shared generics hash.  This brings IronPython
7515         performance back to what it was before that change.
7516
7517 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7518
7519         * method-to-ir.c: Handle delegate invocation optimization earlier,
7520         otherwise it would be handled (much more slowly) by the
7521         final/sealed optimization.
7522
7523 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7524
7525         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7526         domain is not set. Fixes #465864.
7527
7528 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7529
7530         * method-to-ir.c: Don't stop sharing of generic methods with catch
7531         clauses - we already handle those.
7532
7533 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7534
7535         * mini.c, mini.h: lookup_generic_method() is now
7536         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7537         making the shared_generics_hash obsolete.
7538
7539 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7540
7541         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7542         use the red zone.  Make room on the stack first and then use it,
7543         not the other way around.
7544
7545 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7546
7547         * mini.c (mini_init): Call mono_xdebug_init ().
7548
7549         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7550
7551 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7552
7553         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7554
7555         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7556         trampolines.
7557
7558         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7559         debug+unwind info for trampolines.
7560
7561         * mini.c (mono_create_unwind_op): New helper function.
7562
7563         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7564
7565 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7566
7567         * aot-compiler.c: Fix the build.
7568
7569 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7570
7571         * Makefile.am: Update dtrace-prelink.sh location.
7572
7573 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7574
7575         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7576         optimization. Fixes #464520.
7577
7578 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7579
7580         * mini-amd64.c : Adding code to save/restore non-volatile registers
7581            on Winx64.
7582
7583         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7584           registers on Winx64.
7585
7586         Contributed under MIT/X11 license.
7587
7588 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7589
7590         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7591         __GNUC_MINOR__ which can break when the major version changes.
7592
7593 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7594
7595         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7596
7597 2009-01-07  Geoff Norton  <gnorton@novell.com>
7598
7599         * helpers.c:  Allow mono -v -v -v to work on darwin.
7600
7601 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7602
7603         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7604           pattern. 
7605
7606         Contributed under MIT/X11 license.
7607
7608 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7609
7610         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7611         instead of directly accessing type->data.klass. Fixes #462016.
7612         (mono_allocate_stack_slots_full): Ditto.
7613
7614         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7615         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7616
7617         * aot-compiler.c (emit_plt): Fix ARM build.
7618
7619 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7622         
7623         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7624         change.
7625
7626         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7627         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7628         #463357.
7629
7630         * iltests.il.in: Add a regression test.
7631
7632 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7633
7634         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7635
7636 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7637
7638         * basic-simd.cs: Add a regression test for #462457.
7639
7640 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7641
7642         * mini-ops.h: Add a definition of XPHI.
7643
7644         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7645
7646         * ssa.c (op_phi_to_move): Handle XPHI.
7647
7648         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7649
7650         Fixes #462457
7651
7652 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7653
7654         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7655
7656 2008-12-31  Geoff Norton  <gnorton@novell.com>
7657
7658         * mini-ppc.c: The prolog size allocated can be too small for darwin
7659         ppc32 under certain circumstances.  Also fix a small logic bug.
7660
7661 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7662
7663         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7664         while loading AOT methods.
7665
7666         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7667         since only the former is nulled out after a successful cast. This prevents
7668         crashes with rethrown exceptions when using --debug=casts.
7669
7670 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7671
7672         * mini.h: New macro for checking whether a method is final,
7673         i.e. whether the method or its class is marked final.
7674
7675         * method-to-ir.c: Use the new macro for all final-checks
7676         consistently.  Fixes the crash in the System.ServiceModel tests.
7677
7678 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7679
7680         * mini-exceptions.c (get_exception_catch_class): Corrected another
7681         overly strict assertion.
7682
7683 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7684
7685         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7686         Clobbering it is not allowed because the caller might use it as
7687         the vtable register in the interface call.
7688
7689 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7690
7691         * mini-exceptions.c (get_exception_catch_class): Corrected an
7692         overly strict assertion.
7693
7694 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7695         
7696         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7697
7698         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7699
7700         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7701
7702         * cpu-mips.md: correct lengths for certain long_ opcodes.
7703
7704         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7705
7706         * 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().
7707         
7708 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7709
7710         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7711         
7712 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7713         
7714         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7715         
7716 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7717
7718         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7719         next basic block.
7720         
7721 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7722
7723         * 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
7724
7725         * 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)
7726         
7727 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7728         
7729         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7730         
7731 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7732
7733         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7734         gshared code. Fixes #458947.
7735
7736         * generics.cs: Add a test.
7737
7738 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7739         
7740         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7741         
7742         * mini-mips.c: first pass n32 code generation.
7743
7744         * mini-mips.h: datatypes and defines for n32 support.
7745
7746         * exceptions-mips.c: first pass n32 code generation.
7747         
7748         * tramp-mips.c: first pass n32 code generation.
7749         
7750         * cpu-mips.md: add long_ opcodes.
7751         
7752 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7753
7754         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7755
7756         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7757         
7758         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7759         
7760         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7761
7762         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7763
7764         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7765
7766         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7767
7768         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7769
7770         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7771
7772 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7773
7774         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7775
7776 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7777
7778         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7779
7780 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7781
7782         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7783         descriptors for helper functions directly in front of the code.
7784
7785 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7786
7787         * method-to-ir.c: Removed an unnecessary assertion.
7788
7789 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7790
7791         * method-to-ir.c: Merge SGEN changes from the old JIT.
7792
7793 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7794
7795         * driver.c (compile_all_methods_thread_main): Handle failure of
7796         mono_get_method ().
7797
7798 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7799
7800         * mini-ppc.c: Merged with mini-ppc64.c.
7801
7802         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7803
7804         * Makefile.am: Use the same sources for PPC and PPC64.
7805
7806         * mini-ppc64.c: Removed.
7807
7808 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7809
7810         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7811         code to mono_bb_is_fall_through.
7812         
7813         * branch-opts.c (mono_remove_critical_edges): Same.
7814
7815 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7816
7817         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7818         expect that an OP_BR_REG will be there.
7819
7820 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7821
7822         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7823         for the many branch ops. The original check miss OP_BR_REG.
7824
7825         Fixes #457574.
7826         
7827 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7828
7829         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7830
7831 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7832
7833         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7834         while holding the aot lock.
7835
7836 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7837
7838         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7839         
7840 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7841
7842         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7843           to release all runtime callable wrappers held by the runtime.
7844
7845         Contributed under MIT/X11 license.
7846
7847 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7848
7849         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7850           for Winx64.
7851
7852         Contributed under MIT/X11 license.
7853
7854 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7855
7856         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7857         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7858
7859 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7860
7861         * cpu-mips.md: fix ckfinite length
7862
7863         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7864         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7865         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7866         
7867 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7868
7869         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7870         
7871 2008-12-08  Geoff Norton  <gnorton@novell.com>
7872
7873         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7874         size by 8 bytes as well.
7875
7876 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7877
7878         * basic-simd.cs: Fix method names for Vector16b.
7879         
7880 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7881
7882         * basic-simd.cs: Fix method names for Vector16sb.
7883
7884 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7885
7886         * basic-simd.cs: Fix method names for Vector8us.
7887         
7888 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7889
7890         * basic-simd.cs: Fix method names for Vector8s.
7891         
7892 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7893
7894         * basic-simd.cs: Fix method names for Vector4ui.
7895
7896 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7897
7898         * basic-simd.cs: Fix method names for Vector2l.
7899
7900 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7901
7902         * basic-simd.cs: Fix method names for Vector2d.
7903
7904 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7905
7906         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7907         that are extension methods.
7908
7909 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7910
7911         * basic-simd.cs: Fix method names for Vector4f.
7912
7913 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7914
7915         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7916         as such. Fixes #456669.
7917
7918 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7919
7920         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7921         
7922 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7923
7924         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7925         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7926         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7927         (mips_adjust_stackframe): handle FP spills
7928                 
7929         * mini-ops.h: add mips_mtc1_s2
7930         
7931         * cpu-mips.md: add mips_mtc1_s2
7932         
7933 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7934
7935         * unwind.c: New file, move the unwind info encoding functions here from
7936         aot-compiler.c, so they could be used at runtime too.
7937
7938 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7939
7940         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7941         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7942         
7943 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7944
7945         * mini-mips.c: cleanup warnings
7946         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7947         (mips_adjust_stackframe): handle case of taking the address of stack locals
7948         
7949 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7950
7951         * aot-compiler.c: Implement a few functions missing from the asm writer.
7952         (emit_method_code): Only write symbols for methods when using the bin
7953         writer, since the assembler can't deal with the characters in our method
7954         names.
7955
7956         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7957
7958         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7959         call.
7960
7961         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7962         a bit to also restore %rax.
7963
7964 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7965
7966         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7967
7968 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7969
7970         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7971         arguments.
7972
7973 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7974
7975         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7976
7977         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7978         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7979
7980         * exceptions-ppc64.c: Removed.
7981
7982         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7983
7984 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7985
7986         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7987         tramp-ppc64.c.
7988
7989         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7990
7991         * tramp-ppc64.c: Removed.
7992
7993 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7994
7995         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7996         the TYPESPEC table.
7997
7998 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7999
8000         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
8001
8002         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
8003         mini-ppc.h instead of mini-ppc64.h.
8004
8005         * mini-ppc64.h: Removed.
8006
8007 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8008
8009         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
8010         
8011         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
8012         
8013 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8014
8015         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
8016         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
8017         code easier.
8018
8019 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8020
8021         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
8022
8023 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8024
8025         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8026
8027 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8028
8029         * basic-simd.cs: Tests for operator == and != on Vector4f.
8030
8031 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8032
8033         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8034
8035         * simd-intrinsics.c: Kill useless enum.
8036
8037 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8038
8039         * cpu-mips.md: add long_conv_to_ovf_i4_2
8040         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8041
8042 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8043
8044         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8045         
8046         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8047
8048 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8049
8050         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8051         
8052 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8053
8054         * basic-simd.cs: Add tests for new methods.
8055
8056 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8057
8058         * simd-intrinsics.c: Add support for operator == and !=
8059         on Vector4(u)i.
8060
8061         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8062
8063 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8064
8065         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8066
8067 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8068
8069         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8070
8071         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8072         MONO_PATCH_INFO_ICALL_ADDR.
8073
8074         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8075
8076         * aot-compiler.c: Resurrect full-aot support.
8077
8078 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8079
8080         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8081         
8082 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8083
8084         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8085         
8086 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8087
8088         * basic-simd.cs: Fix tests to work under ppc.
8089         Remove tests for methods that will be removed.
8090
8091 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8092
8093         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8094         generic type (via a typedef or typeref) correctly.
8095
8096 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8097
8098         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8099         diagnose an assertion failure.
8100
8101 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8102
8103         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8104         Fix trampoline size.
8105
8106         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8107         conversion opcodes are implemented natively instead via emulation.
8108
8109 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8110
8111         * cpu-mips.md: remove mips_xori
8112
8113         * mini-ops.h:  remove mips_xori
8114
8115         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8116
8117         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8118         
8119         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8120         
8121 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8122
8123         * cpu-mips.md: fix instruction lengths.
8124
8125         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8126
8127         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8128
8129         * mini-ops.h: fix slti / sltiu op profiles.
8130         
8131 2008-12-02  Martin Baulig  <martin@ximian.com>
8132
8133         * method-to-ir.c (mono_method_to_ir): Disable debugging
8134         information for the init locals block to make the debugger stop
8135         after all locals have been initalized.
8136
8137 2008-12-02  Martin Baulig  <martin@ximian.com>
8138
8139         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8140         running inside the debugger.
8141
8142 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8143
8144         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8145         is enabled.
8146
8147         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8148         alu->alu imm optimization which only shows if deadce is disabled.
8149
8150         * aot-compiler.c: Rename the function names for the binary and asm writers
8151         so they can coexist in the same process. Rework the xdebug code to use the
8152         asm writer. This avoids the need to call into the runtime to dump the
8153         debugging info. Add more debugging info for types.
8154
8155         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8156
8157         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8158         cpu description tables, they can't occur in cpu-<ARCH>.md.
8159
8160         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8161         the stack in CEE_LDFLDA. Fixes #450542.
8162
8163         * generics.cs: Add a new test.
8164
8165 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8166
8167         * mini-ops.h: updated MIPS opcodes
8168         * mini-mips.c: decompose long opts
8169         * mini-mips.h: decompose long opts
8170         
8171 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8172
8173         * cpu-mips.md: fix length on int_rem_un
8174         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8175         
8176 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8177
8178         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8179
8180         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8181
8182 2008-11-29  Martin Baulig  <martin@ximian.com>
8183
8184         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8185         mono_debug_using_mono_debugger() in addition to the
8186         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8187
8188 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8189
8190         * mini-ops.h: updated more MIPS opcodes
8191         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8192         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8193         
8194 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8195
8196         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8197
8198 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8199
8200         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8201         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8202         * mini-ops.h: correct selected mips opcode entries
8203         
8204 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8205
8206         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8207         make them work.
8208
8209 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8210
8211         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8212
8213 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8214
8215         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8216         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8217         * mini-mips.h: disable IMT
8218         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8219         
8220 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8221
8222         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8223
8224 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8225
8226         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8227
8228 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8229
8230         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8231         consistency.
8232
8233 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8234
8235         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8236         for Set/GetVector aligned versions.
8237
8238 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8239
8240         * basic-simd.cs: Add tests for Get/SetVector.
8241
8242 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8243
8244         * mini.c: Removed g_slist_append_mempool().  Now in
8245         metadata/mempool.c.
8246
8247 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8248
8249         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8250         size properly and make the bounds check optional.
8251
8252         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8253         for SetVector and IsAligned.
8254
8255 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8256
8257         * mini.c: Remove unused mono_normalize_opcodes () function.
8258
8259 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8260
8261         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8262         using the new atomic add ops now.
8263
8264         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8265         add.
8266
8267 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8268
8269         * mini-ppc64.c: Several fixes.
8270
8271 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8272
8273         * cpu-mips.md: added jump_table
8274         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8275
8276 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8277
8278         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8279
8280 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8281
8282         * mini-ops.h: corrected a handful of MIPS opcodes.
8283
8284 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8285
8286         * aot-compiler.c: MIPS to use ELF writer
8287
8288 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8289
8290         * mini-codegen.c: remove MIPS specific assert.
8291
8292 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8293
8294         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8295         fixes.  PPC64 now passes most of the runtime regressions.
8296
8297 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8298
8299         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8300         volatile intervals a bit.
8301
8302 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8303
8304         * basic-long.cs: New test case.
8305
8306 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8307
8308         * mini.c (mini_method_compile): Disable globalra for large methods for 
8309         now.
8310
8311         * regalloc2.c (order_moves): Add fp support.
8312
8313         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8314         source bblock ends with an OP_BR_REG.
8315
8316         * ratests.cs: Add a new test.
8317
8318 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8319
8320         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8321         sharing.  PPC64 now passes generics.exe.
8322
8323 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8324
8325         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8326
8327 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8328
8329         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8330         memory when mono_jit_info_table_find () can't find the method in the
8331         LMF case.
8332
8333         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8334         AOTed code too.
8335         
8336         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8337         writer too.
8338
8339 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8340
8341         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8342         Several fixes.  PPC64 now runs exceptions.exe and
8343         devirtualization.exe.
8344
8345 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8346
8347         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8348         arrays.exe and basic-math.exe.
8349
8350 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8351
8352         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8353         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8354
8355 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8356
8357         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8358
8359 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8360
8361         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8362
8363         * ir-emit.h: Move macros from method-to-ir.c to here.
8364
8365 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8366
8367         * mini-ops.h: Correct the long simd ops to use LREG.
8368
8369 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8370
8371         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8372         
8373         * mini-ops.h: Correct the dreg type of a few long opcodes.
8374
8375         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8376         Add netbsd support.
8377
8378 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8379
8380         * mini-ppc.c: remove negative stack references in epilog
8381         for platforms that don't support the red zone.
8382
8383 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8384
8385         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8386         point regs.  Now PPC64 passes basic-calls.exe.
8387
8388 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8389
8390         * basic-simd.cs: Add tests for accessors of Vector2l.
8391
8392 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8393
8394         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8395
8396         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8397         
8398         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8399
8400 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8401
8402         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8403         PPC64 passes basic-long.exe.
8404
8405 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8406
8407         * decompose.c: Decompose carry and overflow add on PPC64 like on
8408         other 64 bit archs.  Don't decompose sub at all on PPC64.
8409
8410         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8411         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8412         basic-long.exe.
8413
8414 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8415
8416         * basic-simd.cs: Add tests for accessors of Vector2d.
8417
8418 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8419
8420         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8421
8422         * cpu-x86.md: Same.
8423
8424         * mini-x86.c (mono_arch_output_basic_block): Same.
8425         
8426         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8427
8428 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8429
8430         * basic-simd.cs: Add tests for accessors of Vector4f.
8431
8432 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8433
8434         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8435
8436         * cpu-x86.md: Same.
8437
8438         * mini-x86.c (mono_arch_output_basic_block): Same.
8439         
8440         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8441
8442 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8443
8444         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8445
8446 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8447
8448         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8449
8450         * cpu-x86.md: Same.
8451
8452         * mini-x86.c (mono_arch_output_basic_block): Same.
8453         
8454         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8455
8456 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8457
8458         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8459
8460 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8461
8462         * simd-intrinsics.c: Enable setters for Vector16sb.
8463
8464 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8465
8466         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8467
8468         * cpu-x86.md: Same.
8469
8470         * mini-x86.c (mono_arch_output_basic_block): Same.
8471         
8472         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8473
8474 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8475
8476         * simd-intrinsics.c: Implement setter for Vector8us.
8477
8478 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8479
8480         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8481         for dead variables.
8482
8483 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8484
8485         * mini-ppc.c: remove references to the red zone in the prolog
8486         (for systems that don't support it).
8487
8488 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8489
8490         * cpu-ppc64.md: Fixed a few instruction lengths.
8491
8492         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8493         now.
8494
8495 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8496
8497         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8498         basic.exe now.
8499
8500 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8501
8502         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8503
8504 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8505
8506         * mini-ops.h: Added OP_INSERT_I2.
8507
8508         * cpu-x86.md: Same.
8509
8510         * mini-x86.c (mono_arch_output_basic_block): Same.
8511         
8512         * simd-intrinsics.c: Implement setter for Vector8s.
8513
8514         * simd-methods.h: Add the names of get setters of Vector8s.
8515
8516 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8517
8518         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8519         
8520         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8521         parameters.
8522
8523         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8524
8525 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8526
8527         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8528         for PPC64.  An empty program runs now.
8529
8530 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8531
8532         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8533
8534         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8535         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8536         info for JITted code is emitted into a shared library, loadable into gdb.
8537
8538 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8539
8540         * Makefile.am: Changes to build PPC64.
8541
8542         * mini-arch.h: Include mini-ppc64.h on PPC64.
8543
8544 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8545
8546         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8547         in PPC code up to r119147.
8548
8549 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8550
8551         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8552         cpu-ppc64.md: Changes for PPC64.
8553
8554         Based on code submitted by andreas.faerber@web.de at
8555         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8556         X11/MIT license.
8557
8558 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8559
8560         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8561         cpu-ppc64.md: Copied from the corresponding PPC files from
8562         r118846.
8563
8564 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8565
8566         * mini-ops.h: Added OP_ROUND.
8567
8568         * cpu-x86.md: Added round.
8569
8570         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8571
8572         * basic-math.cs: Added test_0_round to test rounding.
8573
8574         Contributed under MIT/X11 license.
8575
8576 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8577
8578         * aot-compiler.c : Fix the Winx64 build.
8579
8580         Contributed under MIT/X11 license.
8581
8582 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8583
8584         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8585         in OP_EXTRACT_R8 to avoid possible stack corruption.
8586
8587 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8588
8589         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8590
8591         * cpu-x86.md: Added extract_r8.
8592
8593         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8594         
8595         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8596         a couple of OP_EXTRACT_I4.
8597
8598         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8599
8600         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8601
8602 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8603
8604         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8605         and not 4.1. 
8606
8607 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8608
8609         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8610         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8611
8612         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8613         are not needed any more.
8614
8615         * mini.h: Remove the unused INS_LIST macros.
8616
8617         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8618         longer needed.
8619
8620         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8621         ir-emit.h.
8622
8623         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8624         mono_alloc_ireg () instead.
8625
8626         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8627         macros.
8628
8629         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8630         on amd64.
8631
8632         * aot-runtime.c (load_aot_module): Disable AOT when running under
8633         CAS.
8634
8635         * mini-amd64.h: Change the monitor fastpath defines to check for
8636         !PLATFORM_WIN32 so they work on *bsd too.
8637
8638         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8639
8640         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8641
8642         * mini.h (MonoCompile): Remove new_ir flag.
8643
8644         * regalloc.h regalloc.c: Remove unused code.
8645
8646         * cpu-*.md: Remove more unused opcodes.
8647
8648         * simple-cee-ops.h simple-mini-ops.h: Removed.
8649
8650         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8651         
8652 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8653
8654         * aliasing.h: Removed.
8655
8656         * *.c: Remove references to aliasing.h and inssel.h.
8657
8658         * mini.c: Remove additional unused functions.
8659
8660         * mini-ops.h cpu-*.md: Remove unused opcodes.
8661
8662 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8663
8664         Remove the old JIT code.
8665
8666         * inssel*.brg: Removed.
8667
8668         * ssa.c abcremoval.c aliasing.c: Removed.
8669
8670         * ssa2.c: Renamed to ssa.c.
8671
8672         * abcremoval2.c: Renamed to abcremoval.c.
8673
8674         * *.c: Removed all !cfg->new_ir code.
8675
8676         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8677         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8678
8679         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8680         
8681 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8682
8683         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8684         to simplify the code and cut back on the number of global symbols in the AOT
8685         file.
8686         
8687         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8688
8689 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8690
8691         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8692         with the got/got_info tables.
8693
8694         * mini.h: Bump AOT file format version.
8695         
8696         * unwind.h: New file, contains definitions for stack unwinding.
8697
8698         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8699         to cfg->unwind_ops.
8700         
8701         * aot-compiler.c: Generalize the emitting of unwind information to use the
8702         information in cfg->unwind_ops.
8703
8704         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8705
8706         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8707         AOT method frames. Enable writing symbols for methods by default.
8708
8709 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8710
8711         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8712         and make it work with vectors of element sizes 1, 2 and 4.
8713
8714         * simd-intrinsics.c: Enable getter for all vectors with element size
8715         1, 2 or 4.
8716
8717         * simd-methods.h: Add the names of other getters.
8718
8719         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8720
8721         * cpu-x86.md: Same.
8722
8723         * mini-x86.c: Same.
8724
8725 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8726
8727         * mini-ppc.h: portability fix.
8728
8729 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8730
8731         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8732         buggy and will overwrite it.
8733
8734 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8735
8736         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8737         Use it to emit local symbols for all methods so AOTed methods show up with
8738         their full name in gdb/valgrind output.
8739
8740 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8741
8742         * mini-ppc.c: portability fixes.
8743
8744 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8745
8746         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8747         entries out of the if (!generic_shared...) code so it is always done.
8748         (mono_class_init_trampoline): Do the patching when running under valgrind
8749         too, newer versions of valgrind have no problems with it.
8750
8751 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8752
8753         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8754         further sections.
8755
8756 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8757
8758         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8759         filters.
8760
8761 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8762
8763         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8764
8765 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8766
8767         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8768
8769         * cpu-x86.md: Same.
8770
8771         * mini-x86.c: Same.
8772
8773         * simd-intrinsics.c: Same.
8774
8775 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8776
8777         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8778
8779 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8780
8781         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8782         to work with more Vector types.
8783
8784 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8785
8786         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8787         store the elemens directly instead of using and intermediate.
8788
8789 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8790
8791         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8792
8793         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8794         to preserve %eax for aot plt trampolines.
8795
8796         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8797         (encode_method_ref): Flag synchronized methods so they won't go through
8798         the AOT trampoline.
8799
8800         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8801         wrappers.
8802
8803         * cpu-ia64.md (jmp): Increase max length.
8804
8805 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8806
8807         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8808         open generic classes.
8809
8810         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8811
8812         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8813         box+brtrue optimization since it causes test failures on x86.
8814
8815 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8816
8817         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8818
8819         * cpu-x86.md: Same.
8820
8821         * mini-x86.c: Same.
8822
8823         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8824         for simd ctor values. 
8825
8826         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8827         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8828
8829 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8830
8831         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8832         LogicalRightShift.
8833
8834         * simd-instrincs.c: Same.
8835
8836         * basic-simd.cs: Same.
8837
8838 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8839
8840         * ratests.cs: Add more tests.
8841
8842         * regalloc2.c (add_spill_code): Handle more corner cases.
8843
8844 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8845
8846         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8847         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8848         both the source an destination of an instruction.
8849
8850 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8851
8852         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8853         wapihandles.c: more portability changes.
8854
8855 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8856
8857         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8858         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8859         safe to execute in a signal handler and the kernel provides better
8860         the info in /proc/self/smaps. Avoid the assert on sigaction during
8861         cleanup.
8862
8863 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8864
8865         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8866         do the bblock linking hack if it is actually needed.
8867
8868         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8869         up linking.
8870
8871         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8872         crash problem is fixed.
8873
8874         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8875         bblocks.
8876
8877         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8878         for catch clauses.
8879         (mini_method_compile): Set the starting value of next_vreg to 
8880         MAX_IREGS + MAX_FREGS when using globalra.
8881
8882         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8883         filter clauses with BB_EXCEPTION_HANDLER.
8884
8885         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8886
8887 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8888
8889         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8890         space for stdcall.  Fixes regressions on Win32.
8891
8892 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8893
8894         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8895         bblocks.
8896         (linear_scan): Remove an assert which doesn't seem to be needed.
8897
8898         * local-propagation.c (mono_local_deadce): Avoid a call to
8899         MONO_DELETE_INS which would screw up the instruction linking.
8900
8901         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8902
8903         * regalloc2.c: Upgrade to work the current JIT code.
8904
8905 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8906
8907         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8908         case.
8909
8910         * aot-runtime.c: Remove some dead code.
8911
8912         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8913         consistency.
8914         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8915
8916         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8917         trampolines using sscanf since atoi doesn't work on large unsigned values.
8918
8919         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8920         Initialize code_size.
8921
8922 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8923
8924         * method-to-ir.c (mini_emit_inst_for_method): Make
8925         Interlocked.CompareExchange work for Int arguments on 32 bit
8926         archs, as well.
8927
8928 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8929
8930         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8931
8932 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8933
8934         * main.c Fix MSVC build.
8935
8936         Contributed under MIT/X11 license.
8937
8938 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8939
8940         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8941         alignment larger than 8 bytes are aligned correctly, too.
8942
8943         * mini.c: Honor the min_align field of MonoClass when laying out
8944         the stack.
8945
8946 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8947
8948         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8949
8950         * aot-compiler.c (emit_plt): Fix a warning.
8951         
8952         * aot-compiler.c: Implement ARM support in the binary writer.
8953
8954 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8955
8956         * basic-simd.cs: Add test for getter with byref arg.
8957         Fix the naming of a few tests.
8958         Add missing checks to a test.
8959
8960 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8961
8962         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8963
8964         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8965         most of the full-aot support for monitor enter/exit trampolines.
8966
8967         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8968         enter/exit trampoline creation functions.
8969
8970         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8971         make dist.
8972
8973 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8974
8975         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8976         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8977         implement the needed functionality without adding crap to the runtime.
8978
8979 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8980
8981         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8982         non-x86 builds.
8983
8984         * mini.c (mono_build_date): New global version holding the build date in
8985         string format.
8986         
8987         * Makefile.am (buildver.c): Generate a file containing the build date.
8988
8989         * main.c: Set the build date from the generated file.
8990
8991         * mini.c (mono_get_runtime_build_info): New helper function returning build
8992         information in a string format.
8993         
8994         * driver.c (mono_main): Print the build date in --version.
8995
8996         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8997         file when the bind-to-runtime-version option is used.
8998
8999 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9000
9001         * simd-intrinsics.c: Fix bug when using getters and byref args. 
9002
9003 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9004
9005         * simd-methods.h: Rename prefetch methods.
9006
9007         * simd-intrinsics.c: Same.      
9008
9009 2008-11-05  Mark Probst  <mark.probst@gmail.com>
9010
9011         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
9012         sizes.
9013
9014 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9015
9016         * aot-compiler.c: Use the bundled elf header files instead of depending on
9017         the system one.
9018         
9019         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
9020         mempool.
9021
9022         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9023         on every call.
9024
9025 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9026
9027         * cpu-x86.md: Add store nta ops.
9028
9029         * mini-ops.h: Same.
9030
9031         * mini-x86.c: Same.
9032
9033         * mini.h: Add an enum for simd prefetch modes.
9034
9035         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9036         of store. Use the changed code to support store nta.
9037
9038         * simd-intrinsics.c: Add prefetch ops for all vector types.
9039
9040 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9041
9042         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9043         threads.
9044         
9045         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9046         names.
9047
9048         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9049         trampolines.
9050
9051 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9052
9053         * mini-x86.c: Fixed commit.
9054
9055 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9056
9057         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9058
9059 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9060
9061         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9062         and MONITOR_EXIT, for the ASM fastpaths.
9063
9064         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9065         available.
9066
9067         * mini.c, patch-info.h: Signature and patch infos for
9068         Monitor.Enter/Exit trampolines.
9069
9070         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9071
9072         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9073         Monitor.Enter/Exit ASM fastpath for Linux.
9074
9075 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9076
9077         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9078
9079         * objects.cs: Add a new test.
9080         
9081         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9082
9083         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9084         if MONO_LOG_LEVEL is set.
9085
9086         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9087
9088         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9089
9090         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9091         
9092         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9093         of file offsets. Align the sections belonging to the data segment to 
9094         PAGESIZE.
9095
9096 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9097
9098         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9099         elf.h. Port it to amd64.
9100
9101 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9102
9103         * driver.c: Enable SIMD by default.
9104
9105 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9106
9107         * cpu-x86.md: Add prefetch op.
9108
9109         * mini-ops.h: Same.
9110
9111         * mini-x86.c: Same.
9112
9113         * mini.h: Add an enum for simd prefetch modes.
9114
9115         * simd-methods.h: Add prefetch function names.
9116
9117         * simd-intrinsics.c: Add prefetch ops for all vector types.
9118
9119 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9120
9121         * aot-compiler.c (emit_bytes): Speed this up a little.
9122
9123 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9124
9125         * aot-compiler.c: Add JIT time etc. statistics.
9126         
9127         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9128
9129         * mini.h (MonoCompile): Add 'got_offset' field.
9130
9131         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9132         method_got_offsets array.
9133
9134         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9135         wrappers.
9136
9137         * aot-compiler.c (compile_method): Add generic method instances referenced
9138         by the method to the list of methods to be compiled, this is required so if
9139         A<T> references B<T>, and another assembly references A<int>, then it will
9140         also get a copy of B<int>.
9141
9142         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9143         when checking for monitor enter/exit.
9144
9145 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9146
9147         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9148         for Monitor.Enter and Monitor.Exit if enabled.
9149
9150         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9151         Solaris.
9152
9153 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9154
9155         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9156         of an OP_MOVE. Fixes #440046.
9157
9158         * basic-long.cs: Add a new test.
9159
9160 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9161
9162         * mini.h: Add synchronization note for the managed counter-part.
9163
9164         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9165         returns the simd caps of the current cpu.
9166
9167 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9168
9169         * basic-simd.cs: Remove Console.WriteLine.
9170
9171 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9172
9173         * basic-simd.cs: New tests for Vector2ul.
9174
9175 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9176
9177         * simd-intrinsics.c: Add new vector type Vector2ul.
9178
9179 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9180
9181         * basic-simd.cs: New tests for Vector2l.
9182
9183 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9184
9185         * cpu-x86.md: Add long version of most packed int ops.
9186
9187         * mini-ops.h: Same.
9188
9189         * mini-x86.h: Same.
9190
9191         * simd-intrinsics.c: Add new vector type Vector2l.
9192
9193 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9194
9195         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9196
9197         * simd-methods.h: Remove SN_op_BitwiseXor.
9198
9199 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9200
9201         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9202         alignment.
9203
9204 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9205
9206         * basic-simd.cs: Test for Vector2d.
9207
9208         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9209         value.
9210
9211 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9212
9213         * cpu-x86.md: Add double version of all packed float ops.
9214
9215         * mini-ops.h: Same.
9216
9217         * mini-x86.h: Same.
9218
9219         * simd-intrinsics.c: Add new vector type Vector2d.
9220
9221         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9222
9223         * simd-methods.h: Add Duplicate.
9224
9225 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9226
9227         * basic-simd.cs: Test for packing with signed saturation.
9228
9229 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9230
9231         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9232         found in the TYPESPEC table.
9233
9234 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9235
9236         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9237         too.
9238
9239         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9240
9241         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9242         instead of the RVA, since the RVA can be changed by tools like the cil 
9243         stripper.
9244
9245         * method-to-ir.c (mono_method_to_ir2): Ditto.
9246
9247         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9248         (deserialize_variable): Ditto.
9249
9250 2008-10-25  Martin Baulig  <martin@ximian.com>
9251
9252         * debug-mini.c (write_variable): Use
9253         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9254
9255 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9256
9257         * cpu-x86.md: Add unsigned variants of packd and packw.
9258
9259         * mini-ops.h: Same.
9260
9261         * mini-x86.h: Emit the right instruction for packd and packw.
9262         Add unsigned variants of packd and packw.
9263
9264         * simd-intrinsics.c: Packd and packw were used in place of their
9265         unsigned variants. Change that.
9266         Add intrinsics for (Signed)PackWithSignedSaturation.
9267
9268         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9269
9270 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9271
9272         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9273
9274 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9275
9276         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9277
9278         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9279
9280         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9281         sse instructions.
9282
9283         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9284
9285 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9286
9287         * method-to-ir.c, mini.c: Special casing for the synchronized
9288         wrapper for the ldtoken+GetTypeFromHandle case.
9289
9290 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9291
9292         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9293
9294         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9295         created/split bblocks.
9296
9297 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9298
9299         * mini-ops.h: Add packed signed mul high.
9300         
9301         * cpu-x86.md: Same.
9302
9303         * mini-x86.c (mono_arch_output_basic_block): Same.
9304
9305         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9306
9307         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9308
9309 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9310
9311         * basic-simd.cs: Tests for Vector16sb.
9312
9313 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9314
9315         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9316
9317 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9318
9319         * mini-ops.h: Add packed signed min, max and compare greater.
9320         
9321         * cpu-x86.md: Same.
9322
9323         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9324         saturation.
9325
9326         * simd-methods.h: Add CompareGreaterThan.
9327
9328         * simd-methods.h: Remove CompareEquals.
9329
9330         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9331
9332         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9333
9334         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9335         CompareEqual.
9336
9337 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9338
9339         * basic-simd.cs: Fix tests due to change in the API.
9340
9341 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9342
9343         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9344
9345 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9346
9347         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9348
9349         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9350         inst_offset as this has invalid values for LDADDR.
9351
9352 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9353
9354         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9355
9356         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9357
9358 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9359
9360         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9361         for accessing field->data.
9362
9363 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9364
9365         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9366
9367 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9368
9369         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9370
9371         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9372
9373 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9374
9375         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9376         from the cfg mempool.
9377
9378 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9379
9380         * basic-simd.cs: Tests for new methods in Vector8us.
9381
9382 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9383
9384         * mini-ops.h: Add multiply and store high.
9385         
9386         * cpu-x86.md: Same.
9387
9388         * mini-x86.c (mono_arch_output_basic_block): Same.
9389
9390         * simd-methods.h: Same.
9391
9392         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9393         and CompareEqual.
9394
9395 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9396
9397         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9398         mono_class_setup_vtable ().
9399
9400         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9401         mono_class_get_vtable_entry () for accessing klass->vtable.
9402
9403         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9404
9405         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9406         found.
9407
9408         * method-to-ir.c (mono_save_token_info): Don't save references made from
9409         wrappers.
9410
9411         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9412         of generic instances.
9413
9414         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9415
9416 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9417
9418         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9419         OP_JMP depends on the method signature.  Calculate it properly.
9420
9421 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9422         
9423         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9424         called directly.
9425
9426         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9427         instances.
9428         (emit_extra_methods): Add another table mapping method indexes to 
9429         offsets in the extra_method_info table.
9430
9431         * mini.h: Bump AOT file format version.
9432         
9433         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9434         and mono_aot_get_method_from_token () into one function.
9435
9436 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9437
9438         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9439         separate counter.
9440
9441 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9442
9443         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9444         methods.
9445
9446         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9447         disable_aot.
9448
9449         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9450
9451         * mini.h: Bump aot file format version.
9452
9453         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9454         AOT file can contain native code for methods which are not in the METHOD
9455         table. Generate code for non-sharable generic instances of generic methods
9456         found in the METHODSPEC table.
9457         
9458         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9459         encoding generic type handles.
9460
9461         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9462         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9463
9464         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9465         macros + MONO_ADD_INS.
9466
9467         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9468         context as well.
9469
9470         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9471
9472         * mini.h: Bump aot file format version.
9473
9474         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9475
9476 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9477
9478         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9479         platforms, with definable stack alignment value.  Set to 16 now
9480         for all platforms.
9481
9482         * mini.c, mini.h, driver.c: Command line option for disabling
9483         stack alignment.
9484
9485 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9486
9487         * basic-simd.cs: Tests for new methods in Vector4ui.
9488
9489 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9490
9491         * mini-ops.h: Add packed int shuffle.
9492         
9493         * cpu-x86.md: Same.
9494
9495         * mini-x86.c (mono_arch_output_basic_block): Same.
9496
9497         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9498         extract mask, max, min, shuffle.
9499
9500         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9501
9502 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9503
9504         * basic-simd.cs: Tests for new methods in Vector8us.
9505
9506 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9507
9508         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9509         RuntimeTypeHandle, not a TypedReference.
9510
9511 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9512
9513         * simd-intrinsics.c: remove relocations.
9514
9515 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9516
9517         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9518         optimizations from the x86 backend.
9519
9520 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9521
9522         * simd-methods.h, simd-intrinsics.c: debloat method names and
9523         prepare for no relocations.
9524
9525 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9526
9527         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9528         
9529         * cpu-x86.md: Same.
9530
9531         * mini-x86.c (mono_arch_output_basic_block): Same.
9532
9533         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9534         extract mask, max, min and sum of absolute differences.
9535
9536         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9537         method name.
9538
9539 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9540
9541         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9542         Renamed one test for consistency.
9543
9544 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9545
9546         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9547         fix to the code that deal with other blocks.
9548
9549 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9550
9551         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9552
9553 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9554
9555         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9556         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9557         able to process the source reg.
9558
9559 2008-10-16  Martin Baulig  <martin@ximian.com>
9560
9561         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9562
9563         * inssel.brg: Add `OP_HARD_NOP'.
9564
9565         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9566
9567         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9568         `OP_HARD_NOP' instruction when running inside the debugger.
9569
9570         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9571         `OP_HARD_NOP' instruction when running inside the debugger.
9572
9573 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9574
9575         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9576         now works. The issue with the regalloc tripping up no longer
9577         happens.
9578
9579         * simd-intrinsics.c (load_simd_vreg): Same.
9580
9581 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9582         
9583         * basic-simd.cs: Tests for new Vector8ui methods.
9584
9585 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9586
9587         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9588         only for type. This fixes crashes where MonoInst::klass is checked
9589         for ops of type != VTYPE or OBJ.
9590
9591         * simd-intrinsics.c (load_simd_vreg): Same.
9592
9593 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9594
9595         * mini-ops.h: Add ops for packed shuffle/max/avg and
9596         extract mask.
9597         
9598         * cpu-x86.md: Same.
9599
9600         * mini-x86.c (mono_arch_output_basic_block): Same.
9601
9602         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9603         extract mask.
9604
9605         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9606         to emit extract mask op.
9607
9608         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9609         to emit word shuffles.
9610
9611 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9612
9613         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9614         the largest alignment needed by a variable, but at least
9615         sizeof(gpointer).
9616
9617 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9618
9619         * basic-simd.cs: Tests for the fixes in the last commit.
9620
9621 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9622
9623         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9624         no longer handles STACK_PTR input.
9625
9626         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9627
9628         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9629         get_simd_vreg   but handles STACK_PTR input.
9630
9631         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9632         as the input can be an arbitrary pointer.
9633
9634         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9635         LDADDR local optimization directly otherwise use a store op.
9636
9637 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9638
9639         * basic-simd.cs: Tests for dup low and dup high.
9640
9641 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9642
9643         * mini-ops.h: Add dup low and dup high ops.
9644         
9645         * cpu-x86.md: Same.
9646
9647         * mini-x86.c (mono_arch_output_basic_block): Same.
9648
9649         * simd-intrinsics.c (vector4f_intrinsics): Same.
9650
9651 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9652
9653         * basic-simd.cs: Tests for recently added functionality.
9654
9655 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9656
9657         * mini-ops.h: Add remaining sse1 fp ops.
9658         
9659         * cpu-x86.md: Add remaining sse1 fp ops.
9660
9661         * mini-x86.c (mono_arch_output_basic_block): Same.
9662
9663         * mini.h: Add enum for simd FP compare conditions.
9664
9665         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9666
9667         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9668         so the backed can generate the appropriate op.
9669
9670 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9671         This patch squeese one more byte from the SimdIntrinsc struct.
9672
9673         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9674         a a shift amount intead of simply or'ing it.
9675
9676         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9677
9678         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9679         byte so we can have an aditional flags field without increasing struct size.
9680
9681         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9682         against the simd_supported_versions bitmask.
9683
9684         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9685
9686 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9687
9688         * mini.c: remove rawbuffer code (the only use here is unsafe because
9689         it takes locks during signal handling and the kernel now provides much
9690         better info in proc/pid/smaps these days).
9691
9692 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9693
9694         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9695         OP_X86_PUSH_OBJ. Fixes #434620.
9696
9697         * objects.cs: Add a test.
9698         
9699 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9700
9701         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9702         that the packuswb/packusdw don't work with unsigned numbers for what
9703         would be negative numbers in signed format.
9704
9705         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9706         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9707
9708         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9709
9710         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9711
9712         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9713
9714         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9715
9716         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9717         add more ops.
9718
9719         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9720         version as the enum in mini.h.
9721
9722         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9723         for sse3 ops, check the simd_version field if present. This way the code
9724         works with all versions of sse.
9725
9726 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9727
9728         * simd-intrinsics.c: Fixed intrinsic name typo.
9729
9730         * mini.h: Added missing simd exported function.
9731
9732         * basic-simd.cs: Added tests for Vector4ui.
9733         Fixed broken test for Vector16b.
9734
9735 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9736
9737         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9738         the max length to 64.
9739
9740 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9741
9742         * method-to-ir.c: Only do the fast virtual generic method call for
9743         non-wrapper methods.
9744
9745         * mini.h, mini-trampolines.c: The new generic virtual remoting
9746         trampoline handles virtual method calls via the vtable (as done by
9747         the fast virtual generic method calls) to remoting proxies.
9748
9749         * mini.c (mono_jit_create_remoting_trampoline): For generic
9750         methods reate a generic virtual remoting trampoline.
9751
9752         * mini-amd64.h: Enable fast virtual generic method calls again.
9753
9754 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9755
9756         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9757         restore registers when doing tail calls.
9758
9759 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9760
9761         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9762         Vector4ui.
9763
9764 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9765
9766         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9767
9768 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9769
9770         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9771
9772 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9773
9774         * basic-simd.cs: Retrofit for API changes.
9775
9776 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9777
9778         * mini-ppc.c: Handle integer stack arguments for tail calls.
9779
9780 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9781
9782         * optflags-def.h: Removed sse3 optimization.
9783
9784         * driver.c: Same.
9785
9786         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9787         sse3.
9788
9789         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9790
9791         * mini.h: Added enumeration with simd versions.
9792
9793         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9794         for detecting SSE3.
9795
9796         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9797
9798         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9799
9800 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9801
9802         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9803
9804         * basic-simd.cs: Fixed test naming.
9805
9806 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9807
9808         * mini-ops.h: Added ops for packed and saturated math, shifts
9809         and packing/unpacking.
9810
9811         * cpu-x86.md: Added descriptors for the above ops.
9812
9813         * mini-x86.c: Added code to emmit the above ops.
9814
9815         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9816
9817 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9818
9819         * aot-compiler.c (compile_method): Enable AOT for generic code.
9820
9821         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9822
9823 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9824
9825         * mini.c: add a workaround for a common screwup that ends up blamed
9826         to mono (other processes blocking signal delivery).
9827
9828 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9829
9830         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9831         in the LDFLD/STFLD opcodes. Fixes #432673.
9832
9833         * iltests.il.in: Add a new test.
9834
9835 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9836
9837         * mini-arm.c: attach the thread in unmanaged->managed transitions
9838         using delegates (bug #433148).
9839
9840 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9841
9842        * basic-simd.cs: Use new ShuffleSel constants.
9843
9844 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9845
9846         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9847
9848         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9849         only disable simd intrinsics if no sse2 is detected.
9850
9851         * optflags-def.h: Added sse3.
9852
9853         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9854         is disabled.
9855
9856 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9857
9858         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9859         when adding delegate-invoke wrappers.
9860
9861 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9862
9863         * Makefile.am: Reenable the simd tests.
9864
9865 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9866
9867         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9868           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9869           other vreg is allocated to that hreg.
9870
9871         Contributed under MIT/X11 license.
9872
9873 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9874
9875         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9876         yet checked in.
9877
9878 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9879
9880         * basic-simd.cs: New test suite for SIMD intrinsics.
9881
9882         * Makefile.am: Added new tests.
9883
9884 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9885
9886         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9887
9888         * mini-ops.h: Same.
9889
9890         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9891
9892         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9893         using SSE2 aware opcodes.
9894
9895         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9896         is enabled, this code path is only reachable if conversion ops are emmited after
9897         mono_method_to_ir.
9898
9899         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9900
9901         This optimization saves 6 bytes per conversion against the old version.
9902
9903 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9904
9905         * aot-compiler.c (compile_method): Don't skip methods referencing 
9906         generic methods without a corresponding entry in token_info_hash, since
9907         encode_method_ref () can handle all generic methods now.
9908
9909         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9910         generic context is set.
9911         
9912         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9913         generic sharing of LDTOKEN.
9914
9915 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9916
9917         * mini-amd64.h: Temporarily disabled fast virtual generic method
9918         calls because it breaks the System.Runtime.Remoting tests.
9919
9920 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9921
9922         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9923
9924         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9925         so inlining actually works.
9926         (check_inline_caller_method_name_limit): Ditto.
9927
9928 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9929
9930         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9931         64 bit safety (from Olaf Hering and Andreas Farber).
9932
9933 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9934         
9935         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9936         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9937         unused virtual call support code.
9938
9939         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9940         
9941         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9942         which can't use aot trampolines.
9943         (decode_patch): Don't create aot trampolines for methods which can't use
9944         them.
9945
9946         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9947         use aot trampolines.
9948
9949         * mini.h: Bump AOT image format version.
9950         
9951 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9952
9953         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9954         to save_token_info () since cmethod is inflated for constrained calls.
9955
9956         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9957
9958 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9959
9960         * Makefile.am: Add build rules for ppc64.
9961         This avoids the build failing at pedump with unresolved symbols
9962         due to lack of arch_sources. Instead it will now fail earlier
9963         due to lack of cpu-ppc64.md.
9964
9965         Contributed under MIT/X11 license.
9966
9967 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9968
9969         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9970         tail calls.
9971
9972         * iltests.il.in: Add test case for tail call with many arguments.
9973
9974 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9975
9976         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9977         to the fast virtual generic method code until the aot case is fixed.
9978
9979 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9980
9981         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9982
9983 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9984
9985         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9986         thunks.
9987
9988 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9989         
9990         * simd-intrinsics.c: Forgot to add this one.
9991
9992         * mini-codegen.c: Fix macro in case SIMD is not supported.
9993
9994 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9995         
9996         This patch land initial JIT support for simd intrinsics.
9997
9998         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9999
10000         * Makefile.am: Added simd-intrinsics.c
10001
10002         * simd-intrinsics.c: New file with simd instrinsic related
10003         code.
10004
10005         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
10006
10007         * cpu-x86.md: Add simd related instructions.
10008
10009         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
10010
10011         * driver.c: Added two new --regression variants.
10012
10013         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
10014
10015         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
10016
10017         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
10018         extract some complicated logic to helper functions.
10019
10020         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
10021
10022         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10023
10024         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10025         the specialized simplification pass.
10026
10027         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10028
10029         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10030
10031         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10032         table.
10033
10034         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10035         if MONO_ARCH_NEED_SIMD_BANK is defined.
10036
10037         * mini-ops.h: Added the new simd ops.
10038
10039         * mini-x86.c: Added mono_arch_xregname.
10040
10041         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10042
10043         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10044
10045         * mini-x86.h: Define simd related MONO_ARCH macros.
10046
10047         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10048
10049         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10050
10051         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10052         MONO_CLASS_IS_SIMD to deal with simd related IR.
10053
10054         * mini.h (MonoInst): Added spill_var to the backend union.
10055
10056         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10057
10058         * mini.h: Added forward declarations of the new simd fuctions.
10059
10060         * optflags-def.h: Added new optimization names SIMD.
10061
10062         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10063
10064         * regalloc.h: Added support for working with 3 register banks.
10065
10066         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10067
10068         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10069
10070 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10071
10072         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10073
10074 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10075
10076         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10077         instead of one on 64 bit systems.
10078
10079         * method-to-ir.c: Remove unused includes.
10080
10081 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10082
10083         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10084         cfg->used_int_regs, since the two are different on arm.
10085
10086 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10087
10088         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10089         mono_method_get_vtable_index() to get the vtable index.
10090
10091 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10092
10093         * method-to-ir.c (mono_method_to_ir2): Don't create native
10094         wrappers for array methods, because they're never called (and if
10095         they were called they wouldn't work).
10096
10097 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10098
10099         * method-to-ir.c (mono_method_to_ir2): Array methods are
10100         special-cased and must not be invoked indirectly via the (M)RGCTX
10101         when generic sharing is turned on.  Fixes #431413.
10102
10103 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10104
10105         * method-to-ir.c: When generic sharing is active, call
10106         non-interface virtual generic methods via the standard trampoline.
10107
10108         * mini-trampolines.c: Handle virtual generic shared methods.
10109
10110         * mini.h, mini-x86.c, mini-x86.h: New argument for
10111         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10112         method thunks and which is the trampoline to call if the lookup
10113         fails.  Enable the virtual generic method thunk for x86.
10114
10115         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10116         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10117         argument but assert that it's NULL, because these archs don't yet
10118         implement the virtual generic method thunk.  Changes in the IMT
10119         thunk data structures.
10120
10121 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10122
10123         * aot-compiler.c (emit_globals): Avoid invalid characters in
10124         the static linking symbol.
10125
10126         * objects.cs: Add a test for the range check optimization. Fix warnings.
10127
10128         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10129         optimization from the current JIT.
10130
10131         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10132         later in decompose_array_access_opts () to allow more optimizations.
10133
10134         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10135         mono_decompose_soft_float () for consistency.
10136
10137         * mini-ops.h: Fix arguments of OP_STRLEN.
10138
10139         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10140         into a separate function.
10141         (reset_cast_details): Ditto.
10142         (handle_unbox): Save cast details. Fixes #431254.
10143
10144         * method-to-ir.c: Remove some obsolete FIXMEs.
10145
10146 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10147
10148         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10149
10150 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10151
10152         * mini-codegen.c: More work on macros to make them
10153         ready for multiple regbanks.
10154
10155 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10156
10157         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10158
10159         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10160
10161 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10162
10163         * mini-codegen.c (mono_spillvar_offset): Proper support for
10164         multiple regbanks.
10165
10166 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10167
10168         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10169         the stack overflow changes.
10170
10171 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10172
10173         * mini-codegen.c: Make all bank macros depend on reg_bank.
10174
10175         * mini-codegen.c (mono_local_regalloc): Make free mask
10176         initialization regbank aware.
10177
10178 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10179
10180         * mini-codegen.c (mono_local_regalloc): Extract callee
10181         mask selection to a function and make it regbank aware.
10182
10183 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10184
10185         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10186         code to deal with many regbanks.
10187
10188 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10189
10190         * mini-codegen.c: More fp->regbank changes.
10191
10192 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10193
10194         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10195         of a hardcoded constant.
10196
10197 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10198
10199         * method-to-ir.c (type_from_stack_type): Fix typo.
10200
10201 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10202
10203         * mini-ia64.c (emit_move_return_value): Convert float return values to
10204         double.
10205
10206         * objects.cs: Add a new test.
10207         
10208         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10209         VARARG methods to fix an assert later.
10210
10211         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10212         end so it at least compiles.
10213
10214 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10215
10216         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10217
10218 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10219
10220         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10221         optimization to a new function (emit_optimized_ldloca_ir) and enable
10222         it for both ldloca and ldloca_s.
10223
10224 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10225
10226         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10227         gshared CASTCLASS code.
10228
10229         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10230         amd64, where the libc stack unwinder encounters stack frames referring to
10231         native code in unmapped memory.
10232
10233         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10234         sharing.
10235
10236         * generics.cs: Add new test.
10237
10238 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10239
10240         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10241         add a check that one of the ARM_FPU_ constants is defined.
10242
10243         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10244         
10245         * mini-exceptions.c: Fix build on non-altstack platforms.
10246
10247         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10248         sharing of vtypes.
10249
10250         * ir-emit.h: Add a comment to NEW_PCONST.
10251
10252         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10253
10254         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10255
10256         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10257         after the changes to MonoJitDomainInfo.
10258
10259 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10260
10261         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10262
10263 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10264
10265         * mini-ppc.c: Compiler warning fixes.
10266
10267 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10268
10269         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10270         for pinvokes.
10271
10272 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10273
10274         * exceptions-ppc.c, mini-ppc.h: Compile
10275         mono_arch_handle_altstack_exception() on Darwin, too.
10276
10277 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10278
10279         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10280         work on archs which don't have generic sharing implemented, only
10281         without the vtable_arg.
10282
10283 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10284
10285         * mini.c: Added comment explaining why delegate ctor icall
10286         wrappers are compiled.
10287
10288 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10289
10290         * mini.c: Don't produce trampolines to delegate ctor icall
10291         wrappers but compile them upfront.
10292
10293 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10294
10295         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10296         runtime-set function when going back to managed code. Currently this
10297         is used to set back the protection on the soft ovf pages and/or to
10298         throw the stack overflow exception that happened in unmanaged code.
10299
10300 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10301
10302         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10303         runtime-set function when going back to managed code. Currently this
10304         is used to set back the protection on the soft ovf pages and/or to
10305         throw the stack overflow exception that happened in unmanaged code.
10306
10307 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10308
10309         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10310         the support code for restoring stack protection after stack overflows
10311         that happen in unmanaged code. Don't set the exec permission on the
10312         soft overflow area.
10313
10314 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10315
10316         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10317         delegate->method_ptr is set. Fixes #428054.
10318
10319 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10320
10321         * tests.cs: Rename to ratests.cs.
10322
10323         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10324         emit_get_rgctx_... functions.
10325
10326 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10327
10328         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10329
10330 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10331
10332         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10333         before asserting that method is sharable.
10334
10335 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10336
10337         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10338         whether method needs a static RGCTX wrapper used instead of
10339         complex conditions.
10340
10341         * generic-sharing.c, mini.h: A few functions moved to
10342         metadata/generic-sharing.c.
10343
10344 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10345
10346         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10347         Generic code sharing for value types, which essentially means
10348         treating value type methods like static methods.  The RGCTX is
10349         passed in the same way.
10350
10351 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10352
10353         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10354         opcode when creating multi-dimensional arrays of open types.
10355
10356         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10357         open generic types.
10358
10359         * generics.cs: Add a test.
10360
10361         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10362
10363 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10364
10365         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10366
10367         * mini.c (mini_method_compile): Set it when running under the debugger. 
10368
10369         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10370         vreg optimization if the flag is set.
10371
10372         * driver.c (mono_main): Add --attach= option to pass options to
10373         the attach agent.
10374
10375         * mini.c (sigquit_signal_handler): Start the attach agent.
10376
10377         * ssapre.c: Disable this to save space since it is not yet ported to
10378         linear IR.
10379
10380         * regalloc2.c: Disable this to save space.
10381
10382         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10383
10384 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10385
10386         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10387         the -v option useful again.
10388
10389 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10390
10391         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10392         --break-at-bb.
10393
10394         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10395         arrays of arrays. Fixes #428406.
10396
10397         * method-to-ir.c (mini_emit_castclass): Ditto.
10398
10399         * objects.cs: Add new test.
10400         
10401 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10402
10403         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10404         was wrong at it choked against target_type_is_incompatible for byref types.
10405
10406 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10407
10408         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10409         places.
10410
10411 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10412
10413         * mini-exceptions.c: update a few more exceptions-related counters.
10414
10415 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10416
10417         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10418         new functions to allocate from persistent mempools.
10419
10420 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10421
10422         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10423         multiple register banks in the future.
10424
10425         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10426
10427 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10428
10429         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10430
10431         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10432
10433         * mini.h: Export type_to_eval_stack_type.
10434
10435         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10436         is only ins->klass of byref types.
10437
10438 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10439
10440         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10441         (mini_emit_memcpy2): Ditto.
10442
10443         * mini-amd64.c: Fix a warning.
10444
10445 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10446
10447         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10448         linking.
10449
10450 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10451
10452         * method-to-ir.c: Extract stloc micro-optimization to a
10453         function and apply it to all cases.
10454
10455 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10456
10457         * method-to-ir.c: Don't fail generic code sharing in cases we
10458         already support.
10459
10460 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10461
10462         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10463
10464 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10465
10466         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10467         implementation.
10468
10469 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10470
10471         * trace.c: make tracing more useful and correct, with per-thread
10472         id and indent info.
10473
10474 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10475
10476         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10477         doing a method call and the argument is an R4.
10478
10479 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10480
10481         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10482         generic methods.
10483
10484 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10485
10486         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10487
10488 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10489
10490         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10491         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10492
10493 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10494
10495         * driver.c: Add a --agent argument (not supported yet) to load managed
10496         agent assemblies before loading the main assembly, similarly to how the
10497         Java VM handles agents.
10498
10499 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10500
10501         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10502         function to do stack layout of local variables.
10503
10504 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10505
10506         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10507         calculation.
10508
10509 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10510
10511         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10512         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10513         JIT if DISABLE_JIT is defined.
10514
10515         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10516         defined.
10517
10518 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10519
10520         * iltests.il.in: Disable the fconv test on PPC (the result is
10521         undefined according to ECMA).
10522
10523 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10524
10525         * iltests.il.in: Enable tail call tests for PPC.
10526
10527         * mini.h: Add variable for storing incoming valuetype argument
10528         addresses for tail calls.
10529
10530         * mini-ppc.c: Implement valuetype arguments and return values for
10531         tailcalls on Linux.
10532
10533 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10534
10535         * mini-ppc.c: Partially implement tail calls (struct arguments and
10536         return values not supported).
10537
10538         * method-to-ir.c: Enable tail calls on PPC.
10539
10540 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10541
10542         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10543         runtime-invoke wrappers to work around the problem of them getting
10544         assigned to a random class.
10545
10546         * aot-runtime.c (mono_aot_get_method): Ditto.
10547         
10548 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10549
10550         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10551         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10552
10553 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10554
10555         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10556         until they're implemented properly.
10557
10558         * exceptions-ppc.c: Use arch-independent exception-handling code
10559         instead of custom one.
10560
10561         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10562         for Linear IR.
10563
10564         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10565
10566         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10567         applies when __powerpc__ is defined.
10568
10569 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10570
10571         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10572         methods to their code to avoid computing the full name of wrappers and
10573         doing a lookup in a string hash table.
10574
10575 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10576
10577         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10578         we identify bblocks before method_to_ir () is ran.
10579
10580         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10581         Also avoid optimizing branches pointing to themselves.
10582
10583         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10584
10585 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10586
10587         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10588
10589 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10590
10591         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10592         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10593         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10594         'buf'.
10595
10596         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10597         jumped to the same entry in plt_jump_table.
10598
10599 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10600
10601         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10602         dynamic images.
10603
10604 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10605
10606         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10607         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10608         #421807.
10609
10610 2008-08-29  Geoff Norton  <gnorton@novell.com>
10611
10612         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10613         segment, and doesn't properly handle .space as .text.  Fixes
10614         AOT Mach/ARM
10615
10616 2008-08-29  Geoff Norton  <gnorton@novell.com>
10617
10618         * mini.c: Disable the mach exception handler when running on 
10619         ARM
10620
10621 2008-08-29  Geoff Norton  <gnorton@novell.com>
10622
10623         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10624         globals on Darwin/ARM
10625
10626 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10627
10628         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10629         since too many things depend on it. Instead, call 
10630         mono_runtime_set_no_exec ().
10631         
10632         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10633         the new JIT.
10634
10635         * aot-compiler.c: Add an 'asm-only' AOT option.
10636
10637         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10638                 
10639         * aot-compiler.c (compile_method): Disable gshared support for now as it
10640         doesn't yet work.
10641
10642 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10643
10644         * mini-amd64.h : Fix a compiler warning.
10645
10646         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10647           Changed to use a callback function to retrieve the unwind info.
10648           This avoids problems observed when code blocks were removed by
10649           unloading an app domain.
10650
10651         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10652           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10653           to work properly.
10654
10655         Contributed under MIT/X11 license.
10656
10657 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10658
10659         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10660           case to keep the stack aligned to 8.
10661
10662         Contributed under MIT/X11 license.
10663
10664 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10665
10666         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10667         avoid repeated linear searches.
10668
10669 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10670
10671         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10672         methods it can't handle.
10673         
10674         * aot-compiler.c (add_method): Avoid adding a method twice.
10675         (add_wrappers): Add runtime invoke wrappers for all methods.
10676
10677         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10678         function to create an aot-compatible version of this trampoline.
10679
10680         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10681
10682 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10683
10684         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10685
10686         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10687         with a generic sharing failure.
10688
10689         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10690
10691         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10692         CEE_RETHROW. Fixes #419634.
10693
10694         * mini.c (mono_method_to_ir): Ditto.
10695
10696         * exceptions.cs: Add a new test.
10697         
10698         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10699         to mono_type_stack_size_internal () since some callers might not pass in
10700         an rgctx.
10701
10702         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10703         instrument_prolog. Fixes #419878.
10704
10705         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10706         doubles in soft float mode volatile.
10707
10708 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10709
10710         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10711
10712         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10713         to handle soft float correctly.
10714
10715         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10716         the fast path.
10717
10718         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10719
10720         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10721         to sp, since the generics catch code requires it.
10722
10723         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10724         copying.
10725
10726         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10727         mono_arch_emit_imt_argument ().
10728
10729         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10730
10731         * mini-arm.c tramp-arm.c: Generic sharing updates.
10732
10733 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10734
10735         * mini-arm.c: Fix the arm build.
10736
10737         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10738         handling enums, generic instances and generic sharing.
10739         (mini_type_stack_size_full): Ditto.
10740
10741         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10742         
10743         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10744
10745         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10746
10747         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10748         trampolines.
10749
10750         * mini-arm.c: Various small generic sharing changes.
10751
10752         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10753         this for x86.
10754         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10755         custom code.
10756
10757         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10758         helper function to return a generic class init trampoline.
10759
10760         * method-to-ir.c mini.c: Use it.
10761         
10762         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10763         arch-specfic function to return a generic class init trampoline.
10764
10765         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10766         the GENERIC_CLASS_INIT custom code.
10767
10768         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10769         a fatal error, not a sharing failure.
10770
10771         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10772         needed.
10773
10774         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10775         trampoline argument from MONO_ARCH_VTABLE_REG.
10776
10777         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10778         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10779         argument, and pass the vtable in VTABLE_REG.
10780
10781         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10782         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10783         argument, and pass the vtable in VTABLE_REG.
10784         (mono_arch_create_trampoline_code_full): Remove some special casing for
10785         the rgctx fetch trampoline.
10786
10787         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10788         Fixes #419273.
10789
10790         * iltests.il: Add a test for it.
10791
10792 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10793
10794         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10795
10796         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10797         no longer needed.
10798
10799         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10800         use mono_jit_info_table_find () to avoid recursion.
10801         (mono_delegate_trampoline): Add a sync wrapper here.
10802
10803         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10804         here.
10805
10806         * mini.c (mono_method_to_ir): Ditto.
10807         
10808         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10809         add_sync_wrapper argument. Don't add a sync wrapper here.
10810         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10811
10812         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10813         
10814 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10815
10816         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10817           of nonvolatile registers back from MonoContext to CONTEXT.
10818
10819         Contributed under MIT/X11 license.
10820
10821 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10822
10823         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10824           arguments on Winx64 there are only 4 argument registers.  For this
10825           logic to work the last argument must be pulled from the stack.  
10826
10827         Contributed under MIT/X11 license.
10828
10829 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10830
10831         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10832
10833         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10834         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10835         encode/decode_method_ref ().
10836
10837         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10838
10839         * aot-runtime.c (decode_patch): Ditto.  
10840
10841         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10842         MONO_PATCH_INFO_METHOD.
10843
10844         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10845         MonoGenericJitInfo.
10846
10847         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10848         MonoGenericJitInfo.
10849
10850         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10851
10852         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10853         one from the caller.
10854
10855         * aot-runtime.c (decode_generic_inst): New function to decode and
10856         return a interned generic inst.
10857         (decode_klass_ref): Use it.
10858         (decode_method_ref): Ditto.
10859
10860         * aot-compiler.c (emit_exception_debug_info): Save 
10861         jinfo->has_generic_jit_info too.
10862
10863 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10864
10865         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10866
10867         * iltests.il.in: Add a test for fconv_to_i.
10868
10869         * liveness.c: Disable the liveness2 pass for now to save space.
10870
10871         * regalloc2.c: Include mempool-internals.h to fix warnings.
10872
10873         * aot-compiler.c (encode_method_ref): Encode the context of generic
10874         instance methods.
10875
10876         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10877         the context saved in the aot file.
10878
10879         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10880
10881         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10882
10883         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10884         volatile so they won't be optimized away.
10885
10886 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10887
10888         * ssa.c:
10889         * ssa2.c:
10890         * mini.c:
10891         * regalloc2.c:
10892         * dominators.c: Remove duplicated functions that now are in
10893         mempool-internals.h.
10894
10895 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10896
10897         * aot-compiler.c: Fix warnings.
10898
10899         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10900
10901         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10902
10903         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10904         as the patch type.
10905
10906         * mini.c (mono_resolve_patch_target): Ditto.
10907         
10908         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10909         (encode_klass_ref): Add support for encoding VARs/MVARs.
10910
10911         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10912
10913         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10914         the handling of the got entries into a separate 'decode_got_entry' function.
10915         Add support for RGCTX_FETCH.
10916
10917         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10918         clobbered by the trampoline code.
10919
10920         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10921         not clobbered by the indirect calling code.
10922
10923 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10924
10925         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10926         to fix the build.
10927
10928 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10929
10930         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10931         signature using the compilation mempool otherwise we would leak it.
10932
10933 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10934
10935         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10936         mono_emit_abs_call ().
10937
10938         * patch-info.h: Add GENERIC_CLASS_INIT.
10939
10940         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10941
10942         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10943         as their target as a near call.
10944
10945         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10946         ABS handling code.
10947         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10948
10949         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10950         call to a runtime function described by a patch.
10951
10952         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10953         mono_emit_abs_call, this has the advantage that the ABS handling code in
10954         mono_codegen () can handle them both, and can handle other stuff in the
10955         future without additional code.
10956
10957         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10958         entry.
10959         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10960         abs addresses.
10961
10962         * mini.h: Add missing bblock related prototypes.
10963
10964         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10965         reverse_inst_list_len fields.
10966
10967         * mini.c: Refactor this file a bit by moving branch optimizations to 
10968         branch-opts.c.
10969
10970         * method-to-ir.c: Merge generic sharing changes missed earlier.
10971
10972         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10973
10974         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10975         shared patches. Process METHODCONST as a shared patch.
10976
10977         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10978         as it crashes on the 2.0 mscorlib.
10979
10980         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10981         to cause crashes.
10982         
10983         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10984         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10985         by IMT.
10986
10987         * aot-compiler.c: Reorganize the got handling code to be a bit more
10988         understandable.
10989
10990 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10991
10992         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10993         mono_patch_info_equals/hash, and use it to massively simplify
10994         get_plt_index ().
10995
10996         * mini.c (mono_patch_info_hash): Simplify this and add support for
10997         more patch types.
10998
10999         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
11000
11001         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
11002         handling code, since an offset is not enough to identify a trampoline.
11003
11004         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
11005
11006 2008-08-17  Mark Probst  <mark.probst@gmail.com>
11007
11008         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
11009
11010         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
11011
11012         * mini-ops.h: Argument and result types for OVF_CARRY ops.
11013
11014         * decompose.c: PPC decompositions for various ops.
11015
11016         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
11017
11018 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
11021         call the generic trampoline code using a call, instead of a jump, to
11022         remove some special casing from the generic trampoline code.
11023
11024         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11025         (mono_codegen): Ditto.
11026
11027         * aot-compiler.c aot-runtime.c: Ditto.
11028
11029         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11030
11031         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11032         helper function to find the offset corresponding to a lazy fetch trampoline.
11033
11034         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11035         when doing generic sharing.
11036
11037         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11038         places.
11039         
11040         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11041         mini-trampolines.c to be with the other trampoline creation functions.
11042
11043         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11044         as it is equal to method->signature in most cases, add a 
11045         mono_emit_method_call_full variant which takes a signature and an imt
11046         argument as well.
11047
11048 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11049
11050         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11051         to this function, since it could be computed easily from the method 
11052         argument.
11053         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11054         more.
11055
11056         * method-to-ir.c mini.c: Remove references to 
11057         compile_generic_method_wo_context.
11058
11059         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11060         generic method calls.
11061         
11062         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11063         dimensional non-szarrays.
11064
11065         * mini.c (mini_init): Register mono_array_new_1.
11066
11067         * jit-icalls.c (mono_array_new_1): New jit icall.
11068
11069         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11070         pointing to the method.
11071
11072         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11073         method addresses belonging to METHOD_JUMP patches in the 
11074         jump_target_got_slot_hash.
11075         (mono_aot_load_method): Ditto.
11076
11077         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11078         METHOD_JUMP patches.
11079
11080         * mini.c (mini_create_jit_domain_info): New helper function which 
11081         initializes/frees domain->runtime_info.
11082         (mini_free_jit_domain_info): Ditto.
11083         (mini_init): Install the domain hook functions with the runtime.
11084
11085         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11086         information maintained by the JIT.
11087
11088         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11089         insertion into jump_table_hash into mono_codegen (), also implement proper
11090         locking.
11091
11092         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11093         tail calls, it is already done by the aot code.
11094         
11095         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11096         mechanism on amd64.
11097
11098         * iltests.il.in: Make the jmp test a bit more complex.
11099
11100         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11101         generic instances which doesn't have a token.
11102
11103         * aot-runtime.c (decode_method_ref): Ditto.
11104         
11105         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11106         can handle this case now.
11107         (handle_box): Ditto.
11108
11109 2008-08-15  Geoff Norton  <gnorton@novell.com>
11110
11111         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11112         debugging check.
11113
11114 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11115
11116         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11117         calling generic methods.
11118
11119         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11120
11121         * aot-runtime.c (decode_patch_info): Ditto.
11122
11123         * mini.c (mono_resolve_patch_target): Ditto.
11124         
11125         * patch-info.h: Add METHOD_RGCTX.
11126
11127         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11128
11129 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11130
11131         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11132         arguments in registers.
11133
11134         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11135         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11136
11137         * mini.c (mini_method_compile): Abort aot compilation for generic
11138         methods if generic sharing is disabled.
11139         
11140         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11141         an mrgctx.
11142
11143         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11144         requiring an mrgctx.
11145
11146         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11147         store instructions when converting a vcall to a normal call.
11148
11149         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11150         mono_arch_find_jit_info.
11151
11152 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11153
11154         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11155         avoid calling mono_method_full_name () for every method even if the
11156         env var is not set.
11157         (check_inline_caller_method_name_limit): Ditto.
11158
11159 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11160
11161         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11162         assemblies in one run.
11163
11164         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11165         skipped methods if it is not 0.
11166
11167         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11168
11169 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11170
11171         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11172           MONO_ARCH_HAVE_UNWIND_TABLE.
11173
11174         Contributed under MIT/X11 license.
11175
11176 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11177
11178         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11179           from default optimizaton list on Winx64.
11180
11181         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11182
11183         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11184           the LMF from the MonoJitTlsData structure.
11185
11186         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11187
11188         Contributed under MIT/X11 license.
11189
11190 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11191
11192         * mini.c (sigsegv_signal_handler): Fix the build.
11193
11194         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11195         assembly->aot_module.
11196
11197         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11198         hash table. This simplifies and speeds up a lot of code, and fixes support
11199         for .netmodules.
11200
11201         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11202         with the runtime.
11203
11204         * mini-exceptions.c: Ditto.
11205         
11206         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11207         'native_offset' argument, since these are computed in the 
11208         mono_find_jit_info () function.
11209
11210         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11211         is used by exceptions-ppc.c.
11212
11213         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11214         mono_arch_find_jit_info ().
11215         
11216         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11217         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11218         generic code in mini-exceptions.c.
11219
11220 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11221
11222         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11223
11224         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11225         
11226         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11227         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11228         called while holding the loader lock. Fixes #415608.
11229         (mono_aot_get_method_from_token_inner): Ditto.
11230
11231 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11232
11233         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11234         to reduce differences between this and the generic implementation in
11235         mini-exceptions.c.
11236         (ves_icall_get_frame_info): Ditto.
11237
11238         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11239
11240         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11241         longer neccesarry.
11242
11243         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11244         mono_arch_get_call_filter () and make it non-static, for consistency with the
11245         other architectures.
11246
11247 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11248
11249         * mini.c:
11250         * local-propagation.c:
11251         * mini-x86.c: Correct the name of arch defines.
11252
11253 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11254
11255         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11256         NO_EMULATE_LONG_SHIFT_OPS define.
11257
11258 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11259
11260         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11261         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11262
11263         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11264         MACH fixes. Merged from the 2.0 branch.
11265
11266         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11267
11268         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11269         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11270
11271         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11272
11273         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11274         mono_marshal_get_native_wrapper () signature changes.
11275
11276 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11277
11278         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11279         conversion bug under arm.
11280
11281 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11282
11283         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11284
11285         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11286         with overflow checking.
11287
11288 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11289
11290         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11291         to the genmdesc.pl file
11292
11293 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11294
11295         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11296         arg_array in the soft-float versions of the LOAD/STORE macros.
11297
11298         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11299         implementation.
11300
11301         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11302
11303 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11304
11305         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11306         a float HFA. Fixes #413621.
11307
11308 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11309
11310         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11311         frame_size to args_size. Fixes build.
11312
11313 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11314
11315         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11316         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11317
11318         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11319         the stack are not unaligned. Fixes #413247.
11320         
11321 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11322
11323         * mini.c: update jitted methods performance counters.
11324
11325 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11326
11327         * mini-exceptions.c: increase the exceptions thrown performance
11328         counter in mono_handle_exception ().
11329
11330 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11331
11332         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11333         can work with netmodules.
11334
11335 2008-07-28  Geoff Norton  <gnorton@novell.com>
11336
11337         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11338         regression tests.
11339
11340 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11341
11342         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11343         correct place.
11344
11345 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11346
11347         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11348           The float param registers and other param registers must be the 
11349           same index on Windows x64.
11350
11351         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11352           ArgValuetypeAddrInIReg argument case.  Setting the argument
11353           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11354
11355         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11356           variable computed above as the copy length for arguments of storage
11357           type ArgValuetypeAddrInIReg.
11358
11359         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11360           ArgValuetypeAddrInIReg argument case.  This case will rely on
11361           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11362
11363         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11364           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11365           jump and tail call instructoins as they do not follow the typical call behavior.
11366
11367         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11368           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11369           local variable and pass the local variable by reference to the called method.
11370
11371         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11372           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11373           of a struct is passed in a register it must be saved with the other
11374           volatile argument on the stack.
11375
11376         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11377           frame pointer the stack adjustment value must be saved to the unwind 
11378           info structure.
11379
11380         Contributed under MIT/X11 license.
11381
11382 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11383
11384         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11385         which got lost in the merge.
11386
11387 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11388
11389         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11390         build.
11391
11392         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11393         
11394         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11395         icalls, since they won't be patched.
11396
11397         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11398         different code sequence when running under valgrind to prevent some valgrind
11399         errors.
11400
11401         * iltests.il.in: Add new regression test.
11402
11403         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11404         end with a throw.
11405
11406         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11407         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11408
11409         * iltests.il.in: Add new test.
11410
11411         * aot-compiler.c: Fix some warnings.
11412
11413         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11414         Fixes #412494.
11415
11416 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11417
11418         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11419         (mini_usage_jitdeveloper): Add a missing --wapi option.
11420
11421 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11422
11423         * mini-codegen.c: Simplify the is_fp macros.
11424         (free_up_ireg): Remove, use free_up_reg instead.
11425         (free_up_reg): Fix the fp case.
11426
11427 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11428
11429         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11430         lowered earlier.
11431
11432         * exceptions-x86.c: Merge some changes which seemed to have got lost
11433         in the linear-ir merge.
11434
11435         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11436
11437         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11438         long vreg volatile even if the variable was already created.
11439
11440         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11441         volatile variables.
11442
11443 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11444
11445         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11446
11447         * mini.c (mono_jit_compile_method_inner): Add support for 
11448         MONO_EXCEPTION_BAD_IMAGE.
11449
11450         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11451         mini_method_get_context () returns NULL. Fixes #356531.
11452
11453         * mini.c (mono_method_to_ir): Ditto.
11454         
11455         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11456         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11457
11458 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11459
11460         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11461         in the LDFTN implementation.
11462
11463 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11464
11465         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11466         code, patch calls to icalls, too, even if they're not in the
11467         shared generic code hash.  Fixes #411962.
11468
11469 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11470
11471         * cpu-x86.md: Increase the length of the fcall opcodes.
11472
11473         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11474         calls returning floats.
11475
11476         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11477         on NEWARR.
11478         
11479         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11480         missed earlier.
11481
11482         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11483         into the domain->method_code_hash.
11484
11485         * aot-compiler.c: Fix win32 build.
11486
11487         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11488         
11489         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11490         gshared NEWARR implementation.
11491
11492         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11493
11494         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11495         can be used outside of method_to_ir.
11496
11497         * mini.h (MonoCompile): Add arg_types field.
11498
11499         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11500         
11501         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11502         the values of the local arg_array and param_types array.
11503
11504 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11505
11506         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11507         got accesses might only get generated later when NEWOBJ is decomposed.
11508         
11509         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11510         looking up the native code of the target method when a delegate is called
11511         for the first time.
11512
11513         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11514         optimization.
11515
11516         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11517
11518         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11519         AOT work on platforms without a working dlsym implementation.
11520
11521         * mini.h: Bump AOT image format version.
11522         
11523 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11524
11525         * mini-exceptions.c: Free a MonoType with
11526         mono_metadata_free_type() instead of g_free().
11527
11528         * aot-runtime.c: Free a MonoType.
11529
11530 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11531
11532         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11533         optimization.
11534
11535         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11536         fp stack on x86.
11537
11538 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11539         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11540         profiler hook.
11541
11542 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11543
11544         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11545         NEWOBJ calls on valuetypes.
11546
11547         * iltests.il.in: Add new test.
11548
11549         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11550
11551 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11552
11553         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11554         is no longer needed.
11555
11556         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11557         non register sized integer arguments.
11558         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11559         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11560         emit_memcpy2 ().
11561
11562         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11563         CEE_MONO_RETOBJ.
11564         
11565         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11566         two a binop with different sized arguments is emitted.
11567
11568         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11569         instruction in the ins==NULL case.
11570
11571 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11572
11573         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11574
11575         * mini-x86.c: Fix osx build.
11576
11577         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11578         opcodes as well.
11579
11580         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11581         instruction for non int sized variables.
11582
11583         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11584         implementation.
11585
11586 2008-07-23  Robert Jordan  <robertj@gmx.net>
11587
11588         * method-to-ir.c: Fix MSVC build.
11589
11590 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11591
11592         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11593         a non int sized type, widen it to an int since newer versions of gcc seem to
11594         generate code which needs this.
11595
11596         * ssa2.c abcremoval2.c: Fix warnings.
11597
11598         * *: Merge the Linear IR branch.
11599
11600         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11601         the ChangeLog file there describes all the changes done over the years. 
11602         Further documentation can be found at www.mono-project.com/Linear_IL.
11603
11604 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11605
11606         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11607           The float param registers and other param registers must be the 
11608           same index on Windows x64.
11609
11610         Contributed under MIT/X11 license.
11611
11612 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11613
11614         * mini.c: Make the previous fix GC safe.
11615
11616 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11617
11618         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11619
11620 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11621
11622         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11623           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11624           ArgValuetypeAddrInIReg instead.
11625
11626         Contributed under MIT/X11 license.
11627
11628 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11629
11630         * mini-codegen.c (get_register_spilling): Fix a warning.
11631
11632 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11633
11634         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11635         for types which the initialization fails. Raises the provided exception
11636         at the right stop after cleanup.
11637
11638 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11639
11640         * aot-compiler.c: Free most of the memory allocated during compilation.
11641
11642         * mini.c (mini_parse_debug_options): Fix a leak.
11643         
11644         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11645         during aot compilation.
11646
11647 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11648
11649         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11650         it has too much register pressure.
11651
11652 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11653
11654         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11655
11656 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11657
11658         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11659         on x86.
11660
11661         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11662         on amd64 similar to the way it is done on arm.
11663
11664         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11665
11666         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11667         consistency, normalize error messages, avoid loading aot-only modules in
11668         normal mode.
11669
11670         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11671         for consistency.
11672
11673         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11674
11675 2008-07-11  Martin Baulig  <martin@ximian.com>
11676
11677         * debug-debugger.h
11678         (MonoDebuggerInfo): Add `interruption_request'.
11679
11680 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11681
11682         * aot-compiler.c (emit_plt): Remove some dead code.
11683
11684         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11685
11686         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11687         return the plt info offset belonging to a given plt entry.
11688
11689         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11690         mono_aot_get_plt_info_offset.
11691         
11692         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11693         similar to the amd64 code by makeing jumps through a separate jump table 
11694         instead of embedding the jump addresses into the code.
11695
11696 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11697
11698         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11699         method.
11700
11701 2008-07-10  Martin Baulig  <martin@ximian.com>
11702
11703         * mini.c (mini_method_compile): Disable generics sharing when
11704         running in the debugger.
11705
11706 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11707
11708         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11709
11710         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11711         the local register allocator from running out of registers on x86 when 
11712         using aot.
11713
11714 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11715
11716         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11717         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11718         C4146.
11719
11720         Contributed under MIT/X11 license.
11721
11722 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11723
11724         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11725         speed up the assembler.
11726
11727 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11728
11729         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11730         support.
11731
11732         * mini.c: Move the soft float handling macros a bit earlier, add 
11733         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11734         place.
11735
11736         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11737
11738         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11739         read-only to help catch code allocation requests.
11740         
11741         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11742         and turn it off when using --aot-only or when compiling with --aot=full.
11743
11744         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11745         jump table for switches from the normal domain mempool, not the code
11746         manager.
11747
11748         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11749         unbox trampoline which handles aot-only mode too.
11750
11751         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11752         an AOTed unbox trampoline.
11753
11754         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11755
11756 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11757
11758         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11759         ""
11760
11761         Contributed under MIT/X11 license.
11762
11763 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11764
11765         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11766           the unwind information for the method at the end of the allocated block.
11767           
11768         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11769           MonoCompileArch to hold the unwind info for SEH on Winx64
11770         
11771         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11772           frame pointer info for the method being compiled.
11773           
11774         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11775           the call to mono_exception_from_token.
11776           
11777         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11778           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11779           information is stored a the end of the method block because it is all 32-bit offset based.
11780
11781         Contributed under MIT/X11 license.
11782
11783 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11784
11785         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11786
11787         * wapihandles.c: Fix warnings.
11788
11789         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11790         mode.
11791
11792         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11793         mono_jit_compile_method in aot-only mode since that calls the type 
11794         initializer.
11795         
11796         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11797         get_delegate_invoke_impl in aot-only mode.
11798
11799         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11800
11801 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11802
11803         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11804
11805         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11806         is on by default.
11807
11808         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11809
11810         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11811         init trampoline from the AOT file as well.
11812
11813         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11814         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11815         code.
11816
11817         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11818         mono_init.
11819
11820         * exceptions-amd64.c: Add _full variants for the remaining exception code
11821         creation functions as well, allow emission of relocatable code, remove
11822         caching since that is now done by the caller.
11823
11824         * mini-exceptions.c: Add _full variants for the remaining exception code
11825         creation functions as well, add aot-only support.
11826
11827         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11828         if we can determine a proper token for them.
11829         (add_wrappers): Add a few more wrappers.
11830         (emit_method_code): Remove some dead code.
11831         (emit_trampolines): Emit exception code too.
11832
11833         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11834
11835         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11836         mono_array_new_va which avoids varargs.
11837
11838         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11839
11840         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11841         mono_arch_create_specific_trampoline () in all places.
11842
11843         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11844         a bit so it can be used for other things as well.
11845         
11846         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11847         on demand as well.
11848
11849         * exceptions-amd64.c: Rename the caching from the exception code creation
11850         functions, it is done by the caller instead.
11851         
11852         * exceptions-amd64.c: Change the signature of the exception code creation 
11853         functions to allow the creation of relocatable code later.
11854
11855         * mini-exceptions.c: Add a set of functions to query the various 
11856         runtime-generated exception functions.
11857
11858         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11859         mono_arch_.. () functions.
11860         
11861 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11862
11863         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11864
11865         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11866
11867         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11868         (mini_get_vtable_trampoline): Ditto.
11869
11870         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11871         code in the AOT case by returning the code size and a list of relocations to
11872         the caller.
11873
11874         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11875
11876 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11877
11878         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11879           clean the stack.
11880
11881         Contributed under MIT/X11 license.
11882
11883 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11884
11885         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11886         so the buffer size can be computed correctly. Fixes #404735.
11887
11888         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11889         normally as cfg->debug_info is already freed.
11890
11891 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11892
11893         * mini-amd64.c: For calls returning vtypes in registers, don't store
11894         the return address on the stack, instead allocate a separate local for
11895         it. Fixes #404729.
11896
11897 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11898
11899         * mini-trampolines.c, mini.h: Add an argument to
11900         mono_create_jit_trampoline_in_domain() for turning off the adding
11901         of the sync wrapper.
11902
11903         * mini.c: Use the JIT trampoline without sync instead of
11904         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11905         be patched.
11906
11907 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11908
11909         * driver.c: Turn on GSHARED optimization by default.
11910
11911 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11912
11913         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11914         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11915
11916         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11917         create a variant of the generic trampoline code callable from AOTed trampolines.
11918
11919         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11920         trampoline code callable from AOTed trampolines.
11921
11922         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11923
11924 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11925
11926         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11927         pass-through manner.
11928
11929         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11930         and don't fail sharing for them anymore.
11931
11932         * mini-exceptions.c: Handle exceptions in shared generic methods.
11933
11934         * generic-sharing.c: When checking the context of a generic
11935         method, also check its class's context.  Don't treat wrappers as
11936         sharable.
11937
11938         * mini-trampolines.c: Some code factored out to
11939         metadata/generic-sharing.c.  Handle the MRGCTX case.
11940
11941         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11942         we must deal with the method being of another instantiation of the
11943         class.  Add static rgctx invoke wrappers to generic methods.
11944
11945 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11946
11947         * mini.c: Provide all jit infos of generic shared methods with a
11948         generic jit info.
11949
11950         * mini-exceptions.c: Handle the new situation that a generic info
11951         might be available, but not info about the this/vtable/mrgctx
11952         variable.
11953
11954 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11955
11956         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11957         generic methods.
11958
11959 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11960
11961         * dominators.c (check_dominance_frontier): Fix a warning.
11962
11963         * mini.h: Add some missing prototypes.
11964
11965         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11966
11967         * driver.c (mono_jit_init_version): Correct the comments since the first
11968         argument should be the name of the root domain, not a filename.
11969
11970         * aot-runtime.c (make_writable): Error out if this is called while running
11971         with --aot-only.
11972         (load_aot_module): Ditto.
11973
11974         * aot-compiler.c: Really fix the computation of method indexes.
11975
11976         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11977         optimizations as this is no longer called frequently.
11978
11979         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11980         method and the invoke impl code and pass it to the delegate trampoline instead of
11981         just the delegate class.
11982
11983 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11984
11985         * aot-compiler.c: Fixup the computation of method indexes.
11986         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11987         the method builder infrastructure.
11988
11989         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11990         has no header.
11991
11992         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11993         mode, load the method right away instead of creating a trampoline.
11994
11995         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11996
11997         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11998         some checks a bit.
11999
12000 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
12001
12002         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
12003         (mono_aot_load_method): Use method_index instead of method->token.
12004
12005         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
12006         can handle icalls etc. properly.
12007
12008         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12009
12010         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
12011
12012         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
12013         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
12014         JIT_ICALL_ADDR patch type.
12015
12016         * patch-info.h: Add JIT_ICALL_ADDR patch type.
12017
12018         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
12019         request flag.
12020         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
12021
12022         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12023
12024 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12025
12026         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12027         domain->jit_code_hash.
12028
12029 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12030
12031         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12032
12033 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12034
12035         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12036         get_this_arg_from_call, let it compute it when needed.
12037
12038         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12039         gsctx from code only when needed.
12040
12041         * mini-trampolines.c (get_generic_context): Rename this to 
12042         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12043         it can be called by the arch backends.
12044
12045         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12046
12047 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12048
12049         * driver.c (mono_main): Add experimental --aot-only command line option.
12050
12051         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12052         set.
12053
12054 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12055
12056         * driver.c (DllMain): Remove mono_module_handle.
12057
12058         Contributed under MIT/X11 license.
12059
12060 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12061
12062         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12063         for emitting methods which are not in the source assembly. Detect and report
12064         failure of assembling+linking.
12065         
12066         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12067
12068         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12069
12070 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12071
12072         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12073
12074 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12075
12076         * mini.h: Remove some obsolete prototypes.
12077
12078         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12079
12080 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12081
12082         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12083         supported by Visual Studio, so use alloca().
12084
12085 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12086
12087         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12088         Fixes #402585.
12089
12090 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12091
12092         * mini.c: Fail sharing of a generic method if it contains an open
12093         catch clause (because we don't pass MRGCTXs yet).
12094
12095 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12096
12097         * mini.c: When compiling a method with generic sharing, insert the
12098         method instantiated with an all-Object generic context into the
12099         jit info table, instead of the context of the first instantiation
12100         of the method we happen to compile.
12101
12102 2008-06-18  Martin Baulig  <martin@ximian.com>
12103
12104         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12105         `major_version' and `minor_version'.
12106
12107 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12108
12109         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12110         mono_method_is_generic_sharable_impl() takes an additional
12111         argument specifying whether to treat type variables as reference
12112         types.
12113
12114 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12115
12116         * mini.h: Removed obsolete prototypes.
12117
12118 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12119
12120         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12121         already handle them.
12122
12123 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12124
12125         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12126         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12127         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12128         tramp-x86.c: Added a MonoGenericContext* argument to
12129         mono_arch_get_unbox_trampoline() so that it can call other
12130         functions which require it.
12131
12132 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12133
12134         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12135         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12136         mono_arch_get_this_arg_from_call() takes a
12137         MonoGenericSharingContext* as well.
12138
12139 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12140
12141         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12142         implement generic sharing of unbox.
12143
12144 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12145
12146         * mini.c: Don't compute the vtable to determine whether a field is
12147         special static, because it might not work for open types.
12148
12149 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12150
12151         * mini.c: Removed the unused token_type and token_source arguments
12152         from get_runtime_generic_context_ptr().
12153
12154 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12155
12156         * mini.c (ADD_BINOP): fix the build
12157
12158 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12159
12160         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12161         a widening op.
12162
12163 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12164
12165         * mini.h: Removed class relations enum that's not used anymore.
12166
12167 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12168
12169         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12170
12171         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12172         the lazy fetch trampoline access code.
12173
12174 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12175
12176         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12177
12178 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12179
12180         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12181
12182         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12183
12184         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12185
12186 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12187
12188         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12189         intrinsics.
12190
12191         * mini-ops.h: Add MIN/MAX_UN opcodes.
12192
12193         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12194         intrinsics.
12195
12196         * basic-math.cs: Add more min/max tests.
12197
12198         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12199
12200 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12201
12202         * mini.c: Small fix in the prologue of emit_castclass.
12203
12204 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12207
12208         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12209         do not work even for unsigned types. Fixes #400014.
12210
12211         * basic-math.cs: Add regression tests for unsigned Min/Max.
12212
12213 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12214
12215         * mini.c: Added additional context_used argument to several
12216         functions, which will be needed for sharing generic methods.  Use
12217         GET_RGCTX macro wherever appropriate.  Declare only one
12218         context_used in mono_method_to_ir().
12219
12220 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12221
12222         * mini.c, generic-sharing.c: Removed generic class relations.
12223
12224         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12225         functions due to MRGCTX changes.
12226
12227 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12228
12229         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12230         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12231         with calculated IMT.
12232
12233         * mini.c: Generic sharing of calls via generic interfaces.
12234
12235         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12236         generic method with non-constant MonoGenericContext*.  Instead,
12237         the context is taken out of the method itself.
12238
12239 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12240
12241         * mini.c: Generic sharing of ldvirtftn.
12242
12243 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12244
12245         * mini.c: Generic sharing of ldftn.
12246
12247 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12248
12249         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12250
12251 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12252
12253         * mini.c: Generic sharing of the special case of ldtoken followed
12254         by a call to GetTypeFromHandle.
12255
12256 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12257
12258         * mini.c: Generic sharing of box for nullable types.
12259
12260 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12263         are passed on the stack. Fixes #324807.
12264
12265 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12266
12267         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12268         for the ArgValuetypeAddrInIReg case.
12269
12270         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12271         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12272
12273         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12274         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12275         local variable and pass the local variable by reference to the called method.
12276           
12277         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12278         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12279
12280         Contributed under MIT/X11 license.
12281
12282 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12283
12284         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12285
12286         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12287         everything.
12288
12289 2008-06-10  Martin Baulig  <martin@ximian.com>
12290
12291         * debug-mini.c
12292         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12293
12294 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12295
12296         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12297         possible error when no arguments are passed.
12298
12299         Contributed under MIT/X11 license.
12300
12301 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12302
12303         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12304         where the file name is NULL.
12305
12306 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12307
12308         * mini.c: Fix s390 build.
12309
12310 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12311
12312         * trace.c (mono_trace_parse_options): Fix warnings.
12313
12314         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12315
12316 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12317
12318         * mini.c (remove_block_if_useless): Avoid printing the method name.
12319         
12320         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12321         MONO_INST_NEW.
12322
12323         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12324         LMF. Not yet used.
12325
12326         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12327         translated code after it has been patched.
12328
12329 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12330
12331         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12332         avoid problems during code patching on SMP systems.
12333         (emit_call): Avoid adding a patch info which is already added by 
12334         emit_call_body.
12335         (mono_arch_emit_exceptions): Ditto.
12336
12337 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12338
12339         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12340         MONO_TYPE_ISSTRUCT already checks for it.
12341
12342 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12343
12344         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12345           structs with floats on Winx64 the float registers are not used.  
12346           The integer registers are always used..
12347         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12348           only one register will be used and only if the size of the struct 
12349           is 1,2,4, or 8 bytes.
12350
12351         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12352           to work for Winx64.
12353
12354         Contributed under MIT/X11 license.
12355
12356 2008-06-05  Martin Baulig  <martin@ximian.com>
12357
12358         * debug-debugger.c (debugger_lookup_class): Also call
12359         mono_class_setup_methods() here; we're only called from RTI.
12360
12361 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12362
12363         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12364         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12365         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12366         Post-process object files and add dtrace-generated object, if necessary.
12367
12368         Contributed under MIT/X11 license.
12369
12370 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12371
12372         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12373         element class.
12374
12375         * mini.c: Generic sharing for unbox.any and castclass.
12376
12377 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12378
12379         * mini.c: Ignore tailcall prefix in shared generic code and when
12380         doing calls which require a vtable/rgctx argument.
12381
12382 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12383
12384         * mini.c: Don't free the JIT info.
12385
12386         * driver.c: Changes in the JIT info table testing code.
12387
12388 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12389
12390         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12391         interruption. Fix some warnings.
12392
12393         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12394         interruption_checkpoint.
12395
12396 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12397
12398         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12399         from embedding applications.
12400
12401 2008-06-02  William Holmes  <billholmes54@gmail.com>
12402
12403         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12404           reserving 32 bytes on the stack when making calls. 
12405
12406         Contributed under MIT/X11 license.
12407
12408 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12409
12410         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12411         the linear IL branch.
12412
12413         * driver.c: Print out more information for --version on arm.
12414
12415 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12416
12417         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12418         bb_exit instead, since out of line bblocks might not actually be emitted
12419         out-of-line.
12420         
12421         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12422         maximum epilog size for out of line bblocks if tracing is enabled.
12423
12424         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12425
12426 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12427
12428         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12429
12430 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12431
12432         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12433         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12434         opcodes.
12435
12436 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12437
12438         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12439         the 'value' to store is a constant.
12440
12441         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12442
12443         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12444         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12445
12446 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12447
12448         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12449         for accessing method->generic_container.
12450
12451 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12452
12453         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12454         
12455         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12456
12457         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12458
12459         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12460         fails.
12461
12462 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12463
12464         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12465
12466         * mini.c: Handle the case when mono_class_vtable () fails.
12467
12468 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12469         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12470         the stat profiler.
12471
12472 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12473
12474         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12475         together with domain sharing.
12476
12477 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12478
12479         * mini.c: Treat callvirts to final methods like non-virtual calls
12480         when doing generic sharing, i.e. look them up in the runtime
12481         generic context.
12482
12483 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12484
12485         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12486         with computed types (for generic sharing).
12487
12488         * mini.c: Generic sharing for mkrefany and refanyval.
12489
12490 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12491
12492         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12493         possible.
12494
12495         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12496         the generic sharing code.
12497         
12498         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12499         when needed.
12500
12501 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12502
12503         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12504
12505 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12506
12507         * driver.c: updated copyright date
12508
12509 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12510
12511         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12512         needed.
12513
12514 2008-05-19  Martin Baulig  <martin@ximian.com>
12515
12516         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12517         pointing to the new `_mono_debug_using_mono_debugger' variable.
12518
12519         * driver.c
12520         (mono_main): Check mono_debug_using_mono_debugger() rather than
12521         the `MONO_INSIDE_MDB' environment variable to check whether we're
12522         inside the debugger.
12523
12524 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12525
12526         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12527         argument.
12528
12529 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12530
12531         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12532
12533         * mini.c: Added mini_assembly_can_skip_verification. This
12534         function checks if the assembly requested to skip verification. 
12535         Fixes part of #387274.
12536
12537 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12538
12539         * mini.c (mini_get_method): Disable the check for open generic classes when
12540         using generic sharing.
12541
12542         * generics.cs: Add a test for #387034.
12543
12544         * mini.c (mini_get_method): Check whenever the method class is an open generic
12545         type, and return NULL in that case, causing a verification error. Fixes
12546         #384123.
12547
12548 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12549
12550         * driver.c (mono_main): Revert r102623. The right
12551         thing to do is to enable the verifier under verifiable
12552         unless a --security flag was passed.
12553
12554         We need this non-trivial behavior for --verify-all otherwise
12555         mcs-compileall won't be able to use it. As it needs everything to
12556         be verified under validil.
12557
12558 2008-05-06  Martin Baulig  <martin@ximian.com>
12559
12560         Fix #383749.
12561
12562         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12563         (mono_debugger_thread_cleanup): Likewise.
12564         (mono_debugger_extended_notification): Likewise.
12565
12566 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12567
12568         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12569         against both inflated and non-inflated methods. We need to check against the
12570         generic definition for cases where the instantiated method is not visible.
12571         We need to check against the inflated types for cases where the instantiation
12572         changes any super type. This fixes #382986.
12573
12574         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12575         that check for visibiliy as generic params only appears as the type subject
12576         of tokens on call opcodes. Field manipulation and ldftn must always
12577         target an exact type.
12578
12579 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12580
12581         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12582         if no related --security flag is passed.
12583
12584 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12585
12586         * mini-arch.h: Prepare support for ppc64.
12587
12588         Contributed under MIT/X11 license.
12589
12590 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12591
12592         * aot-runtime.c: Prepare support for ppc64.
12593
12594         Contributed under MIT/X11 license.
12595
12596 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12597
12598         * mini-ops.h: Prepare support for ppc64.
12599
12600         Contributed under MIT/X11 license.
12601
12602 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12603
12604         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12605
12606         Contributed under MIT/X11 license.
12607
12608 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12609
12610         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12611         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12612         assemblies on windows.
12613
12614 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12615
12616         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12617         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12618         * main.c: Use UTF-8 encoded command line instead of Windows default code
12619         page on Windows to support Unicode.
12620         * driver.c (DllMain): New function for mixed-mode assembly support.
12621         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12622         export __stdcall functions without decoration.
12623
12624         Contributed under MIT/X11 license.
12625
12626 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12627
12628         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12629         saving it very early.
12630
12631 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12632
12633         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12634         deleted.  The only way to access the new RGCTX is via the
12635         trampline.
12636
12637         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12638         vtable instead of the RGCTX to static methods.
12639
12640         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12641         accessing the new RGCTX.
12642
12643         * generic-sharing.c: There is no separation between self, type
12644         arguments and other types in the RGCTX anymore.
12645
12646 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12647
12648         * mini-amd64.c (add_general): Remove previous stack adjustment.
12649         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12650         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12651         for 32 bytes of stack space reserved for all calls.
12652         
12653         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12654         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12655         adjustment.
12656         
12657         Code contributed under MIT/X11 license.
12658
12659 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12660
12661         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12662         against the root definition, peeling out method and type instantiations.
12663         Cache verify success results, code that fails verification is still
12664         checked multiple times.
12665
12666 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12667
12668         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12669
12670 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12671
12672         * mini-amd64.c (add_general): Always increment stack on Win64.
12673         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12674         on Win64.
12675         
12676         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12677         stack based argument handling on Win64.
12678         
12679         Code contributed under MIT/X11 license.
12680
12681 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12682
12683         * Makefile.am (version.h): Add support for git-svn.
12684
12685 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12686
12687         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12688         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12689         avoiding allocations and libc functions which might deadlock.
12690         
12691         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12692         'no-gdb-backtrace' option is set.
12693
12694         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12695
12696         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12697
12698 2008-04-21  Martin Baulig  <martin@ximian.com>
12699
12700         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12701         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12702
12703 2008-04-21  Martin Baulig  <martin@ximian.com>
12704
12705         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12706         `thread_vtable', `event_handler_ptr' and `event_handler'.
12707
12708 2008-04-21  Martin Baulig  <martin@ximian.com>
12709
12710         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12711         allows delayed initialization of the `executable_code_buffer' when
12712         attaching.
12713
12714 2008-04-21  Martin Baulig  <martin@ximian.com>
12715
12716         * mini.h (mono_debugger_create_notification_function): Removed.
12717         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12718
12719         * mdb-debug-info64.s
12720         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12721
12722         * mdb-debug-info32.s
12723         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12724
12725         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12726         currently only works on x86 and x86_64, so don't create it on ppc.
12727
12728 2008-04-21  Martin Baulig  <martin@ximian.com>
12729
12730         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12731
12732         * mini.c
12733         (mini_method_compile): In the fp elimination check, check
12734         `debug_options.mdb_optimizations' in addition to
12735         mono_debug_using_mono_debugger().       
12736
12737         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12738         disable some JIT optimizations which are only disabled when
12739         running inside the debugger.
12740         Added `--help-debug' option to describe the debugging options.
12741         (parse_debug_options): New static function to parse the `--debug'
12742         options, so we can easily add more stuff in future.
12743
12744 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12745
12746         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12747         the method has no body.
12748
12749 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12750
12751         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12752         assembly is not allowed in MSVC 64-bit compiler. 
12753         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12754         as we get floating point exceptions everywhere.
12755         
12756         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12757         correctly align arguments for call to throw_exception.
12758         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12759         
12760         Code contributed under MIT/X11 license.
12761
12762 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12763
12764         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12765
12766 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12767
12768         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12769
12770         * mini-amd64.c (NEW_INS): Set cil_code.
12771
12772         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12773         from mini-amd64.c so all debugger related logic is in one place.
12774
12775         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12776         later won't have a random ip assigned to them.
12777
12778 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12779
12780         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12781         the arch specific function initializes code_size.
12782         (mono_create_delegate_trampoline): Ditto.
12783
12784         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12785         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12786         platforms.
12787
12788         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12789         running under the debugger.
12790
12791         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12792         debugger.
12793
12794         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12795         debugger. Also move the disabling of optimizations here from driver.c.
12796         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12797         debugger.
12798
12799         * mini.h (MonoCompile): Add a few new flags.
12800
12801 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12804         so the cil_code field of created MonoInst's is properly set.
12805         (mini_select_instructions): Ditto.
12806
12807         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12808         (MONO_INST_NEW_CALL): Ditto.
12809
12810         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12811         in many places so the ins->cil_code field is properly initialized.
12812
12813         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12814         place.
12815
12816 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12817
12818         * mini.c (mini_method_compile): Print a different message when compiling a 
12819         shared method.
12820         
12821         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12822         > 1.
12823
12824 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12825
12826         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12827         SSE2 instructions.
12828
12829         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12830         
12831 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12832
12833         * mini.c (handle_stack_args): Make this return void since its return value was
12834         never used. Also set cfg->unverifiable for invalid IL instead of calling
12835         G_BREAKPOINT ().
12836
12837 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12838
12839         * mini.c: Make sure "this" is live in catch clauses with type
12840         variables in shared generic code.
12841
12842 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12843
12844         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12845         generic_class_is_reference_type() to ensure the proper behaviour
12846         when sharing generic code and the type in question is a type
12847         argument.
12848
12849 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12850
12851         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12852         race conditions when printing thread dumps. Fixes #377738.
12853
12854 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12855         
12856         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12857         shows up when both MonoInst arguments can cause aliasig.
12858         There is likely no way in the current JIT to trigger this problem, but
12859         it showed up in the development of generics sharing, when in a new
12860         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12861         When the generics sharing code will be committed, its tests will be
12862         valid also for this bug.
12863
12864 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12865
12866         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12867         PATCH_INFO_METHOD.
12868
12869         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12870         NULL.
12871
12872 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12873
12874         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12875         use a more detailed exception message for InvalidCastException.
12876
12877         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12878
12879         * driver.c (mono_main): Add --debug=casts option to turn on better 
12880         InvalidCastException message details.
12881
12882         * mini.c (mini_get_debug_options): New helper function to return the address of
12883         the debug_options variable.
12884
12885         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12886         the jit_tls TLS variable.
12887
12888         * mini.c (mono_jit_tls): New TLS variable.
12889
12890         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12891         option is used.
12892
12893 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12894
12895         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12896
12897         * mini.c: Removed verifer related stuff, code moved to verify.c.
12898
12899         * driver.c: Using code from verify.c instead of mini.c.
12900
12901 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12902
12903         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12904         longer valid.
12905
12906 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12907
12908         * mini.c (check_for_method_verify): Enabling verification of
12909         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12910         have been fixed.
12911
12912 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12913
12914         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12915         caller saved registers as well.
12916         
12917         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12918         saved registers as well.
12919
12920 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12921
12922         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12923
12924         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12925         code.
12926
12927 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12928
12929         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12930         to get_call_info.
12931         (get_call_info): Take a gsctx argument instead of 'cfg'.
12932
12933 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12934
12935         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12936         mono_verify_all is set.
12937
12938         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12939
12940         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12941
12942 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12943
12944         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12945         an exception.
12946
12947         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12948         verifier and the code generated by the compiler.
12949
12950 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12951
12952         * mini.c: Generic sharing of the non-nullable case of the box
12953         instruction.
12954
12955 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12956
12957         * inssel.brg: Fix the build.
12958
12959         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12960
12961 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12962
12963         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12964         Array:Address. Fixes #372410.
12965
12966         * iltests.il.in: New tests for readonly prefix.
12967
12968 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12969
12970         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12971         mini-trampolines.c.
12972
12973         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12974         mini-exceptions.c.
12975
12976         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12977         
12978         * mini.c (mono_decompose_op_imm): New helper function.
12979
12980         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12981         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12982         return value.
12983
12984         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12985         mono_arch_output_basic_block. Fix warnings.
12986
12987         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12988         for now.
12989
12990 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12991
12992         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12993         since the extra frame is now detected automatically inside the loop.
12994
12995         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12996         opts which are now in mono_peephole_ins ().
12997         
12998         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12999
13000         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
13001         frames and skip duplicate managed-to-native frames. Fixes #367665.
13002
13003         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13004         opts which are now in mono_peephole_ins ().
13005         (mono_arch_peephole_pass_2): Ditto.
13006
13007         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
13008
13009         * mini-codegen.c (mono_peephole_ins): New helper function containing the
13010         arch independent peephole optimizations.
13011
13012         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13013         opts which are now in mono_peephole_ins ().
13014
13015         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
13016         
13017         * mini-s390.c (mono_arch_output_basic_block): Fix build.
13018
13019         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
13020         pattern.
13021
13022         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13023         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13024         opcode. 
13025
13026 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13027
13028         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13029         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13030         return value.
13031
13032         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13033         mono_arch_output_basic_block. Fix warnings.
13034
13035 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13036
13037         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13038         conv.ovf.u.un.
13039
13040 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13041
13042         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13043         conv.ovf.u.un.
13044
13045         * iltests.il: Add new tests.
13046
13047 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13048
13049         * mini.c: Removed Windows version macros.
13050
13051 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13052
13053         * generic-sharing.c: Put reflection types in the extensible part
13054         of the runtime generic context.
13055
13056         * mini.c: Generic sharing of the GetTypeHandle special case of the
13057         ldtoken instruction.
13058
13059 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13060
13061         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13062
13063         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13064         
13065         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13066         consistency with the other version on the linear IR branch.
13067
13068         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13069
13070         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13071
13072         * iltests.il.in: Add new tests.
13073
13074 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13075
13076         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13077
13078         * iltests.il.in: Add new tests.
13079
13080 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13081
13082         * mini.c: Two variables with the same name were declared in
13083         nesting contexts and one wasn't initialized.  Fixed.
13084
13085 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13086
13087         * mini.c: Generic sharing of the initobj instruction.
13088
13089 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13090
13091         * mini.c: make the test to optimize ldtoken from typeof() more
13092         precise.
13093
13094 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13095
13096         * mini.c: Generic sharing of the initobj instruction for reference
13097         types.
13098
13099 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13100
13101         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13102         the mono_breakpoint_clean_code() code to perform bound checks.
13103
13104 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13105
13106         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13107         mono_arch_patch_callsite() to include the start of the managed method
13108         to be able to perform bound checks.
13109
13110 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13111
13112         * mini.c: Generic sharing for the isinst instruction.
13113
13114 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13115
13116         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13117         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13118         with the runtime generic context argument.
13119
13120         * mini.c: Share calls to several types of unsharable methods by
13121         putting the address of the method code in the runtime generic
13122         context and doing an indirect call.
13123
13124         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13125         to switches.
13126
13127 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13128
13129         * generic-sharing.c: Change due to a change in the runtime genric
13130         context API.
13131
13132 2008-03-15  Martin Baulig  <martin@ximian.com>
13133
13134         * tramp-x86.c
13135         (mono_arch_nullify_class_init_trampoline): Add call to
13136         mono_breakpoint_clean_code() to make things work when running
13137         inside the debugger.
13138
13139         * tramp-amd64.c
13140         (mono_arch_nullify_class_init_trampoline): Add call to
13141         mono_breakpoint_clean_code() to make things work when running
13142         inside the debugger.
13143
13144 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13145
13146         * inssel-long.brg (reg): Fix 64 bit build.
13147
13148 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13149
13150         * mini.c, mini.h: Share static generic code by passing it an
13151         implicit argument pointing to the runtime generic context.
13152
13153         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13154         inssel-long32-mips.brg: New opcodes for calling shared static,
13155         which need to be passed the runtime generic context.
13156
13157         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13158         argument on the stack in the prologue if needed.  New function for
13159         finding the runtime generic context argument from the registers
13160         saved by the trampoline.
13161
13162         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13163         runtime generic context argument.
13164
13165         * tramp-amd64.c: Also restore the register used for the runtime
13166         generic context argument.
13167
13168         * mini-trampoline.c: Resolve shared static calls by consulting the
13169         runtime generic context via the new argument.
13170
13171         * generic-sharing.c: Add an argument to sharability-checking
13172         functions that specifies whether type variables should be treated
13173         as sharable type arguments.
13174
13175         * inssel-x86.brg: Removed a superfluous, buggy rule.
13176
13177         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13178         to switches.
13179
13180 2008-03-14  Martin Baulig  <martin@ximian.com>
13181
13182         * debug-debugger.c (main_thread_handler): Call
13183         mono_runtime_run_main() without sending any notifications.
13184
13185         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13186
13187 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13188
13189         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13190
13191 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13192
13193         * tramp-x86.c: Fixed register restore offsets in the trampoline
13194         code for ECX and EDX.
13195
13196 2008-03-12  Geoff Norton  <gnorton@novell.com>
13197
13198         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13199         different ucontext_t implementations.
13200         * exceptions-arm.c: Use the above defines to get exceptions working on 
13201         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13202         * mini-arm.c: Implement iPhone icache support (based on a patch by
13203         Luke Howard lukeh@padl.com)
13204
13205 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13206
13207         * mini.c: Enable generic sharing of calls to non-static
13208         non-interface non-generic non-value-type methods.
13209
13210         * mini-trampolines.c: Resolve calls from shared generic code.
13211
13212 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13213
13214         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13215
13216         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13217
13218 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13219
13220         * mini.c: some fixes for the AOT compiler.
13221
13222 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13223
13224         * cpu-amd64.md: Add clob:1 to some float opcodes.
13225
13226 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13227
13228         * mini.h: Added MiniVerifierMode enumeration.
13229
13230         * mini.c: Added mini_verifier_set_mode to control
13231         the usage of the new verifier.
13232
13233         * mini.c (mono_method): Integrated the new verifier.
13234
13235         * driver.c: Extended --security option with validil and
13236         verifiable options to activate the new verifier.
13237
13238 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13239
13240         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13241         optimization to ctors taking 0 or 2 arguments too.
13242
13243         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13244         a bit.
13245
13246         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13247
13248         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13249
13250 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13251
13252         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13253         non-aot case as well.
13254
13255         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13256
13257         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13258         changes.
13259
13260         * aot-compiler.c (encode_patch): Ditto.
13261
13262         * mini.h (G_MININT32): Fix the definition of this.
13263
13264 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13265
13266         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13267
13268         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13269
13270 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13271
13272         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13273         methods returning vtypes in registers.
13274         (mono_arch_allocate_vars): Ditto.
13275
13276         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13277
13278         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13279
13280         * generics.cs: Add a test from the linear IR branch.
13281
13282         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13283
13284         * mini.c (inline_method): Cache failed inline attempts.
13285
13286 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13287
13288         * mini.c: For shared methods of generic classes put the location
13289         of "this" into the MonoGenericJitInfo.
13290
13291         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13292         register out of a MonoContext by register number.  Add the generic
13293         sharing context as an argument to mono_arch_find_this_argument().
13294
13295         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13296         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13297         for new arch function.
13298
13299         * mini-exception.c: Handle open exception clauses in shared
13300         generic code.
13301
13302         * mini-trampolines.c: Supply additional argument to
13303         mono_arch_find_this_argument().
13304
13305 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13306
13307         * Makefile.am (regtests): Run the bench.exe tests last.
13308
13309 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13310
13311         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13312         a bit.
13313
13314 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13315
13316         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13317         with MS.
13318
13319         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13320         
13321         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13322
13323         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13324         whose class has no cctor.
13325
13326         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13327
13328 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13329
13330         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13331         unverified.
13332
13333 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13334
13335         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13336         to be in sync with the code on the linear IR branch.
13337
13338         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13339
13340         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13341
13342 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13343
13344         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13345
13346         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13347
13348         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13349
13350         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13351
13352         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13353         
13354         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13355         body.
13356
13357 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13358
13359         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13360         OP_LOADR4_MEMBASE emission.
13361
13362         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13363         (mono_spillvar_offset_float): Ditto.
13364
13365         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13366
13367         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13368         emission.
13369
13370         * basic-long.cs: Add regression tests for them.
13371
13372         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13373         use.
13374         (mono_arch_allocate_vars): Fix representation of single-precision float
13375         argument.
13376         (mono_arch_output_basic_block): Ditto.
13377
13378         * inssel-mips.brg: Ditto, remove duplicate items.
13379
13380         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13381         arguments of tail calls as on other platforms.
13382         (mono_arch_output_basic_block): Handle tail calls.
13383
13384         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13385         register.
13386
13387         * objects.cs (test_5_pass_static_struct): Add test for it.
13388
13389         Contributed under MIT/X11 license.
13390
13391 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13392
13393         * Makefile.am: Use gmcs for compiling the regression tests.
13394
13395         * *.2.cs *.2.il: Rename to *.cs and *.il.
13396
13397 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13398
13399         * regalloc.h: Make the vassign array smaller.
13400
13401         * mini.c (mini_method_compile): Remove an unused field in cfg.
13402
13403         * mini-codegen.c: Add a bunch of micro optimizations.
13404
13405 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13406
13407         * regalloc.h: Remove some unused fields.
13408
13409 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13410
13411         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13412
13413         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13414
13415 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13416
13417         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13418
13419         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13420         trampoline: Fetch an entry from the runtime generic context.  If
13421         it's NULL, jump to the actual trampoline to fill the runtime
13422         generic context.  Otherwise, return it.
13423
13424         * mini.c: Call the lazy fetch trampoline to get entries out of the
13425         runtime generic context.
13426
13427         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13428         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13429         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13430
13431 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13432
13433         * mini.c: Fetch data out of the extensible part of the runtime
13434         generic context instead of calling a helper function.
13435
13436         * generic-sharing.c: Some functions moved into
13437         metadata/generic-sharing.c.  Helper function for fetching other
13438         types now checks and asserts against extensible rgctx (just for
13439         debugging purposes - the helper function isn't called anymore
13440         unless for debugging).
13441
13442 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13443
13444         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13445         for tail calls up to the point that the tests in iltests.exe run. Also add a
13446         dummy CKFINITE implementation.
13447         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13448         needed for trampoline LMF frames.
13449
13450         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13451         trampoline LMF frames.
13452
13453 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13454
13455         * mini.c (inline_method): clean any pending loader error when inlining fail.
13456         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13457
13458 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13459
13460         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13461
13462         * aot-runtime.c (decode_patch_info): Ditto.
13463
13464         * mini.c (mono_resolve_patch_target): Ditto.
13465         
13466         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13467         icall wrappers.
13468
13469         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13470         
13471         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13472         if it references an icall address.
13473
13474 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13475
13476         * cpu-s390x.md: Remove some more unused opcodes.
13477         
13478         * cpu-s390x.md: Remove some unused opcodes.
13479
13480         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13481         mono_op_imm_to_op ().
13482
13483         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13484         instead of a switch statement.
13485         
13486         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13487         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13488
13489         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13490         
13491         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13492
13493         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13494         -1.
13495
13496 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13497
13498         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13499         opened. Fixes #362607.
13500
13501         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13502
13503         * iltests.il.in: Add a test for static methods in interfaces.
13504
13505 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13506
13507         * genmdesc.c (build_table): Fix a crash on older glib versions.
13508
13509         * cpu-sparc.md: Remove some unused opcodes.
13510         
13511         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13512         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13513
13514         * cpu-amd64.md: Remove some unused opcodes.
13515
13516         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13517         like the other opcodes.
13518
13519 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13520
13521         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13522
13523         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13524
13525         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13526         variables 'cfg' instead of 'm' for consistency.
13527
13528         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13529
13530         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13531         argument holding the vtype return address, to avoid the ambigious use of
13532         cfg->ret for this purpose.
13533
13534         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13535
13536         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13537         
13538         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13539         new mono_print_ins () function which only takes one argument.
13540
13541 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13542
13543         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13544         macro arguments.
13545
13546 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13547
13548         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13549
13550         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13551
13552         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13553         opcodes and other small changes.
13554
13555         * mini-ops.h: Add some new opcodes from the linear IR branch.
13556
13557         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13558
13559         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13560         opcodes, use the REG_MEMBASE opcodes instead.
13561         
13562         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13563         opcodes, use the REG_MEMBASE opcodes instead.
13564         
13565         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13566         linear IR branch.
13567
13568         * mini.c (mono_op_imm_to_op): New helper function.
13569
13570         * mini-ops.h: Add some opcodes from linear IR branch.
13571
13572 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13573
13574         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13575         <tsv@solvo.ru>.
13576
13577 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13578
13579         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13580         OP_ICONV_TO_R4/R8.
13581
13582         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13583
13584 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * aot-compiler.c (emit_method_code): Add an assert.
13587
13588         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13589         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13590         methods.
13591
13592 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13593
13594         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13595         some load/store opcodes so they are consistent. 
13596         (mono_arch_emit_prolog): Simplify some code.
13597
13598         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13599
13600         * objects.cs: Add tests for large argument offsets on ARM.
13601
13602         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13603         stack offsets. Fixes #359651.
13604
13605         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13606
13607         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13608
13609         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13610
13611         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13612
13613         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13614
13615         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13616         rid of CEE_CONV_R_UN.
13617
13618         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13619
13620 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13621
13622         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13623
13624         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13625
13626         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13627
13628         * cpu-amd64.md: Remove some unused opcodes.
13629
13630         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13631
13632         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13633
13634         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13635         arch specific functions for its parts. Call the peephole pass after local
13636         regalloc so the prolog can compute a more accurate max_offset.
13637         
13638         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13639         the corresponding OP_I/OP_L opcodes.
13640
13641         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13642
13643         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13644
13645 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13646
13647         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13648         as they are handled in mini.c.
13649
13650         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13651         
13652         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13653         case since it is handled in mini.c.
13654
13655         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13656
13657         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13658
13659         * *.c: Use the new opcodes in the IR and back end code.
13660
13661         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13662
13663         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13664
13665 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13666
13667         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13668         an assert because it has a race condition.
13669
13670 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13671
13672         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13673
13674         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13675
13676         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13677
13678         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13679         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13680
13681 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * cpu-amd64.md (move): Correct the maximum size of move.
13684
13685 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13686
13687         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13688         the generic class init trampoline to return quickly if the class
13689         is already inited.
13690
13691 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13692
13693         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13694         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13695
13696 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13697
13698         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13699         branch.
13700
13701 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13702
13703         * objects.cs: Add some soft-float tests.
13704
13705         * mini.c: Fix a couple more soft-float issues.
13706
13707         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13708
13709         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13710         avoid a REX prefix.
13711
13712 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13713
13714         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13715         exception happens while compiling a virtual method.
13716
13717 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13718
13719         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13720         
13721         * mini-sparc.c: Fix build.
13722
13723         * mini-sparc.c (get_call_info): Add support for generic sharing.
13724
13725         * mini-exceptions.c: Add a FIXME.
13726
13727 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13728
13729         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13730         altstack handling code.
13731
13732         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13733         
13734         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13735
13736         * mini-s390.c: Add support for generic sharing.
13737
13738         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13739         Fix CAS on s390.
13740         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13741
13742         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13743
13744         * mini-s390x.c: Add support for generic sharing.
13745         
13746         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13747         Fix CAS on ia64.
13748         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13749
13750         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13751         can be used since it takes a 16 bit signed immediate.
13752
13753         * inssel-s390x.brg: Fix OP_SETRET.
13754
13755         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13756
13757         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13758
13759         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13760
13761         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13762
13763         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13764         in one place.
13765
13766         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13767         stuff.
13768
13769         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13770         of the unused mono_arch_patch_delegate_trampoline stuff.
13771
13772 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13773
13774         * basic-long.cs: Move the fp related tests to basic-float.cs.
13775
13776         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13777
13778         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13779
13780         * basic-calls.cs: Add a test for proper float argument passing.
13781
13782         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13783         if the context corresponds to an exception received through a signal.
13784
13785         * exceptions.cs: Add a test for nullref handling at the start of a try
13786         clause.
13787
13788         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13789
13790         * jit-icalls.c (mono_break): New JIT icall.
13791
13792         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13793
13794         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13795
13796 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13797
13798         * cpu-*.md: Get rid of unused opcodes.
13799
13800         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13801
13802         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13803         by all platforms.
13804
13805         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13806         define.
13807
13808         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13809         the arch independent trampoline code in mini-trampolines.c.
13810
13811         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13812
13813         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13814
13815         * mini-s390.h: Remove an unused define.
13816         
13817         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13818         the arch independent trampoline code in mini-trampolines.c.
13819
13820         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13821
13822 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13823
13824         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13825
13826         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13827
13828         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13829
13830         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13831
13832         * cpu-amd64.md: Use smaller sizes for int opcodes.
13833
13834         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13835
13836         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13837         objects.cs.
13838
13839         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13840         debugging.
13841
13842         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13843         instead of though a pointer to save an indirection when accessing elements of
13844         the array.
13845
13846         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13847         some typos.
13848         (NOT_IMPLEMENTED): New helper macro.
13849         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13850         of a bb.
13851
13852         * *.c: Use the new helper macro.
13853
13854 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13855
13856         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13857
13858 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13859
13860         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13861         stack slots.
13862
13863 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13864
13865         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13866         profiling is enabled.
13867         
13868         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13869         the end.
13870         (mono_arch_emit_prolog): Add more first bblock optimizations.
13871
13872         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13873         in order if possible.
13874         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13875         bblock, since the arguments are still in their original registers.
13876
13877         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13878
13879 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13880
13881         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13882         as well.
13883
13884         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13885         offset 0.
13886
13887         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13888
13889         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13890         process async exceptions received while in unmanaged code.
13891
13892         * mini.c (mini_init): Install a callback with the runtime which will be called
13893         when a thread receives an async exception while in unmanaged code.
13894
13895         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13896
13897         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13898
13899 2008-01-16  Wade Berrier  <wberrier@novell.com>
13900
13901         * cpu-g4.md:
13902         * cpu-arm.md:
13903         * cpu-s390x.md:
13904         fix build
13905
13906 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13907
13908         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13909         compilation with sun cc.
13910
13911         * cpu-*.md: Fix the build.
13912
13913         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13914
13915         * mini-amd64.h: Add some comments to the MonoLMF structure.
13916
13917         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13918         
13919         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13920         in the LMF structure if possible. This saves two instructions in the
13921         managed->native wrappers.
13922
13923         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13924
13925 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13926
13927         * generic-sharing.c: New type argument lookup code which uses the
13928         runtime generic context template.
13929
13930 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13931
13932         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13933
13934         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13935         (mono_arch_output_basic_block): Fix localloc implementation.
13936
13937         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13938
13939         * mini-ia64.c (peephole_pass): Fix ia64 build.
13940
13941         * mini-amd64.c (peephole_pass): Fix a warning.
13942         
13943         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13944         at a constant offset from sp/fp.
13945
13946         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13947         instead of obtaining it from *lmf in the managed method case.
13948
13949 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13950
13951         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13952
13953 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13954
13955         * mini.h (MonoInstList): New type.
13956         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13957         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13958         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13959         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13960         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13961         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13962         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13963         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13964         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13965         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13966         MONO_INST_LIST_FOR_EACH_ENTRY,
13967         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13968         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13969         mono_inst_list_first, mono_inst_list_last,
13970         mono_inst_list_next, mono_inst_list_prev): New instruction
13971         list handling interfaces.
13972         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13973         list head 'ins_list'.
13974         (MonoInst): Replace next pointer with list head 'node'.
13975         (MonoCallInst): Make 'out_args' a MonoInstList.
13976         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13977         (MonoCompile): Delete reverse_inst_list and
13978         reverse_inst_list_len.
13979         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13980         mono_arch_lowering_pass, mono_arch_local_regalloc,
13981         mono_arch_output_basic_block, mono_arch_emit_prolog):
13982         Convert to new instruction lists.
13983         (insert_after_ins): Delete.
13984         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13985         instruction lists.
13986         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13987         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13988         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13989         mono_emulate_opcode, mono_emit_load_got_addr,
13990         inline_method, mono_method_to_ir, mono_print_bb_code,
13991         print_dfn, decompose_pass, nullify_basic_block,
13992         replace_out_block_in_code, remove_block_if_useless,
13993         merge_basic_blocks, move_basic_block_to_end,
13994         try_unsigned_compare, optimize_branches, mono_print_code,
13995         mini_select_instructions, remove_critical_edges): Likewise.
13996         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13997         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13998         mono_arch_output_basic_block, mono_arch_emit_prolog):
13999         Likewise.
14000         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
14001         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14002         mono_arch_output_basic_block): Likewise.
14003         (inst_list_prepend, insert_after_ins): Delete.
14004         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
14005         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
14006         instruction lists.
14007         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
14008         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
14009         mono_arch_emit_prolog): Likewise.
14010         * cfold.c (mono_constant_fold): Likewise.
14011         * liveness.c (visit_bb, mono_analyze_liveness,
14012         optimize_initlocals): Likewise.
14013         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
14014         * graph.c (mono_draw_code_cfg): Likewise.
14015         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
14016         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
14017         mono_ssa_cprop): Likewise.
14018         * abcremoval (get_relations_from_previous_bb, process_block):
14019         Likewise.
14020         * local-propagation (mono_cprop_invalidate_values,
14021         mono_local_cprop_bb): Likewise.
14022         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14023         peephole_pass, mono_arch_output_basic_block,
14024         mono_arch_emit_prolog): Likewise.
14025         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14026         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14027         mono_arch_emit_prolog): Likewise.
14028         (insert_after_ins): Delete.
14029         * aliasing.c (print_code_with_aliasing_information,
14030         mono_build_aliasing_information, mono_aliasing_deadce):
14031         Convert to new instruction lists.
14032         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14033         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14034         mono_arch_local_regalloc, mono_arch_output_basic_block):
14035         Likewise.
14036         (insert_after_ins): Delete.
14037         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14038         peephole_pass, mono_arch_output_basic_block): Convert to
14039         new instruction lists.
14040         * mini-codegen (InstList, inst_list_prepend,
14041         insert_after_ins): Delete.
14042         (insert_before_ins, get_register_force_spilling,
14043         get_register_spilling, free_up_ireg, free_up_reg,
14044         create_copy_ins, create_spilled_store, alloc_int_reg,
14045         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14046         to new instruction lists.
14047         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14048         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14049         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14050         (insert_after_ins): Delete.
14051         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14052         mono_arch_local_regalloc, mono_arch_output_basic_block,
14053         mono_arch_call_opcode): Convert to new instruction lists.
14054         (insert_after_ins): Delete.
14055         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14056         peephole_pass, mono_arch_output_basic_block,
14057         mono_arch_emit_prolog): Convert to new instruction lists.
14058
14059 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14060
14061         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14062
14063         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14064         Fixes #353182.
14065
14066         * Makefile.am (version.h): Make this work with non-bash shells.
14067
14068 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14069
14070         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14071
14072 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14073
14074         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14075         the InitializeArray optimization.
14076
14077 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14078
14079         * mini.c driver.c: Don't include os/gc_wrapper.h.
14080
14081 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14082
14083         * mini.c (print_jit_stats): Print GC statistics if available.
14084
14085 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14086
14087         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14088
14089 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14090
14091         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14092
14093 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14094
14095         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14096         
14097         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14098
14099         * driver.c (mono_main): Ditto.
14100
14101 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14102
14103         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14104
14105         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14106         in the vtable can't be encoded.
14107         (compile_method): Ditto.
14108
14109 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14110
14111         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14112         defined.
14113
14114         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14115         lmf->rbp.
14116
14117         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14118         the top LMF entry belongs to the current method.
14119
14120         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14121
14122 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14123
14124         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14125         
14126         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14127
14128         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14129
14130         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14131
14132         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14133
14134         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14135         implementation.
14136
14137         * basic-float.cs: Add an ulong->double cast test.
14138
14139 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14140
14141         * mini.c (mono_method_to_ir): Fix a warning.
14142
14143 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14144
14145         * mini-ops.h: Add OP_SWITCH.
14146
14147         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14148         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14149
14150 2007-12-11  Geoff Norton  <gnorton@novell.com>
14151
14152         * mini-s390x.c: Minor change to the MAX() define to allow
14153         it to compile with other gcc versions.
14154
14155 2007-12-11  Geoff Norton  <gnorton@novell.com>
14156
14157         * cpu-s390x.md:
14158         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14159
14160 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14161
14162         exceptions-arm.c (mono_arch_get_restore_context): Restore
14163         the frame pointer.
14164
14165         exceptions-arm.c (throw_exception): Save the frame pointer.
14166         This is a partial fix for #323747. Only the client side is
14167         fixed.
14168
14169 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14170
14171         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14172         was using an unrelated variable to log the class which
14173         needed the cctor to be called. This was crashing on arm.
14174
14175 2007-12-09  Robert Jordan  <robertj@gmx.net>
14176
14177         * mini-x86.c (mono_arch_emit_epilog):
14178         Consider all kinds of 64-bit types. Fixes #323114.
14179
14180 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14181
14182         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14183
14184 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14185
14186         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14187
14188 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14189
14190         * mini.c: run type ctor before allocating an object, not only
14191         when running it's constructor method (fixes at least part of bug #342507).
14192
14193 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14194         
14195         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14196         
14197         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14198         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14199         function.
14200
14201         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14202         mono_generic_class_init_trampoline () the same as it is done with the other
14203         trampolines.
14204
14205         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14206         aot-runtime.c aot-compiler.c: Implement AOT support.    
14207
14208 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14209
14210         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14211         build for archs which don't have the vtable trampoline defined
14212         yet.
14213
14214 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14215
14216         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14217
14218         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14219
14220         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14221
14222         * tramp-<ARCH>.c: Use the new helper function.
14223
14224 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14225
14226         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14227         trampoline call, which takes a vtable argument.
14228
14229         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14230         OP_TRAMPCALL_VTABLEs like other calls.
14231
14232         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14233         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14234         call.  Implemented a support function which fetches the vtable
14235         from a register set.
14236
14237         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14238         Implemented a generic class init trampoline, using the
14239         OP_TRAMPCALL_VTABLE opcode.
14240
14241         * mini.c: Implemented static field access when sharing generic
14242         code.  This implies initing the class using the new
14243         OP_TRAMPCALL_VTABLE call.
14244
14245 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14246
14247         * mini.c: Don't compile methods with sharing enabled if their
14248         classes are disabled for sharing.
14249
14250 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14251
14252         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14253         opcodes. Fixes #346563.
14254
14255         * objects.cs: Add a new test.
14256
14257         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14258
14259         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14260         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14261
14262 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14263
14264         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14265
14266 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14267
14268         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14269         code stream.
14270
14271 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14272
14273         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14274
14275         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14276         optimization in the AOT case.
14277         
14278 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14279
14280         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14281         
14282         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14283
14284         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14285
14286         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14287
14288         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14289         is created by the inlined delegate ctor.
14290
14291         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14292
14293         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14294
14295 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14296
14297         * cpu-x86.md: Fix the length of ckfinite.
14298
14299 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14300
14301         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14302         
14303         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14304         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14305
14306         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14307
14308         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14309         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14310
14311 2007-11-28  Martin Baulig  <martin@ximian.com>
14312
14313         * mini-x86.c
14314         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14315         after creating the trampoline.
14316
14317 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14318
14319         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14320
14321         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14322         the same version.
14323
14324         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14325         instead of the calling method to help AOT.
14326
14327         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14328
14329 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14330
14331         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14332         is defined.
14333
14334 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14335
14336         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14337         
14338         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14339         (encode_method_ref): No need to handle generic method definitions specially.
14340
14341         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14342
14343         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14344         decode_klass_info.
14345
14346         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14347         encode_klass_info.
14348         (compile_method): Enable generic sharing.
14349
14350 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14351
14352         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14353         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14354
14355         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14356         generic code.
14357
14358         * mini-trampolines.c: Fix a warning.
14359
14360         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14361         NEW_PCONST.
14362         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14363         (generic_class_is_reference_type): Remove unused function.
14364
14365         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14366         in the generic vtable trampoline case.
14367
14368         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14369         
14370         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14371         return an AOT method based on a vtable slot.
14372
14373         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14374
14375         * mini.c (mini_get_vtable_trampoline): Export this.
14376
14377 2007-11-22  Martin Baulig  <martin@ximian.com>
14378
14379         * debug-debugger.h
14380         (MonoDebuggerInfo): Move `debugger_version' up.
14381
14382 2007-11-22  Martin Baulig  <martin@ximian.com>
14383
14384         * mini-amd64.c
14385         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14386
14387         * mini-trampolines.c
14388         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14389         after compiling the method.
14390
14391 2007-11-20  Martin Baulig  <martin@ximian.com>
14392
14393         * debug-mini.c
14394         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14395         (mono_debugger_remove_breakpoint): Likewise.
14396         (mono_debugger_check_breakpoints): Likewise.
14397
14398         * debug-debugger.c: Implement the new breakpoint interface here.
14399
14400 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14401
14402         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14403         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14404
14405         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14406
14407 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14408
14409         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14410
14411         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14412         mini.c.
14413
14414         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14415         mini.c.
14416
14417         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14418         returning a vtype in a register.
14419
14420         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14421         here from the arch specific code.
14422
14423         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14424         mini.c.
14425
14426         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14427         (mono_arch_emit_prolog): Increment maximum prolog size.
14428
14429         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14430         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14431
14432         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14433         MonoGenericSharingContext.
14434
14435         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14436         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14437
14438 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14439
14440         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14441         which extract fields out of the runtime generic context.  Full
14442         sharing of the NEWARR opcode.
14443
14444 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14445
14446         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14447         --enable-minimal=ssa.
14448
14449 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14450
14451         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14452         mono_marshal_get_delegate_invoke () signature change.
14453
14454 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14455
14456         * mini.c: Removed the shared context in favor of the generic
14457         sharing context.  Allocate the MonoJitInfo structure with room for
14458         the generic sharing context if it's needed.
14459
14460         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14461         domain-internals.h now.
14462
14463         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14464
14465         * generic-sharing.c: Several changes for working without a shared
14466         context and instead operating on open types instead.
14467
14468 2007-11-12  David S. Miller  <davem@davemloft.net>
14469
14470        * inssel-sparc.brg: Fix double instruction emit.
14471
14472 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14473
14474         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14475         Get/Set/Address methods.
14476         
14477         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14478         mono_marshal_get_delegate_invoke signature change.
14479
14480 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14481
14482         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14483         This can happens with dynamic methods. Fixes the other bug in #322722.
14484
14485 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14486
14487         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14488         BX call sequence.
14489
14490         * mini-arm.c (arm_patch): Implement patching of BX call
14491         sequence. Fixes one of the bugs in #322722.
14492
14493 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14494
14495        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14496        under Linux.  We only need to flush every 32-byte cache line.    
14497
14498 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14499
14500         * mini.c:
14501         move_basic_block_to_end: Add branches when needed, eventually creating
14502         a new BB.
14503         optimize_branches: added a parameter that tells if it's ok to create
14504         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14505         and avoid calling move_basic_block_to_end when it's not ok.
14506         Fixes bug 318677.
14507
14508 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14509
14510         * mini.c: Abort inlining call to InitializeArray if something
14511         looks wrong.  Let the icall handle it, which now has proper safety
14512         checks.
14513
14514 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14515
14516         * mini.c (mono_spill_call): add support for soft-float.
14517
14518         * mini.c (mono_method_to_ir): add support for soft-float
14519         to inlined functions that return float.
14520
14521         * mini.c (mono_method_to_ir): add support for soft-float
14522         to cee_stsfld opcode on float fields.
14523
14524 2007-11-05  Geoff Norton  <gnorton@novell.com>
14525
14526         * mini-x86.h: Fix the structure access for X86 Leopard.
14527
14528
14529 2007-11-05  Martin Baulig  <martin@ximian.com>
14530
14531         * mini-trampolines.c
14532         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14533         after compiling the method to notify the debugger.
14534
14535 2007-11-05  Martin Baulig  <martin@ximian.com>
14536
14537         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14538
14539 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14540
14541         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14542         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14543
14544 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14545
14546         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14547         native-to-managed wrappers.
14548         
14549 2007-11-01  Geoff Norton  <gnorton@novell.com>
14550
14551         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14552         members.
14553
14554 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14555
14556         * mini.c, mini-x86.c: when getting back from unmanaged code
14557         to managed via a marshaled delegate we also need to set the
14558         right domain.
14559
14560 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14561
14562         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14563         for amd64.
14564
14565 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14566
14567         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14568         let the debugger or other external agents to tell the JIT when
14569         a sw breakpoint has been inserted in the code that the JIT needs
14570         to be able to inspect.
14571
14572 2007-10-31  Martin Baulig  <martin@ximian.com>
14573
14574         * debug-debugger.h
14575         (MonoDebuggerInfo): Remove `runtime_class_init'.
14576
14577 2007-10-30  Martin Baulig  <martin@ximian.com>
14578
14579         * debug-mini.h
14580         (mono_debugger_thread_created): Added `MonoThread *' argument.
14581         (mono_debugger_extended_notification): New public method.
14582         (mono_debugger_trampoline_compiled): New public method.
14583
14584         * debug-mini.c
14585         (MonoDebuggerThreadInfo): Added `thread' and
14586         `extended_notifications' fields.
14587
14588         * debug-debugger.c
14589         (debugger_executable_code_buffer): New static variable.
14590
14591         * debug-debugger.h
14592         (MonoDebuggerInfo): Added `executable_code_buffer',
14593         `executable_code_buffer_size', `breakpoint_info_area',
14594         `breakpoint_table' and `breakpoint_table_size'.
14595
14596 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14597
14598         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14599         that IP  either is an unused value or the vtable pointer. IMT 
14600         calls use vtable + offset now. Reduced by almost half the size
14601         of IMT entries.
14602
14603 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14604
14605         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14606         defines to access param registers. Replace long usage with
14607         gsize as sizeof(long) != sizeof(void*) on Win64.
14608
14609         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14610         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14611         instead of non-existant _GetAddressOfReturnAddress.
14612
14613         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14614         param registers. Save/restore %rdi and %rsi in MonoLMF.
14615
14616         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14617         param registers. Modify (throw_exception) signature to take 
14618         %rdi and %rsi on Win64. 
14619
14620         Code is contributed under MIT/X11 license.
14621
14622 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14623
14624         * helpers.c: unlink debugging output files.
14625
14626 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14627
14628         * mini.c: Move mono_create_ftnptr () to object.c.
14629
14630 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14631
14632         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14633         optional. This function can now be used to disassemble code generated
14634         outside the JIT such as trampolines and IMT thunks.
14635
14636         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14637
14638         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14639         vtable pointer from a ldr instruction.
14640
14641         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14642         new IMT call sequence.
14643
14644         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14645         call sequence for interface invocations.
14646
14647         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14648         for imt support. This function is empty since IMT on ARM requires no
14649         special handling on the IR side.
14650
14651         * mini-arm.c (mono_arch_find_imt_method): added, required for
14652         imt support.
14653
14654         * mini-arm.c (mono_arch_find_this_argument): added, required
14655         for imt support.
14656
14657         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14658         a ldr instruction to load a value stored in the code stream.
14659
14660         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14661         for imt support.
14662
14663
14664 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14665
14666         * mini.c (mini_init): Install the jump trampoline callback.
14667
14668 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14669
14670         * mini-trampolines.c: handle synchronized methods with the common
14671         vtable trampoline (bug #335601).
14672
14673 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14674
14675         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14676
14677         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14678         64 bit platforms.
14679
14680         * mini-ia64.h mini-ia64.c: Add support for IMT.
14681
14682         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14683         prolog. Fixes #331958.
14684
14685 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14686
14687         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14688
14689 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14690
14691         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14692         trampoline.
14693
14694 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14695
14696         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14697         trampoline.
14698
14699 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14700
14701         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14702         trampoline.
14703
14704 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14705
14706         * mini-trampolines.c: changed the magic rampoline to understand
14707         the common vtable trampoline method: the method to invoke is
14708         determined by the vtable displacement of the call.
14709
14710 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14711
14712         * mini.c, mini.h: register the common vtable trampoline if the
14713         architecture supports it.
14714
14715 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14716
14717         * cpu-amd64.md: use the correct max length for tls_get.
14718
14719 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14720
14721         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14722         CEE_STELEM_ANY. Fixes #333696.
14723
14724 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14725
14726         * exceptions-x86.c: provide more graceful handling of the case where
14727         we followed a bogus function pointer from managed code (bug #332866).
14728
14729 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14730
14731         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14732         replaces the generic_shared flag and will carry more information
14733         in the future.
14734
14735         * generic-sharing.c: Added mini_type_stack_size() which allows
14736         allows open types if given a generic sharing context.
14737         mini_get_basic_type_from_generic() takes a
14738         MonoGenericSharingContext* instead of a MonoCompile* now.
14739
14740         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14741         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14742         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14743         changes above.  Just passing arguments through to the right
14744         places.
14745
14746 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14747
14748         * mini-arm.c: unify the call emission to emit_code_seq().
14749
14750 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14751
14752         * tramp-arm.c: reduced the trampoline size.
14753
14754 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14755
14756         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14757         variable handling out of arch-specific code.
14758
14759 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14760
14761         * mini-arm.c: implemented fast delegate dispatch.
14762
14763 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14764
14765         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14766         that fp elimination is turned off if the space required by locals is too
14767         big. Fixes #331958.
14768
14769 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14770
14771         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14772         ARM to the new style trampoline.
14773
14774 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14775
14776         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14777
14778         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14779
14780 2007-10-09  Martin Baulig  <martin@ximian.com>
14781
14782         * debug-debugger.h
14783         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14784         `field_info_offset_offset'.     
14785
14786 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14787
14788         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14789         removed more internal usage of the r11 register and made it available
14790         to the register allocator.
14791
14792 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14793
14794         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14795         when sharing generics and treat type variables as references.
14796
14797 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14798
14799         * mini-ppc.c: started removing the internal uses of register r11
14800         to eventually allow the register allocator to manage it as an
14801         additional available register.
14802
14803 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14804
14805         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14806
14807 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14808
14809         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14810         specific trampolines as they are not performance critical as a jump
14811         target (maybe align as before only for AOT code?). This saves about
14812         200 KB of native code on x86 for monodevelop startup.
14813
14814 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14815
14816         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14817         monodevelop startup.
14818
14819 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14820
14821         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14822
14823         * mini-sparc.h mini-sparc.c: Implement IMT support.
14824
14825         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14826         its smaller and doesn't clobber sparc_g1.
14827
14828         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14829
14830 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14831
14832         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14833
14834 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14835
14836         * mini-ppc.c: implemented fast delegate invocation.
14837
14838 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14839
14840         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14841
14842 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14843
14844         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14845         code to the new style trampoline in preparation for IMT support.
14846
14847 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14848
14849         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14850         systems already. This also reduces the specific trampiline sizes and
14851         prepares for the use of r12 as the IMT identifier register.
14852
14853 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14854
14855         * mini-mips.h: endianess fix (simplified from a patch by
14856         Thomas Kunze <thommy@tabao.de>, bug #323737).
14857
14858 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14859
14860         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14861         to access ucontext fields and enable netbsd support
14862         (partially from Magnus Henoch <mange@freemail.hu>).
14863
14864 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14865
14866         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14867         use the preprocessor from the CPP env var if it is set.
14868
14869 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14870
14871         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14872         code, before interface_offset gets used.
14873
14874 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14875
14876         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14877         mono_class_setup_vtable () before accessing klass->vtable.
14878
14879 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14880
14881         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14882         hackish.
14883
14884 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14885
14886         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14887         IMT slots (this saves hundreds of KB of memory in programs like
14888         IronPython and Monodevelop).
14889
14890 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14891
14892         * mini.c: print the delegate counter.
14893
14894 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14895
14896         * mini-x86.c: make it easier to enable the debugging code for IMT
14897         slots.
14898
14899 2007-09-28  Martin Baulig  <martin@ximian.com>
14900
14901         * debug-debugger.h
14902         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14903         `mono_method_klass_offset' and `mono_method_token_offset'.
14904
14905 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14906
14907         * mini.c: First generics sharing implementation.  Can only share
14908         in very simple cases.  If sharing doesn't work it falls back to
14909         dedicated compilation.
14910
14911         * mini.h: Flag in MonoCompile to specify whether generic
14912         compilation is shared.  Flags enum for marking which generic inst
14913         of a context is used.  Prototypes for helper functions.
14914
14915         * generic-sharing.c: Helper functions for generic method sharing.
14916
14917         * optflags-def.h: Optimization flag (gshared) for enabling generic
14918         method sharing added.
14919
14920         * Makefile.am: generic-sharing.c added.
14921
14922 2007-09-19 Daniel Nauck <dna@mono-project.de>
14923
14924         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14925
14926 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14927         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14928         fixes bug 325507.
14929
14930 2007-09-19  Martin Baulig  <martin@ximian.com>
14931
14932         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14933         mono_debug_cleanup() is now part of mono_cleanup().
14934
14935 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14936
14937         * driver.c (mono_main): Fix a warning.
14938
14939 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14940
14941         * aot-compiler.c: Optimize various parts when processing large assemblies.
14942         Fixes ##325568.
14943
14944         * mini.c (mono_patch_info_hash): Improve hash function.
14945
14946 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14947
14948         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14949         
14950         Code is contributed under MIT/X11 license.
14951
14952 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14953
14954         * mini.c (mini_init): Fix a leak.
14955
14956         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14957
14958 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14959
14960         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14961
14962 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14963
14964         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14965
14966 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14967
14968         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14969         variance tests.
14970
14971         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14972
14973         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14974
14975         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14976
14977         * aot-runtime.c (decode_patch_info): Ditto.
14978
14979 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14980
14981         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14982         static case. Cache delegates in architecture specific code, 
14983         based on number of parameters.
14984         
14985         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14986         in architecture specific code, based on number of parameters.
14987         
14988         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14989         caching happen in architecture specific code now.
14990         
14991         Code is contributed under MIT/X11 license.
14992
14993 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14994
14995         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14996         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14997         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14998
14999         Code is contributed under MIT/X11 license.
15000
15001 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15002         * mini.c: (mono_thread_abort) Fixed bug #82416.
15003
15004 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15005
15006         * mini.: hook the new managed GC allocation feature into the JIT.
15007
15008 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15009
15010         * mini.c: implementation for the new runtime tls opcode.
15011
15012 2007-09-11  Martin Baulig  <martin@ximian.com>
15013
15014         * debug-debugger.h
15015         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
15016         `mono_method_inflated_offset'.
15017
15018 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
15019
15020         * driver.c mini.h mini.c: Add a new devel command line option for injecting
15021         async exceptions into a method.
15022
15023         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15024         purpose of testing whenever the unwinder works at every instruction.
15025
15026 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15027
15028         * mini.c: check accessibility of method used in ldftn (fixes
15029         bug #82635).
15030
15031 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15032
15033         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15034
15035         * inssel.brg: Fix a warning.
15036
15037 2007-09-03  Martin Baulig  <martin@ximian.com>
15038
15039         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15040         now takes the `main_method' as argument.
15041
15042 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15043
15044         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15045
15046 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15047
15048         * driver.c: include the cil-coff.h header on Windows.
15049         
15050         Code is contributed under MIT/X11 license.
15051
15052 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15053
15054         * mini.c, driver.c: don't include the cil-coff.h header.
15055
15056 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15057
15058         * mini.c: flag places that needs fixes fo soft-float support.
15059
15060 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15061
15062         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15063         endian systems (partially from Dean Jenkins, bug #81924).
15064
15065 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15066
15067         * mini.c (check_linkdemand): Remove embedded reference object in
15068         call to LinkDemandSecurityException.
15069         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15070         with an IntPtr instead of a reference object.
15071
15072 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15073
15074         * mini.c (handle_initobj): Handle alignment properly.
15075
15076         * inssel.brg (mini_emit_memset): Ditto. 
15077
15078         * inssel.brg (mini_emit_memcpy): Ditto. 
15079
15080         * inssel-sparc.brg: Ditto.              
15081
15082         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15083
15084 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15085
15086         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15087         exceptions raised in unmanaged code. Fixes part of #82594.
15088
15089 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15090
15091         * mini.c (mono_method_to_ir), declsec.c
15092         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15093
15094 2007-08-22  Martin Baulig  <martin@ximian.com>
15095
15096         * debug-mini.h
15097         (MonoDebuggerThreadInfo): New typedef.
15098         (mono_debugger_thread_table): New global variable.
15099         (mono_debugger_thread_created): New public function.
15100         (mono_debugger_thread_cleanup): New public function.
15101
15102         * debug-debugger.h
15103         (MonoDebuggerInfo):
15104         - removed `get_current_thread' and `lookup_assembly'.
15105         - removed `data_table'.
15106         - added `thread_table'.
15107
15108         * mini.c
15109         (mono_thread_start_cb): Call mono_debugger_thread_created().
15110         (mono_thread_attach_cb): Likewise.
15111         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15112         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15113         initial domain.
15114
15115         * driver.c (mono_main): Move mono_debug_init() up, before calling
15116         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15117
15118 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15119
15120         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15121         together when passing several arguments of type double (gives a small
15122         speedup and saves a few bytes of generated code).
15123
15124 2007-08-20  Jb Evain  <jbevain@novell.com>
15125
15126         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15127
15128 2007-08-20  Jb Evain  <jbevain@novell.com>
15129
15130         * mini.c (mono_method_to_ir): throw MethodAccessException
15131         and FieldAccessException instead of InvalidProgramException.
15132
15133 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15134
15135         * mini.c: CoreCLR security checks.
15136
15137         * mini.h: Removed MonoSecurityMode (moved to
15138         metadata/security-manager.h) and mono_security_mode global var
15139         (replaced by set/get functions in security-manager.h).
15140
15141         * driver.c: Added "core-clr-test" security mode for testing.  Used
15142         set-function for setting security mode.
15143
15144 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15145
15146         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15147         the new jit_info_table.
15148
15149         * driver.c: Test code for the new jit_info_table (enabled by the
15150         define MONO_JIT_INFO_TABLE_TEST).
15151
15152 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15153
15154         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15155         detection of call <REG> instruction sequence. Fixes build on freebsd.
15156
15157 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15158
15159         * mini-exceptions.c: Fix a warning.
15160
15161 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15162
15163         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15164         stack overflow handling code on amd64 too.
15165
15166         * mini-exceptions.c (mono_setup_altstack): Make this use 
15167         mono_thread_get_stack_bounds ().
15168
15169         * mini-x86.h: Disable sigaltstack on solaris x86.
15170
15171 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15172
15173         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15174
15175 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15176
15177         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15178
15179 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15180
15181         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15182
15183         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15184
15185 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15186
15187         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15188         due to alignment.
15189
15190 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15191
15192         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15193         to be emitted (bug #82281).
15194
15195 2007-08-01  Martin Baulig  <martin@ximian.com>
15196
15197         Merged the `debugger-dublin' branch.
15198
15199         * debug-debugger.h (MonoDebuggerInfo):
15200         Removed the `old_*' compatibility entries.
15201         Added `debugger_version' and `data_table'.
15202         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15203         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15204
15205         * debug-mini.c
15206         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15207         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15208         instead of a `gconstpointer'.
15209         (mono_debugger_insert_method_breakpoint): Return a
15210         `MonoDebugMethodAddressList *'.
15211
15212 2007-06-28  Martin Baulig  <martin@ximian.com>
15213
15214         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15215
15216 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15217
15218         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15219         __builtin_frame_address () since it is broken on older gcc versions.
15220
15221 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15222
15223         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15224         on the stack overflow handling and made the managed stack overflows
15225         catchable in most cases using soft guard pages.
15226         * exceptions-x86.c: added code to restore the protection in the soft
15227         guard pages at the end of exception handling.
15228
15229 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15230
15231         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15232
15233 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15234
15235         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15236         exception handling.
15237
15238 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15239
15240         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15241         signal handling support until it has been ported to the new mechanism.
15242         * mini.c: fixed stack overflow detection and use the new
15243         architecture code  to handle signals on the altstack.
15244
15245 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15246
15247         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15248         stack overflows on the alt stack.
15249
15250 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15251
15252         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15253         stack overflows on the alt stack.
15254
15255 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15256
15257         * exceptions-ppc.c: cleanup preparing for altstack support.
15258
15259 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15260
15261         * exceptions-arm.c: cleanup preparing for altstack support.
15262
15263 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15264
15265         * mini.c (print_jit_stats): Output hazard pointer stats.
15266
15267 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15268
15269         * driver.c, mini.c: Replaced security mode flags with a single
15270         enum variable.
15271
15272 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15273
15274         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15275
15276 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15277
15278         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15279         (which doesn't do anything yet) for activating Core CLR
15280         (Silverlight) security.
15281
15282 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15283
15284         * mini-codegen.c: work around a possible gcc bug on arm.
15285
15286 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15287
15288         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15289         message for platforms that don't support AOT compilation.
15290
15291 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15292
15293         * mini.h, mini.c, driver.c: temporary smcs hack.
15294
15295 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15296
15297         * mini-arm.h, mini-arm.c: arm EABI fixes.
15298
15299 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15300
15301         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15302         case.
15303
15304         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15305         trampolines taking a method argument.
15306
15307         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15308
15309         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15310         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15311
15312         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15313         JIT compilation throws an exception. Fixes #82050.
15314
15315 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15316
15317         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15318         with the MONO_EXCEPTION_ defines.
15319
15320 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15321
15322         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15323         #82117.
15324         
15325         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15326         the cause of an assertion.
15327
15328 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15329
15330         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15331         removed.
15332
15333 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15334
15335         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15336         assert. Should fix #82103.
15337
15338 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15339
15340         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15341         here too. Fixes #82095.
15342
15343         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15344         addresses.
15345
15346         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15347
15348         * mini-amd64.h: Enable IMT for amd64.
15349         
15350         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15351
15352 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15353
15354         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15355
15356 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15357
15358         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15359         as soon as check_linkdemand sets an exception_type.
15360
15361 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15362
15363         * mini-x86.c: fixed offsets for IMT call sequence.
15364         * mini-x86.h: enable IMT again.
15365
15366 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15367
15368         * trace.c (mono_trace_enter_method): Decode MonoType too.
15369
15370         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15371
15372         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15373
15374         * mini-amd64.c: Add preliminary IMT implementation.
15375         
15376 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15377
15378         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15379         understand the new IMT-base interface invocation (thanks to
15380         Daniel Nauck for the report and the remote debugging session).
15381
15382 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15383
15384         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15385
15386 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15387
15388         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15389
15390 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15391
15392         * mini-trampolines.c: implement AOT IMT support.
15393         * mini-x86.h: enable IMT support for wider testing.
15394
15395 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15396
15397         * inssel.brg (emit_imt_argument): Add aot support here.
15398
15399         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15400
15401 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15402
15403         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15404         of the IMT implementation, partially from massi, with my
15405         implementation of the bsearch sequence. Disabled by default until
15406         the AOT code is implemented.
15407
15408 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15409
15410         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15411
15412         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15413
15414 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15415
15416         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15417         arch-independent IMT JIT code from Massimiliano
15418         Mantione (massi@ximian.com) with small cleanups from me.
15419
15420 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15421
15422         * Makefile.am: fix svn invocation to get the svn revision to be
15423         independent of the local language (build fix).
15424
15425 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15426
15427         * mini.c (inline_method): Reset cfg->exception_type if the
15428         inlining is aborted.  Fixes: 82049.
15429
15430 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15431
15432         * mini.c: remove assert from exception handling code when exception_ptr
15433         is not set.
15434
15435 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15436
15437         * mini.c (mono_codegen): Add an assert.
15438
15439         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15440         enter and leave code.
15441         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15442
15443 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15444
15445         * mini-ppc.c: fixed memory corruption for localloc(0)
15446         (bug #81852).
15447
15448 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15449         
15450         * mini.c: Fix warnings.
15451
15452 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15453
15454         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15455         to emit better double->int conversions.
15456
15457 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15458
15459         * mini.c: the provided Min/Max optimizations are valid for unisgned
15460         ints.
15461
15462 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15463
15464         * 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
15465
15466 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15467
15468         * mini.c (mono_running_on_valgrind): Add support for reporting the
15469         method and  its boundaries to valgrind.
15470
15471 2007-06-28  Martin Baulig  <martin@ximian.com>
15472
15473         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15474
15475 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15476
15477         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15478
15479         * generic.2.cs: Add new test case.
15480
15481 2007-06-25  Martin Baulig  <martin@ximian.com>
15482
15483         Merged the `debugger-dublin' branch.
15484
15485         * debug-mini.c
15486         (mono_debugger_insert_method_breakpoint): New public method.
15487         (mono_debugger_remove_method_breakpoint): Likewise.
15488         (mono_debugger_check_breakpoints): New static method.
15489         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15490
15491         * debug-debugger.h (MonoDebuggerInfo):
15492         Renamed (to keep backward compatibility in the vtable):
15493         `insert_breakpoint' -> `old_insert_breakpoint'.
15494         `remove_breakpoint' -> `old_remove_breakpoint'.
15495         `create_string' -> `old_create_string'.
15496         `lookup_class' -> `old_lookup_class'.
15497         `lookup_type' -> removed; changed into a dummy field.
15498         `lookup_assembly' -> `old_lookup_assembly'.
15499         Added (same functionality, but different signature):
15500         `create_string', `lookup_class', `lookup_assembly'
15501         Added new:
15502         `get_method_addr_or_bpt', `remove_method_breakpoint',
15503         `runtime_class_init'.
15504
15505         * debug-debugger.c: Merged the `debugger-dublin' branch.
15506
15507 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15508
15509         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15510         well.
15511         (peephole_pass): Likewise.
15512
15513 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15514
15515         * driver.c: hopefully make setaffinity work also for ancient
15516         versions of linux.
15517
15518 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15519
15520         * driver.c : win32 build fix.
15521
15522 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15523
15524         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15525         processor if it is set.
15526
15527 2007-06-21  Martin Baulig  <martin@ximian.com>
15528
15529         * debug-mini.h: New file.
15530
15531         * debug-mini.c
15532         (mono_debugger_insert_breakpoint_full): Moved here from
15533         ../metadata/mono-debug-debugger.c.
15534         (mono_debugger_remove_breakpoint): Likewise.
15535         (mono_debugger_breakpoint_callback): Likewise.
15536
15537 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15538
15539         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15540         changes in MonoGenericClass.
15541
15542 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15543
15544         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15545
15546 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15547
15548         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15549         removal of MonoGenericMethod.
15550
15551 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15552
15553         * mini-exceptions.c: hooks for the exception events profiling API.
15554
15555 2007-06-14  Randolph Chung  <tausq@debian.org>
15556
15557         * Makefile.ma: Add hppa target.
15558         * mini-arch.h: Include mini-hppa.h
15559         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15560         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15561         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15562
15563 2007-06-14  Randolph Chung  <tausq@debian.org>
15564
15565         * inssel.brg: Add rules for "chained" compare-branch operations so that
15566         a single compare op can affect multiple branches.  Adjust cost for
15567         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15568         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15569         cost for some rules so that they can more easily be overridden by
15570         per-arch rules (with fixes from lupus).
15571         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15572
15573 2007-06-13  Randolph Chung  <tausq@debian.org>
15574
15575         * mini-ops.h: Reorder branch ops so that they match the order of the
15576         corresponding CEE_* ops.  The code expects them this way.
15577         Add new ops for HPPA target.
15578         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15579
15580 2007-06-13  Randolph Chung  <tausq@debian.org>
15581
15582         * mini-exceptions.c: Handle cases where the stack grows towards
15583         larger addresses.
15584         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15585
15586 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15587
15588         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15589         counter.
15590         * driver.c: explain where a non-matching corlib is found.
15591
15592 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15593
15594         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15595
15596 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15597
15598         * mini-exceptions.c: Generate a method profile leave event during
15599         an exception to ensure that the profiler gets notified.
15600
15601 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15602
15603         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15604         branch.
15605
15606         * cpu-amd64.md: Add long_and/or/xor opcodes.
15607
15608 2007-06-06  Wade Berrier  <wberrier@novell.com>
15609
15610         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15611         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15612         length of instruction shr_imm (expected 8, got 10)
15613
15614 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15615
15616         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15617
15618 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15619
15620         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15621         MonoInternalHashTable again (fixed bug in the internal hash table
15622         code).
15623
15624 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15625
15626         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15627         Have to figure out what makes it crash the SWF regression.
15628
15629 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15630
15631         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15632
15633 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15634
15635         * mini.c: optimize out the type check when storing null in a
15636         reference array.
15637
15638 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15639
15640         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15641         MonoInternalHashTable.
15642
15643 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15644
15645         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15646         signed integer methods.
15647
15648 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15649
15650         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15651         permanently since the current approach doesn't work.
15652
15653 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15654
15655         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15656         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15657
15658 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15659
15660         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15661         the sreg2==rdx case.
15662         
15663         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15664         account if it contains a rex prefix.
15665         (peephole_pass): Handle OP_FMOVE as well.
15666
15667 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15668
15669         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15670         as it causes regressions.
15671
15672 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15673
15674         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15675         static case as well.
15676
15677         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15678
15679         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15680         (mono_arch_get_this_arg_from_call): Ditto.
15681
15682         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15683
15684         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15685         invoke_impl field.
15686
15687         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15688         (mono_arch_get_this_arg_from_call): Ditto.
15689
15690         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15691         
15692         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15693         try to create optimized invoke code and use that for further invocations. 
15694         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15695
15696         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15697
15698 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15699
15700         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15701         sealed classes or methods.
15702         *devirtualization.cs: tests for the new optimization
15703
15704 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15705
15706         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15707         by the update_volatile () function.
15708
15709 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15710
15711         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15712         require it.
15713
15714         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15715
15716 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15717
15718         * mini.c: Add configure checks for header files.
15719         * mini-x86.c: Add configure checks for header files.
15720         * trace.c: Add configure checks for header files.
15721         * aot-runtime.c: Add configure checks for header files.
15722         * aot-compiler.c: Add configure checks for header files.
15723         * driver.c: Add configure checks for header files.
15724         * mini-codegen.c: Add configure checks for header files.
15725         
15726         Code is contributed under MIT/X11 license.
15727
15728 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15729
15730         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15731         icompare_imm -128 + op_iclt. Fixes #81703.
15732
15733 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15734
15735         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15736
15737 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15738
15739         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15740         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15741         so that all isinst checks now use "interface_bitmap".
15742
15743 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15744
15745         * cpu-amd64.md (jmp): Fix a warning.
15746
15747         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15748
15749         * basic.cs: Add new regression test.
15750
15751         * basic.cs: Remove test which is now in basic-long.cs.
15752
15753         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15754
15755         * basic-long.cs: Add new test.
15756         
15757 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15758
15759         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15760
15761 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15762
15763         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15764
15765         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15766         places.
15767         
15768         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15769         throwing code a bit.
15770
15771         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15772         the exception throwing code a bit.
15773
15774         * mini-x86.c (get_call_info): Allocate result from a mempool.
15775
15776 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15777
15778         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15779
15780         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15781
15782         * mini.h (MonoCompile): Add 'token_info_hash' field.
15783
15784         * mini.c: Save token->method associations during compilation so the AOT 
15785         compiler can use it.
15786         
15787         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15788         which reference generic classes and methods.
15789
15790 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15791
15792         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15793
15794         * aot-compiler.c (compile_method): Fix a typo in a comment.
15795
15796         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15797
15798         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15799         everything generic.
15800
15801         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15802
15803 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15804
15805         * mini.h (MonoCompile): Add 'args' field.
15806
15807         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15808         into cfg->args.
15809
15810         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15811
15812 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15813
15814         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15815
15816         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15817
15818         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15819         opcodes for some opcodes.
15820
15821         * mini.h *.brg *.c: Use the new opcodes.
15822
15823 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15824
15825         * mini.h: Bumped aot revision.
15826
15827         * inssel.brg: modified code generation of type checks for interfaces
15828         to use the new "MonoClass.interface_bitmap" instead of the old
15829         "MonoClass.interface_offsets".
15830
15831 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15832
15833         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15834
15835 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15836
15837         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15838         64 bit platforms.
15839
15840 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15841
15842         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15843
15844 2007-04-27  Wade Berrier  <wberrier@novell.com>
15845
15846         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15847         mini.h) to fix build.
15848
15849 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15850
15851         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15852         
15853         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15854         causes the corlib unit tests to fail.
15855
15856 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15857
15858         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15859
15860         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15861
15862         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15863         opcodes to the comparison relations.
15864
15865         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15866         opcodes to their types.
15867         
15868         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15869
15870         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15871         it in cfg->arch.cinfo.
15872
15873         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15874
15875         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15876         cfg->cil_offset_to_bb.
15877
15878 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15879
15880         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15881         created becase of initlocals.
15882
15883 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15884
15885         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15886         Sergey Tikhonov <tsv@solvo.ru>.
15887
15888 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15889
15890         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15891
15892 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15893
15894         * cpu-s390.md (break): Correct the length of break instruction.
15895
15896 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15897
15898         * mini.c: fix a couple of soft-float issues and comments.
15899
15900 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15901
15902         * trace.c (is_filenamechar): - is also a filename char.
15903
15904 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15905
15906         * mini-s390.c: Correct checking for enum type in return value processing.
15907
15908 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15909
15910         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15911         (version.h): Makefile is in the build directory.
15912
15913 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15914
15915         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15916
15917 2007-04-11  Martin Baulig  <martin@ximian.com>
15918
15919         * mini.c (can_access_member): Fix handling of generic classes;
15920         fixes #81259.
15921
15922 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15923
15924         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15925
15926 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15927
15928         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15929
15930 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15931
15932         * mini-codegen.c: make sure the right spill amount is
15933         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15934
15935 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15936
15937         * mini-ppc.c: fixes for the fp_branch_nan test.
15938
15939 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15940
15941         * basic.cs: Comment out new test which still fails on ia64.
15942
15943 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15944
15945         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15946
15947 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15948
15949         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15950
15951 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15952
15953         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15954         on 64 bit machines. Fixes part of #80738.
15955
15956         * basic.cs: Add regression test.
15957
15958 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15959
15960         * inssel.brg basic.cs: Revert previous change to fix build.
15961
15962         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15963         platforms.
15964         
15965         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15966
15967         * basic.cs: Add new regression test.
15968
15969 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15970
15971         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15972         many arguments.
15973
15974 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15975
15976         * cpu-s390x.md: Correct length of break instruction.
15977
15978 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15979
15980         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15981         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15982
15983 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15984
15985         * *.c: Begin WIN64 port.
15986         * mini.c:  Use correct register in profiler.
15987         * mini-amd64.c: No inline assembly on Win64.
15988         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15989         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15990         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15991         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15992         mono_arch_ip_from_context for Win64.
15993         
15994         Contributed under MIT/X11 license.
15995
15996 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15997
15998         * exceptions-amd64.c (seh_handler): Ditto.
15999
16000         * exceptions-x86.c (seh_handler): Fix a memory leak.
16001
16002 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
16003
16004         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
16005         mini-s390x.c: fixed peephole optimizations to deal
16006         correctly with 1 and 2 byte reload avoidance.
16007
16008 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
16009
16010         * cpu-s390.md, cpu-s390x.md: update localloc length.
16011
16012 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16013
16014         * cpu-g4.md: added missing descriptions.
16015
16016 2007-03-14  Miguel de Icaza  <miguel@novell.com>
16017
16018         *  Makefile.am: Add support so the tail tests are not executed on
16019         PowerPC as that is a known limitation of the PowerPC port.
16020
16021 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16022
16023         * runmdesc.bat:  Move to msvc directory.
16024         
16025 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16026
16027         * runmdesc.bat:  Run executable that was produced by the current
16028         target and sent via an argument.
16029         
16030 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16031
16032         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16033         #81102.
16034
16035         * generics.2.cs: Add regression test.
16036
16037 2007-03-09  Wade berrier  <wberrier@novell.com>
16038
16039         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16040
16041 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16042
16043         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16044         AOT code depends on this.
16045
16046 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16047
16048         * mini.c: more precise tracking of types in the eval stack
16049         (part of fix for bug #81044).
16050
16051 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16052
16053         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16054
16055         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16056
16057 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16058
16059         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16060
16061         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16062
16063 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16064
16065         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16066         a pointer on 64 bit systems. Fixes #80190.
16067
16068         * iltests.il: Add new regression test.
16069
16070 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16071
16072         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16073
16074 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16075
16076         * trace.c: Remove an erroneous alignemnt check when tracing.
16077           Fixes --trace on OSX86.
16078
16079 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16080
16081         * mini-$(arch).h: initialize SP in context for all the archs.
16082
16083 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16084
16085         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16086         regressions in the thread tests.
16087
16088 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16089
16090         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16091         - fixed implementation of LOCALLOC opcode
16092         - implemented non-un compare for floats
16093         - code cleanup
16094         - implementation of FDIV and CKFINITE opcodes
16095         - fixes for latest mono updates
16096         - additional arch opcodes
16097
16098 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16099
16100         * Makefile.am: simplify and merge rules for cross-compilation.
16101
16102 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16103
16104         * local-propagation.c: Actually *apply* the fix for bug 80591...
16105
16106 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16107
16108         * mini-exceptions.c: backuot part of the last change
16109         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16110
16111 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16112         * inssel.brg: Fix bug 59286.
16113
16114
16115 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16116
16117         * mini-exceptions.c: patch from Zoltan to correctly check for
16118         stack boundaries (using the stack register, not the frame register),
16119         fixes bugs #80724, #79717.
16120
16121 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16122
16123         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16124         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16125
16126         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16127         presence of frame pointer elimination.
16128
16129 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16130         
16131         * mini-x86.h: NetBSD UCONTEX_REG defines.
16132
16133 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16134
16135         * inssel-amd64.brg: Fix amd64 build.
16136
16137 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16138
16139         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16140         on amd64.
16141
16142 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16143
16144         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16145         ends.
16146
16147         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16148
16149 2007-01-30 Mark Mason <mason@broadcom.com>
16150
16151            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16152            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16153            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16154            beginning support for CEE_JMP [not quite working yet]
16155            * tramp-mips.c: LMF handling now works
16156         
16157 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16158
16159         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16160
16161         * mini.h (NULLIFY_INS): New macro.
16162
16163 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16164
16165         * mini.c: statistical profiler fix for windows, patch
16166         from Tor Lillqvist (tml@novell.com).
16167
16168 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16169         * local-propagation.c: Fix bug 80591.
16170
16171 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16172
16173         * Makefile.am: put back the --export-dynamic option as with
16174         the previous gmodule flags (thanks to Robert Jordan).
16175
16176 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16177
16178         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16179
16180         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16181         simplify and speed up the local register allocator. Also rename some fields
16182         like iassign->vassign.
16183         
16184         * regalloc.c: Remove some functions which are no longer used since their
16185         inlined version is in mini-codegen.c.
16186         
16187         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16188
16189         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16190
16191 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16192
16193         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16194         narrowing. Fixes #80622.
16195
16196         * iltests.il: Add new regresssion test. 
16197
16198 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16199
16200         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16201         debug-debugger.c, debug-debugger.h: warning fixes.
16202         * driver.c: updated copyright year and made it fit in one line.
16203
16204 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16205
16206         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16207
16208 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16209
16210         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16211
16212         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16213
16214         * iltests.il: Add new test for bug #80507.
16215
16216 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16217
16218         * mini-arm.h: use soft-float also on vfp for now.
16219
16220 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16221
16222         * mini.c: fix some more soft-float issues.
16223
16224 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16225
16226         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16227
16228 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16229         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16230         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16231         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16232
16233 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16234
16235         * mini-arm.c: typo fix.
16236
16237 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16238
16239         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16240
16241 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16242
16243         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16244         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16245
16246         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16247
16248         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16249
16250         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16251         
16252         * inssel.brg: Fix a warning.
16253
16254         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16255
16256         * abcremoval.c ssa.c ssapre.c: Update after this change.
16257         
16258         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16259
16260         * dominators.c (df_set): Use mono_bitset_union_fast.    
16261
16262 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16263
16264         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16265         mini-codegen.c: reduce relocations and memory usage for the cpu
16266         description.
16267
16268 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16269
16270         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16271
16272         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16273         to reduce their size.
16274
16275 2007-01-19 Mark Mason <mason@broadcom.com>
16276
16277         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16278         * mini-mips.c: more configuration macros, support long conditional branches, additional
16279         asserts, fix epilog instrumentation.
16280         * mini-mips.h: use standard stack walk
16281         * cpu-mips.md: increase size of div, rem and conditional branches
16282         
16283 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16284
16285         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16286         to cpu spec data.
16287
16288 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16289
16290         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16291         (compile_method): Ditto.
16292
16293         * aot-runtime.c (decode_klass_info): Ditto.
16294
16295         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16296         needed by the code generated by inssel.brg. Also fix a warning.
16297
16298 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16299
16300         * mini.c: deal with enums that become genericinsts by
16301         being nested in a generic class (bug #79956).
16302
16303 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16304
16305         * mini.c: match the generic definition to check for
16306         private access with generic types (bug #78431).
16307
16308 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16309
16310         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16311         to make life easier for people cross-compiling that insist on not
16312         using scratchbox.
16313
16314 2007-01-17 Mark Mason <mason@broadcom.com>
16315
16316         * inssel-long.brg: patch to deal with mips missing flags
16317         * inssel-long32-mips.brg: implement overflow checks
16318         * insset-mips.brg: implement overflow checks
16319         * mini-mips.h: implement conditional exception handling
16320         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16321           Remove unused code, minor cleanups.
16322         * exceptions-mips.c: minor cleanups
16323         * mini-ops.h: add mips conditional exception ops
16324         * cpu-mips.md: add mips conditional exception ops
16325
16326         
16327 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16328
16329         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16330         to deal with mips missing of flags.
16331
16332 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16333
16334         * exceptions-ppc.c: execute fault handlers.
16335
16336 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16337
16338         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16339
16340 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16341
16342         * mini.c: handle also floating point values in initialize_array.
16343
16344 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16345
16346         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16347         array initialization and make it conditional on the intrins option.
16348
16349 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16350
16351         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16352         relocations and put the patch info names close to the enum definition.
16353
16354 2007-01-15 Mark Mason <mason@broadcom.com>
16355
16356         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16357
16358 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16359
16360         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16361
16362 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16363
16364         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16365
16366 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16367
16368         * Makefile.am: distribute the mips sources.
16369
16370 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16371
16372         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16373         directly.
16374
16375 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16376
16377         * cpu-x86.md: back out for now as this triggers other regressions.
16378
16379 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16380
16381         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16382         to eax:edx, so ecx can't get allocated to them (bug #80489).
16383
16384 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16385
16386         * mini.c, mini-exceptions.c: enabled running fault handlers
16387         (bug #80469).
16388
16389 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16390
16391         * driver.c: If nothing fail, do not use the string "failed",
16392         because it makes it very annoying to view test result logs on the
16393         web. 
16394
16395 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16396
16397         * debug-debugger.c (mono_debugger_main): Rename "main" to
16398         "main_method" to prevent a warning.
16399
16400         Remove a warning for unused field.
16401
16402 2006-12-28  Martin Baulig  <martin@ximian.com>
16403
16404         * debug-debugger.c
16405         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16406
16407 2006-12-22  Martin Baulig  <martin@ximian.com>
16408
16409         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16410         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16411         seperate `.mdb_debug_info' section, so we can access it from the
16412         debugger even if the binary is stripped.
16413
16414         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16415         from the `.mdb_debug_info' here to prevent the linker from
16416         removing that section.
16417
16418         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16419         mdb-debug-info64.s.
16420
16421 2006-12-19  Robert Jordan  <robertj@gmx.net>
16422
16423         * mini-x86: enable the code to return small structures in
16424         registers for FreeBSD as well. Fixes bug #80278.
16425         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16426
16427 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16428
16429         * mini-x86.c: align the stack when calling the profiler
16430         function instrumenting the prolog (on OSX).
16431
16432 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16433
16434         * mini.c: emit a break opcode where Debugger.Break () is called.
16435
16436 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16437
16438         * mini.c (mono_method_to_ir): Provide useful information on this
16439         assert, to prevent others from debugging like I did.
16440
16441 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16442
16443         * mini.c: enable code which was incorrectly commented
16444         (bug #80235).
16445
16446 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16447
16448         * mini-x86.c: enable on OSX, too, the code to return small
16449         structures in registers.
16450
16451 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16452
16453         * mini-x86.c: remove the use of the dynamic code manager here, too.
16454
16455 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16456
16457         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16458         mono_debugger_create_notification_function() to use
16459         mono_global_codeman_reserve () instead of a dynamic code manager.
16460
16461 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16462
16463         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16464         ves_array_element_address() jit icall and use a generated
16465         managed method instead (which is about 4 times faster for a rank 3
16466         array access).
16467
16468 2006-11-29  Mark Mason  <mason@broadcom.com>
16469
16470         * basic-calls.cs: additional tests for passing
16471         structures as function arguments.
16472
16473 2006-11-29  Mark Mason  <mason@broadcom.com>
16474
16475         * mini-mips.h: disable custom exception handling
16476         * mini-mips.c: throw/rethrow should use jalr to call
16477         exception stubs.  Fixed bug with passing structures
16478         by value. More support for tracing floating point
16479         functions.
16480
16481 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16482
16483         * mini.c: fixed typo in the soft-float ldind.r4 handling
16484         (bug #80086).
16485
16486 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16487
16488         * mini.c, mini.h, driver.c: added --runtime command line
16489         option to select a different runtime than the autodetected one.
16490         * jit.h: added API for embedders to initialize with a specific
16491         runtime version.
16492
16493 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16494
16495         * mini.c: handle also boxing of r4 values (bug #80024).
16496
16497 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16498
16499         * mini-ppc.c: force indirect calls until we reserve
16500         enough address space for all the generated code.
16501
16502 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16503
16504         * exceptions-arm.c: workaround bugs in the libc definition
16505         of struct ucontext.
16506
16507 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16508
16509         * inssel.brg: fixes from me and Mark Mason.
16510
16511 2006-11-23  Dick Porter  <dick@ximian.com>
16512
16513         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16514         semaphore display now we've fixed the initial value
16515
16516 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16517
16518         * inssel.brg: partially revert the last change to fix the build.
16519
16520 2006-11-21  Mark Mason  <mason@broadcom.com>
16521
16522         * inssel.brg: Add and use compare-and-branch macros to support
16523         architectures that do not have condition code registers (ie. MIPS).
16524         * *-mips.{c,brg,md}: Fix copyright statements
16525
16526 2006-11-20  Mark Mason  <mason@broadcom.com>
16527
16528         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16529         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16530         * mini.h: Added declaration for mono_print_ins()
16531         * mini-codegen.c: added ins_spec initializer for MIPS
16532         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16533         vreg to be virtual and hreg to be non-virtual.
16534         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16535         is not yet working/implemented correctly.
16536         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16537         non-static, fixup calls to print_ins() from other parts in the file.
16538
16539 2006-11-20  Mark Mason  <mason@broadcom.com>
16540
16541         * basic-calls.cs: added tests for passing structures as arguments
16542         to calls.
16543
16544 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16545
16546         * inssel-long32.brg: optimize signed division by power of two.
16547
16548 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16549
16550         * mini-arm.c: added support for interworking with thumb code
16551         (mono must be still be built using the ARM instruction encoding).
16552
16553 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16554
16555         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16556         verifier has different rules for it.   Fixes a few verifier issues
16557         in the test suite.
16558
16559         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16560         at the end, so people know what happened.
16561
16562 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16563
16564         * brach-opts.c: in optimize_exception_target() make sure we
16565         are in a catch clause (fixes bug #79871).
16566
16567 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16568
16569         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16570         more soft-float support fixes.
16571
16572 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16573
16574         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16575         that are passed half on the stack and half in registers.
16576
16577 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16578
16579         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16580         more mips integration work from Mark E Mason 
16581         <mark.e.mason@broadcom.com>.
16582
16583 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16584
16585         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16586         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16587         tramp-mips.c: added sources for the mips port, not
16588         integrated in the build yet. Contributed by
16589         Mark E Mason <mark.e.mason@broadcom.com>.
16590
16591 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16592
16593         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16594
16595 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16596
16597         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16598         put the soft-float rules in its own file since it seems to
16599         break s390 compilation.
16600
16601 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16602
16603         * mini-arm.c: fixed wrnings.
16604
16605 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16606
16607         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16608         inssel-arm.brg: ARM support for soft-float.
16609
16610 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16611
16612         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16613         loads and stores of 32 bit fp values.
16614
16615 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16616
16617         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16618
16619         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16620         works. Fixes #79852 and #79463.
16621
16622 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16623
16624         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16625         more soft-float support WIP and fixes.
16626
16627 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16628
16629         * mini-arm.c: some VFP updates.
16630
16631 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16632
16633         * mini-exceptions.c: 0 is a valid local var offset in some
16634         architectures, don't assert (bug #78508).
16635
16636 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16637
16638         * exceptions-arm.c: fixed off by one error in stack walk code.
16639
16640 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16641
16642         * mini.h, mini.c: more precise tracking of type load exceptions.
16643
16644 2006-11-03  Robert Jordan  <robertj@gmx.net>
16645
16646         * Makefile.am: [WIN32] Add monow.exe target.
16647         * driver.c: [WIN32] Don't detach the console when debugging.
16648         Fixes bug #79797.
16649         
16650 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16651
16652         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16653
16654 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16655
16656         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16657
16658         * driver.c (mini_regression): Fix --regression with AOT.
16659
16660         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16661
16662 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16663
16664         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16665
16666         * mini-sparc.h: Don't use sigaction on sparc/linux.
16667
16668         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16669
16670         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16671
16672         * mini-exceptions.c: Add proper include files for getpid ().
16673
16674 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16675
16676         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16677         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16678         method.
16679
16680         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16681         name cache to reduce its size.
16682
16683         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16684
16685 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16686
16687         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16688         the mono_lmf TLS variable.
16689
16690         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16691         trampoline lmf frames.  
16692
16693         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16694
16695 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16696
16697         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16698         the mono_lmf TLS variable.
16699
16700         * mini-exceptions.c: Access the LMF structure through accessors.
16701
16702         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16703         variable instead of in jit_tls->lmf.
16704
16705         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16706         
16707         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16708         trampoline lmf frames.
16709
16710         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16711
16712 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16713
16714        * mini.c trace.c mini-x86.c: Revert these too.
16715         
16716        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16717        signature change.
16718
16719 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16720
16721         * genmdesc.c: removed now dead code.
16722
16723 2006-10-09  Robert Jordan <robertj@gmx.net>
16724
16725         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16726
16727 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16728
16729         * mini.h: do not leave gaps in the opcode values.
16730
16731 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16732
16733         * jit-icalls.h: flag functions as internal here, too.
16734
16735 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16736
16737         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16738         functions with the internal attribute.
16739
16740 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16741
16742         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16743
16744 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16745
16746         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16747         for soft-float.
16748
16749 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16750
16751         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16752         tail calls as on other platforms.
16753
16754         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16755
16756         * iltests.il: Add a few tailcall tests.
16757
16758 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16759
16760         * driver.c: fix loop for old compilers (bug #79521).
16761
16762 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16763
16764         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16765
16766         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16767
16768         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16769         metadata without any code.
16770
16771         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16772         more precise debugging information using gdb.
16773
16774 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16775
16776         * inssel-ia64.brg: Make the helper methods static.
16777
16778 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16779
16780         * inssel-x86.brg: make the helper methods static.
16781
16782 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16783
16784         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16785
16786 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16787
16788         * mini.c: updates for monoburg changes.
16789         * inssel.brg: make a few helper functions static as they should.
16790
16791 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16792
16793         * Makefile.am: Move mini-codegen.c to common_sources.
16794
16795 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16796
16797         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16798         instructions.
16799         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16800         mini-ppc.h: port to use the common local register allocator.
16801
16802 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16803
16804         * mini.h: Remove the comment too then.
16805
16806 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16807
16808         * mini.h: put back backend.data which is to be used shortly and
16809         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16810         pointers on 4 byte boundaries it'd have much bigger issues running
16811         and you can ifdef it out anyway.
16812
16813 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16814
16815         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16816         MonoInst size by 4 bytes on 64 bit machines.
16817
16818 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16819
16820         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16821         replacement with more meaningful field names. Arch maintainers, please
16822         check the assigned names are good enough for your arch.
16823
16824 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16825
16826         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16827         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16828
16829 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16830
16831         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16832         relocations and memory requirements, put the optimization flags
16833         definitions in their own file.
16834
16835 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16836
16837         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16838
16839         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16840
16841 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16842
16843         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16844
16845 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16846
16847         * inssel.brg: use the correct function to get the size of an item
16848         in an array, given an element class.
16849         * aot-compiler.c: do not access class->class_size directly.
16850
16851 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16852
16853         * mini.h, debug-mini.c: added a debugging function to print
16854         info about local variables and arguments in a jitted method.
16855
16856 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16857
16858         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16859
16860         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16861
16862 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16863
16864         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16865         inner and outer loops when passing vtypes.
16866
16867 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16868
16869         * mini-ppc.c: take into account the cpu errata for cache flushing
16870         which caused some random errors (bug #79381).
16871
16872 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16873
16874         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16875         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16876
16877 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16878
16879         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16880         loaded.
16881
16882         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16883         freebsd ports tree.
16884
16885         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16886         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16887
16888         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16889         displacement.
16890
16891 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16892
16893         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16894
16895 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16896
16897         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16898         macro does not have to be changed during debugging.
16899
16900         * 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>.
16901
16902         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16903
16904         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16905         
16906         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16907         MONO_ARCH_NO_EMULATE_MUL is defined.
16908
16909         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16910
16911         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16912
16913         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16914
16915         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16916         
16917 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16918
16919         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16920         stuff to mini-exceptions.c where it is used.
16921
16922         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16923         setup code, the real one is in mini-exceptions.c.
16924
16925         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16926         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16927         some changes from the freebsd ports tree.
16928
16929         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16930         constants.
16931         
16932         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16933
16934 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16935
16936         * mini.c: on Linux, check for /proc to be mounted
16937         (bug# 79351, novell bug#201204).
16938
16939 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16940
16941         * mini.c: handle cases where pthread_attr_getstack() behaves
16942         incorrectly (bug #78096).
16943
16944 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16945
16946         * mini-arm.c: support larger stack frames (bug #79272).
16947
16948 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16949
16950         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16951
16952         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16953         tokens.
16954
16955         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16956         mono_class_from_name () to find a class from its name.
16957
16958         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16959
16960 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16961
16962         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16963
16964 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16965
16966         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16967
16968 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16969
16970         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16971         callinfo->trampoline.
16972
16973         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16974         fixes #79271.
16975         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16976         future.
16977
16978 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16979
16980         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16981
16982 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16983
16984         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16985         stats.method_trampolines, it is already done by the generic trampoline code.
16986
16987         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16988         
16989 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16990
16991         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16992
16993         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16994
16995         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16996
16997         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16998         
16999         * mini.c (print_jit_stats): Print new stats.
17000
17001         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
17002
17003 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
17004
17005         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
17006         Address on two dimensional arrays. Fixes #78729.
17007
17008         * mini.h (MonoCompile): Add a 'skip_visibility' field.
17009
17010         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
17011         a method.
17012
17013         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
17014
17015         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
17016         #79130.
17017         
17018         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
17019         a race condition.
17020         (mini_get_ldelema_ins): Ditto.
17021
17022 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17023
17024         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17025         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17026         Fixes #79213.
17027
17028 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17029
17030         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17031         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17032
17033         * exceptions-s390x.c: Cosmetic change.
17034
17035         * tramp-s390.c: Fix warning.
17036
17037         * cpu-s390.md: Correct length of mul_imm.
17038
17039 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17040
17041         * aot-compiler.c: added binary writer with ELF backend
17042         implementation (only on Linux/x86 for now).
17043
17044 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17045
17046         * Makefile.am: Don't run net 2.0 AOT tests.
17047
17048         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17049         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17050
17051         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17052
17053 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17054
17055         * aot-compiler.c: simplified and refactored the asm-writing code
17056         to allow different backends.
17057
17058 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17059
17060         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17061
17062         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17063         little. Share patches of type TYPE_FROM_HANDLE as well.
17064
17065         * mini.c (mono_patch_info_equal): New helper function.
17066         (mono_patch_info_hash): Ditto.
17067
17068         * aot-compiler.c (emit_method_code): Fix s390 build.
17069
17070         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17071         is not handled because it is stored as a flag and not as a type ctor. Fixes
17072         #79016.
17073
17074 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17075
17076         * aot-compiler.c: Fix computation of GOT slot statistics.
17077         
17078         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17079         Also remove support for not PIC AOT.
17080
17081         * mini.h: Bump AOT file format version.
17082
17083         * objects.cs: Add a test for #78990.
17084
17085         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17086         (peter.dettman@iinet.net.au). Fixes #79087.
17087
17088         * basic-long.cs: Add a test for the above.
17089
17090 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17091
17092         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17093         
17094         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17095         code somewhat.
17096
17097 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17098
17099         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17100         exceptions.
17101
17102 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17103
17104         * mini.c: Don't verify COM proxy invoke calls
17105         
17106
17107 2006-08-10  Dick Porter  <dick@ximian.com>
17108
17109         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17110         which process is holding semaphores locked.
17111
17112 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17113
17114         * mini-ia64.c mini-amd64.c: Fix #79027.
17115
17116         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17117
17118         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17119
17120         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17121         implicit arguments in a vararg call. Fixes #79027.
17122
17123 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17124
17125         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17126         (mono_get_array_new_va_signature): Ditto.
17127
17128 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17129
17130         * aot-runtime.c: Call init_plt lazily.
17131
17132         * inssel-long.brg: Fix unsigned long->int conversion.
17133
17134         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17135
17136         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17137         that most data is now in the .rss/.data section.
17138
17139 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17140
17141         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17142
17143         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17144
17145         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17146
17147         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17148
17149         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17150         virtual call. Fixes #79010.
17151
17152         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17153         and use the result as the this argument in the real call.
17154
17155         * generics.2.cs: Add a new test for #79010.
17156         
17157 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17158
17159         * mini-x86.c: Fix a warning.
17160
17161         * aot-compiler.c: Add a bunch of statistics.
17162
17163         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17164
17165 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17166
17167         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17168
17169 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17170
17171         * 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>.
17172
17173 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17174
17175         * mini.c (mono_method_to_ir): Obtain the original method in the
17176         CIL stream and use this to perform validation.
17177
17178         Fixed: #78816
17179
17180 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17181
17182         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17183         (mono_arch_call_opcode): Ditto.
17184
17185         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17186         #78826.
17187
17188         * mini.c (mono_patch_info_dup_mp): New helper function.
17189         
17190         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17191         compilation. Fixes #78827.
17192
17193 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17194
17195         * declsec.c: Use original security informations for
17196           MONO_WRAPPER_MANAGED_TO_MANAGED.
17197
17198 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17199
17200         * mini.c: Allow Com Interop methods/classes and
17201         don't verify COM wrapper calls
17202         
17203
17204 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17205
17206         * inssel-long32.brg: Fix long->i4 checked conversion.
17207
17208         * exceptions.cs: Add a test for the above.
17209
17210 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17211
17212         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17213
17214         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17215         leaks.
17216
17217         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17218         #78775.
17219
17220 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17221
17222         * mini.c: Fix solaris/x86 exception handling.
17223
17224         * Makefile.am: Get rid of $(ICU_LIBS).
17225
17226 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17227
17228         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17229         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17230         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17231
17232         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17233
17234         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17235         this function causes a SIGSEGV.
17236
17237 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17238
17239         * mini.c: Remove unused solaris/x86 includes.
17240
17241 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17242
17243         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17244
17245 2006-06-20  Jb Evain  <jbevain@gmail.com>
17246
17247         * cpu-g4.md: fix max length of start_handler instruction.
17248
17249 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17250         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17251
17252 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17253         * ssa.c: Fixed bug 78653 for SSA based deadce.
17254         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17255         MonoInst.flags, used in SSA based deadce.
17256         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17257         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17258
17259 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17260
17261         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17262         it can end up using non executable memory on ppc64 systems
17263         running ppc32 userspace (fix from Johannes Berg).
17264
17265 2006-06-14  Dick Porter  <dick@ximian.com>
17266
17267         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17268         4.1.1
17269
17270 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17271         * mini.c: Made so that inline is locally disabled if it would
17272         trigger a .cctor, because too many apps depend on this behavior
17273         (which seems to be also the one of the MS CLR).
17274
17275 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17276
17277         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17278         No idea why this worked before.
17279
17280         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17281         which branch to outer exception clauses since they could skip the
17282         inner finally clauses. Fixes #78633.
17283
17284         * exceptions.cs: Add a test for the above.
17285
17286         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17287         Fixes #78629.
17288
17289         * iltests.il: Add a test for the above.
17290
17291 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17292
17293         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17294         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17295
17296         * iltests.il: Add a test for the above.
17297
17298 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17299
17300         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17301         
17302         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17303         methods as instrinsics.
17304
17305 2006-06-09  Wade Berrier <wberrier@novell.com>
17306
17307         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17308         (simple-cee-ops.h ssapre-mini-ops.h)
17309
17310 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17311
17312         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17313         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17314         instruction).
17315         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17316         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17317
17318 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17319
17320         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17321
17322 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17323
17324         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17325         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17326         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17327         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17328         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17329         of opcodes, so that bug 78549 should not happen again.
17330         * ssapre.c: Updated to use the renamed files.
17331
17332 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17333
17334         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17335         in OP_ATOMIC_EXCHANGE_I4.
17336
17337 2006-06-07  Wade Berrier <wberrier@novell.com>
17338
17339         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17340         in mono_debugger_create_notification_function)
17341
17342 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17343
17344         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17345         
17346         * mini.c (type_from_stack_type): Disable some changes which do not
17347         seem to work.
17348
17349         * driver.c: Reenable opts.
17350
17351         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17352         of the evaluation stack.
17353         
17354         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17355         evaluation stack trace at entry to the bblock.
17356
17357         * mini.c (merge_stacks): New function to perform verification of stack merges.
17358         Turned off by default.
17359
17360         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17361         STACK_MP.
17362         
17363 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17364
17365         * local-propagation.c: Fixed bug 78549.
17366
17367 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17368
17369         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17370
17371 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17372
17373         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17374         tramp-arm.c, tramp-ia64.c
17375         (mono_debugger_create_notification_function): Update signature to
17376         new signature and use new protocol for creating the notification
17377         function.  
17378
17379         Should fix the build.
17380
17381 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17382
17383         * exceptions-ppc.c (mono_jit_walk_stack)
17384         (ves_icall_get_frame_info): Fix the build
17385
17386 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17387
17388         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17389
17390 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17391
17392         * il2tests.2.il: New file for generics CIL tests.  Add test for
17393         #78019.
17394         * Makefile.am: Update.
17395
17396         Fix #78019
17397         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17398         to nullable types.
17399
17400 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17401
17402         * aliasing.c: Fixed bug 78311.
17403
17404 2006-05-29  Martin Baulig  <martin@ximian.com>
17405
17406         * mini-exceptions.c (mono_find_jit_info): When computing the
17407         native offset, check whether we're actually inside the method's
17408         code; call mono_debug_print_stack_frame() to format the frame.
17409         (ves_icall_System_Exception_get_trace): Call
17410         mono_debug_print_stack_frame() to format the stack frame.
17411         (ves_icall_get_trace): Update to the new debugging API.
17412         (mono_jit_walk_stack_from_ctx): Likewise.
17413         (ves_icall_get_frame_info): Likewise.
17414
17415         * mini.c (get_method_from_ip): Use the new debugging API.
17416         (mono_print_method_from_ip): Likewise.
17417
17418         * exceptions-ppc.c
17419         (mono_jit_walk_stack): Use the new debugging API.
17420         (ves_icall_get_frame_info): Likewise.   
17421
17422 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17423
17424         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17425
17426 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17427
17428         * mini.c: Added "limitator" to inline for debugging.
17429
17430 2006-05-24  Martin Baulig  <martin@ximian.com>
17431
17432         * debug-debugger.c (mono_debugger_init): Create a private,
17433         malloc()-based code manager for the notification function and
17434         intentionally leak it on exit.  This fixes the crash-on-exit race
17435         condition.
17436
17437         * tramp-amd64.c
17438         (mono_debugger_create_notification_function): Added
17439         `MonoCodeManager *' argument.
17440
17441         * tramp-x86.c
17442         (mono_debugger_create_notification_function): Added
17443         `MonoCodeManager *' argument.
17444
17445 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17446
17447         * aliasing.c: Fixed 64 bit issue.
17448         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17449         default since all known bugs are fixed (one more time!).
17450
17451 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17452
17453         * mini.c: write barrier support.
17454
17455 2006-05-23  Martin Baulig  <martin@ximian.com>
17456
17457         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17458         check at the top of the file.
17459
17460 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17461
17462         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17463         reverting changes without reason and without changelog entries.
17464
17465 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17466
17467         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17468         to a few opcodes. Fixes #78439.
17469
17470         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17471         consistency with other archs.
17472
17473         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17474
17475 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17476
17477         * debug-debugger.c: fix the build.
17478
17479 2006-05-17  Martin Baulig  <martin@ximian.com>
17480
17481         * debug-debugger.c
17482         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17483         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17484         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17485         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17486
17487 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17488
17489         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17490
17491 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17492
17493         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17494         MONO_TYPE_GENERICINST.
17495         
17496         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17497         MONO_TYPE_GENERICINST.
17498
17499 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17500
17501         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17502         #78325.
17503
17504 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17505
17506         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17507         mempool.
17508         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17509
17510 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17511
17512         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17513         mono_trace_cleanup ().
17514
17515         * iltests.il: Fix problem with the newly added test.
17516
17517         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17518         due to register constraints, free up the previous hreg. Fixes #78314.
17519
17520         * iltests.il: Add new test for #78314.  
17521
17522         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17523         Interlocked.Add. Fixes #78312.
17524
17525         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17526         
17527 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17528
17529         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17530
17531 2006-05-05  Martin Baulig  <martin@ximian.com>
17532
17533         * debug-mini.c (mono_debug_open_block): New method.
17534
17535         * mini-amd64.c
17536         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17537         the beginning of each basic block.
17538
17539         * mini-x86.c
17540         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17541         the beginning of each basic block.
17542
17543 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17544
17545         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17546         default until I understand why they break the build on amd64.
17547
17548 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17549
17550         * mini.c (mini_cleanup): Call mono_cleanup ().
17551
17552         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17553         errors.
17554
17555 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17556
17557         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17558         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17559         default since all known bugs are fixed, and I cannot reproduce bug
17560         77944... I'm asking Matt Hargett to test again after this commit.
17561
17562 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17563
17564         * mini-codegen.c: Fixed typo that thrashed inline.
17565
17566 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17567
17568         * dominators.c (compute_dominators): Avoid using a worklist since
17569         it is not correct in some cases. Instead, iterate over all bblocks as
17570         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17571
17572 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17573
17574         * mini.c (mono_jit_compile_method_inner): Use
17575         mono_prepare_exception_from_error that resets the value
17576         internally.
17577
17578 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17579
17580         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17581         
17582 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17583
17584         * aliasing.c: Fixed bug 78210.
17585
17586 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17587
17588         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17589         default until all their problems (or the ones they trigger) are fixed.
17590
17591 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17592
17593         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17594         
17595         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17596         as loaded only after resolving patches since that could invoke the same method.
17597
17598         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17599
17600         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17601         functions.
17602
17603         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17604         AOT loader.
17605
17606         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17607         stack.
17608
17609         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17610         made from AOT code through the PLT table.
17611
17612         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17613         holding the plt offset when a call is made to the aot plt trampoline.
17614         
17615 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17616
17617         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17618         amd64 AOT support.
17619
17620         * Makefile.am (common_sources): Fix build breakage.
17621
17622         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17623         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17624         intra-assembly calls if possible.
17625         
17626         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17627
17628         * mini-trampolines.c: Handle PLT entries.
17629
17630         * mini.c: Avoid creating a GOT var for calls.
17631
17632         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17633         from mscorlib code.
17634
17635         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17636         from mscorlib code.
17637
17638         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17639         AOT code.       
17640
17641         * mini.h: Bump AOT file format version.
17642         
17643         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17644         covers more cases.
17645
17646 2006-04-25  Martin Baulig  <martin@ximian.com>
17647
17648         * driver.c: Disable copyprop, consprop and inline when running
17649         inside the debugger.
17650
17651 2006-04-25  Martin Baulig  <martin@ximian.com>
17652
17653         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17654         with `get_current_thread' and added `detach'.
17655         (MonoDebuggerMetadataInfo): Added `thread_size',
17656         `thread_tid_offset', `thread_stack_ptr_offset' and
17657         `thread_end_stack_offset'.
17658
17659 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17660
17661         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17662         aot-runtime.c.
17663
17664         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17665         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17666
17667         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17668
17669         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17670
17671         * aot.c: Add support for ADJUSTED_IID.  
17672
17673 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17674
17675         * aot.c (emit_method_order): Don't align method_order_end.
17676
17677         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17678         the interface ID changes.
17679
17680 2006-04-21  Dick Porter  <dick@ximian.com>
17681
17682         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17683         cleaning up a thread.  Fixes the new part of bug 77470.
17684
17685 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17686
17687         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17688         to managed wrapper.
17689                      
17690 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17691
17692         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17693         
17694         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17695         SIGSEGV. Fixes #78072.
17696
17697         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17698         unregister our SIGABRT handler.
17699
17700 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17701
17702         * mini.c: Disabled inline where it can alter the call stack in a
17703         way visible from managed code.
17704         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17705         default.
17706
17707 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17708
17709         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17710         on other platforms. Fixes #78089.
17711
17712 2006-04-13  Martin Baulig  <martin@ximian.com>
17713
17714         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17715         determine whether we're inside the debugger.
17716
17717         * debug-debugger.h
17718         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17719
17720 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17721
17722         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17723         handler clauses. Fixes #78024.
17724
17725         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17726         in the CALL_MEMBASE opcodes. Fixes #78088.
17727         (mono_arch_get_vcall_slot_addr): Ditto.
17728
17729 2006-04-10  Martin Baulig  <martin@ximian.com>
17730
17731         * debug-debugger.c: The thread handling code has now been moved
17732         into ../metadata/threads.c.
17733
17734 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17735
17736         * driver.c (mono_main): Fix --with-gc=none build.
17737
17738         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17739         (mono_spillvar_offset_float): Ditto.
17740         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17741         hreg, not when its !global, since on ia64, there is a third category: stacked
17742         registers.      
17743
17744 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17745
17746         * mini.c: set MonoInst->klass for load field address and a few other
17747         places.
17748
17749 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17750
17751         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17752
17753 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17754
17755         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17756         the branch opt changes.
17757
17758 2006-04-06  Dick Porter  <dick@ximian.com>
17759
17760         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17761         
17762         * wapihandles.c (mini_wapi_seminfo): 
17763         * driver.c (mono_main): Add semaphore info option
17764
17765 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17766
17767         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17768         branch optimization changes. Fixes #78009.
17769
17770 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17771
17772         * mini.c: ignore accessibility of methods in managed->native wrappers.
17773
17774 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17775
17776         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17777         
17778         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17779
17780 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17781
17782         * mini.c: Modify the branch optimizations to preserve the invariant that
17783         the entries inside the in_bb and out_bb arrays are unique.
17784         (mono_unlink_bblock): Avoid creation of new arrays.
17785
17786 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17787
17788         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17789         change (#77992).
17790
17791 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17792
17793         * mini.c (optimize_branches): Remove the "optimizations" in
17794         the cbranch1/cbranch2 -> branch cases which were causing several
17795         problems in the past. Fixes #77986.
17796
17797 2006-03-31  Chris Toshok  <toshok@ximian.com>
17798
17799         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17800         default optimizations :(
17801
17802 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17803
17804         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17805         branch.
17806
17807 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17808
17809         * local-propagation.c: Added comments to structs and removed
17810         "Mono" prefixes from local tree mover types.
17811
17812 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17813
17814         * Makefile.am (arch_sources): Define this for each architecture so 
17815         libmono_la_SOURCES is defined in one place.
17816
17817 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17818
17819         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17820         from handles/.
17821
17822 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17823
17824         * driver.c: print the GC name supplied by configure.
17825
17826 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17827
17828         * local-propagation.c: Added tree mover, and moved here all the
17829         local propagation code from mini.c
17830         * mini.c: Added support for treeprop, and moved all the local
17831         propagation code to local-propagation.c
17832         * mini.h: Added support for treeprop
17833         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17834         treeprop, inline and deadce by default
17835         * Makefile.am: Added local-propagation.c
17836
17837 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17838
17839         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17840
17841 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17842
17843         * debug-debugger.c: make it compile without the Boehm GC.
17844
17845 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17846
17847         * mini.c: fixed issue with mismatch when an icall is registered
17848         with multiple names but same address.
17849
17850 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17851
17852         * declsec.c, mini-exceptions.c: use write barrier to set reference
17853         fields of managed objects.
17854
17855 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17856
17857         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17858         (can_access_internals): Fix a warning.
17859
17860         * mini.c (print_method_from_ip): Rename this to 
17861         mono_print_method_from_ip so it gets exported.
17862
17863         * trace.c: Deal with strings inside StringBuilder's containing garbage
17864         and fix memory leaks. Fixes #77848.
17865
17866 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17867
17868         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17869         fixes #77787.
17870
17871 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17872         
17873         * mini-s390.c: Remove OP_X86_TEST_NULL.
17874
17875 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17876
17877         * mini.c: use the correct GetHashCode() for the moving collector.
17878
17879 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17880
17881         * liveness.c: Regalloc spill cost tuning.
17882
17883 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17884         
17885         * mini-s390x.h: Correct S390_LONG macro.
17886
17887         * mini-s390x.c: Cleanup unused code.
17888
17889 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17890
17891         * jit-icalls.h: New file.
17892
17893         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17894         icalls and include that instead of including jit-icalls.c.
17895
17896         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17897         OP_X86 opcodes.
17898
17899 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17900
17901         * mini.c: when checking for member accessibility, also check for
17902         friend assemblies and for explicit interface implementations.
17903
17904 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17905
17906         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17907
17908         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17909
17910         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17911         common cases are done first.    
17912
17913         * mini-ops.h: Only define platform specific opcodes on the given platform.
17914
17915         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17916         branch.
17917         
17918 2006-03-14  Martin Baulig  <martin@ximian.com>
17919
17920         Revert Paolo's change from r57348:
17921
17922         * mini.h: don't use gboolean for bitfields.
17923         * mini.c: verifier changes for fields and methods accessibility.
17924
17925 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17926
17927         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17928
17929         * mini-s390x.c: Fix conv_r_un.
17930
17931         * cpu-s390, cpu-s390x.md: Fix lengths.
17932
17933 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17934
17935         * mini.c: nested types have access to all the nesting
17936         levels, not just the enclosing types.
17937
17938 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17939
17940         * mini.c: added a few more verification checks.
17941
17942 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17943
17944         * liveness.c: Merge optimizations from the linear-il branch.
17945
17946 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17947
17948         * mini-ia64.c (emit_call): Add a comment.
17949
17950         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17951
17952         * tramp-ia64.c: Fix some warnings.
17953
17954 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17955
17956         * mini.h: don't use gboolean for bitfields.
17957         * mini.c: verifier changes for fields and methods accessibility.
17958
17959 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17960
17961         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17962         lazy icall wrapper changes.
17963
17964         * dominators.c: Replace all the dominator algorithms with faster
17965         ones from the linear-il branch.
17966
17967         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17968         the mempool.
17969
17970         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17971         common cases are done first.
17972
17973         * mini-amd64.c: Fix some warnings.
17974
17975         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17976         from the mempool.
17977
17978         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17979         added code.
17980
17981         * mini.h: Add a missing prototype.
17982
17983 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17984
17985         * mini.c: Compile icall wrappers lazily.
17986
17987         * mini-codegen.c: Use printf instead of g_print since its much faster.
17988
17989         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17990         function.
17991
17992         * mini.c (optimize_branches): Cache the negative result from 
17993         remove_block_if_useless ().
17994
17995         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17996         Also fix some bblock linking issues.
17997
17998         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17999         assembly files.
18000
18001         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
18002
18003         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
18004         accessed fields first, for better cache behavior.
18005         
18006 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18007
18008         * mini.c: speedup IList<T> array accesses.
18009
18010 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
18011
18012         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
18013         inline_costs counter. Fixes #77190.
18014
18015 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
18016
18017         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
18018         trace messages. Fixes #77706.
18019
18020 2006-03-04  Martin Baulig  <martin@ximian.com>
18021
18022         * tramp-amd64.c, tramp-x86.c
18023         (mono_debugger_create_notification_function): Use
18024         mono_global_codeman_reserve() to allocate a buffer at runtime and
18025         return it.
18026
18027         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18028
18029         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18030         notification function at runtime and then call `initialize' in the
18031         `MONO_DEBUGGER__debugger_info' vtable.
18032
18033 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18034
18035         * iltests.il: Fix a visibility problem.
18036
18037 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18038
18039         * driver.c, mini.c: add hooks for the counters API.
18040
18041 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18042
18043         * driver.c: show disabled options.
18044
18045 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18046
18047         * linear-scan.c: always use cost-driven selection.
18048
18049 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18050
18051         * jit-icalls.c (helper_compile_generic_method): Revert change from
18052         2006-02-24.
18053
18054 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18055
18056         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18057
18058 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18059
18060         * inssel.brg: style fixes, mostly to force the updated monoburg
18061         to run for people using svn.
18062
18063 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18064
18065         * mini.c: match monoburg changes.
18066
18067 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18068
18069         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18070         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18071         declaration in the header file.
18072
18073 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18074
18075         * helpers.c: reduce relocations and mem usage.
18076
18077 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18078
18079         * mini.h, mini-codegen.c: disable logging features if
18080         requested by configure.
18081
18082 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18083
18084         * mini.c: tiny verifier changes.
18085
18086 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18087
18088         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18089         cpu-pentium.md: stack alignment changes for osx/x86,
18090         partially from Geoff Norton <gnorton@customerdna.com>.
18091
18092 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18093
18094         * jit-icalls.c (helper_compile_generic_method): Update to changes
18095         in metadata/class.c.
18096
18097 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18098         
18099         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18100         
18101         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18102         interface calls with large offsets.
18103
18104 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18105
18106         * jit-icalls.c (helper_compile_generic_method): Document the
18107         special-case we depend on so that we can inflate the method twice
18108         with the same context with no bad side-effects.
18109
18110 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18111
18112         * mini-x86.c, mini-amd64.c: fix for case when xen support
18113         is disabled.
18114
18115 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18116
18117         * mini-x86.c, mini-amd64.c: generate code to access tls items
18118         in a faster way for Xen systems.
18119
18120 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18121
18122         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18123         updates and compilation fixes for the OSX/x86 port, mostly from
18124         Geoff Norton <gnorton@customerdna.com>.
18125
18126 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18127
18128         * inssel.brg: faster interface call implementation
18129         to sync with the interface_offsets MonoVTable changes.
18130
18131 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18132
18133         * mini.c: more verification checks.
18134
18135 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18136
18137         * mini.c: added a few more verification checks.
18138
18139 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18140
18141         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18142         facility on the processor and use it if available.
18143
18144 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18145
18146         * driver.c, aot.c, mini.c: throw exception if the IL code is
18147         invalid or unverifiable.
18148
18149 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18150
18151         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18152         m.StructField.
18153
18154 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18155
18156         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18157
18158 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18159
18160         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18161         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18162         handling of instantiated generic valuetypes.
18163
18164 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18165
18166         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18167         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18168         instead.
18169
18170         * generics.2.cs: Revert the nullable reftypes tests.
18171
18172 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18173
18174         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18175         using __builtin_frame_address (1) as it doesn't work in the presence
18176         of optimizations. Hopefully fixes #77273.
18177
18178         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18179         -> generics.cs change as it doesn't work with some automake versions.
18180
18181 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18182
18183         * mini.c: handle systems that sue a different way to
18184         retrieve the stack address of the current thread.
18185
18186 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18187
18188         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18189         it specially in the makefile.
18190
18191         * generics.2.cs: Add tests for nullable reference types.
18192
18193 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18194
18195         * mini.c: always handle the case when mono_jit_init()
18196         is called in a thread different from the main thread,
18197         confusing libgc (bug #77309).
18198
18199 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18200
18201         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18202
18203 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18204
18205         * mini.c: change optimize_branches () to use a single loop
18206         and introduce a new optimization to simplify some range checks.
18207
18208 2006-02-03  Martin Baulig  <martin@ximian.com>
18209
18210         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18211         and merged with debugger_thread_manager_add_thread().
18212         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18213         inform the debugger about the main thread.
18214
18215 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18216
18217         * basic.cs: Add test for div.un/rem.un constant folding.
18218
18219 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18220
18221         * cpu-s390x.md: correct int_xor_imm length
18222
18223 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18224
18225         * generics.2.cs: New test for #77442.
18226
18227         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18228         #77442.
18229
18230 2006-02-02  Martin Baulig  <martin@ximian.com>
18231
18232         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18233         <mono/metadata/mono-debug-debugger.h>   
18234
18235         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18236
18237 2006-02-02  Martin Baulig  <martin@ximian.com>
18238
18239         * debug-debugger.h: New header file for debug-debugger.c.
18240
18241         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18242         function is a separate thread anymore; add support for attaching.
18243
18244 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18245
18246         * tramp-x86.c: Fix a warning.
18247
18248 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18249
18250         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18251         on very large methods.
18252
18253         * aot.c (load_patch_info): Fix a warning.
18254
18255 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18256
18257         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18258         mini-ops.h: alu membase optimizations.
18259
18260 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18261
18262         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18263         to speedup StringBuilder.
18264
18265 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18266
18267         * dominators.c (mono_compute_natural_loops): Fix detection of
18268         loop body start blocks.
18269
18270         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18271
18272 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18273
18274         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18275         #75145.
18276
18277 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18278
18279         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18280
18281 2006-01-25  Martin Baulig  <martin@ximian.com>
18282
18283         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18284         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18285         started to cleanup this file a little bit.
18286
18287 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18288
18289         * mini.c: optimize a codepath frequently happening in generics code.
18290
18291 2006-01-23  Martin Baulig  <martin@ximian.com>
18292
18293         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18294
18295         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18296         functions directly.
18297
18298         * driver.c: debug-debugger.c is only available if
18299         `MONO_DEBUGGER_SUPPORTED' is defined.   
18300
18301 2006-01-23  Martin Baulig  <martin@ximian.com>
18302
18303         * debug-debugger.c: Only enable this on platforms where the Mono
18304         Debugger is working (x86 and x86_64).
18305
18306 2006-01-21  Martin Baulig  <martin@ximian.com>
18307
18308         The Mono Debugger is now using the normal `mono' instead of the
18309         `mono-debugger-mini-wrapper' when executing managed code.
18310
18311         * debug-debugger.c: New file; previously known as
18312         debugger/wrapper/wrapper.c.
18313
18314         * debug-mini.c (mono_init_debugger): Removed.
18315
18316         * driver.c (mono_main): Added new `--inside-mdb' command line
18317         argument which is used when running inside the debugger.
18318
18319 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18320
18321         * liveness.c (mono_analyze_liveness): Remove some unused data
18322         structures.
18323
18324 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18325
18326         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18327
18328 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18329
18330         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18331         depends on implementation details of monobitset.
18332
18333         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18334         Fixes #77271.
18335
18336 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18337
18338         * liveness.c: Update after monobitset changes.
18339
18340 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18341
18342         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18343
18344 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18345
18346         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18347
18348         * mini-s390x.c: Remove warning messages.
18349
18350 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18351
18352         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18353
18354 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18355
18356         * generics.2.cs: Add ldelem/stelem_any test.
18357
18358 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18359
18360         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18361
18362 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18363
18364         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18365         
18366 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18367
18368         * generics.2.cs: Reenable vtype tests.
18369
18370         * inssel-x86.brg: Remove an icorrect valuetype rule.
18371
18372 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18373
18374         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18375         initial support for OP_ABS.
18376
18377 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18378
18379         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18380
18381 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18382
18383         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18384         conversion and implement LADD/LSUB.
18385
18386         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18387         architectures.
18388
18389 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18390
18391         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18392
18393         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18394         architectures.
18395
18396 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18397
18398         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18399         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18400         (stack walk problem).
18401
18402 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18403
18404         * aot.c (mono_aot_load_method): Fix a warning.
18405
18406 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18407
18408         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18409
18410 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18411
18412         * iltests.il: Add test for #77148.
18413
18414         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18415         #77148.
18416
18417 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18418
18419         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18420
18421 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18422
18423         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18424         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18425
18426         * basic-long.cs: Add lconv-to-r4/r8 tests.
18427
18428 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18429
18430         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18431
18432         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18433         here as on other archs.
18434
18435 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18436
18437         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18438
18439 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18440
18441         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18442         
18443         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18444
18445         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18446         instrument_prolog; Add memory_barrier instruction.
18447
18448 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18449
18450         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18451
18452 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18453
18454         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18455
18456         * aliasing.c inssel.brg: Fix warnings.
18457
18458         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18459         could skip initialization of some parts of memory.
18460
18461         * mini.c mini-ia64.c: Fix warnings.
18462
18463         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18464
18465 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18466
18467         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18468         a crash seen on sparc.
18469
18470         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18471         
18472         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18473
18474 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18475
18476         * mini-ops.h: Add s390_backchain instruction
18477
18478         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18479
18480         * cpu-s390.md: Add s390_backchain instruction
18481
18482         * mini-s390.c: Significant ABI changes
18483
18484         * mini-s390.h: Cater for zero length structures
18485
18486 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18487
18488         * mini-s390.c: ABI fixes
18489
18490         * inssel-s390.brg: Remove debug statements
18491
18492         * cpu-s390.md: Fix length of ATOMIC_xx operations
18493
18494 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18495
18496         * basic-float.cs: Add float<->long conversion tests.
18497
18498 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18499
18500         * mini-s390.c: Fix LOCALLOC processing.
18501
18502         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18503
18504 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18505
18506         * iltests.il: Add tests for some opcodes not covered by the other
18507         tests.
18508
18509 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18510
18511         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18512         register loading for Tail processing; Correct trace output.
18513
18514         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18515
18516         * cpu-s390.md: Correct size of jmp instruction. 
18517
18518 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18519
18520         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18521
18522 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18523
18524         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18525           Bring s390 up to current level.
18526
18527 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18528
18529         * generics.2.cs: Disable the newly added tests as they do not work yet.
18530         
18531         * generics.2.cs: Add valuetype tests.
18532
18533 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18534
18535         * basic-long.cs: Add i4->u8 test.
18536
18537         * objects.cs: Add tests for JIT intrinsic.
18538
18539         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18540         optimizations lost by a mistake.
18541
18542 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18543
18544         * basic-long.cs: Remove a test moved to objects.cs.
18545
18546         * arrays.cs: Add more array tests.
18547
18548 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18549
18550         * arrays.cs: Add new tests for multi-dimensional arrays.
18551
18552 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18553
18554         * Makefile.am (test_sources2): Add generics.2.cs.
18555         (EXTRA_DIST): Add test_sources2.
18556
18557 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18558
18559         Support for boxing and unboxing nullable types as well as the
18560         isinst operation on nullables, per the CLI ammendment.
18561
18562         * inssel.brg (CEE_ISINST): Special case for nullable
18563
18564         * mini.c (handle_unbox_nullable): new method
18565         (handle_box): Special case for nullable types
18566         (mono_method_to_ir): Call handle_unbox_nullable in correct
18567         places.
18568
18569         * generics.2.cs: New test suite
18570
18571         * Makefile.am: Support for regression tests with generics.
18572
18573 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18574
18575         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18576         allocated to registers. Fixes #76800.
18577
18578 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18579
18580         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18581
18582 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18583
18584         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18585         of platforms.
18586
18587 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18588
18589         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18590         objects.cs.
18591
18592         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18593         
18594         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18595 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18596
18597         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18598         single precision before storing to a single precision location.
18599
18600 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18601
18602         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18603
18604 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18605
18606         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18607         correct files.
18608
18609         * basic.cs: Remove test_0_byte_compares test which was moved to
18610         objects.cs a long time ago.
18611
18612 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18613
18614         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18615
18616 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18617
18618         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18619         handlers are called.
18620
18621         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18622         throwing code.
18623
18624          * mini-ia64.c: Add support for the throw->branch exception 
18625         optimization.   
18626
18627         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18628
18629 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18630
18631         * mini.c: Enabled "fastpath" deadce :-)
18632         
18633 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18634
18635         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18636         alias analysis pass to support it.
18637         * mini.h: Likewise.
18638         * ssa.c: Likewise.
18639         * liveness.c: Likewise (liveness computation can use aliasing
18640         information to be more accurate).
18641         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18642         moreover made so that "--compile-all" uses the given optimization
18643         flags and not the default ones.
18644         * aliasing.c: Alias analysis (new file).
18645         * aliasing.h: Likewise.
18646         * Makefile.am: added "aliasing.c" and "aliasing.h".
18647         
18648 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18649
18650         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18651         OP_L opcodes.
18652
18653 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18654
18655         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18656         fp >= end_of_stack exit condition, as it is not needed, and it might
18657         become true for fp eliminated frames.
18658
18659 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18660
18661         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18662         coded offsets.
18663
18664 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18665
18666         * mini-arm.c: fixed alignment of doubles/longs to match
18667         the C ABI (bug #76635).
18668
18669 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18670
18671         * aot.c: fix compilation with --enable-minimal=aot.
18672
18673 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18674
18675         * mini-arm.c: fixed compatibility with the new
18676         floating point emulator package for compares.
18677
18678 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18679
18680         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18681
18682 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18683
18684         * mini-exceptions.c (print_stack_frame): Output to stderr.
18685         (mono_handle_native_sigsegv): Ditto.
18686
18687 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18688
18689         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18690         OP_LCONV_TO_OVF_I implementation.
18691
18692         * mini-amd64.c: Add support for the throw->branch exception 
18693         optimization.
18694
18695         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18696         when the catch clause catches a more general exception, i.e. Object.
18697
18698 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18699
18700         * cpu-ia64.md: Remove unused opcodes.
18701
18702         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18703         specific defines for architectures defining USE_SIGACTION.
18704
18705         * mini-ia64.c: Fix some warnings.
18706
18707         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18708         version seemed to skip a frame.
18709
18710 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18711
18712         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18713         only calls which are made to native code use this flag.
18714
18715 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18716
18717         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18718         varargs methods as well.
18719         
18720         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18721         which have save_lmf set. Reorganize methods prologs a bit.
18722
18723         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18724         debugger to the proper place.
18725
18726 2005-10-29  Martin Baulig  <martin@ximian.com>
18727
18728         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18729         when running inside the debugger until the debugger has support
18730         for it.
18731
18732 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18733
18734         * mini.h: Fix a warning.
18735
18736 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18737
18738         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18739         we expose publicly, this returns the string.
18740
18741 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18744         with fp elimination.
18745
18746 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18747
18748         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18749         native stacktrace using the glibc 'backtrace' function if available.
18750
18751 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18752
18753         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18754
18755         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18756         handle SIGSEGVs received while in native code.
18757
18758         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18759         code, call mono_handle_native_sigsegv which will abort the runtime
18760         after printing some diagnostics, instead of converting it into a
18761         confusing NullReferenceException.
18762
18763 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18764
18765         * cpu-pentium.md: Remove unused opcodes.
18766
18767 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18768
18769         * mini-amd64.h (MonoLMF): Add rsp field.
18770
18771         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18772         the lmf too.
18773
18774 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18775
18776         * mini-codegen.c (get_register_spilling): Fix some warnings.
18777
18778 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18779
18780         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18781         elimination during exception handling. Enable fp elimination by
18782         default.
18783
18784         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18785         elimination.
18786
18787 2005-10-16  Martin Baulig  <martin@ximian.com>
18788
18789         * mini-exceptions.c
18790         (mono_debugger_run_finally): New public method for the debugger.
18791
18792 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18793
18794         * debug-mini.c (mono_debug_init_method): Fix warning.
18795
18796         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18797         the 'exname' parameter const to fix some warnings.
18798
18799 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18800
18801         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18802         introduced by the previous patch.
18803
18804 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18805
18806         * basic-float.cs: Add test for precision of float arithmetic.
18807
18808         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18809         when loading/storing single values from/to memory.
18810
18811         * mini.c (mono_jit_compile_method_with_opt): Create the function
18812         pointers in the correct domain.
18813
18814 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18815
18816         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18817         introduced by previous patch.
18818         
18819         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18820         when out_filter_idx is NULL.
18821
18822         * mini-exceptions.c: Don't run filter clauses twice during exception
18823         handling. Fixes #75755.
18824
18825 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18826
18827         * aot.c: Add support for ldflda wrappers.
18828
18829         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18830         #75902.
18831
18832 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18833
18834         * mini.c, mini.h: do not consider exception handlers blocks when
18835         setting up interface variables.
18836
18837 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18840
18841 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18842
18843         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18844         causes a regression.
18845
18846         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18847
18848 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18849
18850         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18851         of the OP_P definitions.
18852
18853         * TODO: Add a proposal for dealing with the CEE/OP mess.
18854
18855         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18856         optimizations from the x86 port.
18857
18858         * cpu-amd64.md: Ditto.
18859
18860         * basic.cs basic-long.cs: Add tests.
18861
18862 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18863
18864         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18865         Patrik Torstensson's implementation of my exception-handling
18866         optimization idea, when the exception object is not used
18867         (bug #62150).
18868
18869 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18870
18871         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18872         of the mul_imm optimizations from the old jit.
18873
18874 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18875
18876         * mini.c, liveness.c: patch by Patrik Torstensson and
18877         Zoltan Varga to improve performance in methods with
18878         exception clauses.
18879
18880 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18881
18882         * driver.c: Remove 'Globalization' entry from --version.
18883
18884 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18885
18886         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18887         there is a profiler interested in JIT events.
18888
18889         * aot.c: Load profile files produced by the AOT profiling module, and
18890         reorder methods based on the profiling info. Add a 'method_order' table
18891         to the AOT file to make mono_aot_find_jit_info work with the reordered
18892         methods.
18893
18894         * mini.h: Bump AOT file version info.
18895
18896 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18897
18898         * mini-arm.h: work around what looks like a gcc bug when optimizations
18899         are enabled.
18900
18901 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18902
18903         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18904         conditionals.  Use ...
18905         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18906
18907 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18908
18909         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18910         to determine the amount of memory to copy when passing valuetypes.
18911
18912         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18913         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18914
18915 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18916
18917         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18918         information about aot.
18919
18920 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18921
18922         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18923         macros. This will allow a deadlock debugger to easily be plugged
18924         in.
18925
18926 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18927
18928         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18929
18930 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18931
18932         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18933         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18934         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18935         ($(arch_built)) [CROSS_COMPILING]: Error out.
18936
18937 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18938
18939         * aot.c: Add support for the no_special_static flag for classes.
18940
18941 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18942
18943         * Reapply reverted patches.
18944
18945         * *: Revert r50174 as well.
18946
18947         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18948
18949 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18950
18951         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18952
18953 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18954
18955         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18956         part of the SIG_HANDLER_SIGNATURE.  
18957
18958 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18959
18960         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18961         statistics.
18962
18963         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18964         introduced by previous patch.
18965
18966 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18967
18968         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18969         saved registers too.
18970
18971         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18972         upon the information returned by get_call_info ().
18973         
18974         * mini-x86.c (add_float): Fix stack size calculation.
18975         (mono_arch_call_opcode): Rewrite this so it works based up the
18976         information returned by get_call_info ().
18977         (mono_arch_get_this_vret_args): Ditto.
18978
18979 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18980
18981         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18982         in cinfo to determine the registers which need to be used.
18983
18984 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18985
18986         * driver.c (mono_main): Add --server and --desktop flags. 
18987
18988 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18989
18990         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18991         registers as global registers.
18992
18993         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18994         longer needed with the new register allocator.
18995
18996         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18997
18998         * cpu-ia64.md: Remove unused opcodes.
18999         
19000         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
19001         
19002 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
19003
19004         * cpu-amd64.md: Remove unused opcodes.
19005
19006         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
19007         needed with the new register allocator.
19008
19009         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
19010         reg-reg moves.
19011
19012 2005-09-16  Raja R Harinath  <rharinath@novell.com>
19013
19014         * Makefile.am (check-local): Don't invoke semdel-wrapper.
19015
19016 2005-09-16  Martin Baulig  <martin@ximian.com>
19017
19018         * exceptions-amd64.c
19019         (throw_exception): Don't call mono_debugger_throw_exception() if
19020         we're a rethrow - see the FIXME in the code.
19021
19022 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19023
19024         * mini.c (mono_init_exceptions): This only works on some architectures.
19025         
19026 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19027
19028         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19029         on ia64.
19030
19031         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19032
19033         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19034         now in mini-exceptions.c.
19035
19036 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19037
19038         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19039         now in mini-exceptions.c.
19040
19041 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19042
19043         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19044         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19045
19046         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19047         code into mini-exceptions.c. Add some assertions to it.
19048
19049 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19050
19051         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19052         (<software@solmersa.com>). Fix as errors on windows.
19053
19054 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19055
19056         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19057         method info into the LMF.
19058
19059 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19060         
19061         * mini-ia64.c: Add proper unwind info for method epilogs.
19062
19063         * exceptions-ia64.c: Add some code to help debugging.
19064         
19065         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19066
19067         * mini-exceptions.c: Fix warning.
19068
19069 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19070
19071         * mini.c: Really fix build.
19072
19073         * mini-x86.c mini-amd64.c: Fix build.
19074
19075 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19076
19077         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19078
19079         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19080         some Interlocked methods as intrinsics.
19081
19082         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19083         for Thread methods as well.
19084
19085         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19086
19087         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19088
19089         * mini-ia64.c mini-x86.c mini-amd64.c 
19090         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19091         OP_MEMORY_BARRIER.
19092         
19093         * mini.c (mono_init_exceptions): Fix build breakage.
19094
19095 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19096
19097         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19098         of instructions. Use the new ia64_unw_op macros for emitting unwind
19099         info.
19100
19101         * mini.c (mono_init_exceptions): Initialize exception handling
19102         related trampolines at startup.
19103
19104 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19105
19106         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19107
19108 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19109
19110         * mini.c: Handle type loading errors gracefully during compilation and
19111         throw the appropriate exception.
19112
19113 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19114
19115         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19116         for the mono binary.
19117
19118 2005-09-09  Martin Baulig  <martin@ximian.com>
19119
19120         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19121         the release.
19122
19123 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19124
19125         * mini-arm.h: use emulation for conv.r.un for the release.
19126
19127 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19128
19129         * mini-arm.c, objects.cs: more fixes and tests for them.
19130
19131 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19132
19133         * mini-arm.c: align structures to at least 4 bytes to be able
19134         to keep our current optimized memcpy.
19135
19136 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19137
19138         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19139
19140 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19141
19142         * mini.c: ignore SIGPIPE.
19143
19144 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19145
19146         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19147
19148         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19149
19150 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19151
19152         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19153
19154 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19155
19156         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19157         exception handling support.
19158         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19159         patch by Brian Koropoff <briank@marakicorp.com>).
19160
19161 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19162
19163         * mini.c: revert another 'optimization' which breaks when
19164         items on the eval stack need to be saved at a basic block end
19165         (bug #75940).
19166
19167 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19168
19169         * jit-icalls.c: for arrays, ensure we always provide
19170         lower bounds.
19171
19172 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19173
19174         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19175         
19176         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19177
19178 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19179
19180         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19181         arguments in their original register.
19182
19183 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19184
19185         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19186         memset/memcpy.
19187
19188         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19189         when ssapre is enabled.
19190
19191         * inssel-long.brg: Fix bug in previous patch.
19192
19193         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19194         multiplication by a constant.
19195
19196 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19197
19198         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19199         icc.
19200
19201         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19202         saving registers.
19203
19204 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19205
19206         * inssel-arm.brg: apply changes tested by Brian Koropoff
19207         <briank@marakicorp.com>.
19208
19209 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19210
19211         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19212         
19213 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19214
19215         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19216         to the same register if dreg is just a base register.
19217         (print_ins): Improve printing of membase opcodes.
19218
19219         * inssel-x86.brg: Add optimized ldind(reg) rules.
19220
19221         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19222
19223 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19224
19225         * mini.c: when running under valgrind, set the stack bottom for
19226         the GC at the actual approximate stack for the app (fixes running
19227         mono with valgrind).
19228
19229 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19230
19231         * mini.c: do no break at the first valuetype to init found
19232         (fixes bug #75791).
19233
19234 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19235
19236         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19237
19238 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19239
19240         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19241
19242 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19243
19244         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19245
19246 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19247
19248         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19249
19250         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19251         code.
19252
19253         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19254         code.
19255
19256         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19257         methods.
19258
19259 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19260
19261         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19262
19263 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19264
19265         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19266         in the tail recursion optimization.
19267
19268         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19269         debug info into the assembly file.
19270
19271         * iltests.il: Add test for filter regions.
19272
19273         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19274         initial stack of filter regions. Fixes #75755.
19275
19276 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19277
19278         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19279         stack requirements.
19280
19281 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19282
19283         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19284         the check for an already compiled method on non-ia64 platforms.
19285         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19286         proper domain.
19287
19288         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19289
19290         * inssel-x86.brg: Add some optimized call rules.
19291
19292 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19293
19294         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19295         method here.
19296
19297         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19298         mono_arch_patch_delegate_trampoline.
19299
19300         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19301
19302         * mini-trampolines.c: Fix build.
19303
19304         * mini-amd64.h: Add delegate trampolines.
19305
19306         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19307
19308         * inssel-amd64.brg: Add optimized call rules.
19309         
19310         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19311
19312         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19313
19314 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19315
19316         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19317         change.
19318
19319         * mini-ia64.c: Remove LMF fixmes.
19320
19321         * mini-ia64.h: Remove most fields from LMF.
19322
19323         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19324
19325         * mini-trampolines.c: Add support for IA64 function descriptors.
19326
19327         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19328         for IA64 function descriptors.
19329
19330 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19331
19332         * tramp-arm.c: patch the vtable for virtual calls. Added
19333         support code to register/unregister the LMF.
19334         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19335         more LMF work.
19336
19337 2005-08-19  Dick Porter  <dick@ximian.com>
19338
19339         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19340         bit value if needed.
19341
19342 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19343
19344         * mini.c (mini_get_method): Move handling of wrapper data here.
19345
19346         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19347
19348         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19349         virtual.
19350
19351         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19352         bblock->code does not remain empty.
19353
19354 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19355
19356         * arrays.cs: Add regression test for #75832.
19357
19358         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19359         rules. Fixes #75832.
19360
19361         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19362         instruction scheduling.
19363
19364 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19365
19366         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19367
19368 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19369
19370         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19371
19372         * mini-codegen.c: Fix VC build.
19373
19374         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19375
19376 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19377
19378         * mini.h: fix signature for mono_register_opcode_emulation.
19379
19380 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19381
19382         * mini.c: Get rid of most of the helper_sig_... constants using
19383         mono_create_icall_signature ().
19384
19385 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19386
19387         * jit-icalls.c (helper_ldstr): New helper function.
19388
19389         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19390
19391         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19392         throw, load the string using a helper call instead of creating a string object.
19393
19394         * aot.c: Update after LDSTR changes.
19395
19396         * mini.h: Bump AOT file version.
19397         
19398         * aot.c: Save class size info into the AOT file. Print more statistics during
19399         compilation.
19400
19401         * mini.h: Bump AOT file version.
19402
19403         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19404         ordering of disasm cases. Fixes #74957.
19405
19406 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19407
19408         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19409         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19410         the generic code needed for the ARM port.
19411
19412 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19413
19414         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19415         inssel-arm.brg: more ARM features and fixes.
19416
19417 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19418
19419         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19420         ARM port work in progress.
19421
19422 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19423
19424         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19425
19426         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19427
19428         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19429
19430         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19431
19432         * *-ia64.*: Ongoing IA64 work.
19433         
19434         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19435
19436 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19437
19438         * TODO: Remove out-of-data todo stuff.
19439
19440         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19441         dead code.
19442
19443         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19444
19445         * mini.h: Bump corlib version.
19446
19447 2005-07-27  Martin Baulig  <martin@ximian.com>
19448
19449         * mini-codegen.c
19450         (create_copy_ins): Added `const unsigned char *ip' argument; set
19451         `copy->cil_code' from it.
19452
19453 2005-07-27  Martin Baulig  <martin@ximian.com>
19454
19455         * mini-exceptions.c (mono_handle_exception): Don't call
19456         mono_debugger_handle_exception() for filters.
19457
19458 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19461         as well.
19462
19463 2005-07-26  Martin Baulig  <martin@ximian.com>
19464
19465         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19466
19467         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19468         helper_compile_generic_method() if the method is actually virtual
19469         and non-final.
19470
19471 2005-07-26  Martin Baulig  <martin@ximian.com>
19472
19473         * mini.c
19474         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19475         public; this is now accessed directly by the debugger.
19476         (mono_generic_trampoline_code): Removed.
19477
19478         * debug-mini.c
19479         (mono_debug_init_method): Also add interncalls and wrappers.
19480
19481 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19482
19483         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19484
19485 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19486
19487         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19488
19489 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19490
19491         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19492
19493 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19494
19495         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19496         getting TLS offsets on AMD64 too.
19497
19498 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19499
19500         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19501
19502 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19503
19504         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19505         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19506
19507 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19508
19509         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19510
19511         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19512         to mini.c.
19513
19514         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19515         mono_sparc_is_virtual_call ().
19516         
19517         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19518
19519         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19520         trampoline parameters.
19521
19522         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19523         
19524         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19525         to mono_arch_get_vcall_slot_addr.
19526
19527         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19528         trampoline code.
19529
19530         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19531
19532 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19533
19534         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19535
19536 2005-07-19  Martin Baulig  <martin@ximian.com>
19537
19538         * exceptions-amd64.c (throw_exception): Call
19539         mono_debugger_throw_exception() here like we're doing it on i386.
19540
19541 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19542
19543         * mini-ia64.c: Add optimized TLS access support.
19544
19545 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19546
19547         * mini-exceptions.c: Ongoing IA64 work.
19548
19549         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19550
19551         * mini.c: Use the default optimization set when embedding. Fixes
19552         #75194.
19553
19554 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19555
19556         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19557         of trampolines to a separate file.
19558
19559         * mini-trampolines.c: New file.
19560
19561         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19562         separate file.
19563         
19564         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19565         amd64/ia64 code.
19566
19567         * mini-codegen.c: Fix cygwin build.
19568
19569 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19570
19571         * mini.c: Add some minor changes needed by the IA64 port.
19572
19573         * *-ia64.*: Ongoing IA64 work.
19574
19575 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19578         trampolines into arch-independent and arch-dependent parts.
19579
19580         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19581
19582 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19583
19584         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19585
19586         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19587         the xp-regalloc-branch for amd64.
19588
19589         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19590         xp-regalloc-branch for x86.
19591
19592 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19595
19596 2005-07-06  Martin Baulig  <martin@ximian.com>
19597
19598         * mini.c
19599         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19600         (mono_jit_runtime_invoke): Likewise.
19601
19602 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19603
19604         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19605         on x86 too.
19606         
19607         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19608         without loading their metadata. Reorganize the file format so exception handling+
19609         debug info is kept separate from normal method info. Create MonoJitInfo 
19610         structures for methods lazily.
19611
19612         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19613         loading metadata.
19614         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19615
19616         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19617
19618         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19619         in AOT code.
19620
19621         * mini.h: Bump AOT file version.
19622
19623 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19624
19625         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19626
19627 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19628
19629         * Makefile.am (check-local): Call semdel-wrapper.
19630
19631 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19632
19633         * mini-x86.c: Revert the last change as it seems to break the build..
19634
19635 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19636
19637         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19638         
19639         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19640
19641 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19642
19643         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19644         outside of the macro, so strange stuff doesn't happen with gcc4
19645         (NEW_AOTCONST_TOKEN): Likewise.
19646
19647 2005-06-28  Martin Baulig  <martin@ximian.com>
19648
19649         * mini.c (mini_class_is_system_array): New static method; use this
19650         instead of `klass->parent == mono_defaults.array_class' everywhere
19651         since this also works for the new generic array class.
19652
19653 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19654
19655         * inssel.brg: Remove warnings.
19656
19657 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19658
19659         * mini-ia64.c: Ongoing IA64 work.
19660
19661         * basic-float.cs: Add float->i1 conversion test.
19662
19663         * iltests.il: Add conv.u4 test.
19664
19665 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19666
19667         * inssel-long.brg: Fix bug caused by last change.
19668
19669 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19670
19671         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19672         BSDs.  Allows the x86 JIT to work on OSX86
19673
19674 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19675
19676         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19677         u4->i8 conversion.
19678
19679         * mini-ia64.c: Ongoing IA64 work.
19680
19681 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19682
19683         * mini-ia64.c: Ongoing IA64 work.
19684
19685         * driver.c: Clean up jit_code_hash as well when using --regression.
19686
19687         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19688
19689         * basic-long.cs: Add tests for long->u4 conversion.
19690
19691 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19692
19693         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19694         that we do not depend on undefined C behavior: the order stuff
19695         gets evaluated within an expression. Fixes mono when compiled on
19696         GCC 4.
19697
19698 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19699
19700         * *-ia64.*: Ongoing IA64 work.
19701
19702         * aot.c: Lower memory usage while loading AOT methods.
19703
19704         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19705
19706         * mini.h: Bump AOT file format version.
19707
19708 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19709
19710         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19711
19712 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19713
19714         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19715         not on callee assembly). Fixed some comments.
19716
19717 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19718
19719         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19720         it gets proper disassembly.
19721         (emit_method_info): Remove some dead code.
19722
19723         * mini.c (mini_method_compile): Allways allocate the GOT var in
19724         mono_method_to_ir for emulating opcodes.
19725
19726 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19727
19728         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19729         before freeing the code memory. Fixes #74990.
19730
19731         * objects.cs: Add regression test for #74992.
19732
19733         * liveness.c: Extend live ranges of arguments to the beginning of the
19734         method. Fixes #74992.
19735
19736         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19737         so it points into the faulting instruction.
19738
19739 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19740
19741         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19742
19743         * *-ia64.*: Ongoing IA64 work.
19744
19745         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19746
19747 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19748
19749         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19750
19751         * *-ia64.*: Ongoing IA64 work.
19752
19753 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * basic-long.cs: Add tests for add/sub.ovf.
19756
19757         * basic.cs: Add tests for sub.ovf.
19758
19759         * *-ia64.*: Ongoing IA64 work.
19760
19761 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19762
19763         * *-ia64.*: Ongoing IA64 work.
19764
19765         * basic.cs: Add conv.ovf.i4.un test.
19766
19767 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19768
19769         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19770         
19771 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19772
19773         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19774
19775 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19776
19777         * *-ia64.*: Ongoing IA64 work.
19778
19779 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19780
19781         * trace.[ch]:
19782         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19783
19784 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19787
19788 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19789
19790         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19791
19792         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19793         of a call is callable by a near call.
19794
19795 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19796
19797         * mini-ia64.c: Ongoing IA64 work.
19798
19799 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19800
19801         * genmdesc.c: Make the generated array non-static.
19802
19803         * inssel-long.brg: Fix LSHR_IMM rule.
19804
19805         * *-ia64.*: Ongoing IA64 work.
19806
19807         * *-ia64.*: Ongoing IA64 work.
19808
19809 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19810
19811         * *-ia64.*: Ongoing IA64 work.
19812
19813         * *-ia64.*: Ongoing IA64 work.
19814         
19815         * mini-ia64.c: Ongoing IA64 work.
19816
19817         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19818
19819 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19820
19821         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19822         
19823         * objects.cs basic-long.cs: Move some tests to objects.cs.
19824
19825 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19826
19827         * *-ia64.*: Ongoing IA64 work.
19828
19829         * iltests.il: Add a new test.
19830
19831         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19832         newobj. Fixes #75042.
19833
19834 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19835
19836         * *-ia64.*: Ongoing IA64 work.
19837         
19838         * *-ia64.*: Ongoing IA64 work.
19839         
19840         * *-ia64.*: Ongoing IA64 work.
19841
19842         * basic.cs objects.cs: Move tests accessing static variables as well.
19843
19844         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19845
19846 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19847
19848         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19849
19850         * driver.c: Always print failed tests.
19851
19852         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19853         frame pointer.
19854
19855         * *ia64*: Ongoing IA64 work.
19856
19857 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19858
19859         * basic.cs: Add tests for add.ovf. Fix warnings.
19860
19861 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19862
19863         * driver.c (mono_main): Avoid crash if no argument is passed to
19864         --break;  Do not use g_error, but f_printf.   And fix all other
19865         ocurrences of the same crash.
19866
19867 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19868
19869         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19870         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19871         Fixes #74742.
19872
19873 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19874
19875         * *-ia64.*: Add beginnings of IA64 backend.
19876
19877         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19878
19879 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19880
19881         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19882         Fixes #74925.
19883
19884         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19885
19886         * mini-amd64.c: Fix a warning.
19887
19888 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19891         in float_neg. Fixes #74897.
19892
19893         * mini-amd64.c (emit_call): Fix another near call bug.
19894
19895 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19896
19897         * declsec.c: Keep the appdomain information in the structure. Added a 
19898         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19899         value gets overwritten).
19900         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19901         an MonoAppDomain member to MonoSecurityFrame.
19902         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19903         used in the stack walk. Now use a MonoArray which grow (double) when
19904         it gets full.
19905
19906 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19907
19908         * mini.c: Re-enabled runtime cleanup, since running threads should
19909         now properly stop when exiting.
19910
19911 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19912
19913         * mini-codegen.c: New file contaning the arch-independent local
19914         register allocator. Not used by any architectures yet.
19915
19916         * mini.h linear-scan.c: Merge some changes from the 
19917         mini-xp-local-regalloc branch.
19918
19919 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19920
19921         * mini-amd64.c (emit_call): Fix calls to native functions when the
19922         runtime is compiled as a shared library. Fixes #74756.
19923
19924         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19925         on a literal field. Fixes #74751.
19926
19927 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19928
19929         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19930
19931 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19932
19933         * objects.cs: Add missing null casting test.
19934
19935 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19936
19937         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19938         in wrapper methods. Also rename 'address' variable to 'offset'.
19939
19940 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19941
19942         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19943         warnings.
19944         
19945         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19946
19947         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19948         work on windows.
19949
19950 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19951
19952         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19953
19954 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19955
19956         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19957         just the last bytes.
19958
19959 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * aot.c (mono_compile_assembly): Fix warning.
19962
19963         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19964         by the _MSC_VER stuff.
19965
19966 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19967
19968         * inssel-long.brg: Fix #74588.
19969
19970         * cpu-amd64.md: Fix #74591.
19971
19972         * iltests.il: Add new regression tests.
19973
19974 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19975
19976         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19977         valuetype.
19978
19979 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19980
19981         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19982
19983         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19984         from Bill Middleton <flashdict@gmail.com>.
19985
19986 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19987
19988         * arrays.cs: Add new regression test. Fix warnings.
19989
19990 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19991
19992         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19993         and leakage in CKFINITE.
19994
19995         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19996         this to a null op since it is called on amd64 too.
19997
19998         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19999
20000         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
20001         body since this is not used on amd64.
20002         
20003         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
20004
20005         * mini-amd64.c: Remove obsolete fixmes.
20006
20007         * mini.c (print_method_from_ip): Fix debugging support.
20008
20009 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20010
20011         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
20012         so that expressions that don't give much gain are not reduced.
20013         * ssapre.h: Likewise.
20014
20015 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
20016
20017         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
20018
20019         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
20020
20021         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
20022
20023 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20024
20025         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20026
20027         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20028
20029 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20030
20031         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20032         stack touching.
20033
20034         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20035
20036         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20037
20038         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20039
20040         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20041         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20042
20043         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20044
20045         * mini-x86.c: Fix up stack overflow handling.   
20046
20047         * exceptions.cs: Add new regression test.
20048
20049 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20050
20051         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20052         mono_jit_thread_attach.
20053
20054         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20055
20056 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20057
20058         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20059         avoid calling constructors using callvirt.
20060
20061         * inssel.brg: Fix #74073.
20062
20063 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20064
20065         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20066         compilation with non-GCC compilers.
20067         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20068         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20069
20070 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20071
20072         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20073         klass->interface_offsets (will likely fix bug#74073).
20074
20075 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20076
20077         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20078
20079 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20080
20081         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20082         to amd64_div_reg_size ().
20083         
20084         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20085
20086 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20087
20088         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20089
20090 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20091
20092         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20093
20094 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20095
20096         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20097         
20098         * mini.c (mono_precompile_assembly): Load and precompile referenced
20099         assemblies as well. Fixes #74015.
20100
20101 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20104
20105 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20106
20107         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20108         a lot of checks and (anyway) permissions cannot work until corlib is 
20109         loaded.
20110
20111 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20112
20113         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20114
20115 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20116
20117         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20118         calls (fixes bug#72824).
20119
20120 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20121
20122         * mini.c: fix tail recursion elimination (see test in bug#73936).
20123
20124 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20127         some fp functions in sse2 mode.
20128
20129 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20130
20131         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20132
20133 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20134
20135         * mini.h mini.c: Add mono_get_jit_tls_key ().
20136
20137         * mini-x86.c: Enable fast TLS support on windows.
20138
20139 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20140
20141         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20142         * mini.c: Check for p/invoke method when generating code. If a
20143         p/invoke method, or it's class, isn't decorated with [Suppress
20144         UnmanagedCodeSecurity] then generate code to call System.Security.
20145         UnmanagedDemand (only if the security manager is active).
20146
20147 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20148
20149         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20150         last change as it seems to cause strange crashes.
20151         
20152 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20153
20154         * *.c: handle unsafe function pointers where needed.
20155
20156 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20157
20158         * mini.c (mono_jit_free_method): Remove the fixme too.
20159
20160 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20161
20162         * mini.c: As discussed, make the code actually free the delegate
20163         thunk now, to enable the debugging of delegate problems, use
20164         MONO_DEBUG=1 when running Mono. 
20165
20166         This takes also care of parts of the leaks as seen by Joe.
20167
20168 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20169
20170         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20171         thread_tls_offset calculation.
20172
20173 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20174
20175         * declsec.c: Reworked linkdemand checks for icall. The previous code
20176         was using the declaration code (untrusted) and didn't work as expected
20177         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20178         specific case.
20179
20180 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20181
20182         * iltests.il: Add new localloc test.
20183
20184         * mini-amd64.c: Handle large stack allocations the same way as on
20185         windows if stack overflow handling is working.
20186         
20187         * mini-amd64.c: Allocate the signal stack using mmap.
20188
20189         * mini.c (sigsegv_signal_handler): Fix reading of context.
20190
20191         * mini-exceptions.c: Fix up stack overflow handling.
20192
20193         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20194
20195         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20196
20197         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20198
20199         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20200
20201         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20202         tramp_init functions as they are no longer needed.
20203
20204 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20205
20206         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20207         
20208         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20209
20210         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20211         
20212         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20213         support that now.
20214
20215         * mini-ops.h: Add OP_LMUL_IMM.
20216
20217         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20218         long mul/div opcodes as intrinsic.
20219
20220         * mini-amd64.c (emit_call): Handle the case when the callee might be
20221         an AOT method.
20222
20223 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20224
20225         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20226         extra safe.
20227         
20228         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20229
20230         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20231
20232 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20233
20234         * mini.c (mono_codegen): Don't leak here, to help people running
20235         monogrind.
20236
20237 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20238
20239         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20240         conversions in sse2 mode.
20241
20242         * basic-float.cs: Add regression test.
20243         
20244         * mini-amd64.c: Reenable sse2.
20245
20246 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20247
20248         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20249
20250 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20251
20252         * driver.c: Copyright text should include 2005.
20253         
20254 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20255
20256         * cpu-amd64.md (load_membase): Fix more max lengths.
20257
20258 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20259
20260         * cpu-amd64.md (load_membase): Fix max length.
20261
20262         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20263
20264         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20265
20266         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20267         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20268
20269         * basic-float.cs: Add rounding regression test.
20270
20271         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20272
20273 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20274
20275         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20276         structures in registers for pinvoke wrappers.
20277
20278 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20279
20280         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20281
20282 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20283
20284         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20285         wrapper to mono_jit_thread_attach.
20286
20287         * mini.c (mini_jit_thread_attach): New jit icall.
20288
20289         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20290         native->managed wrappers.
20291
20292         * exceptions.cs: Add new regression test.
20293
20294         * mini.c (optimize_branches): Check regions in the cbranch to throw
20295         block case as well. Fixes #73242.
20296
20297 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20298
20299         * mini.c: thread safety fixes.
20300
20301 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20302
20303         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20304         patching stuff, since delegates use jump trampolines so there is
20305         no caller.
20306
20307         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20308         jump trampolines.
20309         
20310         * tramp-amd64.c: Fix build.
20311
20312         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20313         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20314
20315         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20316         Rename this to mono_arch....
20317         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20318
20319         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20320
20321         * mini-amd64.c (emit_call): If both the caller and the callee is
20322         guaranteed to have 32 bit addresses, emit a normal call.
20323
20324         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20325
20326         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20327         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20328         method_ptr inside delegates.
20329
20330 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20331
20332         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20333         invalidated. Fixes #73001.
20334
20335         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20336
20337         * mini-x86.c: Only use stdcall for pinvokes on windows.
20338
20339 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20340
20341         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20342         * mini-x86.c: remove unreliable __thread var offset detection,
20343         use the correct accessors and enable by default.
20344
20345 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20346
20347         * mini.c (mono_jit_free_method): Fix memory leak.
20348
20349 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20350
20351         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20352
20353 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20354
20355         * cpu-amd64.md: Fix lengths of atomic opcodes.
20356
20357 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20358
20359         * driver.c: try to not imply using ICU is any good.
20360
20361 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20362
20363         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20364         functions as inline ops.
20365
20366         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20367         some Interlocked functions as inline ops.
20368
20369         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20370
20371         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20372
20373         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20374
20375         * mini.c: Add support for OP_NOT_TAKEN.
20376
20377         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20378         structures in registers for pinvoke wrappers.
20379
20380         * mini-amd64.c: Fix warnings.
20381
20382 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20383
20384         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20385
20386         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20387
20388         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20389         address instead of loading the address from it.
20390
20391         * mini-x86.c: Add support for returning small structs in registers
20392         on Win32. Fixes part of #70864.
20393         
20394 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20395
20396         * trace.c (get_token): Improve error checking.
20397
20398 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20399
20400         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20401
20402 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20403  
20404         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20405         it can be reused for MonoClass.
20406         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20407         _LINKDEMAND.
20408
20409 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20410
20411         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20412         instead of a MonoReflectionMethod. The method information wasn't used
20413         when displaying SecurityException details (but will be now).
20414
20415 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20416
20417         * Makefile.am : windows build fix.
20418
20419 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20420
20421         * iltests.il: Add new regression test.
20422
20423         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20424         #72522.
20425
20426 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20427  
20428         * mini.c: Moved linkdemand check into helper function check_linkdemand
20429         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20430         LDFTN, LDVIRTFTN).
20431
20432 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20433
20434         * declsec.c: Added statistics counter for different kinds of 
20435         LinkDemands.
20436         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20437         (and commented) declaration.
20438         * mini.c: Added statistics counter for security Demand code 
20439         generation. Added display of security statistics.
20440
20441 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20442
20443         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20444         Fix compilation errors under gcc-2.95.
20445
20446 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20447
20448         * mini.c, driver.c: Use the new jit trampoline hashtable
20449
20450 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20451
20452         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20453
20454 2005-02-11  Martin Baulig  <martin@ximian.com>
20455
20456         * debug-mini.c (mono_debug_close_method): Free the line number array.
20457
20458 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20459
20460         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20461         icalls.
20462
20463         * mini.h: Bump AOT file format version. 
20464
20465 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20466
20467         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20468         APTC and P/Invoke.
20469         * declsec.h: Added macros to get/set lazyly initialized security 
20470         informations about assemblies. Added new enum for different type of
20471         possible LinkDemand violation. Added function to check LinkDemands.
20472         * mini.h: Added a field to MonoCompile to hold any security violation
20473         detected when JITting a method (so it can be thrown later).
20474         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20475         and CEE_CALLVIRT. Added code to throw exception at the end of
20476         mini_method_compile (note: the exception is unhandled right now).
20477
20478 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20479
20480         * mini.c, jit-icalls.c: use the managed implementation of
20481         memset for initobj and memset, to avoid managed <-> unmanaged
20482         transitions.
20483
20484 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20485
20486         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20487         optimization if it would need a GOT var.
20488
20489         * basic.cs: Add tests for constant propagation and switch statements.
20490
20491         * ssa.c: Fix out-of-range constant propagation and switch statements.
20492
20493 2005-02-09    <vargaz@freemail.hu>
20494
20495         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20496
20497 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20498
20499         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20500
20501 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20502
20503         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20504
20505 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20506
20507         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20508         arithmetic operations.
20509
20510 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20511
20512         * mini-ppc.c: add a workaround for broken user code that
20513         DllImports vararg functions with non-vararg signatures.
20514
20515 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20516
20517         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20518         meaningfull error message for assemblies written in Managed C++.
20519
20520         * tramp-amd64.c mini-amd64.h: Add support for 
20521         create_trampoline_from_token ().
20522
20523         * aot.c mini-x86.c abcremoval.c: Applied patch from
20524         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20525
20526 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20527
20528         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20529         which takes a MonoImage/token as parameter instead of a MonoMethod.
20530
20531         * aot.c: Use the new trampoline for initializing vtables.
20532
20533         * aot.c: Add support for ldfld/stfld_remote wrappers.
20534
20535         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20536         rules for compare <MEM>, IMM.
20537
20538         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20539
20540         * aot.c: Handle inherited finalizers correctly.
20541
20542 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20543
20544         * inssel.brg (stmt): Add a missing _setup_... ().
20545
20546         * aot.c: Save some parts of the class state to the AOT file and use it
20547         to recompute that state when a class is initialized.
20548
20549         * mini.c: Install AOT hooks into the runtime.
20550
20551         * mini.h: Bump AOT file format version.
20552         
20553         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20554         Fixes #72148.
20555
20556         * iltests.il: Add new test.
20557
20558 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20559
20560         * mini.c: fix typo.
20561
20562 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20563
20564         * mini.c: setup the statistical profiler in the thread attach
20565         callback to cope with the new single thread code.
20566
20567 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20568
20569         * mini-ppc.c: ensure we have enough room for the profiler
20570         calls (fixed bug#72084).
20571
20572 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20573
20574         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20575         it.
20576
20577 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20578
20579         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20580
20581 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20582
20583         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20584         to succesfully execute parrotbench).
20585         * ssapre.h: Likewise.
20586
20587 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20588
20589         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20590         variable for stores to method arguments (fixes a SSAPRE issue).
20591
20592 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20593
20594         * mini.c: handle value types in dup, fixes gen-112.cs.
20595
20596 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20597
20598         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20599         sequence for calls in dynamic methods to avoid thunks.
20600
20601 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20602
20603         * mini.c: correctly remove dynamic methods from the hashtable.
20604
20605 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20606
20607         * driver.c: Disabled SSAPRE until fix the bug that appears
20608         in IronPython's parrotbench.
20609
20610 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20611
20612         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20613
20614         * mini.c (mono_method_to_ir): Revert the previous change.
20615         
20616         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20617         when AOT compiling.
20618
20619         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20620         mono_jit_info_table_find () etc. when running under valgrind.
20621
20622         * inssel.brg: Fix warnings.
20623
20624         * mini-exceptions.c: Fix warnings.
20625
20626 2005-01-31  Martin Baulig  <martin@ximian.com>
20627
20628         * driver.c (compile_all_methods_thread_main): Don't try to compile
20629         generic methods or anything which has type parameters.
20630
20631 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20632
20633         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20634
20635         * TestDriver.cs: Add --verbose flags.
20636
20637         * graph.c ssa.c: Fix 64 bit warnings.
20638         
20639         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20640         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20641         Fix 64 bit warnings.
20642
20643         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20644         variable not spotted by gcc.
20645         
20646         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20647         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20648         X86_COMPARE_MEMBASE opcodes.
20649
20650         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20651
20652 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20653
20654         * *: MonoMethod->signature might be NULL now. You *MUST* use
20655         mono_method_signature.
20656
20657 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20658
20659         * driver.c (compile_all_methods_thread_main): Compile the methods
20660         without invoking cctors.
20661
20662 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20663
20664         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20665         * basic-calls.cs: test for the above.
20666
20667 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20668
20669         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20670         MonoJitInfo changes.
20671
20672 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20673
20674         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20675         eagerly if it contains dynamic methods.
20676         
20677         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20678
20679         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20680         trace, it is now computed by an icall from trace_ips.
20681         
20682         * mini-exceptions.c: Fix a warning.
20683
20684 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20685
20686         * mini-exceptions.c: don't bother getting stack trace info if
20687         it's not going to be used.
20688
20689 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20690
20691         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20692         ssapre-mini-ops.h.
20693
20694 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20695
20696         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20697
20698         * aot.c: Avoid calling mono_method_get_header () if not needed.
20699
20700         * mini.h: Bump AOT file format version.
20701         
20702         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20703
20704         * mini.c (mono_print_tree): Print more info for calls.
20705
20706 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20707
20708         * declsec.h: Remove warning by adding missing include for marshal.h
20709
20710 2005-01-26  Martin Baulig  <martin@ximian.com>
20711
20712         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20713         `ip' twice.
20714
20715 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20716
20717         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20718         flags.
20719
20720         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20721
20722         * aot.c (mono_compile_assembly): Fix a warning.
20723
20724 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20725
20726         * declsec.c: Look for security attributes on the original MonoMethod 
20727         (and not the wrapped one). This fix permissions on icalls.
20728
20729 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20730
20731         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20732
20733         * mini.c (mono_allocate_stack_slots): Add a fixme.
20734
20735         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20736
20737 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20738
20739         * inssel.brg: optimize casts of sealed types (more
20740         optimizations waiting for fixes in remoting).
20741
20742 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20743
20744         * inssel.brg (stmt): Add another dummy rule.
20745
20746         * driver.c: Fix warnings.
20747
20748         * driver.c (mono_main): If running under valgrind, instruct glib to use
20749         the system allocation functions so valgrind can track the memory
20750         allocated by the g_... functions.
20751
20752         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20753
20754         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20755
20756         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20757
20758         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20759         variables in try regions.
20760
20761         * mini.c (mini_method_compile): Don't disable optimizations on large
20762         methods when AOT compiling.
20763
20764         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20765         allocate stack slots. Not yet used.
20766
20767 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20768
20769         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20770
20771 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20772
20773         * mini-ppc.c: make the branch info relative as the code
20774         buffer can be reallocated.
20775
20776 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20777
20778         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20779         * driver.c: Removed the AOT/security restriction. Now initialize the
20780         security manager (in metadata) if --security is used.
20781         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20782         rather than the pointer to declarative security, when AOT is used.
20783
20784 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20785
20786         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20787         basic blocks, reduced intrinsic exception throwing code size.
20788
20789 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20790
20791         * driver.c (mini_usage): Reorder the usage screen.
20792
20793 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20794
20795         * mini.c (mono_resolve_patch_target): Fix warning.
20796
20797 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20798
20799         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20800         previous patch.
20801
20802         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20803
20804         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20805         breaks the amd64 build.
20806
20807         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20808         register allocation. Fixes #71454.
20809
20810         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20811
20812         * arrays.cs: Add new regression test.   
20813
20814 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20815
20816         * ssapre.c: Turned usage of snprintf to GString.
20817         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20818         (I left it on by mistake in my previous commit).
20819
20820 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20821
20822         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20823         on cond branch optimization (fixes bug# 71515).
20824
20825 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20826
20827         * abcremoval.c: Fixed bug 71062.
20828         * abcremoval.h: Likewise.
20829
20830 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20831
20832         * mini.c: Added a new functionality to optimize_branches, the removal
20833         of useless basic blocks, and fixed some problem in the removal of
20834         critical edges; some utility functions added for both purposes.
20835         * ssapre.c: Added complex expression support, and fixed bug 70637.
20836         * ssapre.h: Likewise.
20837         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20838         enabled in SSAPRE.
20839         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20840         * driver.c: Re-enabled SSAPRE.
20841
20842 2005-01-19  Martin Baulig  <martin@ximian.com>
20843
20844         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20845         the result of mono_get_method_constrained().
20846
20847 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20848
20849         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20850         manager.
20851
20852 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20853
20854         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20855         be detected.  Fixes #59296.
20856
20857 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20858
20859         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20860         which can happen. Fixes #71361.
20861
20862 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20863
20864         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20865         manager.
20866
20867 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20868
20869         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20870         appdomain-unload.exe to fail.
20871         
20872         * mini.c: Fix some memory leaks.
20873
20874 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20875
20876         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20877         Fixed bug and sped up some codepaths.
20878
20879 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20880
20881         * mini.c: Fix some memory leaks.
20882
20883         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20884         conversion.
20885
20886         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20887
20888         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20889         #71320.
20890
20891         * iltests.il: Add regression test for #71320.
20892
20893 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20894
20895         * mini.c (mono_codegen): Fix installation of profiler hooks.
20896
20897         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20898
20899 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20900
20901         * mini.h, mini.c, cfold.c: optimize access to enum
20902         readonly fields, too. Eval conditional branches if possible
20903         to perform unreachable code removal in more cases.
20904
20905 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20906
20907         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20908
20909         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20910         code manager.
20911
20912         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20913         WinXP DEP. Fixes #71244.
20914
20915 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20916
20917         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20918
20919 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20920
20921         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20922
20923 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20924
20925         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20926         changes.
20927
20928         * mini.h: Bump AOT version.
20929
20930         * mini.h (MonoCompile): Change exvar to a hash table.
20931
20932         * mini.c: Allocate a separate exvar for each handler block.
20933
20934         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20935
20936         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20937         ex var with the pending exception and only throw if the two are equal.
20938         Fixes #68552.
20939         
20940         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20941
20942         * mini-x86.c: Fix warnings.
20943
20944         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20945         used by all the ports now.
20946
20947         * aot.c: Add write-symbols and save-temps options.
20948
20949 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20950
20951         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20952
20953 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20954
20955         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20956         operations.
20957
20958         * tramp-s390.c: Check vtable slot belongs to the domain.
20959
20960         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20961         as per other platforms.
20962
20963         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20964
20965 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20966
20967         * driver.c: we don't run the Main() code in a subthread anymore.
20968
20969 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20970
20971         * mini.c: added experimental rtc support in the statistical
20972         profiler: if the user has the permission, more accurate statistics
20973         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20974         The MONO_RTC value must be restricted to what the linux rtc allows:
20975         power of two from 64 to 8192 Hz.
20976
20977 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20978
20979         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20980
20981 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20982
20983         * mini-ppc.c: better icache flush for smp.
20984
20985 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20986
20987         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20988
20989         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20990         amd64 port, not yet used.
20991
20992 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20993
20994         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20995         a struct type.
20996
20997 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20998
20999         * driver.c: Added --security option to activate the security manager.
21000         Right now this will allow code generation for declarative demands and
21001         is disabled when AOT is specified.
21002         * mini.c: Add code generation for declarative security demands.
21003         * mini.h: Add mono_use_security_manager as an extern gboolean.
21004
21005 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21006
21007         * aot.c (mono_compile_assembly): Speed up compilation a bit by
21008         emitting more dense assembly code.
21009
21010         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
21011         exception throwing stuff.
21012
21013 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21014
21015         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
21016         dead code.
21017
21018         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
21019         left in by mistake.
21020
21021         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
21022         fixed.
21023
21024         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21025
21026         * tramp-*.c: Only patch vtable slots if the object is in the current
21027         domain. Fixes appdomain-unload.exe.
21028
21029         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21030         
21031         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21032         x86 branch.
21033
21034 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21035
21036         * mini.c (reverse_branch_op): New helper function.
21037
21038         * mini.c (optimize_branches): Run the new optimization only on 
21039         platforms which support it. Also reverse all kinds of branches.
21040
21041         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21042
21043         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21044         a throw statement.
21045
21046         * mini.c (optimize_branches): Reverse not-equals branches if the false
21047         bblock is a throw. This happens a lot of time with argument checking in
21048         corlib.
21049
21050         * mini.c (mono_codegen): Add support for placing basic blocks after
21051         the function epilogue.
21052
21053         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21054         function epilogue.
21055         
21056 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21057
21058         * mini.c (setup_stat_profiler): Only set this up if the platform
21059         supports ITIMER_PROF.
21060
21061 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21062
21063         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21064         previous patch.
21065
21066         * inssel.brg: Fix a warning.
21067
21068 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21069
21070         * mini.c: added support for statistical profiler 
21071         (run with: --profile=default:stat).
21072
21073 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21074
21075         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21076
21077         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21078
21079         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21080         related to global registers from the amd64 port.
21081
21082 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21083
21084         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21085
21086         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21087         with global registers.
21088         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21089
21090         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21091
21092 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21093
21094         * debug-mini.c (encode_value): Fix off-by-one.
21095
21096         * aot.c (encode_value): Likewise.
21097
21098         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21099
21100 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21101
21102         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21103         AOT.
21104
21105         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21106         
21107         * aot.c (emit_method_info): Increase size of temp buffer.
21108
21109         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21110         the AOT case.
21111
21112 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21113
21114         * aot.c (emit_method_info): Fix build.
21115         
21116         * aot.c: Further rework of the AOT file format to reduce the size of
21117         the method info data.
21118
21119         * mini.h: Bump AOT file format version.
21120
21121 2004-12-27  Martin Baulig  <martin@ximian.com>
21122
21123         * mini.c (mini_get_method): New static method; call
21124         mono_get_method_full() and mono_get_inflated_method().
21125         (mono_method_to_ir): Use mini_get_method() instead of
21126         mono_get_method_full(). 
21127
21128 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21129
21130         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21131
21132 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21133
21134         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21135
21136         * inssel-amd64.brg: Add some optimization rules.
21137
21138 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21139
21140         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21141         standard not GC'd stuff is fine.
21142
21143 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21144
21145         * aot.c: Rework the AOT file format to get rid of most of the global
21146         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21147
21148         * mini.h: Bump AOT file format version.
21149         
21150 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21151
21152         * mini.h: Bump AOT file format version.
21153
21154         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21155         address is inside a GOT.
21156
21157         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21158
21159         * cpu-pentium.md: Increase the maximum size of some instructions which
21160         might involve a got access.
21161         
21162         * mini.c (get_method_from_ip): Another debug helper function.
21163
21164         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21165         when got var accesses are created during the decompose phase.
21166
21167         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21168
21169         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21170         argument mini_compile_method and to MonoCompile, and use this to
21171         determine whenever a given method is compiled for AOT. This allows the
21172         other methods compiled during AOT compilation to be free of AOT stuff,
21173         so the backends does not need to add special support for them by
21174         creating a fake GOT etc.
21175
21176         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21177         longer needed.
21178
21179 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21180
21181         * mini.c (mono_method_to_ir): It turns out that some of the
21182         x-appdomain wrappers are lax with types, so just ignore this for
21183         all wrappers.
21184
21185         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21186         at the vtable->klass. If it is non-shared code we can just use the
21187         vtable.
21188
21189 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21190
21191         * mini-ppc.c: access MonoDomain from tls, too.
21192
21193 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21194
21195         * declsec.c: Removed unused variable (and related warning ;-)
21196
21197 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21198
21199         * iltests.il: New test for LDELEMA on an array of ref types.
21200
21201         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21202         all ldelema's on reftypes.
21203         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21204         it was the wrong place to put it.
21205
21206         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21207         register to pop to make this cleaner, at the request of Paolo.
21208
21209 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21210
21211         * mini-ops.h (OP_GETHASHCODE): New op.
21212
21213         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21214
21215         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21216         operation.
21217
21218         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21219         by 25%.
21220         
21221         * mini-x86.c (mono_arch_output_basic_block): Rather than
21222
21223         add ebp, 4
21224
21225         Emit
21226
21227         pop edx
21228
21229         The first is 3 bytes while the second is 1. This saves 36 kb on
21230         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21231         see a small boost because of icache locality.
21232
21233         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21234
21235 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21236
21237         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21238         started code sharing with the generic code.
21239
21240 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21241
21242         * mini-ppc.c, cpu-g4.md: added code for direct access to
21243         tls data slots.
21244
21245 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21246
21247         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21248          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21249         to OP_TLS_GET.
21250
21251 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21252
21253         * declsec.c|h: Added functions to cache the declarative stack modifiers
21254         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21255         structure.
21256         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21257         created. Register internal calls for System.Security.SecurityFrame::
21258         _GetSecurityFrame and _GetSecurityStack.
21259         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21260         the definitions for the new stack walk/callback mechanism.
21261         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21262         first security frame for LinkDemands and InheritanceDemands) and
21263         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21264         from lupus.
21265         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21266         walk initialization (lupus).
21267
21268 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21269
21270         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21271         idiom.
21272         (handle_loaded_temps): Do not create a temporary variable for
21273         things that we know are temps. They will never be modified.
21274         (mono_spill_call): Set MONO_INST_IS_TEMP
21275         (mono_emulate_opcode): ditto
21276         (emit_tree): ditto
21277         (mono_method_to_ir.CEE_DUP): ditto
21278
21279 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21280
21281         * mini.c (type_to_eval_stack_type): Make this handle the void type
21282         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21283         (emit_tree): use ip_in_bb to special case some common idioms
21284         Update all callers to pass in the IP.
21285         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21286
21287         This gives us a nice 2% speedup in mcs bootstrap.
21288
21289         * mini-x86.c (peephole_pass): Peephole pass to make
21290         mov  [foo], eax
21291         push [foo]
21292
21293         into
21294
21295         mov [foo], eax
21296         push eax
21297
21298         * mini.c (ip_in_bb): new method.
21299         (mono_method_to_ir): use this method rather than doing the hash
21300         lookup ourselves.
21301
21302         * linear-scan.c (mono_linear_scan): When expiring actives, you
21303         don't need to keep around variables that expire on this
21304         instruction. This makes it so that:
21305              a = b + 1
21306         will turn into:
21307              store (ebx add (ebx, 1))
21308         which will become
21309              add ebx, 1
21310
21311 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21312
21313         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21314         combination to avoid doing two copies. Fix up problems with previous
21315         patch.
21316
21317         * mini.c: Fix 64 bit warnings.
21318
21319         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21320
21321 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21322
21323         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21324         changes from the x86 code.
21325
21326         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21327
21328 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21329
21330         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21331         throwing code to reduce its size, unify the AOT and non-aot code and 
21332         get rid of relocations in the AOT case.
21333
21334         * mini-x86.h mini.c exceptions-x86.c 
21335         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21336         raise corlib exceptions which doesn't require relocations in the 
21337         caller.
21338
21339         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21340
21341 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21342
21343         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21344         needed.
21345
21346         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21347         in the AOT case.
21348
21349 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21350
21351         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21352         with add function when used from Inc/dec atomic 
21353         functions. Re-enabled optimization on x86.
21354         * mini-ops.h: renamed atomic_add functions to
21355         allow _add to match the Interlocked::Add and
21356         _add_next to match Interlocked::Inc/Dec.
21357
21358 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21359
21360         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21361         linking of BBs to the end BB, and enabled SSAPRE also with
21362         consprop and copyprop (which was prevented by that bug).
21363
21364 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21365
21366         * mini-x86.c: disabling the Interlocked optimizing code. 
21367
21368 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21369
21370         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21371         file version check.
21372         
21373 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21374
21375         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21376         interlocked optimization due lack of support on x86, rewrote 
21377         exchange to take into account that base may be in eax.
21378         
21379         xsp works again; activated Interlocked optimizing code.
21380         
21381 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21382
21383         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21384
21385 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21386
21387         * mini-ops.h: Add new opcodes.
21388
21389         * mini.h: Add new patch types. Add got_var to MonoCompile.
21390
21391         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21392         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21393         make it work with all kinds of patchable code.
21394
21395         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21396         address of the GOT, and referencing entries in the GOT.
21397
21398         * mini.c: Add code to load the GOT address if needed by an opcode.
21399
21400         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21401         independent AOT code on the x86 using an elf-style Global Offset Table.
21402
21403 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21404
21405         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21406
21407 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21408
21409         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21410         when running xsp.
21411
21412 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21413
21414         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21415         of Interlocked:Increment/Decrement/Add as inline ops.
21416         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21417
21418 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21419
21420         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21421         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21422
21423 2004-12-12  Duncan Mak  <duncan@ximian.com>
21424
21425         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21426         again. `patch_info->table_size' is no longer valid after Zoltan's
21427         commit #37636.
21428
21429 2004-12-12  Martin Baulig  <martin@ximian.com>
21430
21431         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21432         if we are the "real" method, ie. not an inlined method inside it.
21433
21434 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21435
21436         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21437         before we look in the special fields table. This fixes
21438         ../tests/thread-static-init.cs.
21439
21440 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21441
21442         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21443         for Array get_Rank and get_Length. Fixes bug #70465.
21444
21445 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21446
21447         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21448         separate structure to reduce the size of MonoJumpInfo.
21449
21450 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21451
21452         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21453
21454 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21455
21456         * mini.c (mini_get_inst_for_method): Changed to allow ports
21457         to return a MonoInst instead of opcode 
21458         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21459         
21460         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21461         Allow ports to return a created MonoInst instead of op-code, will enable
21462         new optimizations.
21463         (renamed mini_get_opcode_for_method to better reflected the functionality)
21464
21465 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21466
21467         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21468
21469 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21470
21471         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21472         Fixes #69985.
21473
21474 2004-12-08  Martin Baulig  <martin@ximian.com>
21475
21476         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21477         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21478
21479 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21480
21481         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21482         correctly.
21483
21484         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21485         arithmetic.
21486
21487 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21488
21489         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21490
21491 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21492
21493         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21494         bug introduced by the previous patch.
21495
21496 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21497
21498         * mini-ppc.c, objectc.cs: handle large structs passed by value
21499         (fixes bug #69972).
21500
21501 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21502
21503         * mini-ppc.c: OP_ARGLIST implementation from
21504         Geoff Norton  <gnorton@customerdna.com>.
21505
21506 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21507
21508         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21509         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21510
21511 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21512
21513         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21514
21515 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21516
21517         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21518         support.
21519
21520 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21521
21522         * mini-sparc.c: Zero out localled-ed memory.
21523
21524         * iltests.il: Add tests for zeroing out localloc-ed memory.
21525
21526 2004-12-04  Martin Baulig  <martin@ximian.com>
21527
21528         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21529         mono_method_get_signature_full().       
21530
21531 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21532
21533         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21534         and some utility functions (always for SSAPRE), integrated SSAPRE.
21535         * mini.h: Likewise.
21536         * driver.c: Added ssapre option.
21537         * ssa.c: Small fix on OP_ARG handling.
21538         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21539         * Makefile.am: Likewise.
21540
21541 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21542
21543         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21544         now in the xp code.
21545
21546         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21547         icall.
21548
21549 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21550
21551         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21552         
21553         * cpu-s390.md : Increase instruction length of oparglist.
21554
21555         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21556
21557 2004-11-30  Martin Baulig  <martin@ximian.com>
21558
21559         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21560         virtual generic methods.  We call a special helper_compile_generic_method()
21561         icall to retrieve the method from the vtable, inflate and compile
21562         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21563
21564         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21565
21566 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21567
21568         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21569
21570 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21571
21572         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21573         Fixes #69929.
21574
21575 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21576
21577         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21578         platforms with PIC aot.
21579
21580 2004-11-28  Martin Baulig  <martin@ximian.com>
21581
21582         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21583         Fixes gen-112.cs.
21584
21585 2004-11-28  Martin Baulig  <martin@ximian.com>
21586
21587         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21588         the result of mono_type_get_underlying_type() to check whether
21589         we're byref.
21590
21591 2004-11-26  Martin Baulig  <martin@ximian.com>
21592
21593         * mini.c
21594         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21595         in the g_assert().
21596
21597 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21598
21599         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21600         the same way as the other arguments so they won't get clobbered.
21601
21602         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21603         calls through R11 since it is clobbered by the trampoline code.
21604
21605 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21606
21607         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21608         pick up in-tree mscorlib.dll.
21609
21610 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21611
21612         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21613
21614         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21615         runtime data/code are now stored in a table similar to the GOT in ELF. 
21616         This allows the code itself to be position independent.
21617
21618         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21619         loading changes.
21620
21621         * aot.c: Attach ELF type (object/function) directives to all global
21622         symbols.
21623
21624         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21625
21626         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21627
21628         * mini-amd64.h: Turn on PIC AOT code.
21629
21630         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21631         returning the offset within an OP_AOTCONST instruction where the GOT
21632         offset needs to be added.
21633
21634         * mini.h: Bump AOT file format version.
21635
21636 2004-11-25  Martin Baulig  <martin@ximian.com>
21637
21638         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21639         uninflated generic methods.
21640
21641 2004-11-25  Martin Baulig  <martin@ximian.com>
21642
21643         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21644
21645 2004-11-24  Martin Baulig  <martin@ximian.com>
21646
21647         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21648         original klass (this only applies for generic instances).
21649
21650 2004-11-24  Martin Baulig  <martin@ximian.com>
21651
21652         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21653         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21654         that array).
21655
21656 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21657
21658         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21659         localloc. Fixes #69678.
21660
21661         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21662         
21663 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21664
21665         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21666         used SSE registers on pinvoke calls. Fixes #69774.
21667
21668 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21669
21670         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21671         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21672
21673 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21674
21675         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21676         Refer directly to the mcs/ tree.
21677
21678 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21679
21680         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21681         Check if a trampoline for a synchronized method is required. 
21682
21683 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21684
21685         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21686         with localloc if needed. Throe arithmetric exception in
21687         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21688         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21689
21690 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21691
21692         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21693         types before switching on type.  Fixes #69622.
21694
21695 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21696
21697         * Makefile.am (check-local): New.  Integrate into 'make check'.
21698         (MCS,RUNTIME): Define using in-tree mono and mcs.
21699         (ILASM): New.
21700         (%.exe): Use $(ILASM).
21701
21702 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21703
21704         * mini-ppc.c: adjust initial prolog size (bug #69691).
21705
21706 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21707
21708         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21709         #69664.
21710
21711 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21712
21713         * Makefile.am (clean-local): Rename from 'clean'.
21714
21715 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21716
21717         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21718         to mono_arch_is_int_overflow. 
21719         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21720         SIGFPE events.
21721
21722 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21723
21724         * declsec.c|h: New files to support declarative security attributes.
21725         Added function to check if a method has (applicable) security.
21726         * mini.c|h: Add check for declarative security attributes in
21727         mono_method_check_inlining.
21728         * Makefile.am: Added declsec.c and declsec.h to the build.
21729
21730 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21731
21732         * mini.c, mini.h: update to keep dynamic code info per-domain.
21733
21734 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21735
21736         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21737         (mini_init): Get rid of it from here too.
21738
21739 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21740
21741         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21742         implemented OP_RETHROW (patch by Geoff Norton
21743         <gnorton@customerdna.com>).
21744
21745 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21746
21747         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21748         between appdomains.  Fixes appdomain-unload on PPC.
21749
21750 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21751
21752         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21753         mini-exceptions.c: handle the new wrapper types.
21754         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21755         token value as a MonoClass* when compiling a wrapper.
21756         mono_jit_create_remoting_trampoline now takes an additional
21757         MonoRemotingTarget parameter.
21758         
21759 2004-11-10  Martin Baulig  <martin@localhost>
21760
21761         * mini.c (mono_method_to_ir): Use `generic_container->context'
21762         rather than creating a new one.
21763
21764 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21765
21766         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21767
21768         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21769
21770 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21771
21772         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21773         the experimental aot cache stuff.
21774
21775 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21776
21777         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21778         mini-exceptions.c: update to exception clause structure changes.
21779
21780 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21781
21782         * exceptions-x86.c (throw_exception): Fix warnings.
21783
21784         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21785         for OP_RETHROW.
21786
21787 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21788
21789         * exceptions-sparc.c (get_throw_exception): Really fix this.
21790
21791 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21792
21793         * tramp-*.c: we no longer support icalls without wrappers, so
21794         a bit of code can be removed here
21795
21796 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21797
21798         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21799         patch.
21800
21801         * cpu-sparc.md: Add op_rethrow.
21802
21803         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21804
21805         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21806
21807         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21808         * mini-ops.h: Add OP_RETHROW.
21809
21810         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21811
21812         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21813
21814 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21815         
21816         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21817         Makes the output much easier to read
21818
21819 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21820
21821         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21822         prevents another huge leak when compiling with ssa. Secondly, the
21823         performance of doing this rather than freeing the lists is much
21824         better. GList does a lock every time you allocate a list link,
21825         so that it can use a memory pool. So, it is better to just use
21826         a memory pool of our own.
21827         
21828         * ssa.c, linear-scan.c: replace g_list_remove_link with
21829         g_list_delete.  The remove one does not free the GList, so we were
21830         leaking memory. On -O=all --compile-all with corlib, this cut down
21831         3 MB of allocations.
21832
21833 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21834
21835         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21836
21837         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21838
21839         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21840         into a new function mono_create_jit_trampoline ().
21841
21842 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21843
21844         * trace.c (get_spec): Allow tracing of classes without a namespace.
21845
21846 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21847
21848         * mini.c: Fix pointer overwrite in mini_method_compile.
21849
21850 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21851
21852         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21853         The darwin ABI needs some special handling for 1 and 2 byte structs
21854         Lets use lbz/lhz instead of lwz everywhere.
21855         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21856         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21857         Use stb/sth for the former, and put the latter always on stack instead of in
21858         argument registers.
21859
21860 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21861
21862         * trace.c (is_filenamechar): Add '_'.
21863
21864 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21865
21866         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21867
21868         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21869
21870 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21871
21872         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21873         depends on libmonogc. Fixes #68805.
21874
21875 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21876
21877         * mini.c (mono_jit_free_method): Provide extra information for
21878         this error.  Currently this leaks, but will be turned into a
21879         developer option in the future.
21880
21881 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21882
21883         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21884
21885 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21886
21887         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21888         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21889         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21890
21891 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21892
21893         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21894         trampolines for AOT code.
21895
21896 2004-10-22    <vargaz@freemail.hu>
21897
21898         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21899         constructed types. Fixes #68136.
21900
21901 2004-10-21  Martin Baulig  <martin@ximian.com>
21902
21903         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21904         if it returns true, unwind the stack to the call instruction.
21905
21906 2004-10-21    <vargaz@freemail.hu>
21907
21908         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21909
21910         * mini.h: Bump AOT version number.
21911
21912         * objects.cs: Add another test for unbox trampolines.
21913
21914         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21915         valuetype methods.
21916
21917 2004-10-20    <vargaz@freemail.hu>
21918
21919         * driver.c: Add SHARED to the set of optimizations tested.
21920
21921         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21922
21923         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21924         used by CEE_NEWARR.
21925
21926         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21927
21928 2004-10-20  Martin Baulig  <martin@ximian.com>
21929
21930         * mini-exceptions.c (mono_handle_exception): Call
21931         mono_debugger_handle_exception() to tell the debugger about
21932         catch/finally clauses.
21933
21934 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21935
21936         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21937
21938         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21939         #68447.
21940
21941 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21942
21943         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21944         methods as their native size, fixed bug #57543, #57545.
21945         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21946         This saves a temporary register and mullw call down into 1 (minor perf
21947         increase for cases like sum = sum * 5;  This use to translate into:
21948             li r11,5
21949             mullw r28,r28,r11
21950         It now translates to
21951             mulli r28,r28,5
21952
21953 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21954
21955         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21956         #68388.
21957
21958 2004-10-11  Martin Baulig  <martin@ximian.com>
21959
21960         * mini.c (mono_method_to_ir): If we're a generic method, get the
21961         MonoGenericContainer from our MonoMethodNormal and create a
21962         MonoGenericContext from it.
21963
21964 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21965
21966         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21967
21968         * basic-long.cs: Add test for checked i8->i2 cast.
21969
21970 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21971
21972         * inssel-ppc.brg: added a couple of speedup rules.
21973
21974 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21975
21976         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21977         to speed up rebuilds.
21978
21979 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21980
21981         * mini-s390.c: Minor fix to OP_OR_IMM.
21982
21983 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21984
21985         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21986         better. Fixes appdomain-unload.exe on sparc.
21987
21988 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21989
21990         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21991         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21992         see bug 67324.
21993
21994 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21995
21996         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21997
21998 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21999
22000         * mini.c: Always generate a field read/write wrapper for members
22001         of the class MarshalByRefObject since the actual instance could
22002         be a CBO.
22003
22004 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22005
22006         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
22007
22008 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22009
22010         * driver.c mini.h trace.c: Move the setting of the main assembly into
22011         a separate function called mono_trace_set_assembly () and call it after
22012         actually loading the main assembly. Fixes #66872.
22013
22014 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22015
22016         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
22017         using the code manager.
22018
22019 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22020
22021         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
22022
22023 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22024
22025         * cpu-amd64.md: Fix bug in previous patch.
22026         
22027         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22028         #66650.
22029
22030 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22031
22032         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22033         mini-exceptions.c: updates for changed stack walk interface.
22034
22035 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22036
22037         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22038
22039 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22040
22041         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22042
22043 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22044
22045         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22046         since assemblies can't be unloaded.
22047         
22048 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22049
22050         * cpu-amd64.md: Fix more instruction lengths.
22051
22052         * cpu-amd64.md: Fix lengths of some instructions.
22053
22054 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22055
22056         * inssel.brg: Make the array ldelema check aot friendly.
22057
22058 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22059
22060         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22061
22062         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22063
22064 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22065
22066         * mini-x86.c: Fix build.
22067
22068         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22069         mono_type_get_underlying_type () helper function to simplify code.
22070         
22071 2004-09-09  Martin Baulig  <martin@ximian.com>
22072
22073         * mini-amd64.c: Don't access `type->data.klass' directly, call
22074         mono_class_from_mono_type() instead since the type may be a
22075         generic instance.
22076
22077 2004-09-09  Martin Baulig  <martin@ximian.com>
22078
22079         * mini-amd64.c (get_call_info): Fix support for generic instances.
22080         (add_valuetype): Use mono_class_from_mono_type() to get the class
22081         since we can be a generic instance.
22082
22083 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22084
22085         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22086
22087 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22088
22089         * liveness.c: reset spill costs on each scan: bug 62107
22090
22091 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22092
22093         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22094         unnecessary line that doesn't compile
22095
22096 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22097
22098         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22099         trampolines, make them call an error function so people can fix their
22100         code.
22101
22102 2004-09-06  Martin Baulig  <martin@ximian.com>
22103
22104         * mini.c (mono_method_to_ir): When initializing locals, handle a
22105         generic instances like a valuetype if it's a valuetype and like a
22106         class if it's a class.
22107
22108 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22109
22110         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22111         stack. Fixes #64674.
22112
22113         * exceptions.cs: Add test for unwinding of call arguments.
22114
22115 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22116
22117         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22118         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22119         set the carry/borrow flag). The sparc and s390 implementations
22120         can now use optimized versions (and simplify the code). ppc bugfixes.
22121
22122 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22123
22124         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22125
22126 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22127
22128         * inssel-amd64.brg: Remove leftover 32 bit rule.
22129
22130         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22131
22132 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22133
22134         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22135         mono_arch_find_jit_info functions into a new function. Fix a memory
22136         leak.
22137
22138         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22139         refactored code.
22140         
22141 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22142
22143         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22144         as well.
22145         
22146         * exceptions.cs: Add array size tests.
22147
22148         * mini.c: Allocate a separate icall wrapper for each arity of 
22149         mono_array_new_va. Fixes #59509.
22150
22151         * exceptions.cs: Add testcase for 64578.
22152
22153         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22154
22155         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22156         
22157 2004-09-02  Martin Baulig  <martin@ximian.com>
22158
22159         * mini.c (mono_method_to_ir): When initializing the locals, call
22160         handle_initobj() on the generic instance itself, not its
22161         underlying type.
22162
22163 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22164
22165         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22166         MonoJitInfo for dynamic methods.
22167
22168         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22169
22170         * mini.c: Add support for freeing JIT data for dynamic methods.
22171         
22172 2004-09-01  Martin Baulig  <martin@ximian.com>
22173
22174         * mini-x86.c (is_regsize_var): Added support for generic
22175         instances.
22176         (mono_arch_emit_prolog): Make this compile again, use
22177         `x86_push_imm_template (code)'.
22178
22179 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22180
22181         * mini-x86.c: make all push_imm instructions that get
22182         patched always emit the long form
22183
22184 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22185
22186         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22187         in a per-domain hash.
22188
22189         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22190         types.
22191
22192 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22193
22194         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22195         work.
22196         
22197         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22198         work.
22199
22200         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22201         Beginnings of SSE2 support.
22202
22203         * exceptions.cs: Add more tests for checked int<->uint casts.
22204
22205 2004-08-28  Martin Baulig  <martin@ximian.com>
22206
22207         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22208         generic instances.
22209
22210         * mini.c
22211         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22212         Handle generic instances recursively.
22213
22214 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22215
22216         * iltests.il: test for conv.u8 on a constant
22217
22218 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22219
22220         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22221         LCONV_x4 (shrun_32 (membase)).
22222
22223 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22224
22225         * inssel-x86.brg: c&p rules for push/setret of long
22226
22227 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22228
22229         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22230         compare (regvar, base)
22231
22232         * inssel-x86.brg: more burg love
22233
22234         * inssel.brg: more cleanup
22235
22236         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22237
22238 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22239
22240         * basic-long.cs, basic-calls.cs: new tests for optimization.
22241
22242 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22243
22244         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22245         patch.
22246
22247 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22248
22249         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22250         
22251 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22252
22253         * inssel.brg (mini_emit_memcpy): use 
22254         NO_UNALIGNED_ACCESS to disable memcpy optimization
22255
22256 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22257
22258         * mini-amd64.c: Handle generic types in various places.
22259
22260         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22261
22262 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22263
22264         * mini.c (handle_box): Fix warning.
22265
22266         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22267
22268         * mini-amd64.h: Enable the emit_state optimization.
22269
22270         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22271
22272         * mini-amd64.c: Add some new 64 bit peephole opts.
22273
22274         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22275
22276         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22277
22278         * mini-amd64.c: Register allocator fixes.
22279
22280         * mini.c: Add an optimization to emit_state to avoid allocation of new
22281         registers on some platforms.
22282
22283 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22284
22285         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22286
22287         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22288         allocation. Fixes #63085.
22289
22290         * basic-long.cs: Add new regression test.
22291
22292         * mini-amd64.c: Register allocator improvements.
22293
22294 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22295
22296         * mini-amd64.c (read_tls_offset_from_method): Add another code
22297         sequence.
22298
22299         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22300         instruction sequence for nullifying class init trampolines.
22301
22302         * objects.cs: Add new regalloc test.
22303
22304         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22305
22306 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22307
22308         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22309         
22310         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22311         arguments.
22312
22313         * driver.c: Fix profiling after TLS changes.
22314         
22315         * driver.c (mono_main): Set mono_stats.enabled if needed.
22316
22317         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22318         CEE_BOX.
22319
22320 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22321
22322         * mini-x86.c: use a 1 op rather than a 2 op tls access
22323         instruction -> faster.
22324
22325 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22326
22327         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22328         x86 backend.
22329
22330 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22331
22332         * exceptions-sparc.c (throw_exception): fix typo
22333
22334 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22335
22336         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22337         set tree->dreg correctly with tls. Allow any
22338         register to be used.
22339
22340         * mini-x86.c (read_tls_offset_from_method): add new code
22341         generation pattern seen with GCC.
22342
22343
22344 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22345
22346         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22347         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22348         exceptions-sparc.c: fix some performance issues in exception
22349         handling and setting of the stack trace for exceptions that were
22350         already thrown.
22351
22352 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22353
22354         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22355         x86 backend.
22356         
22357         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22358         registers.
22359
22360 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22361
22362         This patch inlines tls access, when possible.
22363         
22364         * mini.h: new arch functions for TLS intrinsics.
22365         All platforms updated with a stub.
22366
22367         * mini.c: use the new intrinsics
22368
22369         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22370         arch specific intrinsic for tls variables
22371
22372 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22373
22374         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22375         under windows.
22376
22377 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22378
22379         * mini.c: thread local allocation
22380
22381 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22382
22383         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22384
22385         * Makefile.am: Link against the static version of libmonogc.
22386         
22387         * Makefile.am: Link the static versions of the convenience libraries
22388         into the mono executable.
22389
22390         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22391
22392 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22393
22394         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22395         on integer overflow.
22396
22397         * mini-amd64.c: Reorganize function call code.
22398
22399         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22400
22401 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22402
22403         * inssel-x86.brg: use xor eax,eax.
22404         
22405         * basic.cs: new tests
22406
22407 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22408
22409         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22410         in exception throwing code.
22411         
22412 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22413
22414         * inssel-x86.brg: use xor esi,esi.
22415
22416 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22417
22418         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22419         can trace methods compiled during mini_init () too.
22420
22421         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22422         CEE_CONV_U4.
22423
22424 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22425
22426         * Makefile.am: static link on x86 (r=zoltan)
22427
22428 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22429
22430         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22431         code since it causes some programs to fail.
22432
22433 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22434
22435         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22436
22437 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22438
22439         * mini.c: ovfops_op_map - add STACK_OBJ case for
22440         CONV_I 
22441         * basic.cs: add test_0_pin_string as test
22442         case for above.
22443
22444 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22445
22446         * Makefile.am: build C# if srcdir != builddir
22447
22448 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22449
22450         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22451         fall-through blocks.
22452
22453 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22454
22455         * driver.c: enable loop by default again and include abcrem in -O=all.
22456
22457 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22458
22459         * iltests.il: Add some localloc tests.
22460
22461         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22462
22463         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22464         Fixes #62574.
22465
22466         * inssel-amd64.brg: Add some optimizations.
22467
22468         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22469         for gcc-3.4.
22470
22471         * Makefile.am: Statically link mono against libmono on AMD64.
22472         
22473         * mini-amd64.c inssel-amd64.brg: Optimizations.
22474
22475 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22476
22477         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22478
22479         * tramp-amd64.c: Patch calling code in trampolines.
22480
22481 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22482
22483         * mini-amd64.c: pinvoke struct passing fixes.
22484
22485 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22486
22487         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22488         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22489
22490 2004-08-05  Duncan Mak  <duncan@ximian.com>
22491
22492         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22493         CEE_LDELEM_ANY.
22494
22495 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22496
22497         * mini-amd64.c (emit_move_return_value): Move return value for normal
22498         calls too.
22499
22500 2004-08-05  Martin Baulig  <martin@ximian.com>
22501
22502         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22503         `type->type'; just modify `type' itself when dealing with enums
22504         and generic instances.
22505         (check_call_signature): Make `simple_type' a `MonoType *'.
22506
22507 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22508
22509         * mini.c: Use OP_PADD to add offsets to addresses.
22510
22511         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22512
22513 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22514
22515         * mini-sparc.c (mono_arch_emit_epilog): fix check
22516         for folding last op into restore instruction
22517
22518 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22519
22520         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22521         helper methods using the code manager.
22522         
22523         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22524
22525         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22526
22527 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22528         
22529         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22530           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22531
22532         * mini-s390.c: fix tail processing
22533
22534 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22535
22536         * mini-ppc.c: mul.ovf.un exception name fix.
22537
22538 2004-08-03  Martin Baulig  <martin@ximian.com>
22539
22540         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22541         instances; before jumping to `handle_enum', also modify `ptype'.
22542
22543 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22544
22545         * cpu-sparc.md: fcall maximal length too small.
22546
22547 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22548
22549         * mini-amd64.c mini.h: Add initial support for passing/returning 
22550         structures to/from pinvoked methods.
22551
22552 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22553
22554         * mini-ppc.c: reg allocator fix.
22555
22556 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22557
22558         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22559
22560         * inssel.brg: Optimize memset on 64 bit machines.
22561
22562         * mini-amd64.c: Fix some vararg cases.
22563
22564 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22565
22566         * mini-s390.c: Corrected macro in emit_float_to_int
22567
22568         * s390-abi.cs: Tests to exercise the s390 ABI
22569
22570 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22571
22572         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22573         caller saved regs.
22574
22575         * basic.cs: Add a test for add.ovf.un.
22576
22577 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22578
22579         * mini-sparc.c: add case for OP_IDIV_UN
22580
22581 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22582
22583         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22584         
22585         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22586
22587 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22588
22589         * basic.cs: regression tests.
22590
22591         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22592         regressions.
22593
22594 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22595
22596         * basic.cs: Add a new test.
22597
22598         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22599         and AOT. Various fixes and optimizations.
22600
22601         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22602
22603 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22604
22605         * mini-ppc.c: make sure temp regs are not used for global reg
22606         allocation.
22607
22608 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22609
22610         * cpu-sparc.md: conv_i8 fix for 64bits
22611
22612         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22613
22614 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22615         
22616         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22617         add opcode for cmp BYTE PTR [eax], imm.
22618
22619         * inssel.brg: Make memcpy and memset takes bases.
22620
22621 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22622
22623         * *-amd64.*: More AMD64 work.
22624         
22625 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22626
22627         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22628         add a compare-not-equal opcode.
22629         
22630 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22631
22632         * mini.c: Use mono_init_from_assembly instead of mono_init.
22633         
22634 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22635
22636         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22637
22638         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22639
22640         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22641
22642         * inssel.brg: 64 bit fixes.
22643
22644         * mini.h (MonoCallInst): Add some AMD64 specific data.
22645
22646         * mini.h: Add some OP_P opcodes.
22647
22648 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22649
22650         * basic.cs: tests for 61797 and 61740
22651
22652 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22653
22654         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22655         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22656
22657 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22658
22659         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22660
22661         * *-amd64*.*: Ongoing AMD64 work.
22662
22663 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22664
22665         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22666
22667         * *-amd64*: Ongoing AMD64 work.
22668
22669         * mini-arch.h: Add AMD64 support.
22670
22671         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22672
22673         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22674
22675         * mini-ops.h: Add new opcodes.
22676
22677         * Makefile.am: Add AMD64 support.
22678
22679         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22680         rules into the inssel-long*.brg files.
22681
22682         * *-amd64.*: Add beginnings of AMD64 backend.
22683
22684 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22685
22686         * mini.c (print_dfn): commenting out the code that prints
22687         the cil. With -O=deadce, this makes -v -v crash.
22688         
22689         * cpu-pentium.md: make checkthis have a length of 2
22690
22691 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22692
22693         * mini-sparc.h: fix implementations of __builtin
22694         functions for Sun compiler for V9.
22695
22696 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22697
22698         * mini.c: use the new stelem.ref wrapper
22699         * exceptions.cs, arrays.cs: new stelem.ref tests
22700
22701 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22702
22703         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22704         new XSP should work with these changes).
22705
22706 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22707         
22708         * inssel-{long32,x86,}.brg: trivial optimizations.
22709         
22710 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22711
22712         * mini.c: load value when emitting box operation in
22713         constrained calls.
22714
22715 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22716
22717         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22718         is one byte shorter than cmp DWORD PTR [eax], 0.
22719
22720 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22721
22722         * inssel-ppc.brg: arguments on the stack are always
22723         relative to the stack pointer (spotted by Neale Ferguson).
22724
22725 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22726
22727         * exceptions-x86.c: delay appending the method name to the trace until
22728         after mono_jit_info_table_find is called, as this gets the real
22729         MonoMethod.
22730
22731 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22732
22733         * aot.c: register roots
22734
22735 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22736
22737         * aot.c : I could just use PLATFORM_WIN32 flag.
22738
22739 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22740
22741         * aot.c : Reverting the previous fix. This time it broke linux build.
22742
22743 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22744
22745         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22746
22747 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22748
22749         * mini.c (handle_stack_args): Remove some more debugging code.
22750         
22751         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22752
22753         * driver.c mini.h aot.c: Allow additional options to be specified with
22754         --aot and pass them to mono_compile_assembly.
22755
22756         * aot.c: Add experimental code to AOT compile all loaded assemblies
22757         on demand and save the code into a cache in the filesystem.
22758
22759         * aot.c: Add support for more wrapper methods.
22760         
22761         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22762         58863.
22763
22764         * cpu-*.md: Remove removed opcodes.
22765
22766         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22767         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22768         related icalls to marshal.c.
22769
22770 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22771
22772         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22773
22774         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22775
22776         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22777
22778 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22779         * liveness.c: If liveness is recomputated we need to reset the information
22780         for each variable. This way, if the liveness range has been narrowed
22781         by optimizations that happened after the last computation, we can return
22782         a smaller range.
22783         
22784         For example, if you have
22785         
22786         {
22787                 int i = 0;
22788                 
22789                 // Tons of code that does not affect i
22790                 
22791                 i = foo ();
22792                 ...
22793         }
22794         
22795         i = 0 is dead code and will be removed by SSA. However, when
22796         linear scan gets to the code, i will still appear to be live
22797         throughout the entire block. This prevents good register allocation.
22798
22799 2004-07-06  Martin Baulig  <martin@ximian.com>
22800
22801         * debug-mini.c (mono_debug_init_method): Allow
22802         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22803         (mono_debug_add_icall_wrapper): New method.
22804
22805         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22806
22807 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22808
22809         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22810         optimization.
22811
22812 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22813
22814         * aot.c (mono_aot_load_method): Fix loading of debug info.
22815
22816 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22817
22818         * aot.c: Add logging support.
22819
22820 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22821
22822         * mini.h: Add prototype for mono_print_method_from_ip.
22823
22824         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22825
22826         * inssel.brg: 64 bit fixes.
22827
22828         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22829         inssel-long32.brg.
22830
22831         * Makefile.am: Add SPARC64 support.
22832
22833 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22834
22835         * aot.c: Fix alignment problems on 32 bit platforms.
22836
22837 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22838
22839         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22840         SPARC64.
22841
22842         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22843         problems.
22844
22845         * mini.h: Bump AOT file version. Some 64 bit fixes.
22846
22847 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22848
22849         * inssel-sparc.brg: Add new rule to avoid register moves.
22850
22851         * inssel.brg: Add ldind_to_load_membase helper function.
22852
22853 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22854
22855         * mini.c: OffsetToStringData intrinsic.
22856         
22857 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22858
22859         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22860
22861         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22862         regression tests.
22863
22864         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22865 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22866
22867         * mini.c: reinstated mono_compile_get_interface_var()
22868         on x86, too, since the change breaks the Gtk# build there as well.
22869
22870 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22871
22872         * driver.c: remove loop from the default optimizations: it seems to
22873         interact badly with some of the other options (see bug #60613).
22874
22875 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22876
22877         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22878         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22879
22880 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22881
22882         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22883         vararg-using methods.
22884
22885 2004-06-21  Martin Baulig  <martin@ximian.com>
22886
22887         * mini/mini-exceptions.c
22888         (mono_handle_exception): Added `gpointer original_ip' argument.
22889         After calling mono_unhandled_exception(), call
22890         mono_debugger_unhandled_exception() and if that returns true,
22891         restore the context and return.
22892
22893 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22894
22895         * mini-ppc.c: prefer the use of relative branches so
22896         they won't need to be patched in aot code (patch from Patrick Beard).
22897
22898 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22899
22900         * aot.c: patch from Patrick Beard to make the output assembly
22901         more correct for the MacOSX assembler. Small tweak to
22902         generate sane images on Linux/PPC, too.
22903
22904 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22905
22906         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22907         case until bug #59509 is fixed (shows up in #60332).
22908
22909 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22910
22911         * mini.c: make sure the needed wrappers are compiled, too, with
22912         precomp.
22913
22914 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22915
22916         * driver.c: remove NPTL reference in --version output.
22917
22918 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22919
22920         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22921         generate valid assembly for the Mach-O assembler.
22922
22923 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22924
22925         * driver.c: don't include abcrem in the all optimization specifier
22926         since it slows down jit compilation too much for now.
22927
22928 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22929
22930         * mini.c: use BIGMUL only if both operands have the same signage.
22931         * iltests.il: Test for bug 60056. (errors related to signage in
22932         BIGMUL).
22933
22934         r=lupus.
22935
22936 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22937
22938         * mini.c, aot.c: memory leak fixes.
22939
22940 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22941
22942         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22943
22944 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22945
22946         * Makefile.am: remove the -static hack completely, it links in
22947         statically glib as well.
22948
22949 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22950
22951         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22952         * exceptions.cs: make it compile with new mcs/csc.
22953
22954 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22955         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22956         and added relevant test case.
22957
22958 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22959
22960         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22961         regressions in gtk-sharp.
22962
22963 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22964
22965         * exceptions.cs: New regression tests.
22966
22967         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22968
22969 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22970
22971         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22972
22973 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22974
22975         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22976
22977         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22978
22979 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22980
22981         * mini.c (mono_jit_runtime_invoke): Init class in this
22982         method instead of trusting mono_jit_compile_method to
22983         do the work (because wrappers can be in object class)
22984
22985 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22986
22987         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22988
22989         * basic-long.cs: New regression test.
22990
22991 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22992
22993         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22994         and div/rem checks.
22995
22996 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22997
22998         * Makefile.am: fix miguel's change to build mono statically against
22999         libmono (track build dependencies).
23000
23001 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23002
23003         * cfold.c: Some glib versions do not have G_MININT32.
23004
23005 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
23006
23007         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
23008         with precision of tan, atan, sin and cos, and implemented related
23009         regressions tests (fixes bug 54467, but one new problem appeared and
23010         is not fixed yet).
23011
23012 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23013
23014         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
23015
23016         * exceptions.cs: Add test for constant folding && division by zero.
23017
23018         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
23019         since driver.c is in libmono too, so the optimization was useless.
23020
23021         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
23022         variable to driver.c so the compiler can emit more efficient code to
23023         access them.
23024
23025 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23026
23027         * Makefile.am: don't distribute generated inssel.[ch] files.
23028
23029 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23030
23031         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23032         into the default appdomain. Fixes #58707.
23033
23034         * jit-icalls.c: Remove the broken approximation for truncl, doing
23035         no conversion is better.
23036
23037         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23038         Fixes #58863.
23039
23040 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23041
23042         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23043         of the mcrxr instruction which is not available on some processors
23044         even if it's documented to be. Implement add and sub overflow correctly
23045         (still not complete for long unsigned). Speed up icalls a bit.
23046
23047 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23048
23049         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23050         we run .cctor in the current domain instead of target_domain.
23051         
23052         Fixes bug #58558, .cctor not being called in -O=shared.
23053
23054 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23055
23056         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23057
23058 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23059
23060         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23061         which can be done with an imm8, do it that way.
23062         (mono_arch_output_basic_block): ditto for a jmp
23063         (mono_arch_emit_prolog): Computate maximum offset of a label.
23064
23065 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23066
23067         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23068         now tries to allocate prefered physical reg's for virtual
23069         regs. This reduces the number of emited spills/loads with
23070         20-30% on our core assemblies.
23071
23072 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23073
23074         * jit-icalls.c: truncl() is not needed and trunc() is
23075         the correct thing to do anyway (bug #58287).
23076
23077 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23078
23079         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23080         if available.
23081
23082 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23083
23084         * driver.c: enable loop optimizations by default.
23085
23086 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23087
23088         * mini-x86.c: fix calc of max loop size when aligning loops start.
23089
23090 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23091
23092         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23093         the stack.
23094
23095 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23096
23097         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23098         should set carry.
23099
23100         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23101
23102         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23103         
23104         * mini.c (inline_method): Allways inline some wrappers even if the cost
23105         is too large. Fixes #58785.
23106
23107         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23108         
23109 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23110
23111         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23112         (crichton@gimp.org). Beginning of support for sparc/linux.
23113
23114         * mini-sparc.c: Optimize retrieval of LMF address.
23115
23116 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23117
23118         * exceptions-ppc.c:  handle alloca in methods with clauses.
23119
23120 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23121
23122         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23123
23124 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23125
23126         * mini.c: Delegate most of the abort signal work to 
23127           mono_thread_request_interruption, which also handles Stop and Suspend
23128           states.
23129
23130 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23131
23132         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23133         supports the save/restore lmf opcodes.
23134
23135 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23136
23137         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23138         by gcc-3.4 as well.
23139
23140         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23141
23142 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23143
23144         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23145         methods which contain array accesses.
23146
23147         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23148         boundaries. Fixes #58537.
23149
23150         * iltests.il: Add regression test for #58537.
23151
23152 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23153
23154         * mini-x86.c (mono_arch_local_regalloc): Last part of
23155         fix for bug #58633 (releasing register to early).
23156
23157 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23158
23159         * basic-long.cs: Add new regression test.
23160
23161 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23162
23163         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23164         register too early on the chain.
23165
23166 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23167
23168         * mini.c (create_helper_signature): Use a helper function to reduce
23169         the code which needs to be written. Also set the calling convention of
23170         icalls on windows. Fixes #57840.
23171
23172 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23173
23174         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23175         exceptions-ppc.c: added helper function to get the instruction address
23176         from a signal handler context.
23177
23178 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23179
23180         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23181         from gonzalo.
23182
23183 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23184
23185         * helpers.c: Add new env variable to pass args to objdump.
23186         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23187
23188 2004-05-17  Radek Doulik  <rodo@ximian.com>
23189
23190         * Makefile.am (common_sources): added abcremoval.h so it get
23191         disted and daily mono packages on go-mono.com will build again
23192
23193 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23194
23195         * abcremoval.c: Fixed coding style, added copyright header.
23196
23197         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23198
23199         * mini.h: Added prototype for abc removal main function.
23200
23201         * build_relations_propagation_table.pl: Added copyright header.
23202
23203 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23204
23205         * basic-long.cs: reg test for complex ceq_long bug.
23206
23207 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23208
23209         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23210         reg in long and clob case (bug #58343). Fixed/added comments.
23211
23212 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23213
23214         * mini.c (mono_jit_runtime_invoke): Follow new convention
23215         of calling the invoke method with an function pointer.
23216
23217 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23218
23219         * ChangeLog: Fix author of memory leak patch.
23220
23221 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23222
23223         * Makefile.am: fix make dist as well...
23224
23225
23226 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23227
23228         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23229         on archs where pointers are 4 bytes long.
23230
23231         * Makefile.am: Added abcremoval.c source file.
23232
23233         * abcremoval.c: Added abcremoval.c.
23234
23235         * abcremoval.h: Added abcremoval.h.
23236
23237         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23238
23239         * inssel.brg: Enabled bounds check removal.
23240
23241         * mini.c: Added support for abcrem optimization.
23242
23243         * mini.h: Added abcrem optimization label.
23244
23245         * driver.c: Added support for abcrem optimization.
23246
23247         * propagated_relations_table.def: Added propagated_relations_table.def.
23248
23249 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23250
23251         * mini.c, cfold.c: fix style.
23252
23253 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23254
23255         * mini.c: handle issue with the low-level implementation of
23256         some long opcodes (bug #54209).
23257
23258 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23259
23260         * basic.cs: test for my new cmov stuff.
23261
23262 2004-05-13      Patrik Torstensson
23263
23264         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23265         opt and added peephole documentation.
23266
23267 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23268
23269         * tramp-ppc.c: rewrote the generic trampoline code.
23270
23271 2004-05-11      Patrik Torstensson
23272
23273         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23274
23275 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23276
23277         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23278
23279         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23280         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23281
23282         * mini.c: Add new icalls for AsAny marshalling.
23283
23284 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23285
23286         * tramp-ppc.c, mini-ppc.c: more cleanups.
23287
23288 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23289
23290         * mini.c: no warnings.
23291
23292 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23293
23294         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23295
23296 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23297
23298         * mini.c: In the thread abort signal handler, if the thread is in the
23299         process of being stoped, don't throw the Abort exception, just stop the
23300         thread.
23301
23302 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23303
23304         * tramp-ppc.c: removed old code.
23305
23306 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23307
23308         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23309         do some simple speed optimizations on ppc.
23310
23311 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23312
23313         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23314         and large offsets in load/store.
23315
23316 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23317
23318         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23319         it causes regressions.
23320
23321 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23322
23323         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23324         support.
23325
23326 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23327
23328         * jit-icalls.c: remove warnings.
23329         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23330         speedups for unsafe code.
23331
23332 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23333
23334         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23335
23336 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23337
23338         * basic-calls.cs: Add new regression test.
23339
23340         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23341         more portable.
23342
23343         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23344
23345         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23346         is no longer used.
23347
23348 2004-05-06      Patrik Torstensson
23349
23350         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23351         long reg allocation in any reg (not only eax:edx) and implemented 
23352         long shl/shr ops in asm instead of helpers.
23353
23354 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23355
23356         * mini-sparc.h: Fix warnings.
23357
23358         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23359         stack.
23360
23361         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23362         separate statement for clarity.
23363
23364         * mini-sparc.c: Update status.
23365
23366 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23367
23368         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23369         here.
23370
23371 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23372
23373         * inssel-ppc.brg: another small pre-release workaround:
23374         we don't do overflow detection for long_sub_un.
23375
23376 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23377
23378         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23379         (also works around a weird ppc bug: 57957).
23380
23381 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23382
23383         * tramp-ppc.c: trampoline fixes.
23384
23385 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23386
23387         * mini-ppc.c: fixed typos.
23388
23389 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23390
23391         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23392         at the top of the stack. Fixed typos. Use a frame registers
23393         for all the methods with exception clauses.
23394
23395 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23396
23397         * exceptions-ppc.c: restore fp registers.
23398
23399 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23400
23401         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23402         order from the stack top (moved the stack room to save the
23403         return value for trace after the param area). Fixed corruption
23404         in restoring registers on unwind.
23405
23406 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23407
23408         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23409
23410 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23411
23412         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23413         and prolog/epilog for methods that use it. Allow
23414         enough param area room for varargs methods. Fix miguel's
23415         breakage in exception handling.
23416
23417 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23418
23419         * Makefile.am: run genmdesc only on current arch.
23420
23421 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23422
23423         * exceptions-x86.c:
23424         * mini-x86.h: fix the build on windows.
23425
23426 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23427
23428         * 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.
23429
23430         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23431
23432         * mini-exceptions.c: New file.
23433         
23434         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23435         Move some parts of the x86 exception handling code to an 
23436         arch-independent file so it can be shared with other ports.
23437
23438 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23439
23440         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23441
23442 2004-04-26  David Waite  <mass@akuma.org>
23443
23444         * driver.c: remove comma from end of enumeration declaration
23445
23446 2004-04-26  Jackson Harper  <jackson@ximian.com>
23447
23448         * driver.c: parse config file before loading first assembly. This
23449         allows the user gac to be enabled/disabled. 
23450         
23451 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23452
23453         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23454         simpler mechanism: we do not care what is encoded initially
23455         (branch absolute or relative), we care about the code and its
23456         target.  I kept the old code for reference for now.
23457
23458         The new code tries first to determine if the jump is anywhere in
23459         the -/+32 absolute meg range, if it succeeds, it encodes using the
23460         absolute branch;  If not, it tried to find something in the
23461         relative range, if not, it uses the handle_thunk code. 
23462
23463 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23464
23465         * exceptions-ppc.c: use the correct ip register on macosx.
23466
23467 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23468
23469         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23470
23471 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23472
23473         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23474         Raise exception on integer divide by zero by hand since the hw
23475         doesn't support it. Handle NaNs in FP compares.
23476
23477 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23478
23479         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23480         code reducing duplication between the platforms and enabled
23481         signal exception handling (on linux for now).
23482
23483 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23484
23485         * exceptions-ppc.c: more macosx support.
23486
23487 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23488
23489         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23490
23491 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23492
23493         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23494
23495 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23496
23497         * iltests.il: more tests.
23498
23499 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23500
23501         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23502         vars as well.
23503
23504 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23505
23506         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23507
23508 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23509
23510         * liveness.c: Mark variables as volatile in all basic blocks reachable
23511         from exception clauses.
23512
23513 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23514
23515         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23516         inlining.
23517
23518 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23519
23520         * iltests.il, basic.cs: more tests for regalloc.
23521
23522 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23523
23524         * iltests.il: Some tests for register allocation modifications
23525         I have locally.
23526
23527 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23528
23529         * exceptions.cs: Add regression test for bug #56782.
23530
23531         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23532         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23533         the beauty of fixing the same thing in 5 different files...
23534
23535 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23536
23537         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23538         methods.
23539
23540 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23541
23542         * mini.c: Add support for STRWLPARRAY marshalling convention.
23543
23544 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23545
23546         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23547         to init the context to setup the regs pointer).
23548
23549 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23550
23551         * exceptions-ppc.c: more exceptions work.
23552
23553 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23554
23555         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23556         not allowed.
23557
23558 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23559
23560         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23561         can use the memory directly.
23562
23563         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23564
23565         add x86_add_membase, x86_sub_membase, x86_mul_membase
23566
23567 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23568
23569         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23570         GENERAL_REGS they were also hardcoded for all PPC ports.
23571
23572         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23573
23574         Remove hard-coded limit for floating point registers, use
23575         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23576
23577         Notice that in MacOS X calling conventions you can fit a lot more
23578         floating point values in registers, so I should update the PInvoke
23579         test to excercise the passing of floating point values on the
23580         stack (currently broken).
23581         
23582 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23583
23584         * tramp-ppc.c (create_trampoline_code): Added
23585         JUMP_TRAMPOLINE_SIZE. 
23586         (ppc_magic_trampoline): Follow the pattern from
23587         x86_magic_trampoline: if code is set to zero, return. 
23588         (create_trampoline_code): Always pass MonoMethod to the jump
23589         trampoline, before it was passing a null.
23590         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23591         share the code with mono_arch_create_jit_trampoline. 
23592
23593         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23594         implemented.
23595         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23596         implemented.  
23597
23598         * cpu-g4.md: Added length for jmp instruction, the worst case
23599         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23600         for save_lmf).
23601
23602 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23603
23604         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23605
23606 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23607
23608         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23609         before each IL instruction.
23610
23611         * mini.c (CEE_BOX): Fix warnings.
23612
23613 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23614
23615         * mini.c: removed a few unused vars and extra whitespace.
23616
23617 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23618
23619         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23620         checks.
23621         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23622         index.
23623         (OP_GETCHR): use the above
23624         (CEE_LDELEMA): use the above.
23625
23626         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23627         version of the generic impl.
23628         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23629         (CEE_LDELEMA): use the above.
23630
23631 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23632
23633         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23634         Fixes #56317.
23635
23636         * iltests.il: Added new regression test for #56317.
23637
23638 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23639
23640         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23641         under NetBSD. Fixes #56450.
23642
23643         * liveness.c (update_gen_kill_set): Fix previous patch.
23644
23645 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23646
23647         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23648
23649 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23650
23651         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23652         ldsfld and ldsflda.
23653
23654         * inssel-sparc.brg: Add more optimizations.
23655
23656         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23657
23658 2004-04-01  Martin Baulig  <martin@ximian.com>
23659
23660         * mini.c (handle_box): New static function; moved the
23661         implementation of CEE_BOX here.
23662         (mono_method_to_ir): Added `constrained_call' variable.
23663         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23664         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23665         mono_method_get_constrained() to get the method.
23666
23667 2004-04-01  Martin Baulig  <martin@ximian.com>
23668
23669         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23670         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23671         (mono_method_to_ir): We don't need these macros anymore since
23672         mono_class_get_full() already takes care of it. 
23673
23674 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23675
23676         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23677         use @function (as doesn't accept #function here) and check the return
23678         value of system and stop if fails.
23679
23680 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23681
23682         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23683
23684 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23685
23686         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23687
23688         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23689
23690         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23691         #56223.
23692
23693         * basic-long.cs: Add test for negation of Int64.MinValue.
23694
23695 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23696
23697         * mini-sparc.c: Update status.
23698
23699         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23700
23701         * exceptions-sparc.c: Fix return value in filters.
23702
23703         * inssel-sparc.brg: Fix register allocation in some rules.
23704
23705 2004-03-28  Martin Baulig  <martin@ximian.com>
23706
23707         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23708         if neccessary.  
23709
23710 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23711
23712         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23713         
23714         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23715         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23716         remove unused conv_u4 opcode.
23717
23718         * mini-x86.c: Remove valgrind workaround since it slows down things
23719         even when mono is not run under valgrind.
23720
23721 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23722
23723         * mini-sparc.c: Update status.
23724
23725         * inssel-sparc.brg: Add some optimizations.
23726
23727         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23728         future delay slot filling. Add support for varargs, tail calls and JMP.
23729
23730         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23731         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23732
23733         * inssel.brg: Fix register allocation in OP_ARGLIST.
23734
23735         * inssel.brg: Fix warnings.
23736
23737 2004-03-25  Martin Baulig  <martin@ximian.com>
23738
23739         * mini.c (inflate_generic_field): Removed.
23740         (mini_get_method): Removed, use mono_get_method_full(),
23741         (mini_get_class): Removed, use mono_class_get_full().
23742         (mono_method_to_ir): Pass our generic context to
23743         mono_field_from_token().        
23744
23745 2004-03-25  Martin Baulig  <martin@ximian.com>
23746
23747         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23748         of a `MonoMethod *'.
23749         (mini_get_method): Take a `MonoGenericContext *' instead
23750         of a `MonoMethod *'.
23751         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23752         a new local variable called `generic_context' which holds the
23753         current `MonoGenericContext *'; use it to lookup things.
23754
23755 2004-03-24  Martin Baulig  <martin@ximian.com>
23756
23757         * mini.c (mini_get_class): New static method; if we're inside a
23758         generic instance, inflate the class if neccessary.
23759         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23760
23761 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23762
23763         * iltests.il: New regression test for #55976.
23764
23765         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23766         #55976.
23767
23768 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23769
23770         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23771         output.
23772
23773 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23774
23775         * liveness.c: Consider SSA stores as well as loads when making vars
23776         volatile.
23777
23778         * exceptions.cs: New regression tests for register allocation.
23779         
23780 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23781
23782         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23783         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23784           domain lock only to protect puntual access to data structures.
23785           Added access lock for sighash, jit_icall_hash_name, 
23786           jit_icall_hash_addr and domain->code_mp.
23787
23788 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23789
23790         * driver.c: Print SIGSEGV handling method.
23791
23792         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23793
23794         * mini.c (setup_jit_tls_data): Handle case when this is called
23795         multiple times for a thread.
23796
23797         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23798         is different from fbxx_un. Fixes #54303. Also use constants instead of
23799         magic numbers in a lot of places.
23800
23801 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23802
23803         * exceptions.cs: Fix cctor test when --regression is used.
23804
23805 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23806
23807         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23808         for Linux/ppc.
23809
23810 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23811
23812         * inssel-ppc.brg: fixed register assignments for some rules.
23813
23814 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23815
23816         * exceptions.cs: Add test for exceptions in static constructors.
23817
23818         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23819         static constructors outside the domain lock. Fixes #55720.
23820
23821 2004-03-17  Martin Baulig  <martin@ximian.com>
23822
23823         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23824         (inflate_generic_field): Take the `MonoMethod *' instead of the
23825         `MonoClass *' and added support for generic method.
23826         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23827         have a `field->parent->gen_params', only inflate the field if it's
23828         an open constructed type.
23829
23830 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23831
23832         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23833         exception object instead of the preconstructed ones.
23834
23835 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23836
23837         * mini.c: reverted changed to sigsegv_signal_handler commited
23838         accidentally in the previous patch.
23839
23840 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23841
23842         * mini.c:
23843         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23844         running --aot with an old assembly.
23845
23846 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23847
23848         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23849         point values.
23850
23851         * mini-sparc.c: Add support for v9 branches with prediction.
23852
23853 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23854
23855         * mini.c (mini_init): #warning is GNUC only
23856
23857         * mini-sparc.h: implement __builtin_frame_address
23858         and __builtin_return_address for Sun C compiler
23859
23860 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23861
23862         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23863
23864 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23865
23866         * basic-calls.cs: Add test for unaligned byref long argument passing.
23867
23868         * mini-ops.h: Add sparcv9 compare and branch instructions.
23869
23870         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23871         v9 instructions if we have a v9 cpu.
23872
23873         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23874         registers for global allocation.
23875
23876         * exceptions-sparc.c: Fixes.
23877         
23878 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23879
23880         * liveness.c (mono_analyze_liveness): Optimized version.
23881
23882         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23883
23884         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23885         sparc work.
23886
23887         * basic-float.cs basic-calls.cs: New regression tests.
23888
23889 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23890
23891         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23892         sigaltstack implementation.
23893
23894         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23895         
23896         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23897         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23898
23899 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23900
23901         * mini.c: Fix warnings.
23902         
23903         * mini.c (mono_resolve_patch_target): New function which contains the
23904         arch independent part of the patching process.
23905
23906         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23907         patching code to a separate function.
23908
23909 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23910
23911         * mini.c (add_signal_handler): ifdef out on Windows
23912
23913 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23914
23915         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23916         cpu-sparc.md: Add exception handling support + other fixes.
23917
23918         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23919         typed GC detection in --version.
23920
23921         * basic.cs exceptions.cs: New regression tests.
23922
23923         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23924         the arch specific code can store data during a compilation.
23925
23926         * mini-ops.h: Add OP_SETFRET.
23927
23928         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23929         function, register a separate icall for each arity, so the icalls can
23930         get a wrapper.
23931         
23932         * mini.c (mono_print_tree): Print negative offsets in a more readable
23933         form.
23934         
23935         * mini.c: Make signal handling work on sparc.
23936         
23937         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23938
23939         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23940
23941         * jit-icalls.c: Emulate truncl by aintl on solaris.
23942
23943         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23944
23945 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23946
23947         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23948
23949 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23950
23951         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23952         a MarshalByRef type, inline a method that performs the check, taking into
23953         account that the object can be a proxy. Also implemented tow new opcodes:
23954         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23955         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23956         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23957
23958 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23959
23960         * mini-ppc.c: if a relative branch displacement is too big
23961         but it points to and area reachable with an absolute branch, 
23962         avoid the thunks.
23963
23964 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23965
23966         * mini.c: optimize small copies in cpblk.
23967
23968 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23969
23970         * basic-calls.cs basic-float.cs: New regression tests.
23971
23972         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23973         negative offsets from %fp. Implement localloc. Fix local register 
23974         allocation. Fix the case when the this argument needs to be saved to
23975         the stack. Implement some missing opcodes.
23976
23977 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23978
23979         * mini.c (mini_method_compile): Reenable global regalloc in methods
23980         with exception handlers.
23981
23982         * linear-scan.c (mono_varlist_sort): Fix warning.
23983
23984         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23985
23986         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23987         regalloc costs.
23988
23989         * liveness.c: Make all variables uses in exception clauses volatile, to
23990         prevent them from being allocated to registers. Fixes #42136.
23991
23992 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23993
23994         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23995         causes regressions.
23996
23997         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23998         argument to mono_arch_regalloc_cost.
23999
24000         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
24001         precisely.
24002
24003 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
24004
24005         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
24006         Make the cost of allocating a variable to a register arch dependent.
24007
24008         * basic-calls.cs: Fix compilation of tests.
24009         
24010         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
24011         helper function to cut back on the number of #ifdefs needed.
24012
24013         * mini-ppc.c: Fix compilation.
24014
24015         * basic-calls.cs: New regression tests.
24016
24017         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
24018
24019         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
24020         of l0 since that is callee saved.
24021
24022         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24023         to virtual calls.
24024
24025         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24026         of delay instruction.
24027
24028         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24029
24030         * mini.h (MonoCallInst): Add 'virtual' flag.
24031
24032         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24033
24034 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24035
24036         * *.cs: New regression tests.
24037
24038         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24039         work.
24040
24041         * mini.c (mono_runtime_install_handlers): Fix build.
24042
24043         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24044         'signal_stack_size' members.
24045
24046         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24047         alternate signal stack.
24048
24049         * exceptions-x86.c: Add stack overflow handling.
24050
24051         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24052         functions to arch independent code.
24053
24054         * mini.c (mono_print_tree): Print more detailed info for load_membase
24055         opcodes.
24056         
24057 2004-02-23  Martin Baulig  <martin@ximian.com>
24058
24059         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24060
24061 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24062
24063         * mini-x86.c: fixed reg allocation for div/rem.
24064
24065 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24066
24067         * driver.c (mono_main): Report some configuratio options on --version.
24068
24069 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24070
24071         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24072         low in the address space. Correctly flush memory in thunks where we
24073         output native code.
24074
24075 2004-02-20  Martin Baulig  <martin@ximian.com>
24076
24077         * mini.c (mini_get_method): New static method; inflate all generic
24078         methods and methods in open generic instances.
24079         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24080         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24081
24082 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24083
24084         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24085
24086         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24087
24088 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24089
24090         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24091
24092         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24093         it compile using Sun's compiler.
24094
24095 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24096
24097         * 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.
24098
24099         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24100
24101 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24102
24103         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24104         code.
24105         * mini-ppc.c: handle calls outside of the allowed range with thunks
24106         allocated using the code manager.
24107         * tramp-ppc.c: use the code manager to hold generated native code.
24108         Fixed the magic trampoline to just patch vtable entries.
24109
24110 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24111
24112         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24113         independent file.
24114
24115 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24116
24117         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24118         PPC.
24119
24120         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24121         if we have a working __thread implementation.
24122
24123         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24124         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24125
24126 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24127
24128         * mini-x86.c: Fix compilation under gcc 2.
24129         
24130 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24131
24132         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24133         contains a call to the wrapped function.
24134
24135         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24136         OP_<CALL>_IMM opcodes, and use them under X86.
24137         
24138         * mini.c (mono_jit_find_compiled_method): Fix warning.
24139
24140         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24141
24142         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24143
24144         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24145         functionality to mini.c.
24146
24147         * mini.c (mono_create_jump_trampoline): New function to create a jump
24148         trampoline. Return a compiled method instead of a trampoline if it
24149         exists. Add a cache for jump trampolines.
24150
24151         * mini.c (mono_jit_find_compiled_method): New function to return a
24152         compiled method if it exists.
24153
24154         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24155         mono_arch_create_jit_trampoline.
24156
24157         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24158         a jump trampoline. Fixes #52092.
24159         
24160 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24161
24162         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24163         which is not up-to-date. Add check_corlib_version () instead.
24164
24165         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24166         have to call it.
24167         
24168         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24169         since newer valgrind versions do not need it.
24170
24171         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24172         compile a method with a given set of optimizations.
24173
24174         * mini.c: Compile icall wrappers on-demand instead of at startup.
24175
24176         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24177         wrapper for an icall.
24178
24179 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24180
24181         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24182         #54063.
24183
24184         * iltests.il: Add test for non-empty stack before switch instruction.
24185
24186 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24187
24188         * mini.c: Add support for new stringbuilder marshalling conventions.
24189
24190         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24191
24192 2004-02-01  Martin Baulig  <martin@ximian.com>
24193
24194         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24195         in `ginst->mtype_argv'.
24196
24197 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24198
24199         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24200         facilitate grepping.
24201
24202 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24203
24204         * mini.c: fixed buglet in initobj generic implementation for references.
24205
24206 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24207
24208         * Makefile.am: make the version script conditional.
24209         * jit-icalls.c: handle missing truncl().
24210
24211 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24212
24213         * exceptions.cs: Add more tests for double->int conversion.
24214
24215         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24216         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24217
24218 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24219
24220         * driver.c: make --verbose --version emit an error
24221         if the loaded corlib doesn't match the runtime version.
24222
24223 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24224
24225         * mini-ppc.h: export ppc_patch().
24226         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24227         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24228         on par or better than on MacOSX.
24229
24230 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24231
24232         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24233         mono_lookup_pinvoke_call.
24234
24235         * mini-x86.c: Under windows, the default pinvoke calling convention is
24236         stdcall. Fixes #52834.
24237
24238         * mini.c (optimize_branches): Add an upper bound to the number of
24239         iterations to prevent infinite loops on strange loops. Fixes #53003.
24240
24241 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24242
24243         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24244         and ISINST. Fixes #52093.
24245
24246         * objects.cs (test_0_vector_array_cast): New tests.
24247         
24248 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24249
24250         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24251         checking in Array.Set ().
24252
24253         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24254         #52590.
24255
24256         * object.cs (test_0_multi_array_cast): New regression test.
24257
24258 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24259
24260         * exceptions-ppc.c: fix build on Linux/PPC.
24261
24262 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24263
24264         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24265         running under valgrind.
24266         (x86_magic_trampoline): Fix build bustage.
24267
24268         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24269         negative values as well. This is needed for the encoding of the line number
24270         info, since sometimes the line numbers are not in increasing order.
24271
24272 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24273
24274         * cpu-pentium.md (localloc): Increase the size of the localloc 
24275         instruction since it is a loop under Win32.
24276
24277         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24278         allocation.
24279
24280 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24281
24282         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24283         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24284         Max Horn (max@quendi.de). Fix file names in comments.
24285
24286 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24287
24288         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24289         avoid stack overflow.
24290         (replace_usage): Avoid uninitialized variable warnings.
24291
24292         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24293         and taking the address of valuetype variables.
24294
24295 2004-01-03  Patrik Torstensson
24296
24297         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24298         for other purposes than FP later on.
24299
24300 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24301
24302         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24303         of tail calls.
24304
24305 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24306
24307         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24308
24309 2003-12-30  Patrik Torstensson <p@rxc.se>
24310
24311         * mini-x86.h: Decreased number of availiable fp regs.
24312         Solves corner cases with FP spilling.
24313
24314 2003-12-23  Patrik Torstensson <p@rxc.se>
24315
24316         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24317         for floating point stack tracking / spilling on x86. 
24318         Fixes bug #49012.
24319         
24320         * basic-float.cs: added float mul overflow test.
24321
24322 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24323
24324         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24325
24326 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24327
24328         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24329         supports for cond branches that overflow the immediate
24330         overflow offset. mcs can compile simple programs.
24331
24332 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24333
24334         * exceptions-ppc.c: exception handling support wip:
24335         finally handlers get run on exception.
24336
24337 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24338
24339         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24340         profiling.
24341
24342 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24343
24344         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24345         initial support for stack walking and unwinding.
24346
24347 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24348
24349         * driver.c (mono_main): Make corlib-out-of-sync message more 
24350         descriptive. Also remove verify_corlib call.
24351
24352 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24353
24354         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24355         not overlap with other call's arguments, too.
24356
24357 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24358
24359         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24360         move to arch-specific code the choice of arch-specific
24361         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24362         * mini.c: ensure emulation calls will not interleave
24363         with other calls.
24364
24365 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24366
24367         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24368         the magic trampoline stack frame is dropped before executing
24369         the new method.
24370
24371 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24372
24373         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24374         and integer to fp conversions. Added support for overflowing
24375         arguments on the stack. Reserve a couple more registers as temps.
24376         Added support for aot compilation (as output still needs to be
24377         tweaked, though).
24378
24379 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24380
24381         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24382         Don't overwrite return register in some corner cases.
24383
24384 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24385
24386         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24387         static constructors when AOT compiling.
24388
24389         * driver.c (mono_main): Call mono_check_corlib_version.
24390
24391 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24392
24393         * cpu-g4.md, basic.cs: fixed div target register.
24394
24395 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24396
24397         * mini-ppc.c, basic.cs: shl_imm fix with test.
24398
24399 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24400
24401         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24402         structures by value. Misc fixes.
24403         * objects.cs: more tests.
24404
24405 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24406
24407         * mini-ppc.c: lconv.ovf.i implemented.
24408
24409 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24410
24411         * mini.c:
24412         (mini_init): don't error out if someone already called g_thread_init.
24413
24414 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24415
24416         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24417         to be any type per the spec. Fix abnormal memory usage when
24418         the same object is repeatedly thrown.
24419
24420 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24421
24422         * mini.c: check for overruns in IL code.
24423
24424 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24425
24426         * TODO: Add/remove some todo entries.
24427
24428 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24429
24430         * driver.c (mono_main): Call mono_verify_corlib.
24431
24432 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24433
24434         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24435         This has been moved to mini.c
24436         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24437         type being casted is marshalbyref it could be a proxy, so instead of
24438         emitting the type check code, emit a call to a runtime method that will
24439         perform the check by calling CanCastTo if needed.
24440
24441 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24442
24443         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24444         methods with large stack frames under Win32.
24445
24446 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24447
24448         * Makefile.am: Distribute regression tests.
24449
24450         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24451         at the end instead of inserting each variable into the sorted list.
24452
24453         * linear-scan.c (mono_varlist_sort): New helper function.
24454         
24455 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24456
24457         * mini.c: ensure arguments and locals are within bounds.
24458
24459 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24460
24461         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24462         related fixes.
24463
24464 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24465
24466         * mini.c (mono_cprop_copy_values): Fix crash.
24467
24468         * aot.c: Set verbosity back to 0.
24469         
24470 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24471
24472         * regalloc.c: complete memory leak fix by Laurent Morichetti
24473         (l_m@pacbell.net).
24474
24475 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24476
24477         * driver.c (main_thread_handler): Revert the previous patch.
24478
24479         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24480         under valgrind.
24481
24482         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24483         memory from the memory pool.
24484
24485         * driver.c (main_thread_handler): Turn on all optimizations when
24486         --aot is used.
24487
24488         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24489         an array for better performance.
24490
24491         * regalloc.c (mono_regstate_assign): Fix memory leak.
24492
24493         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24494         serialize the debug info.
24495
24496         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24497         debug info from the serialized representation.
24498
24499         * aot.c: Save debug info into the generated file and load it when 
24500         loading a method.
24501
24502         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24503
24504 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24505
24506         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24507         More FP-related fixes.
24508
24509 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24510
24511         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24512         and register allocation buglet. Hello world now runs.
24513
24514 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24515
24516         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24517         * tramp-ppc.c: fixed class init trampoline.
24518         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24519
24520 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24521
24522         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24523         mini.c: more ppc changes/fixes.
24524
24525 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24526
24527         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24528         Also optimize the case when the arguments are the same in the caller 
24529         and in the callee.
24530
24531         * iltests.il: Add tests for tail calls with valuetype arguments.
24532
24533 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24534
24535         * mini-ppc.c: fixes for struct return type.
24536
24537 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24538
24539         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24540         mono_spillvar_offset() to arch-specific code.
24541
24542 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24543
24544         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24545
24546 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24547
24548         * exceptions-x86.c: Fix stack space leaks.
24549         
24550         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24551         registers from the lmf if the method has save_lmf set.
24552
24553 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24554
24555         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24556         of icall wrappers into InvokeInDomain, since these are now per-domain.
24557
24558 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24559
24560         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24561         make some opcode emulation and intrinsic ops enabled/disabled 
24562         according to the architecture. More fixes.
24563
24564 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24565
24566         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24567
24568 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24569
24570         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24571         arch-specific handling for 'this' and struct return type to
24572         arch-specific code.
24573
24574 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24575
24576         * aot.c: prevent divide by zero error when reporting (it happened with
24577         Accessibility.dll).
24578
24579 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24580
24581         * mini.h (inst_switch): Remove unused macro.
24582
24583 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24584
24585         * aot.c:
24586         (load_aot_module): free 'info->methods' and 'info' properly. No more
24587         "free(): invalid pointer blah" messages when you have an old aot
24588         compiled assembly.
24589
24590 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24591
24592         * jit-icalls.c, mini.c: Added support for context static fields.
24593
24594 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24595
24596         * mini.c (mono_method_blittable): Methods which set LastError are not 
24597         blittable either. Fixes #51108.
24598         
24599 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24600
24601         * mini.c: flush icache.
24602         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24603
24604 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24605
24606         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24607
24608 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24609
24610         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24611         safe on IA32.
24612
24613         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24614         vararg calls.
24615
24616         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24617
24618 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24619
24620         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24621         instruction when the result is discarded.
24622
24623         * iltests.il (test_0_div_regalloc): New regression test.
24624
24625         * arrays.cs: Fix compilation error.
24626
24627 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24628
24629         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24630         float rules to inssel-x86.brg: sane architectures with FP registers
24631         don't need to implement these rules.
24632
24633 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24634
24635         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24636
24637 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24638
24639         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24640         implementation of 32 bit systems.
24641
24642 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24643
24644         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24645         (Jeroen Zwartepoorte).
24646
24647 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24648
24649         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24650         the caller and the callee matches.
24651         
24652         * mini.c (mono_method_to_ir): Add comment.
24653
24654         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24655         signbit is missing on some platforms.
24656
24657 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24658
24659         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24660
24661         * mini.c (setup_jit_tls_data): Call the new function.
24662         
24663         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24664
24665         * mini-x86.c: Add experimental support for fast access to the lmf
24666         structure under NPTL/Linux 2.6.x.
24667
24668 2003-11-06  Martin Baulig  <martin@ximian.com>
24669
24670         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24671         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24672         the debugger.
24673
24674 2003-11-02  Martin Baulig  <martin@ximian.com>
24675
24676         * mini.c (inflate_generic_field): New static method.
24677         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24678         generic instance and the field is declared in a generic type, call
24679         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24680
24681 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24682
24683         * mini.h mini.c (mono_method_same_domain): New function to return
24684         whenever the caller and the callee are in the same domain.
24685
24686         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24687
24688 2003-10-30  Martin Baulig  <martin@ximian.com>
24689
24690         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24691         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24692         method parameters.
24693         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24694         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24695
24696 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24697
24698         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24699         propagation.
24700
24701         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24702         object here, so it is in the correct appdomain etc.
24703
24704 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24705
24706         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24707         already done.
24708         (mono_method_to_ir): Avoid freeing the type created returned from
24709         mono_type_create_from_typespec, since it is put into an internal cache
24710         by the function. Fixes pointer.exe.
24711
24712         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24713         trampolines for icalls and pinvokes as well. Fixes #33569.
24714
24715 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24716
24717         * mini.c: Update after appdomain changes.
24718
24719         * mini.c (mono_jit_compile_method_inner): Allways compile native
24720         method wrappers in the root domain, since there can only be one
24721         instance of them, whose address is stored in method->info.
24722
24723 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24724
24725         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24726         environment variable. Instead detect automatically whenever running
24727         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24728         valgrind.h.
24729
24730 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24731
24732         * trace.c, trace.h: New files that implement the new trace option
24733         parsing. 
24734
24735         * driver.c: Document new --trace options.
24736
24737         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24738         mini-x86.c: Apply:
24739
24740         -       if (mono_jit_trace_calls)
24741         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24742
24743         * mini.h: prototypes.
24744         
24745 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24746
24747         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24748
24749         * mini.c inssel.brg: Implement typedefbyref opcodes.
24750
24751         * mini.c (mono_jit_compile_method): Remove unused local variable.
24752
24753         * mini.c (mono_jit_compile_method_inner): Ditto.
24754         
24755 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24756
24757         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24758         
24759         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24760
24761 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24762
24763         * mini.c (mono_no_aot): Remove unused global variable.
24764
24765         * mini.c: Thread safety fixes.
24766
24767 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24768
24769         * mini.c (mono_create_class_init_trampoline): Add a lock around
24770         class_init_hash_addr.
24771
24772         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24773         #30073.
24774
24775         * mini.c: Decompose the NEWARR instruction before decomposing its
24776         arguments. Fixes #30073.
24777
24778 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24779
24780         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24781         convention.
24782
24783 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24784
24785         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24786
24787         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24788
24789         * driver.c: Add support for compiling icall wrappers to --compile.
24790
24791 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24792
24793         * inssel.brg: The empty value in class->interface_offsets is -1, not
24794         0. Fixes #49287.
24795
24796 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24797
24798         * objects.cs: New test for 'is' operator on an array of interfaces.
24799
24800 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24801
24802         * tramp-ppc.c: update trampoline code to support jumps
24803         and class initialization.
24804
24805 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24806
24807         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24808
24809         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24810
24811         * inssel.brg (OP_UNBOX): Remove unused rule.
24812
24813         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24814         region instead of one for each method. Fixes #47813.
24815
24816 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24817
24818         * exceptions.cs (test_0_nested_finally): New regression test for
24819         nested exception handlers.
24820
24821         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24822
24823         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24824
24825         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24826         inlining.
24827
24828         * mini.c (mono_method_check_inlining): Make the inlining limit 
24829         configurable by an environment variable.
24830         
24831         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24832
24833         * mini.h: Bump AOT file version.
24834
24835         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24836         token, store the image along with the token, since the token might not 
24837         refer to the same image as the method containing the relocation, 
24838         because of inlining.
24839
24840 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24841
24842         * mini.c (mono_precompile_assemblies): New function to compile
24843         all methods in all loaded assemblies.
24844
24845         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24846
24847         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24848         iassign and fassign to int*, since they can contain large negative
24849         values if the register is spilled. Also added some comments. Fixes
24850         #45817.
24851
24852         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24853         under Win32. Fixes #42964.
24854
24855 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24856
24857         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24858
24859         * aot.c: Added support for AOT compiling methods which contain calls
24860         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24861         handled.
24862         
24863         * driver.c (compile_all_methods): Run the compilation in a thread
24864         managed by mono. Fixes #44023.
24865
24866         * mini.c (mono_codegen): Print full method name in verbose output.
24867
24868         * mini-x86.c (mono_arch_patch_code): Fix warning.
24869         
24870         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24871         jumps, since the method we are jumping to might be domain-specific.
24872
24873         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24874
24875 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24876
24877         * inssel.brg: string chars are unsigned.
24878
24879 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24880
24881         * TODO: New todo item.
24882
24883         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24884         which calls mono_runtime_class_init and patches the call site to
24885         avoid further calls.
24886         (mono_arch_create_class_init_trampoline): New arch specific function 
24887         to create a class init trampoline.
24888         (create_trampoline_code): Generalized so it can create
24889         class init trampolines as well.
24890
24891         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24892         (mono_create_class_init_trampoline): New function to create and cache
24893         class init trampolines.
24894         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24895         vtable given the address of a class init trampoline. Used by the
24896         patching process.
24897         (mono_codegen): Generate a call to a trampoline instead of
24898         mono_runtime_class_init in LDSFLD[A].
24899         (mono_codegen): Add relocations for the new trampoline.
24900         
24901         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24902         MONO_PATCH_INFO_CLASS_INIT.
24903
24904         * mini.h: Bump AOT version number.
24905
24906         * aot.c: Create a copy of the loaded code instead of using the original
24907         so methods which call each other will be close in memory, improving
24908         cache behaviour.
24909         
24910         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24911         patch since it breaks the regression tests.
24912         
24913         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24914         for the register saving instruction sequence since the 
24915         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24916
24917 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24918
24919         * TODO: Fix todo item && remove another.
24920
24921 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24922
24923         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24924         previous checkin.
24925
24926         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24927         function of the module.
24928
24929         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24930         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24931         --no-aot command line option.
24932
24933 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24934
24935         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24936         by Bernie Solomon (bernard@ugsolutions.com).
24937
24938         * inssel.brg: Refactor the interface offset table related code into
24939         its separate functions and add support for the AOT case.
24940
24941 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24942
24943         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24944         
24945         * aot.c: Added mono_aot_verbose variable and made all debugging
24946         output depend on the value of this variable.
24947
24948         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24949         method_label and info_label.
24950
24951         * mini.h mini-x86.c aot.c: Added a new relocation type 
24952         MONO_PATCH_INFO_IID for klass->interface_id.
24953
24954         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24955         the MonoJitInfo structure.
24956
24957         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24958         a non-root appdomain in shared mode.
24959
24960 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24961
24962         * aot.c: make aot loader less verbose. Remove free of unused variable.
24963
24964 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24965
24966         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24967
24968         * .cvsignore: Added *.dll.
24969
24970         * mini.c (mono_print_tree_nl): New function callable while debugging.
24971
24972         * mini.c (mono_print_code): Export this.
24973
24974         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24975         patched code.
24976
24977 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24978
24979         * mini.h (MonoCompile): Added 'jit_info' field.
24980
24981         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24982         the cfg structure, since it is needed by the AOT compiler.
24983
24984         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24985
24986         * aot.c: A major rewrite. Changes include:
24987         - save exception tables for methods which have them.
24988         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24989         to g_module_symbol.
24990         - reworked the file format so it is now much smaller and needs
24991         fewer relocation entries.
24992         
24993 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24994
24995         * aot.c (load_aot_module): Fix build bustage on platforms without
24996         Boehm GC.
24997
24998 2003-09-04  Martin Baulig  <martin@ximian.com>
24999
25000         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
25001
25002 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25003
25004         * TODO: Some new optimization ideas.
25005
25006         * aot.c: Move AOT module loading logic here from mono_assembly_open.
25007
25008         * aot.c: Save the optimization flags used to compile the code into
25009         the AOT module.
25010
25011         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
25012         support emitting domain specific code.
25013         
25014         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
25015         no longer domain neutral. It can be made domain neutral by compiling 
25016         with --optimize=shared.
25017
25018         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
25019         between appdomains.
25020
25021         * driver.c mini.h mini.c: New --no-aot debugging option which disables
25022         loading of AOT code.
25023
25024         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25025         
25026         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25027         if there is no domain neutrality information.
25028
25029 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25030
25031         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25032         format version into the generated library.
25033
25034         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25035         callee method into the caller since one of them could be shared.
25036
25037         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25038         system exceptions from AOT code now works.
25039
25040         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25041         method if it is domain neutral and the callee is not.
25042
25043         * graph.c (cfg_emit_one_loop_level): Fix warning.
25044
25045 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25046
25047         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25048         last checkin.
25049
25050 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25051
25052         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25053         is needed  by code which is executed before mono_runtime_init ().
25054         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25055         
25056         * mini.c (mono_thread_abort): Fix warning.
25057         (mono_jit_compile_method): Call static constructor in the AOT case too.
25058
25059         * aot.c (mono_compile_assembly): Fix warning.
25060
25061 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25062
25063         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25064
25065 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25066
25067         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25068
25069         * cpu-pentium.md: Fix the length of call opcodes so they include the
25070         ESP restoring instruction. Fixes #47968.
25071
25072 2003-08-28  Martin Baulig  <martin@ximian.com>
25073
25074         * mini-x86.c (mono_arch_call_opcode): Added support for
25075         MONO_TYPE_GENERICINST.
25076
25077         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25078
25079 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25080
25081         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25082         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25083
25084         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25085         metadata_section.
25086
25087 2003-08-26  Martin Baulig  <martin@ximian.com>
25088
25089         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25090         when reporting an error, set this to the actual error location.
25091         (mono_method_to_ir): Report the correct error location if
25092         get_basic_blocks() returned an error.
25093
25094 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25095
25096         * mini.c (mono_type_blittable): OBJECT is not blittable.
25097         (mono_method_blittable): Methods which have marshalling descriptors
25098         are not blittable either. Fixes #47842.
25099
25100 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25101
25102         * driver.c mini.c: Use an environment variable instead of a global 
25103         variable. Also fix the build.
25104
25105         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25106         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25107         reporting this. 
25108
25109         * driver.c mini.c: Added --with-valgrind option to turn off some
25110         code which prevents mono from running under valgrind.
25111
25112         * mini.c (mono_emit_call_args): Fixed warning.
25113
25114         * mini.c (mono_emulate_opcode): Fixed warning.
25115
25116 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25117
25118         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25119         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25120         regalloc.c, regalloc.h: specify available registers in arch-specific
25121         code and support floats in the regallocator (patch by Laurent Morichetti 
25122         <l_m@pacbell.net>)
25123
25124 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25125
25126         * mini.c: mono_thread_current() can be called only after
25127         mono_runtime_init(): rearrange code to not call it early on.
25128
25129 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25130
25131         * mini.c: allocate jump tables in the code mempools.
25132
25133 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25134
25135         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25136         freed.
25137
25138 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25139
25140         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25141         12 to 16.  This fixes bug #47453.
25142
25143
25144 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25145
25146         * mini-ppc.c: fixed indexed load and unsigned compares.
25147
25148 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25149
25150         * mini.c: reenabled installation of handler for
25151           thread abort signal.
25152
25153 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25154
25155         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25156         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25157         until it's fixed and actually useful.
25158
25159 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25160
25161         * inssel-long32.brg: couple more opcodes implemented.
25162
25163 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25164         
25165         * mini-sparc.c: Even more opcodes implemeted.
25166
25167 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25168
25169         * mini-sparc.c: More opcodes implemented.
25170
25171 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25172
25173         * mini-sparc.c: More opcodes implemented.
25174
25175 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25176
25177         * inssel-sparc.brg: Add some needed rules.  Direct
25178         copy from PPC.
25179         * Makefile.am: Use inssel-sparc.brg
25180         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25181         an assert happy for now.
25182
25183 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25184
25185         * mini-sparc.c: Fixed compile errors.
25186         * exceptions-sparc.c: Same.  We now produce a mono binary 
25187         on sparc-linux.  Yea.
25188
25189 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25190
25191         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25192         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25193         They compile, but do not work.
25194
25195 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25196
25197         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25198         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25199         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25200         (ct@gentoo.org).
25201
25202 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25203
25204         * mini.c: more opcodes implemented and better support for generics.
25205
25206 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25207
25208         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25209         * mini.c, mini.h: first cut at generics support: some new instructions 
25210         added and changed the behaviour of some of the existing ones.
25211
25212 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25213
25214         * mini.c: Removed definition of metadata_shared mutex here.
25215
25216 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25217
25218         * mini-x86.c: make vararg calls work for instance methods.
25219
25220 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25221
25222         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25223         returns the arguments in a separte list, now.
25224
25225 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25226
25227         * aot.c, mini.c: updates for array type representation changes.
25228
25229 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25230
25231         * mini.c: register function to perform jit shutdown.
25232
25233 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25234
25235         * mini.c: use a faster allocator if possible.
25236
25237 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25238
25239         * aot.c: some cleanups and portability changes.
25240
25241 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25242
25243         * mini.c: use faster allocation for CEE_BOX if possible.
25244
25245 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25246
25247         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25248         Moved inlined mempcy code to its own function so that is can be
25249         reused. Added an inline memset function as well (optimized initobj).
25250         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25251
25252 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25253
25254         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25255
25256 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25257
25258         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25259         arch code can setup the cpu for CLR execution, if needed.
25260         We use it on x86 to set the precision of FP operations.
25261
25262 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25263
25264         * mini.c: disable some optimizations if we can guess they'll cost too
25265         much for a given method.
25266
25267 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25268
25269         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25270         
25271 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25272         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25273         info collection support.
25274
25275 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25276
25277         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25278         is now implemented in the profiling API. Get rid of a couple of
25279         unnecessary global variables.
25280
25281 2003-06-15  Nick Drochak <ndrochak@gol.com>
25282
25283         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25284         * cpu-g4.md: add op_bigmul and op_bigmul_un
25285         * cpu_pentium.md: add op_bigmul_un
25286         * inssel-long32.brg: add rule for unsigned bigmul
25287         * mini-ops.h: define OP_BIGMUL_UN
25288         * mini-x86.c: THE BUG: handle (un)signed properly
25289         * mini.c: choose unsigned opcode if needed.
25290         This set of patches fixes bug #44291
25291
25292 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25293
25294         * mini.c (optimize_branches): improved to handle all kinds of
25295         conditional branches.
25296
25297 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25298
25299         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25300         don't raise exceptions.
25301
25302 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25303
25304         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25305         to arch-specific files.
25306
25307 2003-06-09  Martin Baulig  <martin@ximian.com>
25308
25309         * Makefile.am (libs): Added $(LIBGC_LIBS).
25310
25311 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25312
25313         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25314         and OP_ATAN (fixes bug#44293).
25315
25316 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25317
25318         * Makefile.am, mini-x86.c: rename cpu description array to
25319         pentium_desc, since some compilers define the 'pentium' preprocessor
25320         symbol.
25321
25322 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25323
25324         * mini.c (mini_select_instructions): add explicit branch if the
25325         following block is not the false target of a conditional branch -
25326         we need this with any optimization that reorder or remove bblocks
25327
25328         * mini.c (optimize_branches): bug fixes
25329
25330 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25331
25332         * mini.c (mono_method_to_ir): inline static readonly fields
25333
25334         * ssa.c (fold_tree): start cfold support for long (very simple
25335         cases only)
25336
25337         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25338
25339 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25340
25341         * inssel.brg: fixed memcpy (bug #44219).
25342
25343 2003-06-05  Dick Porter  <dick@ximian.com>
25344
25345         * driver.c: Set the glib log levels to not abort if g_message
25346         recurses.
25347
25348         g_set_prgname() has to happen before mini_init() so that the
25349         process handle gets the info.
25350         
25351 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25352
25353         * driver.c: add intrins to the default optimizations to get wider
25354         exposure.
25355
25356 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25357
25358         * mini.h: some large basic blocks will overflow a 16-bit
25359         integers for symbolic registers.
25360
25361 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25362
25363         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25364         (mono_arch_output_basic_block): fix bug 43499 
25365
25366 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25367
25368         * mini.c: kill duplicated definition of mono_debug_format.
25369
25370 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25371
25372         * mini-x86.c, arrays.cs: fixed register allocation bug.
25373
25374 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25375
25376         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25377
25378         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25379
25380 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25381
25382         * mini.c:
25383         (print_method_from_ip): also print source location information if
25384         available.
25385
25386 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25387
25388         * mini.c (mono_find_block_region): bug fix in region code
25389         (mini_method_compile): enable removing unreachable code again, but
25390         only in methods without exception clauses.
25391
25392 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25393
25394         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25395         Implemented arglist opcode and handling of TypedReference type.
25396         Fixed x86 call convention when a structure is returned.
25397         Minimal support for calling static vararg methods.
25398
25399 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25400
25401         * mini.c (mini_method_compile):  always remove unreachable code,
25402         because the code in them may be inconsistent  (access to dead
25403         variables for example).
25404
25405 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25406
25407         * driver.c, debug-mini.c: warning fixes.
25408
25409 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25410
25411         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25412
25413 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25414
25415         * mini.c: thread-static fields are registered in mono_class_vtable(),
25416         so ensure the function is called before checking for them.
25417
25418 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25419
25420         * mini.c (optimize_branches): fix for bug 43586
25421
25422         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25423         overflow (fixes Bug #43639)
25424
25425 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25426
25427         * mini.c, objects.cs: allow the use of stobj for primitive types.
25428
25429 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25430
25431         * mini.c: be less strict about argument checking until we support
25432         running the verifier.
25433
25434 2003-05-27  Nick Drochak <ndrochak@gol.com>
25435
25436         * basic-long.cs: tests for (ulong)int * (ulong)int also
25437         * mini.c: use the same trick for (ulong)int * (ulong)int
25438
25439 2003-05-27  Nick Drochak <ndrochak@gol.com>
25440
25441         * basic-long.cs: add regression test for (long)int * (long)int
25442         * cpu-pentium.md: add op_bigmul specification
25443         * inssel-long32.brg: add OP_BIGMUL rule
25444         * mini-ops.h: add OP_BIGMUL
25445         * mini-x86.c: register allocator: handle case where src1 needs to be
25446         in EAX.
25447         * mini.c: substitute special BIGMUL opcode in the tree for 
25448         (long)int * (long)int
25449
25450 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25451
25452         * jit-icalls.c: call the type ctor on field access if needed.
25453
25454 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25455
25456         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25457         to a method (including results of ldelema, bug#43207).
25458
25459 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25460
25461         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25462         colors to show exception handler blocks.
25463
25464         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25465         (fix for pinvoke7.cs).
25466
25467 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25468
25469         * mini.h, mini.c: ensure correct initialization order for types that
25470         require it. Prepare for lazy compilation of jit icall wrappers.
25471         Provide a name for opcode emulation to reduce unneeded mallocing.
25472
25473 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25474
25475         * mini-x86.c: better register restoring code and profiling
25476         support for tail calls.
25477
25478 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25479
25480         * mini.h, driver.c: prepare for leaf methods optimization.
25481
25482 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25483
25484         * mini.c: get targets of branches before converting a method.
25485
25486 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25487
25488         * mini.c (optimize_branches): added some experimental code (disbaled) 
25489
25490 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25491
25492         * mini.c (optimize_branches): fix branch to branch optimization 
25493
25494         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25495
25496         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25497
25498         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25499
25500         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25501         if needed.
25502
25503 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25504
25505         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25506         enable use of interface variables again.
25507
25508         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25509         I1 to registers because there is no simply way to sign extend 8bit
25510         quantities in caller saved registers on x86.
25511
25512         * inssel-float.brg: set costs of some rules to 2 so
25513         that monobure always select the arch. specific ones if supplied,
25514         regardless of the order we pass the files to monoburg.
25515
25516 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25517
25518         * mini.c, mini-x86.c: since the magic trampoline for jumps
25519         can't patch the code directly, we do it as soon as the
25520         method gets compiled.
25521
25522 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25523
25524         * mini-x86.c, mini.h: introduce a new patching method
25525         to support CEE_JMP and tail calls.
25526         * mini.c: obey tail.call. Don't precompile methods target
25527         of CEE_JMP.
25528         * tramp-x86.c: new trampoline code to handle methods
25529         reached through a jump.
25530
25531 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25532
25533         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25534         bit values to registers
25535
25536 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25537
25538         * mini.c (mono_compile_get_interface_var): share interface
25539         variables if possible.
25540
25541 2003-05-16  Martin Baulig  <martin@ximian.com>
25542
25543         * debug-mini.c (mono_init_debugger): New function to initialize
25544         the debugger.  This is not in the debugger since it needs to
25545         access some of mini's internals.
25546
25547 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25548
25549         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25550
25551 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25552
25553         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25554         for value type handling.
25555
25556 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25557
25558         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25559         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25560
25561 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25562
25563         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25564           the constructor through a proxy.
25565
25566 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25567
25568         * jit-icalls.c, inssel.brg: fixes to array element address
25569         calculations.
25570
25571 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25572
25573         * mini-x86.c (is_regsize_var): allocate pointer to registers
25574
25575 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25576
25577         * driver.c: fixed typo, added intrins to the set of optimizations
25578         tested with regressions.
25579
25580 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25581
25582         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25583         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25584         test case.
25585
25586 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25587
25588         * inssel.brg: remove some common pop instructions without side effects
25589
25590 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25591
25592         * inssel-x86.brg: fixed thinko in int to double conversions.
25593
25594 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25595
25596         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25597
25598 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25599
25600         * inssel-long32.brg: two more missing instructions.
25601
25602 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25603
25604         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25605         if not already set.
25606
25607 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25608
25609         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25610         correctly.
25611
25612         * basic-float.cs: Added tests for negative zero.
25613
25614 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25615
25616         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25617         a couple of missing operations for long casts, with test cases.
25618
25619 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25620
25621         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25622
25623 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25624
25625         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25626         code size estimation.
25627
25628 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25629
25630         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25631         abstract methods (fix bug 42542)
25632
25633         * aot.c: add ability to handle array types
25634         
25635 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25636
25637         * mini.c: Call the _specific versions of the object allocation
25638         functions if possible.
25639
25640 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25641
25642         * driver.c: call setlocale ().
25643
25644 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25645
25646         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25647         windows build.
25648
25649 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25650
25651         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25652
25653         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25654         wrappers (fix bug 42122)
25655
25656 2003-05-04  Martin Baulig  <martin@ximian.com>
25657
25658         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25659
25660         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25661         s/mini_set_defaults/mono_set_defaults/g.
25662
25663 2003-05-04  Martin Baulig  <martin@ximian.com>
25664
25665         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25666
25667 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25668
25669         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25670         (reported by Don Roberts).
25671
25672 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25673
25674         * mini.c: temporarily work around two bugs for this release.
25675
25676 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25677
25678         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25679         that contains -export-dynamic and it makes using the ld script
25680         useless.
25681         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25682
25683 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25684
25685         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25686         specific cpu.
25687
25688 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25689
25690         * mini.c: make sure leave calls all the needed finally blocks,
25691         even when the target jumps out of multiple exception clauses.
25692
25693 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25694
25695         * ldscript, Makefile.am: add linker script to reduce the number of
25696         exported symbols (should also fix the issues with libwine defining
25697         some of the same symbols in io-layer).
25698
25699 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25700
25701         * driver.c (mini_main): Avoid assertion when no file name is given on 
25702         the command line.
25703
25704 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25705
25706         * driver.c: added --version/-V command line option.
25707         Added the inline optimization in the regression tests.
25708
25709 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25710
25711         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25712         to the type in the method signature (fixes bug#42134).
25713
25714 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25715
25716         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25717
25718 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25719
25720         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25721
25722 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25723
25724         * driver.c: fixed bug #42100.
25725
25726 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25727
25728         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25729
25730 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25731
25732         * mini.c: moved most of the code required to do inlining to its own
25733         function so it can be reused. Inline also ctors if appropriate.
25734
25735 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25736
25737         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25738         the runtime can call mono API functions.
25739
25740 2003-04-27  Martin Baulig  <martin@ximian.com>
25741
25742         * debug-mini.c (mono_debug_init_method): Added
25743         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25744         send a notification to the debugger.
25745
25746         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25747         running in the Mono Debugger, just pass the breakpoint number to
25748         mono_debug_init_method().
25749
25750         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25751
25752 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25753
25754         * mini.c: allow some more unsafe compares.
25755
25756 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25757
25758         * mini-x86.c, Makefile.am: make distcheck works (partially from
25759         a patch by Richard Lee <r.h.lee@attbi.com>).
25760         * regset.c, regset.h: removed, they are unused.
25761
25762 2003-04-25  Dick Porter  <dick@ximian.com>
25763
25764         * driver.c: Usage reports the name as 'mono' not 'mini'
25765         * exceptions-x86.c: Build and run on freebsd
25766
25767 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25768
25769         * Makefile.am: install the program with the 'mono' name and
25770         the library as libmono instead of mini and libmini.
25771
25772 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25773
25774         * driver.c: provide the APIs for the embedding interface of the old jit.
25775
25776 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25777
25778         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25779
25780 2003-04-23  Martin Baulig  <martin@ximian.com>
25781
25782         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25783
25784         * driver.c: Added `--debug' command line argument to enable
25785         debugging support.
25786
25787 2003-04-23  Martin Baulig  <martin@ximian.com>
25788
25789         * debug.[ch]: Removed.  The code is now in
25790         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25791
25792         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25793         last six months.
25794
25795 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25796
25797         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25798
25799 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25800
25801         * mini.c:
25802         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25803         mono_domain_finalize.
25804         (mini_method_compile): use mono_method_profile* if the the option is
25805         enabled.
25806
25807 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25808
25809         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25810         methods with their wrapper.
25811
25812         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25813         methods with their wrapper.
25814
25815         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25816         their wrapper.
25817
25818         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25819         wrapper.
25820
25821         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25822         methods.
25823
25824 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25825
25826         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25827
25828 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25829
25830         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25831         of the mempool. This is slightly faster and uses less memory
25832
25833 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25834
25835         * mini.c: avoid O(n) allocation for variables.
25836
25837 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25838
25839         * mini.c: handle items on the stack after inlining methods.
25840
25841 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25842
25843         * mini.c: make the method->opcode optimization dependent
25844         on MONO_OPT_INSTRINS and do it lazily.
25845
25846 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25847
25848         * driver.c: print overall results at the end of regression run.
25849
25850 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25851
25852         * inssel.brg: don't overwrite symbolic registers.
25853
25854 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25855
25856         * inssel-x86.brg: fix conversion from long to float.
25857
25858 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25859
25860         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25861
25862 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25863
25864         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25865
25866         * driver.c: Added --print-vtable option as in the old JIT.
25867
25868 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25869
25870         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25871
25872 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25873
25874         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25875
25876 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25877
25878         * mini.c regalloc.c regalloc.h: Fix memory leak.
25879
25880 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25881
25882         * aot.c (mono_aot_get_method): register all used strings
25883
25884 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25885
25886         * mini.c: always intern strings references with ldstr at compile time.
25887
25888 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25889
25890         * Makefile.am: add BUILT_SOURCES.
25891
25892 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25893
25894         * driver.c: give a better error message when the assembly to execute
25895         doesn't have an entry point.
25896
25897 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25898
25899         * Makefile.am: added hack for automake
25900
25901         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25902         correct sematics.
25903
25904         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25905
25906 22003-04-07  Martin Baulig  <martin@ximian.com>
25907
25908         * Makefile.am: Added Makefile.am.
25909
25910         * debugger-main.c: Removed, this is now in the debugger where it
25911         belongs.
25912
25913         * mini.pc.in: Call this package `mini' for the moment.
25914
25915
25916
25917
25918
25919
25920
25921
25922
25923
25924
25925
25926
25927
25928