2010-07-10 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-10  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-llvm.c (set_metadata_flag): Set metadata flags only when using the LLVM
4         mono branch.
5
6 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
7
8         * mini.h (MONO_INST_HAS_CONSTANT_LOAD): New instruction flag marking loads which load
9         from constant memory.
10
11         * ir-emit.h: Clean up the _FAULT macros a bit.
12
13         * decompose.c: Mark some loads as constant.
14
15         * mini-llvm.c: Pass the constant-ness of loads to LLVM using custom metadata.
16
17 2010-07-09  Miguel de Icaza  <miguel@novell.com>
18
19         * driver.c (mini_usage): Change the name of the --sgen flag to be
20         --gc=sgen and also support --gc=boehm.   These flags can also be
21         set on MONO_ENV_OPTIONS to propagate this to children processes.
22
23         * main.c: Remove the MONO_VM_OPTIONS environment variable that
24         only supported "sgen" and "llvm" config options and instead parse
25         the MONO_ENV_OPTIONS as options that are parsed by the command
26         line parser.   Any command line option that Mono supports can be
27         passed in this environment variable.
28
29 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
30
31         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks +
32         LLVM.
33
34         * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
35         it can now eliminate more than just bounds checks.
36
37         * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
38         an extra 'fault' argument.
39
40         * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
41         later.
42
43         * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
44         decomposition.
45
46         * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
47         no longer generated when LLVM is used.
48
49         * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
50
51 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
52
53         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
54
55 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
56
57         * driver.c: Moonlight: Force line buffering for stdout.
58
59 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
60
61         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
62         are only callable using invoke.
63
64 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
65
66         * mini-llvm.c (process_bb): Use emit_load () in one more place.
67
68         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
69         MONO_LLVM=xxx is actually usable.
70
71         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
72         since LLVM might be able to hoist them out of loops.
73         (emit_store): Ditto.
74
75 2010-07-08  Neale Ferguson <neale@sinenomine.net>
76
77         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
78         in typeload-unaligned test.
79
80 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
81
82         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
83
84         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
85         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
86         generic trampolines+rgctx fetch trampolines.
87
88 2010-07-08  Geoff Norton  <gnorton@novell.com>
89
90         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
91
92 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
93
94         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
95
96         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
97         is not defined in the LLVM case to keep the imt arg alive.
98
99 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
100
101         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
102         functions, now its 'llvm_<FOO>_trampoline'.
103
104         * method-to-ir.c (emit_imt_argument): Fix llvm support.
105
106         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
107         cannot be passed in the same call.
108
109         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
110         register to be the same as the RGCTX register, the two can't be used together on
111         the same call.
112
113 2010-07-05  Miguel de Icaza  <miguel@novell.com>
114
115         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
116         that allows the user to force the VM to use llvm or sgen.
117
118 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
119
120         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
121         before processing the exception on PPC too.
122
123         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
124
125         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
126         'this' is always passed as the first argument, before the vtype ret arg. This
127         simplifies get_this_arg_reg () and LLVM integration.
128
129 2010-07-05  Martin Baulig  <martin@ximian.com>
130
131         * exceptions-x86.c (mono_arch_handle_exception): Port this to
132         Windows; apply my patch from r159782 in the mono-2-6 branch.
133
134 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
135
136         * Makefile.am: Don't build the debug assembler files if we're building without
137         debugger support.
138
139 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
140
141         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
142
143 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
144
145         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
146         length.
147
148         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
149         regs [ARMREG_FP] instead.
150
151         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
152
153         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
154         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
155
156         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
157
158         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
159
160         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
161
162         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
163         without IMT_REG defined (ARM).
164
165         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
166         the trampolines.
167
168 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
169
170         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
171
172 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
173
174         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
175         definitions to match their declarations and vice-versa.
176
177 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
178
179         * Makefile.am (common_sources): Add mini-llvm.h.
180
181         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
182
183 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
184
185         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
186         compiling.
187
188 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
189
190         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
191         implemt the option of loading the llvm backend from a module so
192         that we can have a single binary and the bloat from llvm is
193         only experienced when it is actually loaded.
194
195 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
196
197         * mini-llvm.c: remove direct access to mono_defaults.
198
199 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
200
201         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
202         a no-op.
203
204         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
205
206         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
207         is now mono_arch_nullify_class_init_trampoline ().
208         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
209         opcodes, they are no longer needed.
210
211         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
212         now mono_arch_nullify_class_init_trampoline ().
213         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
214         opcodes, they are no longer needed.
215
216         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
217         vtable on platforms which support it.
218
219         * driver.c: Print the full LLVM version we are compiled against in --version.
220
221         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
222         a bit better. Decode nesting information to fix eh support for llvm+aot.
223
224         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
225         methods.
226
227         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
228
229         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
230         is always passed as the first argument, before the vtype ret arg. This simplifies
231         get_this_arg_reg () and LLVM integration.
232
233 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
234
235         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
236         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
237         most of the vcall specific code to mono_vcall_trampoline () from
238         common_call_trampoline ().
239
240 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
241
242         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
243         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
244         if the callsite is patched.
245
246         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
247         the llvm branch.
248
249         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
250         the trampoline in the xdebug info.
251
252         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
253         as well.
254
255 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
256
257         * mini-llvm.c: Fix a few problems exposed by make check.
258
259 2010-06-25  Mark Probst  <mark.probst@gmail.com>
260
261         * mini-trampolines.c (common_call_trampoline): An ugly hack to
262         work around a potentially very hard to fix problem with inflating
263         generic methods.
264
265 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
266
267         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
268         problem has been fixes.
269
270 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
271
272         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
273
274         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
275         It might be be better to define a MonoGCJitOptions structure later and have the
276         GC return that.
277
278         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
279
280         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
281
282         * debugger-agent.c (get_objref): Implement support for sgen.
283
284         * driver.c: Remove the unused gc_wrapper.h include.
285
286         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
287         implementation.
288
289 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
290
291         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
292
293         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
294         in MonoCompile.
295
296         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
297         instead.
298
299 2010-06-23  Miguel de Icaza  <miguel@novell.com>
300
301         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
302         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
303
304         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
305         it only for Boehm diagnostics.
306
307         * Makefile.am: Make the file a bit more consistent.
308
309         * debug-debugger.c: Wrap the entire file with an #ifdef
310         MONO_DEBUGGER_SUPPORTED to simplify the build.
311
312         * Makefile.am: Fix the opcodes build issue by including the
313         source, not by including the .lo file directly
314
315         Always bring the MDB sources into the build, to drop the
316         dependency on the AM_CONDITIONAL from configure.in as the hard
317         debugger supports Boehm, but not Sgen, this simplifies the build. 
318
319         * Renamed the *.s files into *.S
320
321 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
322
323         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
324         wb for now on 64bits systems while issues with valuetype returns
325         are not fixed.
326
327 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
328
329         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
330         passes by calling createStandardFunctionPasses ().
331
332 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
333
334         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
335
336 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
337
338         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
339         MONO_INST_FAULT.
340
341         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
342         allow better optimization if the OP_LDADDR which caused the flag to be set was
343         optimized away.
344
345         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
346
347         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
348         the type token.
349
350         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
351
352         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
353
354 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
355
356         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
357         to handle the code sequence generated for non-near calls. Fixes #616056.
358
359 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
360
361         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
362
363         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
364
365         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
366         nesting clause too.
367         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
368         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
369         trampoline which saves the context, so changes made to callee saved registers in
370         finally clauses are visible to a nesting catch clause.
371
372         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
373
374         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
375         in LLVM compiled code.
376         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
377         the finally handler has ran.
378
379         * mini.h (ResumeState): New structure containing information required to resume
380         exception handling after executing LLVM compiled finally clauses.
381
382         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
383         bit, by passing all the registers as one argument.
384
385 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
386
387         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
388         to avoid an assert.
389
390 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
391
392         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
393
394         * aot-compiler.c aot-runtime.c: Fix LLVM support.
395
396         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
397         pad, branch to a new bblock instead.
398
399         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
400         orig_method.
401
402         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
403
404         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
405
406 2010-06-17  Geoff Norton  <gnorton@novell.com>
407
408         * mini-arm.h:
409         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
410         can be used by sgen.
411
412 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
413
414         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
415
416         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
417         fails.
418
419         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
420         the ip done by throw_exception (), it is not needed for corlib exceptions.
421
422 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
423
424         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
425         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
426         of size > 5 words. This support fast barriers for value types up to
427         256/512 bytes which     beyond that the copying itself is the major issue.
428
429         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
430         for gsharing, so use it.
431
432         This eliminate all calls to mono_value_copy from managed code in
433         gmcs, fsharp and ipy.
434
435         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
436
437         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
438         performance kept
439
440         * mini.c (mini_init): Register new icall.
441
442 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
443
444         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
445         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
446
447 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
448
449         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
450         value types as the overhead is huge. Manually expand it up to 5 words to
451         avoid code bloat.
452
453         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
454         is an exception that performance is dominated by mono_value_copy.
455
456         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
457
458 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
459
460         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
461         trampolines on x86, since those have their own cconv.
462
463         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
464         exception trampolines.
465
466         * tramp-x86.c: Add xdebug info for a few trampolines.
467
468         * mini-llvm.c: Set the name of the arguments.
469
470         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
471         using a block address if using the LLVM mono branch.
472
473         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
474         trampolines.
475
476 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
477
478         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
479
480         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
481
482         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
483
484         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
485
486         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
487         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
488         to identify the vtable slot address plus the method which needs to be compiled.
489
490         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
491         using llvm.
492
493         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
494         'this' is always passed as the first argument, before the vtype ret arg. This
495         simplifies get_this_arg_reg () and LLVM integration.
496
497         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
498         the latest changes.
499
500         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
501         these trampolines.
502
503         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
504
505         * mini-llvm.c: Fix compilation with llvm 2.6.
506
507         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
508
509         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
510         defined.
511
512         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
513         is always passed as the first argument, before the vtype ret arg. This simplifies
514         get_this_arg_reg () and LLVM integration.
515
516 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
517
518         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
519
520         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
521         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
522         translate into much nicer code.
523
524 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
525
526         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
527         parameter index information. Use this to simplify a lot of code.
528
529         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
530
531 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
532
533         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
534         to fix infinite generic recursion. Fixes #612702.
535
536 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
537
538         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
539         imt trampoline per imt slot when using LLVM.
540
541 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
542
543         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
544
545 2010-06-09  Levi Bard  <levi@unity3d.com>
546
547         * debugger-agent.c: Clear unloaded types on appdomain unload.
548
549 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
550
551         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
552         Fixes #612206.
553
554         * exceptions.cs: Add a test.
555
556 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
557
558         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
559
560         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
561
562         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
563         so it doesn't have to do it.
564
565         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
566         process does not mix with ours.
567
568         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
569         ones.
570
571         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
572         loads/stores which can throw exceptions inside clauses.
573
574 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
575
576         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
577         one ENDFINALLY.
578
579         * mini.c (mini_init): Register mono_resume_unwind as an icall.
580
581 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
582
583         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
584
585         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
586         locals.
587
588 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
589
590         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
591         appdomain.
592
593 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
594
595         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
596         Use a separate generic class init trampoline for llvm, since it needs a different
597         signature.
598
599         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
600         includes the location of this/rgctx.
601
602         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
603         branch.
604
605 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
606
607         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
608
609         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
610         clause.
611
612 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
613
614         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
615         says so.
616
617         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
618
619         * aot-compiler.c (patch_to_string): New debugging helper function.
620
621 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
622
623         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
624         trampoline.
625
626         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
627
628         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
629
630         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
631
632         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
633         clauses.
634
635         * mini.c (create_jit_info): Print EH clause info for LLVM too.
636
637 2010-05-28  Mark Probst  <mark.probst@gmail.com>
638
639         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
640         cpobj with reference types.
641
642 2010-05-28  Mark Probst  <mark.probst@gmail.com>
643
644         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
645         write barrier for reference types.
646
647 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
648
649         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
650         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
651
652 2010-05-31  Martin Baulig  <martin@ximian.com>
653
654         Fix #608271.
655
656         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
657         clear_breakpoint() on all breakpoint events and remove them from the list.
658
659 2010-05-27  Martin Baulig  <martin@ximian.com>
660
661         Fix #605698.
662
663         * debugger-agent.c (method_commands, type_commands): Temporarily
664         set the appdomain while executing this method; do all metadata
665         calls in the debuggee's appdomain where user assemblies are loaded.
666
667 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
668
669         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
670
671 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
672
673         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
674
675 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
676
677         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
678         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
679         be referenced even after the header is freed.
680
681         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
682         section.
683
684 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
685
686 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
687
688         * genmdesc.c (main): Fixing the detection of the nacl switch.
689
690         Code is contributed under MIT/X11 license.
691
692 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
693
694         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
695
696         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
697
698         * mini.h (LLVM_CHECK_VERSION): New helper macro.
699
700 2010-05-25  Miguel de Icaza  <miguel@novell.com>
701
702         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
703         the Perl program
704
705         * genmdesc.c: Added support for nacl: key on the machine
706         description files to support the extra space required by Google
707         Native Client.
708
709 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
710
711         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
712
713 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
714
715         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
716         mono_runtime_class_init_full ().
717         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
718
719 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
720
721         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
722
723 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
724
725         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
726         two are not the same on ilp32.
727
728 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
729
730         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
731         added by mistake.
732
733         * mini-ppc.c: Fix the DISABLE_JIT build.
734
735 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
736
737         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
738         (make_writable): Remove this unused function.
739
740 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
741
742         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
743         structure. Make the labels to plt entries local symbols instead of assembler local
744         labels, since tha latter causes problems for the iphone linker.
745
746 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
747
748         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
749
750 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
751
752         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
753         (ppc_patch_full): Ditto.
754
755         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
756
757         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
758         if gshared is enabled, to avoid asserts in the trampoline code.
759
760         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
761         on ia64.
762
763 2010-05-15  Geoff Norton  <gnorton@novell.com>
764
765         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
766         xdebug mode.
767
768 2010-05-14  Geoff Norton  <gnorton@novell.com>
769
770         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
771         misaligned stack on darwin.
772
773 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
774
775         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
776         arm.
777
778 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
779
780         * xdebug.c: Fix ARM support.
781
782 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
783
784         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
785         and do most of the work on the normal stack.
786         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
787
788 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
789
790         * aot-compiler.c: Put non-code data into the .rodata section on linux.
791
792 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
793
794         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
795
796 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
797
798         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
799         and do most of the work on the normal stack.
800
801 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
802
803         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
804         and do most of the work on the normal stack even if sigaltstack is disabled.
805
806 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
807
808         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
809         UCONTEXT_REG_ constants are available on linux as well.
810         (mono_arch_monoctx_to_sigctx): Ditto.
811         (mono_arch_ip_from_context): Ditto.
812
813 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
814
815         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
816         other domains.
817
818 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
819
820         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
821         no longer needed.
822
823 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
824
825         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
826         if a breakpoint cannot be inserted.
827
828 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
829
830         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
831
832 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
833
834         * debugger-agent.c (frame_commands): Return an error instead of asserting if
835         no JIT info is found for the method.
836
837 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
838
839         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
840         in debug printf.
841
842 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
843
844         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
845         a list of arch specific trampolines.
846
847         * aot-compiler.c (emit_trampolines): Use it.
848
849 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
850
851         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
852         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
853         get rid of the _full from their name.
854
855 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
856
857         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
858         get_nullified_class_init_trampoline to remove some code duplication.
859
860 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
861
862         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
863         attach.
864
865 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
866
867         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
868
869         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
870
871         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
872         there is no need to jump through the first plt entry.
873
874         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
875
876         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
877         arch-specific function.
878         (mono_aot_get_plt_info_offset): Ditto.
879
880         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
881         mono_arch_init () to register jit icalls called from full-aot trampolines.
882         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
883         to mini-<ARCH>.c.
884
885         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
886         the specialized throw corlib exception trampoline, use a variant of the normal
887         trampoline along with a new C function which does the call to
888         mono_exception_from_token (), just like on x86.
889
890 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
891
892         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
893         Reorganize the full aot trampoline creation functions, instead of taking a bunch
894         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
895         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
896         creation functions on architectures which have the full-aot ones.
897
898 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
899
900         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
901
902 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
903
904         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
905         explicitly, this seems to be required by some gcc versions at -O2.
906
907         * mini-arm.c: Ditto.
908
909 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
910
911         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
912         has_target delegate invokes.
913
914 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
915
916         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
917         info fields.
918
919         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
920         add patches/unwind info arguments, move to mini.c.
921
922         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
923
924 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
925
926         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
927         command which returns full path names.
928
929 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
930
931         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
932         code_size output variable.
933
934         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
935         mono_get_lmf_addr.
936         
937 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
938
939         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
940         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
941         (mono_arch_cpu_enumerate_simd_versions): Ditto.
942
943 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
944
945         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
946         apple assembler.
947
948 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
949
950         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
951
952 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
953
954         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
955
956 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
957
958         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
959
960 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
961
962         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
963         line number support works with eglib.
964
965 2010-04-27  Miguel de Icaza  <miguel@novell.com>
966
967         * driver.c, mini.c: Since linking with LLVM makes the default Mono
968         dirty an extra 70kb pages on startup we are now going to choose a
969         different strategy: ship mono and mono-llvm binaries, with the
970         second being the one that links with LLVM and defaults to LLVM
971         being enabled.
972
973 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
974
975         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
976         Implement full-aot support on x86.
977
978         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
979         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
980         the first register returned by get_global_int_regs ().
981
982         * cpu-x86.md: Fix the length of insertx_u1_slow.
983
984         * iltests.il.in: Disable tail call tests when running with full-aot.
985
986 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
987
988         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
989
990 2010-04-24  Mark Probst  <mark.probst@gmail.com>
991
992         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
993         in the initializer, because it's non-constant.
994
995 2010-04-23  Miguel de Icaza  <miguel@novell.com>
996
997         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
998         of LLVM on by default.   Used for buildbots and other setups.
999
1000 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
1001
1002         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
1003
1004 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
1005
1006         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
1007         initonly static fields when using moving GC.
1008
1009         Contributed under MIT/X11 license.
1010
1011 2010-04-23  Geoff Norton  <gnorton@novell.com>
1012
1013         * mini-amd64.h: Darwin x86_64 support.
1014
1015 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
1016
1017         * exceptions-arm.c: Remove platform checks in favor of configure checks.
1018
1019 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
1020
1021         * exceptions-arm.c: Add Android support for sigcontext structure.
1022
1023 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1024
1025         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
1026         wrappers correctly now that their wrapper info is NULL.
1027
1028 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1029
1030         * mini.c (mono_jit_compile_method_inner): Avoid calling
1031         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
1032
1033 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
1036         so the latter can be #ifndef DISABLE_JIT-ed.
1037
1038         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
1039
1040 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1041
1042         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
1043
1044 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1045
1046         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
1047         stack.
1048
1049 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
1050
1051         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
1052         calling mono_class_num_methods (). Fixes #592244.
1053
1054 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1055
1056         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1057
1058         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1059
1060 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1061
1062         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1063         version.
1064         * (handle_alloc): Ditto.
1065         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1066         change, its not needed anymore.
1067
1068 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1069
1070         * mini-posix.c (sigusr1_signal_handler): Fix build on
1071         non x86/amd64 systems.
1072
1073 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1076         calls where the constrained class needs a context. Fixes #595863.
1077
1078         * iltests.il.in: Add a test.
1079
1080 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1081
1082         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1083         2.6/SVN seems to have broken support for them.
1084
1085 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * mini-llvm.c: Fix support for LLVM 2.6.
1088
1089 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1092         MonoInternalThread belonging to the thread.
1093
1094 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1095
1096         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1097         unsafe optimization that will remove bound checks.
1098
1099 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1100
1101         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1102         CompareExchange not to be inlined for I8.
1103
1104         Contributed under MIT/X11 license.
1105
1106 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1107
1108         * array.cs: Add tests for cast between primitive array types.
1109
1110 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1111
1112         * Makefile.am: create a convenience library for moon to link with
1113
1114 2010-04-07 Paolo Molaro <lupus@ximian.com>
1115
1116         * method-to-ir.c: optimize array accesses from generic interfaces.
1117
1118 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1119
1120         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1121
1122 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1123
1124         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1125         of marshalbyref classes.
1126
1127         Fixes #515884.
1128
1129 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1130
1131         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1132         information.
1133
1134         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1135         information.
1136
1137         * mini.h: Increase AOT version.
1138
1139 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1140
1141         * mini-x86.h: Only enable soft debugger when using sigaction or on
1142         Windows. Fixes build on Haiku (lacks siginfo_t).
1143
1144         Code is contributed under MIT/X11 license.
1145
1146 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1147
1148         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1149         BeOS-style signal handlers.
1150
1151         Code is contributed under MIT/X11 license.
1152         
1153 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1154
1155         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1156
1157 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1158
1159         * mini-exceptions.c: Fix win32 build.
1160
1161 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1162
1163         * mini.c, driver.c: Call mono_gc_base_init() before
1164         mono_debug_init().
1165
1166 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1167
1168         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1169         call_method]): Delegate the actual work in security-core-clr.c
1170         to ease code sharing.
1171
1172 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1175         float conv.ovf.un opcodes are encountered, instead of asserting later.
1176         Fixes #566296.
1177
1178 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1179
1180         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1181
1182         * iltests.il.in: Add a test.
1183
1184 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1185
1186         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1187         large. Fixes #567040.
1188
1189         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1190
1191 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1192
1193         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1194         #592711.
1195
1196 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1197
1198         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1199         mono_create_handler_block_trampoline with the proper #ifdef so that it
1200         compiles on amd64.
1201
1202 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1203
1204         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1205         allows to select if it's new or old context that is passed to 
1206         the callback.
1207
1208         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1209         case when executing a guarded handler from the EH machinery.
1210
1211         * mini-exceptions.c (mono_install_handler_block_guard): New function
1212         responsible for checking for handler blocks, installing the guard and
1213         clearing abort state.
1214
1215         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1216         to check for handler blocks and skip interruption logic if one was found.
1217
1218         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1219         by the handler block guard trampoline. Resumes interruption by raising the
1220         pending ThreadAbortException.
1221
1222         * mini.c (create_jit_info): Calculate the end address of a finally block.
1223
1224         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1225         of a finally block to a specified address and return the old one.
1226
1227         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1228         trampoline patches the original return address and calls the trampoline function.
1229
1230 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1233
1234         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1235         does the patching if the callee is in the same domain.
1236
1237         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1238         of mono_arch_patch_plt_entry ().
1239
1240 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1241
1242         * mini.c (create_jit_info): Fix try block hole length encoding.
1243
1244 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1245
1246         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1247         duplicate information and print offsets instead of absolute addresses.
1248
1249 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1252         event is sent. Fixes #591733.
1253
1254 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1255
1256         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1257         OpenBSD.
1258
1259 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1260
1261         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1262         thread_to_tls hash table.
1263
1264         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1265         section. Fixes #591000.
1266
1267 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1268
1269         * Makefile.am (version.h): Check for pure .git directory only,
1270         fixes SVN revision when using git without git-svn.
1271
1272         Contributed under MIT/X11 license.
1273
1274 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1275
1276         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1277
1278 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1279
1280         * basic-simd.cs: Test for vector x scalar binary operators.
1281
1282 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1283
1284         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1285         intrinsics with expanded scalar arguments.
1286
1287 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1288
1289         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1290         don't have an exception class, so don't decode it. This would crash
1291         with filter clauses.
1292
1293 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1294
1295         Make sure that trunk builds with DISABLE_JIT, an update to the
1296         PlayStation 3 port.
1297         
1298         * mini.c (mini_get_shared_method): this code seems to be necessary
1299         regardless of whether DISABLE_JIT has been defined.
1300
1301         (mono_jit_compile_method_inner): it seems that this method is
1302         required even in full AOT mode, so ifdef out only the pieces that
1303         try to genrate code (the body of code that applies patches to the
1304         code).  
1305
1306         (mini_method_compile): do not compile when using DISABLE_JIT.
1307
1308         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1309         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1310         compile when DISABLE_JIT is set.
1311
1312 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1313
1314         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1315         arch really supports it.
1316
1317 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1318
1319         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1320
1321 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1322
1323         * exceptions-s390x.c: Add support for
1324         mono_arch_get_throw_corlib_exception and fix throw by name.
1325
1326         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1327         logic (especially for varargs); Correct localloc sizing; Add
1328         mono_arch_get_this_arg_from_call and
1329         mono_arch_get_this_arg_from_call.
1330
1331         * mini-s390x.h: Add support for facility list extraction;
1332         Correct/update MONO_ARCH_xxx settings.
1333
1334         * mini-s390.c: Minor corrections to instruction output for
1335         varargs. No IMT implementation - I think it's time to deprecate
1336         s390 and just leave s390x.
1337
1338         * tramp-s390x.c: Correct creation of trampoline instruction
1339
1340
1341         * cpu-s390x.md: Update some instruction lengths
1342
1343 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1344
1345         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1346         can be hit with partial sharing.
1347
1348         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1349         in non-shared classes correctly.
1350         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1351         Turn on partial sharing.
1352
1353 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1356         by mistake.
1357
1358 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1359
1360         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1361         mono_method_signature ().
1362
1363         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1364
1365         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1366         error checking, so later calls do not need error checking.
1367
1368 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1369
1370         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1371
1372         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1373
1374 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1375
1376         * mini-exceptions.c (mono_handle_exception_internal): Don't
1377         check try_end for archs different than s390. 
1378
1379         * mini.c (create_jit_info): Don't crash if the finallt block is the
1380         last one.
1381
1382 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1383
1384         * driver.c (mono_main): Don't free global codeman under linux since
1385         glic now peeks at code on stack for more archs than just amd64.
1386
1387 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1388
1389         * mini.c, method-to-ir.c: changes to support compressed interface
1390         bitmaps.
1391
1392 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1395         Use sigaction on OpenBSD too.
1396
1397 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1398
1399         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1400
1401 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1402
1403         * debugger-agent.c: #include sys/select.h for fd_set.
1404
1405         Code is contributed under MIT/X11 license.
1406
1407 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1410         (openbsd+amd64 ?).
1411
1412 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1413
1414         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1415         some large methods with lots of exception handlers. Fixes #440924.
1416
1417 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1418
1419         * method-to-ir.c: remove code duplication for interface checks.
1420
1421 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1422
1423         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1424         (assembly_unload): Clear all event requests referencing the to-be unloaded
1425         assembly.
1426
1427
1428 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1429
1430         * mini.h, mini-exceptions.c: restore the state of the stack
1431         guard page permissions.
1432
1433 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1434
1435         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1436         call site patching code, it doesn't appear to be needed.
1437
1438 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1439
1440         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1441         sharing generic methods whose type arguments are a mix of reference and
1442         non-reference types. Not yet turned on.
1443
1444         * mini.c (mini_get_shared_method): New helper function to return
1445         the method which will be compiled/registered in the JIT tables when doing
1446         generic sharing.
1447         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1448         use mini_get_shared_method ().
1449
1450         * mini.c (mini_method_compile): Register the same method which is compiled when
1451         doing generic sharing.
1452
1453         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1454
1455         * generics.cs: Add partial sharing tests.
1456
1457 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1458
1459         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1460                    Add an enum value that or's all possable values together. Add an enum value
1461                    that marks the end of the used bit indexes.
1462
1463         * mini-amd64.c : Make changes to match the changes in mini.h 
1464
1465         * mini-x86.c : Make changes to match the changes in mini.h
1466
1467         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1468                    simd_version to support more simd versions. Changed the name of
1469                    simd_version to simd_version_flags to make it more intuitive that
1470                    it now contains bit flags. Reordered the *_intrinsics arrays to
1471                    match the changes above. Changed emit_intrinsics() to use the new
1472                    setup mentioned above.
1473
1474         Code is contributed under MIT/X11 license.
1475
1476 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1477
1478         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1479         remaining archs. Alpha and hppa maintainers, please stand up.
1480
1481 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1484         is needed even when fail_tramp!=NULL.
1485
1486 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1487
1488         * debugger-agent.c (insert_breakpoint): Write a log message.
1489
1490 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1491
1492         * iltests.il.in: Add a few tests for LEAVE going over multiple
1493         finally clauses.
1494
1495 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1496
1497          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1498
1499 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1500
1501         * mini.h (MonoBasicBlock): Add native_length field.
1502         * mini.h (MonoCompile): Add try_block_holes field.
1503         * mini.h (MonoInst): Add exception_clause pointer to
1504         the data union.
1505
1506         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1507         * mini.c (mono_cfg_add_try_hole): New function to register possible
1508         holes in try blocks.
1509         * mini.c (create_jit_info): Fill in the holes information.
1510
1511         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1512         by a try block.
1513
1514         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1515
1516 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1517
1518         * jit-icalls.c: adjusted for the array API changes.
1519
1520 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1523
1524 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1527         the 'pending' flag. This fixes support for appdomains too.
1528
1529
1530 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1531
1532         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1533
1534 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1535
1536         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1537         when using LLVM, LLVM generates it itself when needed.
1538
1539         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1540
1541         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1542         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1543         OP_ANDNPS/OP_ANDNPD.
1544
1545 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1546
1547         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1548         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1549         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1550
1551 2010-03-11  Martin Baulig  <martin@ximian.com>
1552
1553         * debugger-agent.c (type_commands): Add NULL check to
1554         `CMD_TYPE_GET_SOURCE_FILES'.
1555
1556 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1557
1558         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1559
1560 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1563         #586664.
1564
1565         * iltests.il.in: Add a test.
1566
1567 2010-03-05  Martin Baulig  <martin@ximian.com>
1568
1569         Add support for aborting invocations.
1570
1571         * debugger-agent.c
1572         (InvokeData): Added `InvokeData *last_invoke'.
1573         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1574         added a new `invoke' field to keep the `InvokeData *' throughout
1575         the invocation.
1576         (ErrorCode): Added `ERR_NO_INVOCATION'.
1577         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1578         (mono_debugger_agent_handle_exception): Don't report any exception
1579         if an abort was requested.
1580         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1581         a thread abort if necessary.
1582         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1583
1584 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1585
1586         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1587         so we can release the whole list and not just the first one. Free
1588         it in more places as well.
1589
1590 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1591
1592         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1593
1594 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1595
1596         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1597
1598 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1599
1600         * driver.c: report also other misc build options.
1601
1602 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1603
1604         * method-to-ir.c: Generate better code for the NewObject
1605         intrinsic.
1606         
1607 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1608
1609         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1610         is disabled. Fixes #582322.
1611
1612         * iltests.il.in: Add a test.
1613
1614 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1615
1616         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1617         the handling of obj->synchronization == null and owner != current thread to
1618         mono_monitor_exit ().
1619
1620         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1621
1622
1623 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1624
1625         * mini.c: change the way emulated opcode info is stored and save about
1626         4 KB of runtime memory.
1627
1628 2010-03-04  David S. Miller  <davem@davemloft.net>
1629
1630        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1631        that don't provide the siginfo in the second signal handler argument
1632        are buggy, and this has been fixed for years.
1633        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1634        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1635
1636 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1637
1638         * aot-runtime.c (find_symbol): Fix a leak.
1639         (decode_patch): Ditto.
1640
1641 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1642
1643         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1644
1645 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1646
1647         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1648
1649 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1650
1651         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1652
1653 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1654
1655         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1656         to check for errors, it's enough to create the metadata open.
1657
1658         Fixes #562150
1659
1660 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1661
1662         * trace.c|h:
1663         * mini-exceptions.c: Add support for printing stack traces when handling
1664         exceptions, and when printing exceptions thrown while tracing also print
1665         the exception message.
1666
1667 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1668
1669         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1670         since the exclude token is a valid string character.
1671
1672 2010-03-02  Levi Bard  <levi@unity3d.com>
1673
1674         * debugger-agent.c: Invalidate thread stacks on domain unload.
1675
1676 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1677
1678         * method-to-ir.c: Emit dummy_use for stored reference after write
1679         barriers to make sure the object is pinned if the GC interrupts
1680         before the write barrier is done.
1681
1682 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1683
1684         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1685
1686 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1687
1688         * debugger-agent.c: Add a log message printing the protocol version.
1689
1690 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1691
1692         * debugger-agent.c: Add a new command to communicate the protocol version used
1693         by the client. This could be used to allow newer runtimes to communicate with
1694         older clients.
1695
1696 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1699
1700 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1701
1702         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1703         type.
1704
1705 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1706
1707         * mini-arm.c: make the arm cpu arch configurable with the
1708         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1709         Bug #584198.
1710
1711 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1712
1713         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1714         support for the perf tool on Linux.
1715
1716 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1717
1718         * method-to-ir.c: make string.InsertenalSetChar() specialization
1719         effective.
1720
1721 2010-03-01  Robert Jordan  <robertj@gmx.net>
1722
1723         * Makefile.am: fix the non-static build.
1724
1725 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1728         here.
1729
1730 2010-02-26  Robert Jordan  <robertj@gmx.net>
1731
1732         * tasklets.c (continuation_store): Return from an error condition
1733         immediately.
1734
1735 2010-02-26  Martin Baulig  <martin@ximian.com>
1736
1737         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1738
1739         * debug-mini.c
1740         (MonoDebuggerThreadInfo): Added `internal_flags'.
1741         (MonoDebuggerInternalThreadFlags): New enum.
1742         (_mono_debugger_throw_exception): Don't signal the debugger if a
1743         type abort was requested.
1744         (_mono_debugger_unhandled_exception): Likewise.
1745         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1746         (mono_debugger_runtime_invoke): If the debugger requested a thread
1747         abort during the invocation, reset it here.
1748
1749 2010-02-26  Martin Baulig  <martin@ximian.com>
1750
1751         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1752         instead of `MonoThread *'.
1753
1754 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1755
1756         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1757         code offsets table, as it is mostly sorted.
1758
1759 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1762         Fixes #582991.
1763
1764 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1765
1766         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1767
1768 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1769
1770         * Makefile.am: build the new ABI version of the libmono library.
1771         * debugger-agent.c, mini.c: fix warnings with the new API.
1772         * jit.h: don't depend on glib.h being included.
1773
1774 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1777
1778 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1781         ThreadStatic variables.
1782
1783 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1784
1785         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1786         data is not freed yet. Fixes #582460.
1787
1788 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1791         event requests. Bump protocol minor version.
1792
1793 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1796
1797 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1800         #581950.
1801
1802         * iltests.il.in: Add a test.
1803
1804 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1805
1806         * mini.c (inline_method): Check for loader errors.
1807
1808 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1809
1810         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1811         instead of mono_method_get_header as it doesn't decode locals
1812         so the called method can have unresolved dependencies that will only
1813         be satisfied after the current method is JIT'd.
1814
1815         Fixes #550968.
1816
1817 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1818
1819         * basic.cs (test_0_div_opt): Speed this up a bit.
1820
1821 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1824
1825         * mini.c (mono_jit_create_remoting_trampoline): Call
1826         mono_create_specific_trampoline () instead of
1827         mono_arch_create_specific_trampoline ().
1828
1829         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1830
1831 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1832
1833         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1834         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1835
1836         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1837
1838         * mini-amd64.c: Fix DISABLE_JIT support.
1839
1840 2010-02-20  Geoff Norton  <gnorton@novell.com>
1841
1842         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1843
1844 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1845
1846         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1847         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1848         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1849         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1850         handle_exception.
1851
1852 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1855         edx/ecx too. This is needed to support OP_SEQ_POINT.
1856
1857 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1858
1859         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1860
1861         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1862
1863 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1864
1865         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1866         LLVM+AOT+exceptions, not enabled yet.
1867
1868 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1871
1872 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1873
1874         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1875         xdebug info for these.
1876
1877         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1878         in a few places.
1879
1880         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1881         not used yet.
1882
1883 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1884
1885         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1886
1887 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1888
1889         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1890         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1891
1892         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1893         for mtouch.
1894
1895 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1896
1897         * debugger-agent.c: handle incomplete reads and EINTR in
1898         recv()/send(). This could have been causing random
1899         disconnections.
1900
1901 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1902
1903         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1904         points.
1905
1906         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1907         so they have small offsets. Fixes #566311.
1908
1909 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1910
1911         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1912
1913 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * mini-amd64.c: Remove the special casing of byref in a few places now that
1916         mini_type_get_underlying_type () handles it.
1917
1918         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1919         by returning native int. Fixes #577984.
1920
1921 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1922
1923         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1924         a macro.
1925
1926         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1927         of putting the clause itself.
1928
1929         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1930
1931 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1932
1933         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1934         might be unaligned.
1935
1936 2010-02-10  Geoff Norton  <gnorton@novell.com>
1937
1938         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1939
1940 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1941
1942         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1943         llvm methods too.
1944
1945         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1946         it is not an LLVM generated symbol.
1947
1948         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1949
1950         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1951         implementation in gshared mode because it causes regressions.
1952
1953         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1954
1955         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1956         should be done by the caller.
1957
1958         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1959
1960         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1961
1962         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1963         since mono_jit_info_table_find () doesn't do it anymore.
1964
1965         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1966         instead of mono_jit_info_table_find ().
1967
1968 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1971
1972         * aot-compiler.c (encode_method_ref): Update after the removal of
1973         mono_gc_get_managed_allocator_type ().
1974
1975         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1976         Fixes #564538.
1977
1978 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1979
1980         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1981         generic params as well.
1982         (handle_isinst): Ditto.
1983
1984         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1985         instead of always calling an icall.
1986
1987         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1988         computing the size of the got.
1989
1990         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1991         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1992         the assembly directive '.set' so it points to the first LLVM emitted method.
1993
1994 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1995
1996         * mini.c (mini_method_verify): Report the method which failed to verify.
1997
1998 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1999
2000         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
2001         to avoid JIT'ng dead basic blocks. This is the same behavior as the
2002         runtime MS verifier.
2003
2004 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2005
2006         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
2007         #561962.
2008
2009 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2010
2011         * mini-llvm.c: Init the jit module only when first JITting.
2012
2013         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
2014
2015         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
2016
2017         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
2018         replaced with the real got.
2019
2020         * debugger-agent.c (type_commands): Return the enumness if the type as well.
2021
2022         * image-writer.c: Reduce the amount of #ifdefs a bit.
2023
2024         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
2025         llvm on darwin/arm.
2026
2027         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
2028
2029         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
2030         global.
2031
2032 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2033
2034         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
2035         (mono_llvm_emit_method): Fix unaligned stores too.
2036
2037         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
2038         so async stack walks don't crash.
2039
2040 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2041
2042         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
2043         was not patched if the callee needed an rgctx trampoline.
2044
2045 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2046
2047         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
2048         vtable address in AOT code.
2049
2050 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
2053         MonoInst's.
2054
2055 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2056
2057         * genmdesc.pl: remove dependency on external cpp.
2058
2059 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2060
2061         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2062         using LLVM, its not needed, and abcrem can't handle it.
2063
2064 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2065
2066         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2067         it easier to group instructions and reduce duplication.
2068
2069 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * decompose.c: Move the array/soft float decompose routines here from
2072         method-to-ir.c.
2073
2074         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2075
2076 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2077
2078         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2079         to tell LLVM that the got is constant, not used yet.
2080
2081         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2082
2083 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2084
2085         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2086         managed wrappers.
2087
2088 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2089
2090         * aot-compiler.c (add_wrappers): Commit the hack which generates
2091         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2092         custom attribute.
2093
2094 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2095
2096         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2097         a fault, only used by the LLVM backend.
2098
2099         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2100         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2101
2102         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2103         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2104
2105         * mini-llvm.c: Only generate volatile loads from load instructions which have
2106         the MONO_INST_FAULT flag set.
2107
2108 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2109
2110         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2111         64 bit platforms.
2112
2113 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2114
2115         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2116         sequence points. Fixes #571236.
2117
2118 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2119
2120         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2121         end of the appdomain unload process, after assemblies have been unloaded.
2122         Fixes #574842.
2123
2124 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2125
2126         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2127         works.
2128
2129         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2130         Fixes #573988.
2131
2132 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2133
2134         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2135
2136 2010-01-26  Geoff Norton  <gnorton@novell.com>
2137
2138         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2139         with struct marshalability.
2140
2141 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2142
2143         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2144         it supports class names as well.
2145
2146         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2147         needed by the GC map code.
2148
2149         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2150         flags if needed.
2151
2152         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2153         if cfg->init_ref_vars is set.
2154
2155         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2156         cfg->disable_initlocals_op_refs is set.
2157
2158         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2159         using liveness info if cfg->compute_precise_live_ranges is set.
2160
2161         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2162         volatile variables correctly. Add comments about the live ranges. Not enabled
2163         yet.
2164
2165 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2166
2167         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2168         0x2a into them in method prologs.
2169
2170         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2171
2172 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2175         classes, since llvm is compiled with -fno-rtti.
2176
2177         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2178
2179         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2180         llvm does not require it.
2181
2182         * aot-runtime.c (load_method): Print the full name of the last aot method.
2183
2184 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2185
2186         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2187         thread has not fully started yet.
2188
2189 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2190
2191         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2192
2193 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2194
2195         * driver.c: Do not abort if LLVM is not supported, print a
2196         warning and add the information to the Mono JIT information.
2197
2198 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2199
2200         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2201         using explicit null checks.
2202
2203 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2204
2205         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2206         related code.
2207
2208         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2209         () in one place.
2210         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2211         its no longer needed.
2212
2213         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2214
2215         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2216         define for platforms still using it (s390). Get rid of the
2217         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2218
2219         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2220         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2221
2222         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2223         the caller pushed the arguments.
2224
2225         * mini-llvm.c: Enable throwing exceptions on x86.
2226
2227         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2228         "Thread (nil) may have been prematurely finalized" messages if this is called
2229         on a thread not registered with the runtime.
2230
2231         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2232
2233 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2234
2235         * jit-icalls.c (mono_array_new_3): New jit icall.
2236
2237         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2238
2239         * arrays.cs: Add a test for 3 dimensional arrays.
2240
2241 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2242
2243         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2244         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2245         used.
2246
2247         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2248         thrown on x86.
2249
2250         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2251
2252         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2253
2254         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2255
2256 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2257
2258         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2259           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2260
2261         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2262
2263         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2264
2265         Code is contributed under MIT/X11 license.
2266
2267 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2268
2269         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2270
2271         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2272
2273         * mini.c (mini_method_compile): Set the new flag when running under the
2274         debugger.
2275
2276 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2279         a ref/noref value + a global pin flag, so parts of stack frames can still be
2280         precisely marked even if they include stuff which needs pinning. Improve logging.
2281         Fix many bugs. Not enabled yet.
2282
2283         * gc-test.cs: Add a few tests.
2284
2285         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2286         the normal -v options. Avoid propagating liveness information through bblocks
2287         which end with a NOT_REACHED opcode.
2288
2289         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2290         after cfg has been freed.
2291
2292 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2295         if a clause is skipped because it uses the exception object, since it could
2296         have caught the exception.
2297
2298         * exceptions.cs: Add a test.
2299
2300 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2301
2302        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2303
2304         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2305         ICollection<T> wrappers.
2306
2307 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2310
2311 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2314         NOMAP32BIT or optimize_for_xen is set.
2315
2316 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2319         mono_metadata_str_hash () instead.
2320
2321 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2322
2323         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2324         sizeof (void*).
2325
2326         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2327
2328 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2329
2330         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2331         flag is set.
2332
2333         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2334         throwing code correctly.
2335
2336         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2337
2338 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2341         ftnptrs created by us, handle RGCTX_FETCH correctly.
2342         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2343
2344         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2345         ftnptr added by mono_aot_get_named_code ().
2346
2347 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * mini-arm.c: Fix a few LLVM problems.
2350
2351         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2352
2353 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2354
2355         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2356         AOT compiling.
2357
2358 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2359
2360         * jit.h, method-to-ir.c: added ability to set the policy for
2361         inserting breakpoints from the break IL instruction or the
2362         Debugger.Break () API call.
2363
2364 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2367         assemblies need to be eagerly loaded.
2368
2369 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2370
2371         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2372
2373 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2374
2375         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2376         an argument which matches any exception.
2377
2378 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2379
2380         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2381         optimization if the called method is gshared and marshalbyref, since gshared
2382         methods can' have wrappers. Fixes #569390.
2383
2384         * generics.cs: Add a test.
2385
2386 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2387
2388         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2389         callable from gdb.
2390
2391 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2392
2393         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2394
2395 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2398         since it is not supported in win2000.
2399
2400 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2401
2402         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2403         error if loading an assembly fails.
2404         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2405
2406         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2407         if exists.
2408
2409         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2410         compiled methods.
2411
2412         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2413
2414         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2415         is not supported yet.
2416
2417         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2418
2419 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2420
2421         * method-to-ir.c: All types with variant arguments must fallback to the
2422         slow path. This makes cast of variant delegates work.
2423
2424         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2425         argument that is set to TRUE is the returned vtable slot is for a variant
2426         interface. Changed a g_print + g_assert_not_reached to a g_error.
2427
2428         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2429         a similar fashion of generic virtual methods.
2430
2431 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2432
2433         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2434         when cfg is null.
2435
2436         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2437         method using a variance aware function.
2438
2439         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2440
2441 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2442
2443         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2444         do an icall for now.
2445
2446 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2447
2448         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2449         If LLVM decides to set the code model to Large, reset it to Default.
2450
2451 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2452
2453         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2454         stripped binaries as well.
2455
2456 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2457
2458         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2459         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2460
2461         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2462         reg.
2463
2464 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2465
2466         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2467         separate function.
2468
2469         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2470         as the type info to llvm.eh.selector.
2471         (exception_cb): Use the type info for filling out some fields of
2472         MonoJitExceptionInfo like the flags and the exception class. This is needed
2473         because the LLVM produced exception handling clauses might not match the original
2474         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2475
2476         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2477         separate function. Add an extra argument which returns the type infos
2478         corresponding to the exception clauses.
2479
2480         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2481         exception handling clauses.
2482
2483 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2484
2485         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2486         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2487         to fix an AOT case.
2488
2489 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2490
2491         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2492         internal assembly.
2493
2494 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2495
2496         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2497         llvm code.
2498
2499 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2500
2501         * mini.c (mini_method_compile): Verify the method before calling
2502         mono_compile_create_vars as this might crash since it uses method
2503         information.
2504
2505         Fixes #560196.
2506
2507 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2508
2509         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2510         one case if AOTing, since the class might not be a concrete class.
2511
2512 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2513
2514         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2515         functions which are now defined in mempool-internals.h.
2516
2517         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2518
2519         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2520
2521 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2522
2523         * mini.c:
2524         * method-to.ir.c:
2525         * mini-*.c: Properly handle generic enums.
2526
2527         Fixes #566294
2528
2529 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2530
2531         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2532         in a few more places.
2533
2534 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2535
2536         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2537         nullable parameters. Fixes #567351.
2538
2539 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2540
2541         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2542
2543 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2546         mono_get_generic_context_from_code () call.
2547
2548         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2549
2550 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2551
2552         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2553         needed.
2554
2555 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2556
2557         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2558         mono_method_get_signature returns NULL. Fix #567084
2559
2560 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2561
2562         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2563         instead of once for each module.
2564
2565 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2566
2567         * debugger-agent.c (ss_start): Implement step over for the last sequence
2568         point in methods.
2569
2570         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2571         have the STEP_LOC flag set.
2572
2573         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2574         fails. Fixes #566689.
2575
2576 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2577
2578         * mini.c (mono_add_seq_point): New helper function.
2579         (mono_save_seq_point_info): New function to save sequence point info, extracted
2580         from mini_method_compile ().
2581
2582         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2583
2584         * mini.h (MonoSeqPointInfo): New structure containing information about
2585         the sequence points of a JITted method.
2586         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2587         'bucket' field.
2588
2589         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2590         point information is stored, use a MonoSeqPointInfo structure instead of a
2591         GPtrArray. For each seq point, compute a list of successor seq points.
2592
2593         * debugger-agent.c: Use the successor list to implement step-over more
2594         efficiently: instead of single stepping until a different line/IL offset is
2595         reached, place breakpoints into all successor seq points.
2596
2597         * mini.h: Bump AOT file format version.
2598
2599 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2600
2601         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2602
2603         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2604
2605 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2606
2607         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2608         build.
2609
2610 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2611
2612         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2613         alloca as g_malloc is not signal safe.
2614
2615 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2616
2617         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2618         VALGRIND_DISCARD_TRANSLATIONS.
2619
2620         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2621         checks, they are no longer needed.
2622
2623         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2624         a function into a sigctx which can handle function pointers.
2625
2626         * mini-ppc.c: Implement soft debugger support on ppc64.
2627
2628         * mini-ppc.c: Implement soft debugger support.
2629
2630 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2631
2632         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2633
2634 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2635
2636         * mini.c (mono_get_runtime_build_info): include Mono version in
2637         the returned value.
2638
2639         * driver.c (mono_main): VERSION is now included in the string
2640         returned from mono_get_runtime_build_info()
2641
2642 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2643
2644         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2645         signatures. Fixes #565143.
2646
2647         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2648
2649 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2650
2651         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2652
2653 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2654
2655         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2656         making max stack 10x smaller.
2657
2658 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2659
2660         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2661
2662 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2663
2664         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2665
2666 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2667
2668         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2669         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2670
2671         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2672
2673         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2674
2675         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2676
2677         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2678         the compilation.
2679
2680 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2681
2682         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2683         raise an invalid program exception.   
2684
2685         For other opcodes that we might not handle use a g_warning and
2686         raise the exception.   Beats termination.
2687
2688         Fixes #561724
2689
2690 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2691
2692         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2693
2694         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2695         by merging the LLVM and !MAP_32BIT cases.
2696
2697 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2698
2699         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2700         sigctx being passed in, as we have no CONTEXT available in the APC.
2701
2702         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2703         for now.
2704
2705         Code contributed under MIT/X11 license.
2706
2707 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2708
2709         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2710         in the LLVM backend on AMD64.
2711
2712         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2713         FDE.
2714
2715         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2716
2717         * mini-llvm.c: Export mono_personality for AOT.
2718
2719         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2720
2721         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2722         implicit exception can occur.
2723
2724         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2725         OP_IMPLICIT_EXCEPTION instruction.
2726
2727         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2728
2729         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2730
2731         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2732         inside a protected block.
2733
2734         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2735         trampolines doesn't include the argument.
2736
2737         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2738         trampolines on amd64.
2739
2740         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2741         of RDI.
2742
2743         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2744         disabled for methods with clauses.
2745
2746         * mini-llvm.c: Enable support for catch clauses.
2747
2748         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2749         end of an LLVM compiled finally clause.
2750         (mono_handle_exception_internal): Save the exception handling state in TLS
2751         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2752         resume unwinding from that point.
2753
2754         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2755         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2756         to obtain the addresses of the exception handling regions.
2757
2758         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2759         finally clauses are supported.
2760
2761         * mini.c (mini_method_compile): Add support for LLVM code with exception
2762         handlers.
2763
2764 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2765
2766         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2767         proper size.
2768
2769 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2770
2771         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2772         as a primitive type.
2773
2774 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2775
2776         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2777         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2778         #564000.
2779
2780 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2781
2782         * method-to-ir.c (mini_redirect_call): do not redirect the
2783         InternalAllocateStr internal call if string profiling is enabled.
2784
2785 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2786
2787         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2788         generic methods.
2789
2790         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2791         unwind.h header file.
2792
2793         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2794         newer valgrind versions seems to handle this fine.
2795
2796 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2797
2798         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2799         on the debugger thread.
2800
2801 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2804
2805         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2806
2807         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2808
2809         * cpu-<ARCH>.md: Make call_handler clob:c.
2810
2811         * mini.c: Reenable SSA for methods with clauses.
2812
2813         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2814         as it causes failures on x86.
2815
2816 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2817
2818         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2819         returns NULL (e.g. a bad assembly).
2820
2821 2009-12-08  Geoff Norton  <gnorton@novell.com>
2822
2823         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2824         stepping out into native code.  There were issues with nested invokes
2825         like .cctors.
2826
2827 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2828
2829         * mini.c (mini_method_compile): Do the disable_llvm checks early
2830         and avoid the LLVM compile pass if the checks fail.
2831
2832         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2833
2834         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2835         LLVM optimizations don't try to remove them.
2836
2837         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2838         different file so the original remains.
2839
2840 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2841
2842         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2843
2844         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2845
2846         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2847         support for non-inline unwind descriptors.
2848
2849 2009-12-07  Geoff Norton  <gnorton@novell.com>
2850
2851         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2852         the interrupt_count slightly differently.  Native threads were never
2853         marked as resumed.
2854
2855 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2858         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2859         yet generate this info.
2860
2861         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2862
2863         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2864         client can distinguish between intptrs and longs.
2865
2866 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2869         blob.
2870
2871         * aot-runtime.c (load_function): Update after the change above.
2872
2873         * mini.h: Bump AOT file format version.
2874
2875         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2876         if the delegate class is dynamic.
2877
2878         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2879         in gshared code too using the new rgctx info type
2880         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2881
2882 2009-12-04  Geoff Norton  <gnorton@novell.com>
2883
2884         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2885         we need to track the original suspend count so the thread properly
2886         wakes up in resume_thread.
2887
2888 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2889
2890         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2891         code.
2892
2893         * generics.cs: Add a test.
2894
2895         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2896         is 0. Simplify a lot of code using this.
2897
2898         * mini-trampolines.c (mono_delegate_trampoline): Call
2899         mono_create_static_rgctx_trampoline () before saving the final address in
2900         delegate->method_code, to avoid calling it each time a delegate is first called.
2901
2902         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2903         which need static rgctx trampolines.
2904
2905         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2906         keyed on the method+addr pair, since addr could be either the method addr or
2907         an unbox trampoline in the AOT case. Fixes #560246.
2908
2909 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2910
2911         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2912         place it was called before too.
2913
2914 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2915
2916         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2917         if no security manager is present, to speed up the AOT case. Call
2918         mono_class_vtable () full with raise_on_error == TRUE instead.
2919
2920 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2921
2922         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2923         the local optimization passes can take its result into account. Fixes
2924         #559876.
2925
2926         * exceptions.cs: Add a test.
2927
2928 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2929
2930         This patch is contributed under the terms of the MIT/X11 license
2931
2932         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2933
2934 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2935
2936         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2937
2938         * debugger-agent.c: Rework the handling of stack traces of running threads to
2939         avoid crashes if compute_frames () tries to walk the stack of running thread.
2940
2941         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2942
2943         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2944
2945         * mini.h (StackFrameInfo): Add an 'lmf' field.
2946
2947 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2948
2949         * debugger-agent.c (suspend_current): Always set really_suspended.
2950
2951         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2952
2953         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2954
2955 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2956
2957         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2958         really suspended.
2959
2960 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2961
2962         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2963
2964 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2965
2966         * mini-trampolines.c: Fix MSVC build.
2967
2968 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2969
2970         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2971
2972 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2973
2974         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2975         the instruction following an OP_FCOMPARE is optimized away.
2976
2977 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2980         emit_autoreg () into this arch-specific function.
2981
2982         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2983         code, it is no longer needed.
2984
2985         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2986
2987         * mini.h: Bump AOT file format version.
2988
2989         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2990         using the sorted_code_offsets array, instead of reading it from the
2991         exception debug info.
2992         (load_method): Call mono_aot_find_jit_info instead of
2993         decode_exception_debug_info ().
2994
2995         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2996         LLVM compiled as a flag.
2997
2998 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2999
3000         * debugger-agent.c (resume_thread): Fix a warning.
3001
3002         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
3003         generated.
3004
3005 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3006
3007         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
3008         contents to MonoAotFileInfo.
3009
3010 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3011
3012         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
3013         Put all binary data into a giant blob, similarly to the way .net assemblies
3014         store binary data. Emit offset tables in a compact form to reduce their size.
3015
3016         * mini.h: Bump AOT file format version.
3017
3018         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
3019         places.
3020
3021         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
3022         avoid linear searches at runtime.
3023
3024         * aot-runtime.c (find_symbol): Update this to use the hash.
3025
3026         * mini.h: Bump AOT file format version.
3027
3028 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3029
3030         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
3031         container.
3032
3033         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
3034         too.
3035
3036         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
3037         the distribution of got slot types.
3038
3039         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
3040
3041         * method-to-ir.c: Add support for generating explicit null checks.
3042
3043 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
3046         on a random thread if possible.
3047
3048         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
3049         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
3050         correctly.
3051
3052         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
3053         regs. Pass the real size of the regs array to mono_unwind_frame ().
3054
3055         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3056         ones instead.
3057
3058 2009-11-24  Geoff Norton  <gnorton@novell.com>
3059
3060         * mini-darwin.c: Work around apple bug rdar://7209349  See
3061         http://openradar.appspot.com/7209349 for details.  Synopsis,
3062         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3063         never been initialized before.
3064
3065 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3066
3067         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3068
3069         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3070
3071 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3072
3073         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3074         OP_SHL_IMM is not 32 bit.
3075
3076 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3077
3078         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3079
3080 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3081
3082         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3083         encountered.
3084
3085         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3086         > 0 since some threads can resume if their resume_count is > 0.
3087         (invoke_method): Avoid reading freed memory.
3088
3089         * debugger-agent.c (process_suspend): Extract the suspend code from
3090         process_single_step_inner () to a separate function. Rework the code to prevent
3091         races between this function and thread interrupts.
3092
3093         * debugger-agent.c (suspend_current): Check the resume_count field instead
3094         of resume_one so suspends+resumes during single threaded invokes work
3095         correctly.
3096
3097 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3098
3099         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3100         to make the generated code smaller.
3101
3102         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3103         sequence generated by recent LLVM versions.
3104
3105         * mini-llvm.c: Add support for a few simple cases which weren't supported
3106         before.
3107
3108         * mini-trampolines.c (mono_magic_trampoline): Don't call
3109         mono_arch_get_vcall_slot () when llvm is enabled.
3110
3111         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3112
3113         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3114         into a new function called common_call_trampoline () which is used by the
3115         llvm vcall trampoline as well.
3116
3117         * debugger-agent.c: Implement single threaded invokes.
3118
3119         * debugger-agent.c: Revert change which broke the agent on linux.
3120
3121         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3122         #557606.
3123
3124         * generics.cs: Add a test.
3125
3126 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3127
3128         * debugger-agent.c: Fix the cygwin build.
3129
3130 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3131
3132         * cprop.c: Remove this unused file.
3133
3134 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3135
3136         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3137         #557262.
3138
3139         * basic.cs: Add a test.
3140
3141 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3142
3143         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3144         in one more place.
3145
3146 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3147
3148         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3149         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3150         it. Use this flag to control llvm related code paths instead of #ifdef
3151         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3152         AOT code.
3153
3154         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3155
3156         * mini.h: Bump AOT file format version.
3157
3158         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3159         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3160
3161         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3162         was used as an assembly filter.
3163
3164 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3165
3166         * unwind.c: Fix support for ppc.
3167
3168         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3169         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3170
3171 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3172
3173         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3174         port.
3175         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3176         added by the ps3 changes.
3177
3178 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3179
3180         * mini-gc.c: Resurrect this, so at least it compiles.
3181
3182         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3183
3184 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3185
3186         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3187         create_event_list () so assembly filters can be used.
3188
3189         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3190         from the LMF.
3191
3192 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3193
3194         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3195         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3196         is disabled.
3197
3198         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3199         classes for char/bool too.
3200
3201         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3202
3203         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3204         used.
3205
3206         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3207         Fix warnings.
3208
3209 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3210
3211         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3212         
3213         Code contributed under MIT/X11 license.
3214
3215 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3216
3217         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3218         threads in native code work.
3219
3220         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3221         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3222         version.
3223
3224 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3225
3226         * debugger-agent.c: Implementation for Windows platform.
3227
3228         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3229         primitives. Use SEH to implement breakpoints and single stepping.
3230
3231         * mini-x86.h: Enable soft debugger on Windows.
3232
3233         Code contributed under MIT/X11 license.
3234
3235 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3236
3237         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3238         under XEN. Fixes #522894.
3239
3240         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3241
3242         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3243         interface calls in LLVM AOT code.
3244
3245         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3246         is found.
3247
3248         * mini-llvm.c: Add support for OP_VPHI.
3249
3250         * objects.cs: Add a test.
3251
3252 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3253
3254         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3255         this is called on the debugger thread.
3256
3257 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3258
3259         * mini-llvm.c: Add soft-float support.
3260
3261         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3262         FCALL which returns an R4.
3263
3264         * driver.c (mono_main): Add a missing '\n'.
3265
3266         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3267         platforms which doesn't support the LLVM IMT trampoline.
3268
3269 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3270
3271         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3272
3273         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3274
3275         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3276         virtual calls.
3277
3278         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3279
3280 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3281
3282         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3283         Instead of emitting a method_order table, sort the contents of the code_offsets
3284         table and do a binary search in the sorted table. The previous approach doesn't
3285         work with LLVM which emits methods in a arbitrary order.
3286
3287         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3288         in the .eh_frame section in ELF files.
3289
3290         * mini.h: Bump corlib file format version.
3291
3292         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3293
3294         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3295         LDMIA->LDM macro name change.
3296
3297 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3298
3299         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3300         x86.
3301
3302         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3303         SVN.
3304
3305         * aot-compiler.c: Ditto.
3306
3307         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3308         &align to mini_type_stack_size_full ().
3309
3310         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3311
3312         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3313
3314 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3315
3316         * mini-arm.c: Compute the stack space used by arguments using
3317         mini_type_stack_size_full ().
3318
3319 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3320
3321         * optflags-def.h: Remove dead TREEPROP optimization.
3322
3323 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3324
3325         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3326
3327         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3328
3329 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3330
3331         * driver.c (mono_jit_parse_options): New public API function to parse options
3332         as done by the runtime executable.
3333
3334         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3335         when handling named arguments.
3336
3337 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3338
3339         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3340         for passing small vtypes in registers, make the CallInfo structures more
3341         similar to the code on the other platforms.
3342
3343         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3344         the code in the prolog requires it.
3345
3346 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3347
3348         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3349         (koush@koushikdutta.com).
3350
3351         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3352         where the thunk memory should be allocated from. Fixes appdomain unloading
3353         on arm.
3354
3355 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3356
3357         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3358         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3359
3360 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3361
3362         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3363         AOT, as it is not implemented yet.
3364
3365         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3366
3367 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3368
3369         * debugger-agent.c: Fix windows build.
3370
3371 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3372
3373         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3374         after the client connects/disconnects.
3375
3376         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3377         when an exception of a given type is thrown.
3378
3379         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3380         only on an uncaught exception.
3381
3382         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3383
3384         * debugger-agent.c: Add a 'launch' option.
3385
3386 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3387
3388         * debugger-agent.c: Add a 'timeout' option.
3389
3390 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3391
3392         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3393         the JDWP agent.
3394
3395 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * debugger-agent.c (set_breakpoint): Emit a log message.
3398
3399 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3400
3401         * mini-arm.c: Fix the arm build.
3402
3403 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3404
3405         * aot-compiler.c: don't leak the value returned from
3406         mono_type_full_name().
3407
3408 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3409
3410         * debugger-agent.c: defer including mono-mutex.h until we know the
3411         agent is supported.
3412
3413 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3414
3415         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3416         of pthreads directly.
3417
3418         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3419         exception handlers. Pass info argument.
3420
3421         * mini.h: Adjust signatures of soft debugger functions to pass void*
3422         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3423
3424         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3425         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3426         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3427         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3428
3429         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3430
3431         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3432         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3433         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3434         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3435
3436         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3437
3438         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3439
3440         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3441
3442         * mono-semaphore.h: Skeleton implementation for Windows.
3443
3444         Code contributed under MIT/X11 license.
3445
3446 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3447
3448         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3449
3450         Code contributed under MIT/X11 license.
3451
3452 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3453
3454         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3455
3456         Code contributed under MIT/X11 license.
3457
3458 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3459
3460         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3461         debug info to 100 because 10 still slows down gdb too much.
3462
3463         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3464         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3465         them in the wrappers.
3466
3467 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3468
3469         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3470
3471         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3472
3473         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3474         function mono_aot_get_array_helper_from_wrapper ().
3475
3476         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3477         array helper methods.
3478
3479 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3480
3481         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3482         the value was loaded from memory.
3483
3484         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3485         the value was loader from there.
3486
3487         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3488         without constant swizzle.
3489
3490 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3491
3492         * mini-amd64.c: Put soft debugger functions behind a
3493         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3494
3495         * mini-amd64.h: disable the soft debugger in windows.
3496
3497         Code contributed under MIT/X11 license.
3498
3499 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3500
3501         * mini-x86.c: Put soft debugger functions behind a
3502         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3503
3504         Code contributed under MIT/X11 license.
3505
3506 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3507
3508         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3509         to mono_arch_find_jit_info_ext.
3510
3511         Code contributed under MIT/X11 license.
3512
3513 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3514
3515         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3516
3517         * debugger-agent.c: Add support for filtering events by assemblies.
3518
3519         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3520         the agent is not enabled.
3521
3522 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3523
3524         * exceptions-x86.c: hopefully last change to fix the windows build.
3525         This one courtesy of Jonathan Chambers.
3526
3527 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3528
3529         * debugger-agent.c: remove unused function.
3530
3531 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3532
3533         * debugger-agent.c: add #ifdefs for a few header files.
3534         * mini-x86.h: disable the soft debugger in windows.
3535         Step 1 of 2 to make this compile on windows with gcc.
3536
3537 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3538
3539         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3540         as it breaks the build.
3541
3542 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3543
3544         Merge the soft debugger branch.
3545
3546         * debugger-agent.h debugger-agent.c: New files containing the soft
3547         mode debugger module.
3548
3549         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3550         at the appropriate locations.
3551
3552         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3553         opcode.
3554
3555         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3556         enable/disable single stepping.
3557
3558         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3559         which returns all information in a StackFrameInfo structure, and can handle the
3560         LMF frames added by the debugger.
3561
3562         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3563         about an LMF frame.
3564
3565         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3566         walker function which works on a specific thread and passes a StackFrameInfo
3567         structure to its callback.
3568
3569         * mini.c (mini_init): Initialize the debugger agent.
3570
3571         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3572
3573         * mini-ops.h: Add OP_SEQ_POINT opcode.
3574
3575         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3576         arguments to the debugger agent.
3577
3578 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3579
3580         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3581         speed things up.
3582
3583         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3584
3585         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3586
3587         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3588
3589         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3590         if needed.
3591         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3592         sets the IMT argument and makes a virtual call.
3593
3594         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3595
3596 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3597
3598         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3599         the windows build.
3600
3601 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3602
3603         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3604         runtime. Fixes #551228.
3605
3606 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3607
3608         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3609
3610         * basic.cs: Add a test.
3611
3612         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3613         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3614         CONSTRAINED. Fixes #550964.
3615
3616         * generics.cs: Add a test.
3617
3618 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3619
3620         * mini-posix.c (add_signal_handler): Use
3621         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3622
3623 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3624
3625         Contributed under the terms of the MIT/X11 license by
3626         Jerry Maine <crashfourit@gail.com>.
3627
3628         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3629         sse4a for simd intrinsics.
3630
3631         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3632         sse4a for simd intrinsics.
3633
3634 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3635
3636         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3637         instead of inst_p1 which is not the same on ILP32 platforms.
3638
3639 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3640
3641         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3642         not the mscorlib one before calling mono_get_lmf_addr.
3643
3644         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3645         of the ip to the LMF.
3646
3647         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3648         immediate in the op->op_imm optimization.
3649
3650         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3651         understand. VTypes now work, but are not abi compliant, as they are
3652         split into 4 byte parts instead of 8.
3653         (emit_memcpy): Fix the unrolled case to work on the PS3.
3654
3655         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3656
3657         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3658         the default when static linking.
3659
3660         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3661
3662         * aot-compiler.c: Add an autoreg option to automatically register
3663         statically linked aot modules using ELF .ctors.
3664
3665         * genmdesc.pl: Add __ppc64__ to allowed defines.
3666
3667 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3668
3669         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3670         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3671
3672 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3673
3674         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3675
3676 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3677
3678         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3679         which will contain the domain where the method was found.
3680
3681         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3682         mini_jit_info_table_find ().
3683
3684         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3685
3686         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3687
3688 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3689
3690         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3691         set, its not supported yet.
3692
3693 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3694
3695         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3696         iface wrapper is not found.
3697         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3698
3699 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3700
3701         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3702         which have a different name.
3703
3704         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3705         wrappers and Array.GetGenericValueImpl ().
3706
3707         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3708         because of the change above.
3709
3710         * generics.cs: Add a test for full aot + generic array ifaces.
3711
3712 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3713
3714         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3715         that hides the previous one.
3716
3717 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3718
3719         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3720         marshalled. Fixes #541623.
3721
3722 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3723
3724         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3725
3726 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3727
3728         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3729
3730 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3731
3732         * mini-posix.c (sigprof_signal_handler):
3733         Implemented support for building stat call chans in different ways.
3734
3735 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3736
3737         * mini-exceptions.c (mono_find_jit_info):
3738         Also check that a jit info has been found (fixes a profiler crash).
3739
3740 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3741
3742         * mini.c (mono_codegen):
3743         Call mono_profiler_code_buffer_new with correct code address.
3744
3745 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3746
3747         * driver.c (mono_main): Change the date in the copyright.
3748
3749 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3750
3751         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3752         allocator in shared generic code for open classes, because we
3753         can't get those classes' vtables.  We need to make managed
3754         allocators not depend on the vtable at compile-time to solve this.
3755
3756 2009-10-13  Martin Baulig  <martin@ximian.com>
3757
3758         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3759         `const guint8 *trampoline' argument; send both the old and the new
3760         notification.
3761
3762 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3763
3764         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3765         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3766         (can_marshal_struct): Skip structures with auto layout.
3767
3768         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3769
3770 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3771
3772         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3773         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3774         a variable to hold the stack slot used by the int<->float conversion opcodes.
3775
3776         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3777
3778 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3779
3780         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3781         when using full-aot.
3782
3783 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3784
3785         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3786         each instance of Comparer<T>.
3787
3788         * generics.cs: Add a new test.
3789
3790 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3791
3792         * driver.c (parse_debug_options): Add a 'gdb' option.
3793
3794         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3795
3796         * image-writer.c: Add support for emitting the image into a memory buffer.
3797
3798         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3799
3800         * aot-compiler.c: Add support for registering debug info with GDB using the
3801         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3802         MONO_XDEBUG to 'gdb'.
3803
3804 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3805
3806         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3807         gdb mode.
3808
3809 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3810
3811         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3812         can be used to set breakpoints in gdb.
3813
3814         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3815         segment to an absolute address.
3816
3817 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3818
3819         * method-to-ir.c: Use the managed array allocator method if
3820         available.
3821
3822 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3823
3824         * aot-compiler.c : Fix the MSVC builds
3825
3826         Code is contributed under MIT/X11 license.
3827
3828 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3829
3830         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3831         avoid registering 1 symbol file per method with gdb.
3832
3833 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3834
3835         * mini-sparc.c: Fix the handling of enums with base type long.
3836
3837         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3838
3839         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3840         instead of using type->data.klass as the later doesn't work with generics.
3841
3842 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3843
3844         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3845         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3846         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3847         works differently now and we don't handle it in the JIT anymore.
3848
3849         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3850         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3851         the Thread class split.
3852
3853 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3854
3855         * driver.c: Don't run tests with the obsolete treeprop optimization.
3856
3857         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3858         variable volatile. Fixes #541577.
3859
3860         * basic-calls.cs: Add a new test.
3861
3862         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3863
3864 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3865
3866         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3867         work/required with recent iphone sdk versions.
3868
3869         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3870         structures.
3871
3872         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3873         in the VCALL decomposition code.
3874
3875 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3876
3877         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3878
3879         * basic.cs: Add a test.
3880
3881         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3882         generic invokes.
3883
3884         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3885         searches all the domains of the current thread.
3886
3887         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3888
3889 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3890
3891         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3892         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3893
3894         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3895         for non-jit trampolines.
3896
3897         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3898
3899         * aot-compiler.c (add_wrappers): Ditto.
3900
3901         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3902         the size of the param area used by dyn_call to 6 which covers the majority of
3903         methods.
3904
3905         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3906
3907         * mini-arm.c: Implement support for passing/receiving
3908         longs and receiving floats in the dyn_call code.
3909
3910         * mini-amd64.c: Implement support for receiving vtypes in registers in
3911         the dyn_call code.
3912
3913         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3914         the dyn_call code.
3915
3916 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3917
3918         * mini-arm.c (get_call_info): Return more precise information in
3919         ArgInfo->regtype.
3920         (dyn_call_supported): Use the information in CallInfo.
3921
3922         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3923
3924         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3925         code.
3926
3927         * mini-arm.c: Update after the dyn_call api changes.
3928
3929         * mini.c (mini_create_jit_domain_info): Register a destructor function
3930         for the runtime_invoke_hash.
3931
3932         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3933         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3934         this function.
3935         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3936         (dyn_call_supported): Simplify this by using get_call_info ().
3937         (mono_arch_dyn_call_free): New destructor function.
3938
3939         * generics.cs: Remove a printf.
3940
3941         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3942
3943         * mini-arm.c: Add support for enum return values and passing a few arguments
3944         on the stack.
3945         
3946         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3947         dyn invoke.
3948
3949         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3950
3951         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3952         the dynamic invoke wrappers.
3953
3954         * mini-arm.c: Implement OP_DYN_CALL for arm.
3955
3956         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3957         supported by the dynamic runtime invoke wrapper.
3958
3959         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3960         runtime invoke wrapper.
3961
3962         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3963         if possible when running with full-aot.
3964
3965         * mini-ops.h: Add OP_DYN_CALL opcode.
3966
3967         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3968         with dynamic arguments lists similar to libffi.
3969
3970 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3971
3972         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3973         
3974         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3975         to NEWARR.
3976
3977         * iltests.il.in: Add a new test.
3978         
3979 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3980
3981         * aot-compiler.c (add_generic_instances): Add more instances of
3982         GenericEqualityComparer.
3983
3984 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3985
3986         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3987
3988 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3989
3990         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3991         comments on some functions that now can fail.
3992
3993 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3994
3995         * Makefile.am: Add Info.plist to EXTRA_DIST
3996
3997 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3998
3999         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
4000         static synchronized wrappers. Fixes #539500.
4001
4002 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
4003
4004         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
4005         properly.
4006
4007 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4008
4009         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
4010         lmf before calling filter clauses as well. Fixes #539550.
4011
4012         * exceptions.cs: Add a test.
4013         
4014 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
4015
4016         * aot-compiler.c (add_generic_class): Add instances of
4017         Array.GetGenericValueImpl as well.
4018
4019         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
4020         can be tested too.
4021
4022         * generics.cs: Add a fullaot linq test.
4023
4024 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
4025
4026         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
4027         reg r1 on arm.
4028
4029 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4030
4031         * mini-trampolines.c (mono_delegate_trampoline) : Call
4032           mono_cominterop_get_invoke if the delegate target object
4033           is a COM object.
4034
4035         Code is contributed under MIT/X11 license.
4036
4037 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
4038
4039         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
4040         internal call is defined outside platform code. Reduce code 
4041         duplication with existing [Method|Field]AccessException
4042
4043 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4044
4045         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
4046         if the return value is a small struct passed on regs.
4047
4048 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
4049
4050         * cpu-arm.md mini-arm.c: Remove unused opcodes.
4051
4052         * mini-codegen.c: Enable the cpu description validation for arm.
4053
4054 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4055
4056         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4057         test which depends on structs to objects.cs.
4058         
4059         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4060         require object model related stuff working.
4061
4062         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4063
4064         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4065
4066         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4067         against the instruction metadata in mini-ops.h. amd64 only for now.
4068
4069         * mini-ops.h: Fix some instruction descriptions.
4070
4071         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4072         unused instructions.
4073
4074 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4075
4076         * exceptions.cs: Add a new test.
4077
4078 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4079
4080         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4081
4082 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4083
4084         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4085         skip empty phi opcodes.
4086         
4087         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4088         correctly by zero extending after loads. Skip methods containing calls
4089         to the monitor enter/exit trampolines.
4090
4091         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4092         when calling mono_thread_force_interruption_checkpoint ().
4093
4094         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4095
4096         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4097         64 bit thunks.
4098         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4099
4100         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4101         bootstrap could run.
4102
4103 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4104
4105         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4106
4107 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4108
4109         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4110         of the method to
4111         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4112         LLVM might be very short.
4113
4114         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4115         in OP_THROW/RETHROW.
4116
4117         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4118         alignment on osx.
4119
4120 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4121
4122         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4123         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4124         LLVM might be very short.
4125
4126 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4127
4128         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4129         the alignment for the value of sp.
4130
4131 2009-09-01  Geoff Norton  <gnorton@novell.com>
4132
4133         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4134         managed wrappers in full aot.
4135
4136 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4137
4138         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4139
4140 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4141
4142         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4143
4144 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4145
4146         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4147
4148         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4149         saved info.
4150
4151         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4152
4153         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4154         depend on the info MonoMethodHeader which could be missing in IL stripped
4155         assemblies.
4156
4157 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4158
4159         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4160         they are only 4 byte aligned.
4161
4162 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4165         was done previously, since using SP causes too many problems.
4166
4167         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4168         frames without a frame pointer works.
4169
4170         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4171         global register in methods with calls, since the calls can go through
4172         a static rgctx trampoline which doesn't save it.
4173
4174 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4175
4176         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4177
4178 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4181
4182 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4183
4184         * method-to-ir.c: Fix warnings for uninitialized variables.
4185
4186 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4187
4188         * mini-exceptions.c:
4189         * aot-compiler.c: Fix printf warnings.
4190
4191 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4192
4193         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4194         Add GetGenericValueImpl<string>.
4195         
4196         * aot-compiler.c (add_generic_instances): Add instances of
4197         GenericEqualityComparer<T> for primitive types. Only emit the array
4198         wrappers into the mscorlib image.
4199
4200 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4201
4202         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4203         the methods_loaded array using amodule->info->nmethods.
4204
4205         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4206         (MONO_AOT_FILE_VERSION): Bump this.
4207
4208         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4209         to work.
4210
4211         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4212         MonoJitInfo doesn't belong to its methods aot image.
4213
4214 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4217
4218         * mini-arm.c: Fix warnings.
4219         
4220         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4221
4222         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4223         supports it.
4224
4225 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4228         avoid clobbering IP.
4229
4230         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4231         hold the trampoline argument, so its initial value is available during
4232         debugging.
4233
4234 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4235
4236         * exceptions-arm.c:
4237         * exceptions-hppa.c:
4238         * mini.c:
4239         * exceptions-s390x.c:
4240         * exceptions-mips.c:
4241         * exceptions-ppc.c:
4242         * exceptions-sparc.c:
4243         * exceptions-alpha.c:
4244         * aot-runtime.c:
4245         * mini-trampolines.c:
4246         * exceptions-x86.c:
4247         * exceptions-s390.c: add and use #define's instead of sizeof()
4248         for MonoJitInfo and MonoJitInfoTable.
4249
4250 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4251
4252         * tramp-arm.c:
4253         * tramp-amd64.c:
4254         * tramp-ppc.c:
4255         * tramp-x86.c: use a #define instead of sizeof() for a few
4256         structures that use a zero-length array.
4257
4258 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4259
4260         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4261         case when the method is dynamic. Fixes #529238.
4262
4263 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4264
4265         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4266         of asserting when a method is JIT compiled in full-aot mode.
4267
4268 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4269         
4270         Contributed under the terms of the MIT/X11 license by
4271         Jerry Maine <crashfourit@gail.com>.
4272         
4273         * fixed wrong dates in changelog.
4274
4275 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4276         
4277         Contributed under the terms of the MIT/X11 license by
4278         Jerry Maine <crashfourit@gail.com>.
4279
4280         * basic-simd.cs: added test for packed double square root.
4281         * cpu-amd64.md: added opcode info for packed double square root.
4282         * cpu-x86.md: added opcode info for packed double square root.
4283         * mini-ops.h: added IR opcode for packed double square root.
4284         * mini-x86.c: added IR to native translation code for packed double square root.
4285         * mini-amd64.c: removed todo for packed double square root.
4286         * simd-intrinsics.c: added method to IR opcode converstion for
4287         packed double square root.
4288
4289 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4290
4291         Contributed under the terms of the MIT/X11 license by
4292         Jerry Maine <crashfourit@gail.com>.
4293
4294         * mini-amd64.c: Added a change to help tell the difference as 
4295         to what perpose the xmm register is being used--mainly to help
4296         with debuging.
4297         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4298         (one used for special cases) xmm registers for both fp
4299         and simd ops. Added define to turn on new feature in the regalloc
4300         that allows fp and simd ops to share the xmm regs happily.
4301         * codegen.c: Added code to detect for which perpose an xmm reg is
4302         being used (fp or simd) and to translate back and forth to the
4303         correct logical reg bank (fp or simd) for 'spill load's.
4304
4305 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4306
4307         Contributed under the terms of the MIT/X11 license by
4308         Jerry Maine <crashfourit@gail.com>.
4309
4310         * basic-simd.cs: Added tests for stressing the regalloc when running with
4311         16 simd regs and when simd and fp ops share the same reg bank.
4312
4313 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4314
4315         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4316         in shared generic code, we might have to look up the class in the
4317         RGCTX.  If we use the class directly, compute its GC descriptor.
4318
4319 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4320
4321         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4322
4323 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4324
4325         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4326         check for errors. Fixed the case when the class with the Main
4327         method is broken.
4328
4329 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4330
4331         Contributed under the terms of the MIT/X11 license by
4332         Jerry Maine <crashfourit@gail.com>.
4333
4334         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4335
4336 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4337
4338         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4339
4340 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4341
4342         * method-to-ir.c: Fix naming of stelem and ldelem.
4343
4344 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4345
4346         * driver.c (main_thread_handler): Check that the assembly loaded
4347         matches the filename when doing AOT.
4348
4349 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4350
4351         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4352         call it anymore.
4353
4354         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4355         utils/mono-sigcontext.h).
4356
4357         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4358         #ifdef.
4359
4360 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4361
4362         * mini.c (mono_codegen):
4363         Call profiler hook to keep track of method code buffers.
4364
4365 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4366
4367         * method-to-ir.c: Invoke write barriers for the
4368         Interlocked.(Compare)Exchange JIT intrinsics.
4369
4370 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4371
4372         * Makefile.am (version.h): Fix issues when built out of tree.
4373         Remove some redundant 'grep's piped through 'sed's.
4374
4375 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4376
4377         This patch is contributed under the terms of the MIT/X11 license
4378
4379         * mini-ppc.c (mono_arch_output_basic_block):
4380         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4381         for bits 32-47 with signed load/store diplacements for bits
4382         48-63.  Use prefered base/offset order for indexed form.
4383         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4384         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4385         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4386         OP_LOADI2_MEMBASE): Same.
4387         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4388         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4389         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4390         indexed form.
4391         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4392         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4393         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4394         OP_LOADI1_MEMINDEX): Same
4395         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4396         OP_STORER8_MEMINDEX): Same
4397         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4398         computations.
4399         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4400         for bits 32-47 with signed load/store diplacements for bits
4401         48-63.  Use prefered base/offset order for indexed form.
4402
4403 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4404
4405 This patch is contributed under the terms of the MIT/X11 license
4406
4407         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4408         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4409         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4410         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4411         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4412         cfg->stack_usage to avoid size warnings.
4413         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4414         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4415         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4416         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4417         to convert.
4418         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4419         after code varible is initialized.
4420         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4421         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4422         (mono_arch_emit_epilog): 
4423         Move Use ppc_load32 for cfg->stack_usage to avoid size
4424         warnings.
4425
4426 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4427
4428         * method-to-ir.c: The write barrier doesn't do the store anymore,
4429         so we have always to emit it.  Also, emit the wbarrier after the
4430         store.
4431
4432 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4433
4434         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4435         for argument count 3 too.
4436
4437 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4438
4439         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4440         the caller handle the exceptions.
4441         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4442         method. Fixes #524498.
4443
4444 2009-07-22  Geoff Norton  <gnorton@novell.com>
4445
4446         * mini-exceptions.c: Fix build on ia64.
4447
4448 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4449
4450         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4451         barriers.
4452
4453 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4454
4455         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4456         code.
4457
4458 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4459
4460         * basic-simd.cs (Main): Pass args to the test driver.
4461
4462 2009-07-20  Geoff Norton  <gnorton@novell.com>
4463
4464         * mini-x86.h: Fix the x86 version guards to use Apple's
4465         properly defined macros.
4466
4467 2009-07-20  Geoff Norton  <gnorton@novell.com>
4468
4469         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4470         aligned access.
4471
4472 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4475         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4476         the information which is needed for invokes, so only one locking+hash table
4477         lookup is needed.
4478
4479         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4480         
4481         * aot-compiler.c (add_generic_instances): Emit instances of 
4482         GenericComparer<T> for primitive types.
4483
4484 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4485
4486         * mini-posix.c: Fix linux build.
4487
4488 2009-07-19  Geoff Norton  <gnorton@novell.com>
4489
4490         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4491         mono_gdb_render_native_backtraces
4492         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4493         so we implement the sane semantics to the runtime here
4494         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4495         so we need to call it differently (mono_gdb_render_native_backtraces)
4496         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4497         here for default implementations.
4498         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4499         support Apple's weird syscall (SYS_fork) implementation and not busy
4500         loop in abort() on native crashes on OSX anymore.
4501
4502 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4503
4504         * aot-runtime.c (load_method): Change the handling of the
4505         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4506         are used.
4507
4508         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4509
4510 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4511
4512         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4513         seems to break the aot tests.
4514         
4515         * mini.c (mono_patch_info_equal): Fix the handling of 
4516         MONO_PATCH_INFO_RGCTX_FETCH.
4517
4518 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4519
4520         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4521
4522         * mini.c (mono_patch_info_hash): Fix the handling of 
4523         MONO_PATCH_INFO_INTERNAL_METHOD.
4524         (mono_patch_info_equal): Ditto.
4525
4526 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4527
4528         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4529         in a few places.
4530         
4531         * mini-llvm.c: Add some infrastructure for AOT support.
4532
4533 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4534
4535         * mini-llvm-cpp.c: Update to the latest llvm api.
4536         
4537         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4538         option to false to prevent llvm from installing signal handlers which
4539         trip up the gc.
4540         
4541 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4542
4543         * cpu-x86.md:
4544         * cpu-amd64.md: Revert previous change as those instructions
4545         take 2 separate arguments. Remember to read the arch docs more
4546         carefully next time.
4547
4548 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4549
4550         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4551
4552 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4553
4554         * mini-ppc.c: exploit multiple load/store units if available (rest of
4555         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4556         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4557
4558 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4559
4560         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4561         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4562
4563 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4564
4565         * cpu-x86.md: Fix missing clobbering from trancendental simd
4566         ops.
4567
4568         * cpu-amd64.md: Same.
4569
4570 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4571
4572         Contributed under the terms of the MIT/X11 license by
4573         Jerry Maine <crashfourit@gail.com>.
4574
4575         * basic-simd.cs: Added tests for single and doulble indexers.
4576
4577         * cpu-amd64.md: Added simd opcode information.
4578
4579         * mini-amd64.c: Added IR to native simd generation code.
4580         Added simd register names and function that returns them.
4581
4582         * mini-amd64.h: Added marcos to turn on simd code compilation in
4583         amd64. Added max simd register count marco. Added caller/callee
4584         register mask marcos. Added marcos to use simd register bank.
4585
4586         * mini.h: Added helper marco for shufling dwords and simple
4587         floats.
4588
4589 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4590
4591         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4592
4593         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4594
4595         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4596         the length of the native code as well.
4597
4598         * basic-simd.cs: Add a test for #521662.
4599
4600 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4601
4602         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4603
4604 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4605
4606         * mini.c: Register function for getting the IP from a signal
4607         context with metadata.
4608
4609 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4610
4611         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4612         call a generic class init trampoline if needed. Fixes #519336.
4613
4614         * generics.cs: Add a test.
4615         
4616 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4617
4618         * method-to-ir.c: When doing a call which might be remote from
4619         shared generic code to other shared code with open type arguments,
4620         get the remoting invoke wrapper from the RGCTX and do an indirect
4621         call to it.
4622
4623 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4624
4625         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4626         after the unbox trampoline in the full-aot case.
4627
4628 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4629         
4630         * mini.c: Move initialization of jit_mutex before debugger initialization
4631         
4632         to avoid crashes.
4633         
4634         
4635         * Info.plist: added Info.plist and link flag to enable the mono executable
4636         to access other processes. Requires codesigning of the executable to work.
4637         
4638         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4639         
4640         compile on OS X.
4641         
4642
4643 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4644
4645         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4646
4647 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4648
4649         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4650         when the generic instance is an instantiation of a subclass of the
4651         methods class. Fixes #517166.
4652
4653 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4654
4655         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4656         code.
4657
4658         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4659         AOTed code.
4660
4661         * CMakeLists.txt: Add minimal support for installation.
4662
4663 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4664
4665         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4666         determine whenever a method is directly callable to a separate function.
4667
4668         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4669         needed ones as a result of the previous change.
4670
4671         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4672         type of register arrays.
4673
4674         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4675         type of register arrays.
4676
4677 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4678         
4679         Contributed under the terms of the MIT/X11 license by
4680         Jerry Maine <crashfourit@gail.com>.
4681
4682         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4683
4684 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4685
4686         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4687
4688 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4689
4690         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4691         dump of structure return value. Fix some formatting.
4692         * cpu-s390x.md: Fix lengths of instruction sequences.
4693         * mini-s390.c: Minor formatting changes.
4694
4695 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4696
4697         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4698         Use sigaction on freebsd as well.
4699
4700 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4701
4702         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4703         uses #ifdef on it.
4704         
4705         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4706
4707 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4708
4709         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4710
4711 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4712
4713         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4714
4715 2009-06-20  Martin Baulig  <martin@ximian.com>
4716
4717         * debug-mini.c
4718         (MonoDebuggerThreadFlags): New enum typedef.
4719         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4720         (mono_debugger_thread_created): Added `gpointer func' argument;
4721         initialize the new `thread_flags' field.
4722
4723 2009-06-18  Martin Baulig  <martin@ximian.com>
4724
4725         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4726         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4727
4728         * debug-debugger.c
4729         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4730         flag in `MONO_DEBUGGER__info.runtime_info'.
4731
4732         * driver.c
4733         (mono_main): Call mini_debugger_set_attach_ok() if generics
4734         sharing is disabled.
4735
4736 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4737
4738         * aot-compiler.c (add_wrappers): Fix a warning.
4739
4740         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4741         the ppc load/store macro changes.
4742
4743 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4744
4745         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4746
4747         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4748         not just the got symbol.
4749
4750         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4751         on ppc.
4752
4753         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4754         ppc.
4755         
4756         * aot-compiler.c: Remove some fixmes.
4757
4758         * driver.c (mono_main): Print a helpful message when cross-compiling.
4759
4760         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4761
4762         * method-to-ir.c (initialize_array_data): Do the optimization if the
4763         target byte order is little endian, instead of the host byte order.
4764
4765         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4766         wrappers into the mscorlib image, Emit a unique plt symbol for each
4767         image, emit symbols for plt entries.
4768
4769         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4770         a .size directive.
4771         
4772 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4773
4774         * aot-compiler.c (add_wrappers): Avoid calling 
4775         mono_marshal_get_type_info () since it can assert for some types.
4776
4777         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4778         ldtoken are used inside wrappers.
4779
4780         * helpers.c: Add support for prefixing tools with the arch name.
4781
4782         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4783         quantities when using ilp32.
4784
4785         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4786         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4787
4788         * image-writer.c: Use .long on ilp32.
4789
4790         * aot-compiler.c: Use 32 bit loads on ilp32.
4791         
4792 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4793
4794         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4795
4796         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4797
4798         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4799
4800         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4801         second got slot of every aot image.
4802         
4803         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4804         aot on platforms with function pointers.
4805
4806         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4807         support for aot/full aot on ppc/ppc64.
4808         
4809         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4810         arguments which are needed on ppc.
4811
4812         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4813         argument.
4814
4815         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4816         
4817         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4818
4819         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4820
4821         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4822
4823         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4824
4825 2009-06-17  Geoff Norton  <gnorton@novell.com>
4826
4827         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4828
4829 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4830
4831         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4832         to control whenever the dwarf writer is in xdebug or aot mode.
4833         (emit_class_dwarf_info): Use a separate abbrev for structures without
4834         children.
4835
4836         * aot-compiler.c: Pass the appending parameter to 
4837         mono_dwarf_writer_create ().
4838
4839         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4840         falls through to its next bblock. Fixes #513931.
4841
4842         * iltests.il: Add a test.
4843
4844         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4845         infor even if emit_line is FALSE, as the apple linker seems to require it.
4846
4847         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4848
4849         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4850         gcc does.
4851         (emit_fde): Ditto.
4852
4853 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4854
4855         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4856         mips build.
4857
4858 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4859
4860         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4861         'has_call_handler' fields.
4862
4863         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4864
4865         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4866         first bblock if not needed. Fixes #512790.
4867         
4868 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4869
4870         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4871         
4872         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4873         wrappers.
4874
4875         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4876         remoting-invoke-with-check wrappers, which are not needed when running with
4877         full-aot, since it doesn't support remoting.
4878         
4879 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4880
4881         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4882
4883         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4884         method info, it is not used anymore.
4885
4886         * mini.h: Bump AOT file format version.
4887         
4888         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4889         word smaller.
4890
4891         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4892         change above.
4893         
4894         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4895
4896         * mini.h: Bump AOT file format version.
4897         
4898 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4899
4900         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4901         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4902         iphone.
4903
4904         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4905         of CKFINITE and FBGE for VFP.
4906
4907 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4908
4909         * aot-compiler.c: Don't align code to 16 bytes on arm.
4910         
4911         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4912         before the methods they belong to.
4913
4914         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4915         the full-aot case if possible, since the trampoline will be called right 
4916         away.
4917
4918         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4919         trampolines to 1024 after the change above.
4920
4921         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4922         trampoline to save 8 bytes per trampoline.
4923
4924         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4925         change above.
4926
4927 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4928
4929         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4930
4931 2009-06-08  Martin Baulig  <martin@ximian.com>
4932
4933         * debug-mini.c
4934         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4935         (_mono_debugger_throw_exception): Don't make this static.
4936         (_mono_debugger_unhandled_exception): Likewise.
4937         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4938
4939         * debug-mini.c
4940         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4941         (_mono_debugger_throw_exception): Add function prototype.
4942         (_mono_debugger_unhandled_exception): Likewise.
4943
4944         * mini-exceptions.c
4945         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4946         arg; return the first exception handler if the exception is caught
4947         and we're running inside the debugger.
4948         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4949         improve exception handle inside runtime-invoke, check whether the
4950         exception is actually caught in the method being invoked and not
4951         by the runtime-invoke-wrapper.
4952
4953 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4954
4955         * image-writer.c: Improve support for the osx assembler.
4956
4957         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4958         support them.
4959
4960 2009-06-08  Martin Baulig  <martin@ximian.com>
4961
4962         * debug-mini.c
4963         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4964         (_mono_debugger_throw_exception): Don't make this static.
4965         (_mono_debugger_unhandled_exception): Likewise.
4966         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4967
4968         * debug-mini.c
4969         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4970         (_mono_debugger_throw_exception): Add function prototype.
4971         (_mono_debugger_unhandled_exception): Likewise.
4972
4973         * mini-exceptions.c
4974         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4975         arg; return the first exception handler if the exception is caught
4976         and we're running inside the debugger.
4977         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4978         improve exception handle inside runtime-invoke, check whether the
4979         exception is actually caught in the method being invoked and not
4980         by the runtime-invoke-wrapper.
4981
4982 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4983
4984         * image-writer.c (append_subsection): Don't align subsections of the
4985         debug_line section as a workaround.
4986
4987         * dwarfwriter.c: Emit line number info in the AOT case as well.
4988
4989 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4990
4991         This patch is contributed under the terms of the MIT/X11 license
4992
4993        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4994        code_len <= code_size
4995
4996 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4997
4998         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4999
5000 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5001
5002         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
5003         invoke wrappers, we now use trampolines instead.
5004
5005 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5006
5007         * mini-darwin.c: The exception thread must not be registered with
5008         the GC.
5009
5010 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5011
5012         * mini-gc.c: Disable the code because it makes SGen crash.
5013
5014 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5015
5016         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
5017         instead of asserting.
5018
5019 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5020
5021         * aot-compiler.c (mono_compile_assembly): Move the creation of the
5022         output file after the code has been compiled.
5023
5024 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
5025
5026         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
5027
5028 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5029
5030         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
5031         entries distinction to simplify the code.
5032
5033         * mini.h: Bump AOT file format version.
5034         
5035 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5036
5037         * objects.cs: Fix the signature of one of the tests.
5038
5039         * mini.c (mini_create_ftnptr): New helper function, moved here from
5040         object.c.
5041         (mini_get_addr_from_ftnptr): Ditto.
5042         (mini_init): Install the new helpers.
5043
5044 2009-05-28  Martin Baulig  <martin@ximian.com>
5045
5046         Correctly initialize the debugger when embedding Mono.
5047
5048         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
5049         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
5050         see documentation in mini_debug_running_inside_mdb().
5051
5052         * debug-debugger.c
5053         (mini_debug_running_inside_mdb): New function to check whether
5054         we're running inside mdb.
5055
5056         * mini.c (mini_init): Call mini_debugger_init() if we're running
5057         inside the debugger.
5058
5059         * driver.c (mono_main): Moved the call to mini_debugger_init()
5060         into mini_init() to make this work when embedding Mono.
5061
5062         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5063         calls to mini_debugger_init().
5064
5065         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5066         mono_debugger_main() -> mini_debugger_main() and put them inside a
5067         `MONO_DEBUGGER_SUPPORTED' conditional.
5068
5069 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5070
5071         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5072         this is no longer in use.
5073         * mini.h: Same.
5074
5075 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5076
5077         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5078
5079         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5080         methods.
5081
5082 2009-05-27  Martin Baulig  <martin@ximian.com>
5083
5084 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5085
5086         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5087         long_conv_to_r_un to 64 bits.
5088
5089         * cpu-x86.md: Increase the instruction size due to the changes.
5090
5091         * iltests.il.in: Add regression test.
5092
5093         Fixes #467201.
5094
5095 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5096
5097         * objects.cs: Move the previous test from basic.cs to here.
5098
5099 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5100
5101         * basic.cs: Add regression test for #506915.
5102
5103 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5104
5105         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5106         optimization we must check the bb of the first byte of stobj as
5107         it's the only one set in cil_offset_to_bb.
5108
5109         Fixes #506915.  
5110
5111 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5112
5113         * image-writer.c: Fix pointer directive on ppc64.
5114
5115 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5116
5117         * image-writer.c (asm_writer_emit_section_change): Avoid using
5118         .bss subsections on ppc too.
5119
5120 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5121
5122         * image-writer.c: Fix the definition of TARGET_ASM_....
5123         
5124         * image-writer.c: Fix the emission of assembler directives in the last
5125         change.
5126
5127         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5128         exception throwing code to accomodate ppc64.
5129
5130         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5131         size to work on ppc64 too.
5132
5133         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5134         too.
5135
5136         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5137         the assembler dialect instead of using platform specific defines.
5138
5139 2009-05-22  Geoff Norton  <gnorton@novell.com>
5140
5141         * mini-arm.c (get_call_info): If a structure is split between the stack
5142         and argument registers, we should not advance the stack pointer by the entire
5143         native size, but just by the amount that spilled.
5144
5145 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5146
5147         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5148         correctly.
5149
5150 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5151
5152         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5153         wrappers normally.
5154         
5155         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5156         methods so wrapper don't get added twice.
5157         (add_generic_instances): Don't add methods of arrays.
5158
5159         * generics.cs: Mark one test as !FULLAOT.
5160
5161 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5162
5163         * mini-x86.c (emit_move_return_value): Remove unused vars.
5164
5165 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5166
5167         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5168         decomposing 8 bytes structs into a LCALL.
5169
5170         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5171         pointer for where to store the returned regs.
5172
5173         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5174         state the concern.
5175
5176         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5177
5178 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5179
5180         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5181         without getenv.
5182
5183 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5186
5187         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5188         generics.
5189
5190 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5191
5192         * local-propagation.c (mono_local_cprop): Avoid local propagation
5193         across paired add/sub if the first instruction dest reg is it's
5194         source reg. For example:
5195
5196         int_add_imm R12 <- R12 [1] clobbers: 1
5197         int_sub_imm R42 <- R12 [1] clobbers: 1
5198
5199         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5200         maintain the math identify.
5201
5202         Fixes #505375.
5203
5204 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5205
5206         * Makefile.am: avoid going on the network just to get the revision,
5207         use git log instead
5208
5209 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5210
5211         Fixed estimate for short branches on amd64 (they were off mark, and
5212         enabling call prolog-epilog instrumentations caused assertions).
5213         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5214         estimate for the maximum length of this basic block.
5215         * mini-amd64.c:
5216         - mono_arch_emit_prolog: compute max_length for each basic block
5217           (instead of max_offset), and inflate size estimate also for entry bb
5218           in case of code instrumentation.
5219         - mono_arch_output_basic_block: get rid of "cpos" (the current
5220           estimated "position" in the code), and always use "offset" instead,
5221           which is accurate; at the beginning of the function quickly recompute
5222           max_offset for all the remaining blocks, starting from the current
5223           cfg->code_len (which is correct, and not estimated) and using the
5224           estimated block lengths computed previously.
5225
5226 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5227
5228         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5229         functions, it is already done in the caller.
5230
5231         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5232
5233         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5234         MONO_ARCH_GSHARED_SUPPORTED define.
5235
5236         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5237
5238         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5239         function.
5240
5241 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5242
5243         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5244         call to mono_marshal_get_rgctx_invoke ().
5245
5246         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5247         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5248         gshared use the static rgctx trampolines now.
5249         
5250         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5251         platform supports it.
5252
5253 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5254
5255         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5256
5257         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5258
5259 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5260
5261         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5262
5263         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5264         for ppc.
5265
5266 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5267
5268         Made it possible for mono_arch_instrument_epilog to preserve
5269         argument registers, otherwise instrumenting the "epilogue" before
5270         a tail call would clobber them.
5271         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5272         if like mono_arch_instrument_epilog but with an additional parameter
5273         that states if argument registers must be preserved.
5274         * mini.c: implemented mono_arch_instrument_epilog as a call to
5275         mono_arch_instrument_epilog_full without asking to preserve argument
5276         registers (this makes the existing code work as usual).
5277         * mini-amd64.c:
5278         - mono_arch_instrument_epilog: add parameter to transform it into
5279         mono_arch_instrument_epilog_full, and preserve argument registers
5280         when required.
5281         - mono_arch_output_basic_block, OP_TAILCALL case: call
5282         mono_arch_instrument_epilog_full.
5283         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5284         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5285         only transformed mono_arch_instrument_epilog into
5286         mono_arch_instrument_epilog_full.
5287
5288 2009-05-15  Geoff Norton  <gnorton@novell.com>
5289
5290         * mini-darwin.c: This works on arm now.
5291
5292 2009-05-14  Geoff Norton  <gnorton@novell.com>
5293
5294         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5295         embedding api.
5296
5297 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5298
5299         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5300         label names.
5301
5302         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5303         wrappers during full aot mode correctly.
5304
5305         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5306         methods correctly.
5307
5308         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5309         mono_metadata_type_hash ().
5310
5311 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5312
5313         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5314         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5315         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5316         Removed MONO_INST_BRLABEL from the instruction flags, and the
5317         remaining code that used it, because we do not support branches inside
5318         basic blocks (and branch target labels) anymore.
5319         * Makefile.am: As part of the above cleanup, remove reference to
5320         BURG files which don't exist anymore.
5321
5322 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5323
5324         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5325         osx.
5326
5327         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5328         to use mono_arch_throw_corlib_exception.
5329
5330         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5331         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5332
5333         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5334         domain mempool.
5335
5336         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5337
5338         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5339         for the got to make debugging easier and to avoid confusing it with the
5340         system got.
5341         
5342         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5343         method so a breakpoint can be set when using gdb.
5344
5345 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5346
5347         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5348         on mono_method_get_imt_slot ().
5349
5350         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5351         num_decodes variables.
5352
5353         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5354         change as it doesn't seem to work.
5355         
5356         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5357         wrappers.
5358
5359 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5360
5361         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5362         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5363
5364         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5365         builder when using full aot.
5366
5367         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5368         here, it is already handled.
5369         
5370         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5371         correctly for IMT.
5372
5373         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5374
5375         * mini-arm.h: Enable IMT for full aot.
5376         
5377         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5378         arch doesn't support it.
5379
5380         * mini.c (mini_init): Don't disable IMT for full aot if the
5381         architecture supports it.
5382
5383         * mini.h (MonoAotTrampoline): New enum containing the different types
5384         of 'numerous' trampolines.
5385         (MONO_AOT_FILE_VERSION): Bump this.
5386
5387         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5388         static rgctx trampolines. Add support for full-aot IMT thunks.
5389
5390         * mini-amd64.h: Enable IMT for full aot.
5391
5392         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5393         to exclude tests belonging to a category.
5394
5395         * generics.cs: Mark some tests with a !FULLAOT category.
5396
5397         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5398         generics tests.
5399
5400 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5401
5402         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5403         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5404         (emit_plt): Fix a warning.
5405
5406 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5407
5408         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5409         back into aot-compiler.c to a place where the other functions shared by
5410         the runtime and aot compiler are.
5411         
5412         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5413         as done previously, instead of in MonoAotFileInfo, since pointers might have
5414         alignment requirements.
5415
5416         * mini.h: Bump AOT file format version.
5417
5418 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5419
5420         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5421         that is used at runtime from the aot-compiler.c, this makes it
5422         work on setups that remove the AOT compiler from the output
5423         image. 
5424
5425 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5426
5427         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5428         PPC.
5429
5430         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5431
5432         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5433
5434         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5435         stuff to mono_arch_decompose_long_opts ().
5436         (mono_decompose_opcode): Remove some dead code.
5437
5438 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5439
5440         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5441         cmethod can be null for quite a some reasons.
5442
5443 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5444
5445         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5446
5447 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5448
5449         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5450
5451 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5452
5453         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5454         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5455         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5456         calls returning structures by addr on amd64.
5457
5458         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5459
5460         * iltests.il.in: Restructure the tail call tests a bit.
5461         
5462 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5463
5464         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5465         for virtual methods too.
5466
5467 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5468
5469         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5470         due to regression in verifying System.dll.
5471
5472 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5473
5474         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5475         in dynamic methods.
5476
5477         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5478         instances.
5479
5480         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5481         g_str_hash () which can change.
5482
5483         * driver.c (mini_regression): Disable optimizations not supported by
5484         the cpu. Fixes #500019.
5485
5486         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5487         build.
5488
5489 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5490
5491         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5492         to the latest LLVM code.
5493
5494 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5495
5496         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5497
5498 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5499
5500         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5501         x86/amd64.
5502
5503         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5504         no longer saving offsets, so just save the patch types along with the other
5505         info.
5506         * aot-runtime.c (load_patch_info): Update after the changes to 
5507         encode_patch_list ().
5508         (decode_got_entry): Removed, merged into load_patch_info ().
5509         (is_shared_got_patch): Removed, call the same function from
5510         aot-compiler.c.
5511
5512         * mini.h: Bump aot file format version.
5513         
5514         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5515         half-finished no-dlsym code.
5516
5517         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5518         option.
5519
5520         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5521         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5522
5523 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5526         buffer length to work with AOT code.
5527
5528         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5529         ldfld/stfld opcodes.
5530
5531         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5532         as it is not used.
5533
5534         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5535
5536         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5537
5538         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5539         LLVM API.
5540
5541         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5542         if needed. Don't decompose long operations when using llvm.
5543
5544 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5545
5546         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5547         PAGESIZE constant.
5548
5549         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5550
5551 2009-05-03  Martin Baulig  <martin@ximian.com>
5552
5553         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5554         mono_debugger_insert_method_breakpoint() since the class init
5555         handler we're inserting at the top of the method already gives us
5556         a notification.
5557
5558 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5559
5560         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5561         to mono_arch_decompose_long_opts () for x86 and arm.
5562
5563 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5564
5565         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5566         TARGET_AMD64 here.
5567
5568 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5569
5570         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5571         JIT code.
5572
5573 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5574
5575         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5576         number of trampolines used in full-aot mode.
5577
5578         * aot-compiler.c: Add an ntrampolines option to set the number of 
5579         trampolines emitted in full-aot mode.
5580
5581 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5582
5583         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5584         a volatile load. Get rid of get_tempname (), llvm assigns names
5585         automatically.
5586
5587         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5588         builder function.
5589
5590         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5591         a value.
5592
5593         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5594         level 1.
5595
5596         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5597         to the same register as a fixed sreg2. Fixes #497271.
5598
5599         * iltests.il.in: Add a new test.
5600
5601 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5602
5603         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5604         stack, since pushes complicate exception handling.
5605
5606         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5607         the stack if they are passed using moves.
5608
5609         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5610
5611         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5612         when using llvm.
5613
5614         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5615         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5616         of FMOVE if it is an R4.
5617
5618 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5619
5620         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5621
5622         * mini.h (LLVMCallInfo): New structure to store calling convention 
5623         information for the LLVM back end similar to the CallInfo structures in 
5624         the back-ends.
5625
5626         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5627         call information in a format usable by LLVM.
5628         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5629
5630         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5631         mono_llvm_emit_call () when compiling using LLVM.
5632
5633         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5634         comments to all functions. Fix memory leaks. Add a public init/cleanup
5635         function.
5636
5637         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5638
5639         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5640         mono_array_new_va () jit icall.
5641         
5642 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5643
5644         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5645         multiple machine description files to be specified.
5646         * mini-ops.h: fixes for cross-compilation.
5647
5648 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5649
5650         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5651         some porting work.
5652
5653 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5654
5655         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5656         to prevent asserts in various passes. Fixes #497220.
5657
5658 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5659
5660         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5661         a racy assert.
5662
5663         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5664         table to avoid duplicates.
5665
5666         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5667         
5668         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5669         option is used.
5670
5671 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5672
5673         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5674         is for method or field access.
5675
5676 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5677
5678         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5679         a Value to stdout.
5680
5681         * mini-llvm.c (mono_llvm_emit_method): Use it.
5682         
5683         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5684         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5685         on volatile values.
5686
5687         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5688         synchronized methods.
5689
5690         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5691
5692         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5693
5694         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5695         OP_LOADI8_MEM.
5696
5697         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5698         allowing some options to be set dynamically.
5699
5700 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5701
5702         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5703         unconditional branch.
5704
5705         * mini.h (MonoTrampolineType): Add new trampoline type 
5706         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5707         compiled code.
5708
5709         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5710         function.
5711
5712         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5713         creation function.
5714
5715         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5716         is enabled. Instead, use the llvm vcall trampoline.
5717         
5718         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5719
5720         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5721         
5722         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5723         functions.
5724
5725         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5726         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5727
5728         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5729         OP_IA64_CSET opcode.
5730
5731         * mini.c: Fix a warning.
5732
5733         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5734         THROW to the appropriate llvm type.
5735
5736 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5737
5738         * mini.c (mini_method_compile): Add statistics for methods JITted
5739         with/without LLVM.
5740
5741 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5742
5743         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5744         OP_IA64_CMP_<cond>_IMM opcodes.
5745
5746 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5747
5748         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5749         corlib exceptions.
5750
5751         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5752         correctly.
5753
5754         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5755         GENERICINST.
5756
5757 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5758
5759         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5760
5761 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5762
5763         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5764         support.
5765
5766         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5767         rgctx invoke trampolines for x86.
5768
5769         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5770         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5771         (mono_arch_get_vcall_slot): Simplify this.
5772
5773 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5774
5775         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5776         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5777
5778 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5779
5780         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5781         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5782
5783         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5784
5785         * liveness.c (visit_bb): Remove a needless assert.
5786
5787 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5788
5789         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5790         full aot support to the arch specific code.
5791
5792         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5793
5794         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5795
5796         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5797         
5798         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5799         collect information about the delegate invoke impl trampolines.
5800
5801         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5802         to save trampolines during full-aot mode.
5803
5804         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5805         creation function which returns a trampoline which sets the rgctx
5806         argument.
5807         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5808         wrapper if possible.
5809         (mono_delegate_trampoline): Ditto.
5810
5811         * mini.c (mono_jit_runtime_invoke): Ditto.
5812
5813         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5814         
5815         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5816
5817         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5818         
5819 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5820
5821         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5822         just setting the opcode to OP_NOP.
5823
5824 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5825
5826         * mini.c (mini_method_compile): Put the last change inside an 
5827         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5828         
5829         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5830         and extend live ranges to cover the whole method when using xdb.
5831
5832         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5833         do it in the trampolines.
5834
5835         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5836         needed.
5837
5838         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5839         
5840         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5841         call code in full-aot mode since IMT is disabled there.
5842         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5843         new JIT no longer has that restriction.
5844
5845         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5846
5847         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5848         a more compact format.
5849         (mono_aot_wrapper_name): New function to return a unique name for a
5850         wrapper method, also used by the AOT runtime.
5851
5852         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5853         aot-compiler.c.
5854
5855         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5856         when a ICollection<T> etc is encountered.
5857         (add_generic_instances): Process method arguments/locals too.
5858         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5859         trampoline names.
5860
5861         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5862         
5863 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5864
5865         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5866
5867         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5868
5869         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5870         representing the result of the decomposition. Nullify instructions
5871         instead of setting them to OP_NOP since nops can't have registers
5872         set.
5873
5874 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5875
5876         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5877         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5878         info. Strip 'mapping symbols' on ARM.
5879
5880         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5881         
5882         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5883         this with the native genmdesc.
5884
5885 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5886
5887         * aot-runtime.c:  Fixing the MSVC build.
5888
5889         Code is contributed under MIT/X11 license.
5890
5891 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5892
5893         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5894         JITted code depends on it.
5895
5896 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5897
5898         * aot-compiler.c: Use new MonoGenericParam accessors.
5899
5900 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5901
5902         Reduce memory usage and improve correctness wrt MonoGenericParam
5903         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5904         handing.  Avoid allocating MonoGenericParams, but use the ones in
5905         the container itself.
5906
5907 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5908
5909         * tasklets.c: Return exceptions in the out argument.
5910
5911 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5912
5913         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5914         opcode. Use pointer types in more places instead of casting them to 
5915         integers.
5916
5917         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5918         optimizations.
5919         (mono_llvm_optimize_method): New helper function to optimize a method.
5920
5921         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5922         widening code so it could be called from more places.
5923         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5924         code paths in the call opcodes.
5925
5926 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5927
5928         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5929
5930 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5931
5932         * dwarfwriter.c: Use _ to separate class name 
5933         components as gdb can't handle '.'. Represent reference variables
5934         as 'class <NAME>&'.
5935         
5936         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5937
5938         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5939         
5940         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5941
5942         * gc-test.cs: New file with GC stack marking tests.
5943         
5944         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5945         negative numbers for vfp.
5946
5947         * basic-float.cs: Add a test.
5948         
5949 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5950
5951         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5952
5953 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5954
5955         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5956         part of tasklet/continuation support.
5957
5958 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5959
5960         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5961         amd64 opcodes inside an ifdef.
5962
5963         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5964         of complex types.
5965         
5966         * dwarfwriter.c (emit_type): Emit the class info for classes.
5967
5968 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5969
5970         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5971
5972         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5973
5974         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5975
5976         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5977
5978 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5979
5980         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5981
5982         * mini-llvm.c: Update comments.
5983
5984         * mini.h (COMPILE_LLVM): New macro.
5985
5986         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5987
5988         * ssa.c (mono_ssa_compute): Ditto.
5989         
5990         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5991         the unwind ops from a DWARF FDE.
5992
5993         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5994         methods by extracting the dwarf unwind ops from the unwind info generated
5995         by LLVM.
5996         
5997         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5998         calls.
5999
6000         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
6001         addressing modes.
6002
6003 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
6004
6005         * Makefile.am (llvm_sources): Enable this.
6006
6007         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
6008         failing back to the JIT if something cannot be handled.
6009
6010         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
6011         compiling with LLVM.
6012
6013         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
6014         compiling with LLVM.
6015
6016         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
6017         compiling with LLVM.
6018
6019         * mini-ops.h: Add a few opcodes needed by LLVM.
6020
6021         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
6022         has no unwind info.
6023
6024         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
6025         backend.
6026
6027         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
6028
6029         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
6030
6031 2009-04-01  Mark Probst  <mark.probst@gmail.com>
6032
6033         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
6034         ridiculously large methods.
6035
6036 2009-03-31  Martin Baulig  <martin@ximian.com>
6037
6038         * debug-debugger.c (debugger_remove_breakpoint): Call
6039         mono_debugger_remove_class_init_callback ().
6040
6041 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
6044         right before emitting code, not at the start.
6045
6046         * mini.c (mono_postprocess_patches): Extract this into a separate function
6047         from mono_codegen ().
6048
6049         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
6050         byref types correctly.
6051
6052 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6053
6054         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6055         by the last change.
6056
6057 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6058
6059         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6060         indirect calls, this avoids problems where get_vcall_slot () would get
6061         confused by the native code for the instruction preceeding the call.
6062         (mono_arch_get_vcall_slot): Simplify this.
6063         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6064
6065         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6066         register allocator now seems to depend on them instead of the data in
6067         cpu-<ARCH>.md.
6068
6069         * mini.c (mini_method_compile): Throw the correct type of exception if
6070         mono_method_get_header () fails because of a loading error.
6071
6072 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6073
6074         * mini.c (mini_method_compile): Clear the loader error if the method
6075         header cannot be decoded.
6076
6077         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6078         interface methods on proxies correctly.
6079
6080         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6081         this argument for vtype methods. Add precise liveness info for arguments.
6082
6083         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6084         LIVERANGE_START/END opcodes.
6085
6086         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6087         for arguments and values in registers.
6088
6089 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6090
6091         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6092         return a valuetype. Fixes #487518.
6093
6094         * iltests.il: Add a test.
6095         
6096         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6097
6098         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6099         closed over a null reference correctly.
6100
6101 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6102
6103         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6104
6105 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6106
6107         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6108         allocated to the same registers as fixed sregs.
6109
6110 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6111
6112         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6113         ATOMIC_CAS_IMM ops.
6114
6115         * method-to-ir.c: Handle more cases for
6116         Interlocked.CompareExchange.
6117
6118         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6119         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6120         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6121
6122 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6123
6124         * aot-runtime.c (decode_method_ref): Fix a warning.
6125
6126         * unwind.c (mono_unwind_frame): Ditto.  
6127
6128 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6129
6130         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6131         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6132
6133         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6134         fix the handling of large values in the ALU_PC_G0_NC relocation.
6135
6136 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6139
6140 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6141
6142         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6143         ops.
6144
6145 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6146
6147         * method-to-ir.c: MINI_OP3 needs a comma.
6148
6149         * method-to-ir.c, mini.h, mini.c: Remove
6150         mono_init_op_sreg_counts ().
6151
6152 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6153
6154         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6155         OP_JMP.
6156         
6157         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6158         assertion.
6159
6160         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6161
6162         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6163         code somewhat.
6164
6165 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6166
6167         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6168         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6169         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6170         operations.
6171
6172 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6173
6174         * driver.c: Change location of gc_wrapper.h.
6175
6176         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6177         inside finally clauses correctly. Fixes #485721.
6178
6179         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6180         after the change above.
6181
6182         * exceptions.cs: Add a test.
6183         
6184 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6185
6186         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6187
6188         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6189         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6190         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6191
6192         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6193         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6194
6195 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6196
6197         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6198         Simplify logic for ensure_method_is_allowed_to_call_method. 
6199         Handle wrappers on callers.
6200
6201 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6202
6203         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6204         them don't run yet.
6205
6206         * basic-simd.cs: Fix the names of some test methods.
6207
6208 2009-03-18  Geoff Norton  <gnorton@novell.com>
6209
6210         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6211
6212 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6213
6214         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6215
6216 2009-03-17  Jb Evain  <jbevain@novell.com>
6217
6218         * driver.c: remove now uneeded call to mono_gc_base_init before
6219         mono_profiler_load.
6220
6221 2009-03-17  Jb Evain  <jbevain@novell.com>
6222
6223         * dwarfwriter.c (token_handler): handle more cases.
6224
6225 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6226
6227         * method-to-ir.c: Remove more dead code (that was required only
6228         because of method_is_safe). Fix compiler warnings.
6229
6230 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6231
6232         * method-to-ir.c: Remove unneeded/useless method_is_safe
6233         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6234
6235 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6236
6237         * mini.c (mini_method_compile): Print the method been compiled with
6238         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6239         for people not familiar with the runtime.
6240
6241 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6242
6243         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6244         a managed object which is later put into a GList. Return its class instead.
6245
6246         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6247         stack slots when using sgen.
6248
6249 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6250
6251         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6252
6253 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6254
6255         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6256         > so it works on the first vreg as well.
6257
6258 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6259
6260         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6261         trigger randomly.
6262
6263         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6264         
6265         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6266         implement GArray.
6267
6268 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6269
6270         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6271         native->IL offset mapping.
6272
6273 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6274
6275         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6276
6277         * basic.cs: Add a test.
6278
6279 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6280
6281         * mini-x86.c (mono_arch_output_basic_block): Use different
6282         registers in case the ones we want to overwrite are used by the
6283         other operand.  Fixes regression in #480807.
6284
6285 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6286
6287         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6288
6289         * dwarfwriter.c (emit_line_number_info): The line number info for
6290         IL code was off by one. Fix that.
6291
6292         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6293         stack.
6294
6295 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6296
6297         Contributed under the terms of the MIT/X11 license by Steven
6298         Munroe <munroesj@us.ibm.com>.
6299
6300         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6301         Fixes #483462.
6302
6303 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6304
6305         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6306         as well.
6307
6308 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6309
6310         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6311         the delegate ctor handling code. Fixes #482638.
6312         
6313         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6314         #481458.
6315
6316         * iltests.il.in: Add a test.
6317         
6318         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6319         mini-posix.c.
6320
6321 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6322
6323         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6324         is shared generic code, return the trampoline, even if the method
6325         has already been compiled.  Fixes #479763.
6326
6327         * mini.c, mini.h: New function
6328         mono_jit_find_compiled_method_with_jit_info() which is the same as
6329         mono_jit_find_compiled_method() but also returns the jit info.
6330
6331 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6332
6333         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6334         for methods which actually have one.  For all other methods, make
6335         sure the this argument var is live the whole method.
6336
6337         * mini.c (mini_method_compile): Every shared method has a
6338         this/vtable/mrgctx info.  Fixes #480807.
6339
6340 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6341
6342         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6343         generic/imt thunks where some entries branch through the vtable,
6344         while other entries branch directly.
6345
6346 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6347
6348         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6349
6350         * mini-windows.c: Ditto.
6351         
6352         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6353         ctors.
6354
6355 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6356
6357         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6358         down an assert.
6359
6360 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6361
6362         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6363         #481403.
6364
6365 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6366
6367         * exceptions-x86.c: Include debug-mini.h - fixes build.
6368
6369 2009-03-04  Martin Baulig  <martin@ximian.com>
6370
6371         * debug-mini.c: Clean up the exception API and add documentation.
6372         (mono_debugger_handle_exception): New public method; this is
6373         called when throwing an exception or encountering an unhandled one.
6374         (mono_debugger_call_exception_handler): Formerly known as
6375         mono_debugger_handle_exception(); this is used to tell the
6376         debugger that we're about to invoke an exception handler.
6377
6378 2009-03-04  Martin Baulig  <martin@ximian.com>
6379
6380         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6381         ../metadata/mono-debug-debugger.c; save and reset exception state.
6382
6383 2009-03-02  Martin Baulig  <martin@ximian.com>
6384
6385         * debug-mini.c: Moved the debugger exception handling here from
6386         ../metadata/mono-debug-debugger.c.
6387
6388         * debug-mini.h
6389         (MonoDebuggerExceptionAction): New exception typedef.
6390
6391         * debug-mini.c
6392         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6393
6394         * exceptions-amd64.c
6395         (mono_amd64_throw_exception): Use the new debugger exception
6396         handling code.
6397
6398         * mini-exceptions.c
6399         (mono_handle_exception_internal): Don't call
6400         mono_debugger_unhandled_exception() here.
6401
6402 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6403
6404         * mini.c aot-compiler.c: Update after the changes to 
6405         mono_marshal_get_runtime_invoke ().
6406
6407         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6408         Virtual generic methods might not have method->slot set, work around
6409         that.
6410
6411         * generics.cs: Add a test.
6412
6413 2009-03-02  Geoff Norton  <gnorton@novell.com>
6414
6415         * mini.c:
6416         * driver.c: Allow signal chaining of SIGFPE as well.
6417
6418 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6419
6420         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6421         this since it now receives the method not its generic context in the
6422         IMT reg.
6423
6424         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6425         generic/imt thunks where some entries branch through the vtable, while
6426         other entries branch directly.
6427
6428         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6429
6430         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6431         support for interface methods as well.
6432
6433         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6434         using the normal IMT thunks.
6435
6436         generics.cs: Add new tests.
6437         
6438         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6439         the generic inst to the generic imt thunks. This fixes AOT support, 
6440         improves consistency with the normal IMT thunks, and makes it easier to
6441         add support for interface generic virtual methods later.
6442
6443         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6444         
6445 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6446
6447         * driver.c (mono_set_signal_chaining): New public API function to enable
6448         signal chaining on POSIX platforms.
6449
6450         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6451         (si@lindenlab.com) to implement signal chaining. The original patch was
6452         contributed under the MIT X/11 license:
6453         https://bugzilla.novell.com/show_bug.cgi?id=318894
6454
6455 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6456
6457         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6458         too until it can be made to run on amd64.
6459
6460 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6461
6462         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6463         to  get_generic_context_from_code () + get_call_info () if possible.
6464
6465 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6466
6467         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6468         suspend-on-sigsegv functionality.
6469
6470         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6471         to suspend when a native SIGSEGV is received. This is useful for debugging
6472         crashes which don't happen under gdb, since a live process contains more
6473         information than a core file.
6474
6475         * mini-exceptions.c (mono_print_thread_dump): Use 
6476         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6477
6478         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6479
6480         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6481         
6482         * basic-float.cs: Disable the tests which currently fail on amd64.
6483
6484         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6485         value to mono_arch_patch_callsite () to fix crashes.
6486         
6487         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6488
6489 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6490
6491         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6492         nop code by patching the call address to point to the nullified class init
6493         trampoline, as the former does not seem to be safe on SMP machines.
6494
6495 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6496
6497         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6498         they were wrong.
6499
6500 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6501
6502         * basic-float.cs basic-calls.cs: Fix warnings.
6503
6504 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6505
6506         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6507         correct frame pointer in the LMF.  Should fix #478394.
6508
6509 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6510
6511         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6512
6513         * image-writer.c: Make the binary writer less verbose.
6514
6515 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6516
6517         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6518         are called from runtime invoke wrappers.
6519
6520 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6521
6522         * cpu-ppc.md (store_memindex): Increase the size of this.
6523
6524 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6525
6526         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6527
6528         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6529
6530         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6531         OP_LCONV_TO_R_UN.
6532
6533         Last fix for of #467201.
6534
6535
6536 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6537
6538         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6539
6540         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6541         and long_conv_to_r8_2:
6542
6543         Fixed part of #467201.
6544
6545 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6546
6547         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6548
6549         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6550         conversion to 32 bits.
6551
6552         * cpu-x86.md: Increase the size of int_conv_to_r4.
6553
6554         * basic-float.cs: Add a test for this.
6555
6556         Fixed part of #467201.
6557
6558 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6559
6560         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6561
6562         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6563         conversion to 64 bits.
6564
6565         * basic-float.cs: Add a test for this.
6566
6567         Fixed part of #467201.
6568
6569 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6570
6571         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6572
6573         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6574         This behavior is compatible with MS.
6575
6576         * iltest.il.in: Add a test for this.
6577
6578         Fixed part of #467201.
6579
6580 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6581
6582         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6583
6584         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6585         change the precision of the value.
6586
6587         * cpu-x86.md: Define len for float_conv_to_r4.
6588
6589         * basic-float.cs: Add a test for this.
6590
6591         Fixed part of #467201.
6592
6593 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6594
6595         * mini.c: Adjust locking order to the new semantics where the loader lock
6596         comes first.
6597
6598 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6599
6600         * aot-runtime.c:
6601         * mini-amd64.c:
6602         * mini-arm.c:
6603         * mini-ia64.c:
6604         * mini-mips.c:
6605         * mini-ppc.c:
6606         * mini-sparc.c:
6607         * mini-trampolines.c:
6608         * mini-x86.c:
6609         * mini.c:
6610         * tramp-alpha.c:
6611         * tramp-amd64.c:
6612         * tramp-arm.c:
6613         * tramp-hppa.c:
6614         * tramp-ia64.c:
6615         * tramp-mips.c:
6616         * tramp-ppc.c:
6617         * tramp-s390.c:
6618         * tramp-s390x.c:
6619         * tramp-sparc.c:
6620         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6621
6622 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6623
6624         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6625         as it is incorrect.
6626
6627 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6628
6629         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6630         for cctors if needed.
6631
6632 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6633
6634         * mini-ppc.c: Fix build on Darwin.
6635
6636 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6637
6638         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6639         version instead of 3 as valgrind doesn't like version 3.
6640
6641         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6642
6643         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6644         usable for hashing methods.
6645         (emit_extra_methods): Use the new hash to avoid putting every method in the
6646         same hash bucket.
6647
6648         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6649
6650         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6651         whenever a method ref could match a method.
6652         
6653         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6654         test to fail.
6655         
6656         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6657         methods refs.
6658
6659         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6660
6661         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6662         the encoding buffer.
6663
6664         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6665         mono_method_get_header () on inflated methods as an optimization.
6666
6667 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6668
6669         * ssa.c (fold_ins): Fix another crash if the instruction following the
6670         switch was optimized away.
6671
6672 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6673
6674         Contributed under the terms of the MIT/X11 license by Steven
6675         Munroe <munroesj@us.ibm.com>.
6676
6677         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6678
6679 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6680
6681         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6682         around the mono_domain_alloc calls, it is now done by the functions
6683         themselves.
6684
6685         * aot-compiler.c (compile_method): Only add wrappers referenced by
6686         the method if compiling with full AOT.
6687         (mono_compile_assembly): Error out if --aot=full is specified on
6688         a platform where it is not supported.
6689
6690         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6691         on ARM too.
6692
6693         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6694         AOT support.
6695
6696         * aot-runtime.c (load_named_code): Handle 
6697         mono_arm_throw_exception_by_token.
6698
6699         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6700
6701         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6702         unaligned.
6703
6704         * Makefile.am (fullaotcheck): Exit if a test fails.
6705
6706         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6707         on ARM.
6708         (mono_compile_assembly): Handle the assembler failing.
6709
6710         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6711         accepting subsections of .bss.
6712
6713         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6714         was optimized away.
6715
6716         * aot-compiler.c: Remove some unused includes.
6717         
6718         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6719         now in MonoImageWriter.
6720
6721         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6722         code sequence which matches a non-virtual call. Fixes #472654.
6723
6724 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6725
6726         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6727         xdebug code.
6728         
6729         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6730         use the image/dwarf writers directly.
6731
6732         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6733         field.
6734
6735         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6736         MonoDwarfWriter.
6737
6738         * image-writer.h: Fix some typos.
6739
6740         * dwarfwriter.h dwarfwriter.c: New files.
6741         
6742         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6743         separate module.
6744
6745         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6746         argument to return unwind info.
6747
6748         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6749
6750         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6751         
6752         * aot-runtime.c (decode_method_ref): Add a case for 
6753         MONO_AOT_METHODREF_WRAPPER_NAME.
6754
6755         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6756         for AOT.
6757
6758         * aot-compiler.c (encode_method_ref): Use the new constants.
6759
6760         * aot-runtime.c (decode_method_ref): Ditto.
6761
6762         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6763         be compiled, not the icall itself.
6764
6765 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6766
6767         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6768         using decode_method_ref ().
6769
6770         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6771         convert it to an in32. Fixes #475859.
6772
6773         * arrays.cs: Add a test.
6774
6775 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6776
6777         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6778         OP_LCONV_TO_U2.
6779
6780         * basic-long.cs: Add a test.
6781
6782 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6783
6784         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6785         remove the frame pointer in leaf methods which don't receive any
6786         arguments, don't throw exceptions and don't do dynamic stack
6787         allocations.
6788
6789 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6790
6791         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6792         the fail_tramp changes. Hopefully fixes #475132.
6793
6794 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6795
6796         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6797         instead of mono_metadata_signature_dup_full.
6798
6799 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6800
6801         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6802         for processing jump tables. Fixes #473787.
6803
6804 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6805
6806         * mini-generic-sharing.c: mini_method_get_context() just calls
6807         mono_method_get_context_general() now.
6808
6809         * mini.c, mini.h: Moved get_object_generic_inst(),
6810         construct_object_context_for_method() and
6811         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6812
6813 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6814
6815         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6816         basic block fell through to its successor bblock without a branch. Fixes
6817         #474718.
6818
6819         * iltests.il.in: Add a test.
6820         
6821         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6822         (can_encode_patch): We can now handle arrays of generic parameters and
6823         array methods.
6824
6825         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6826
6827         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6828         the AOT file to avoid some #ifdefs in aot-runtime.c
6829
6830         * mini.h: Bump AOT file format version.
6831
6832 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6833
6834         * Makefile.am (fullaotcheck): Make this run the tests.
6835
6836         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6837
6838 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6839
6840         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6841         individually.  Fixes #473482.
6842
6843 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6844
6845         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6846
6847 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6848
6849         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6850         (mono_compile_assembly): Hush compile warnings about
6851         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6852         code path.
6853
6854 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6855
6856         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6857
6858         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6859
6860         * aot-compiler.c: Fix arm support.
6861
6862         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6863         img_writer_emit_unset_mode () function.
6864
6865         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6866         (mono_unwind_get_dwarf_pc_reg): Ditto.
6867
6868         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6869         Move almost all platform specific code to a set of arch_ functions, 
6870         and document them to ease porting.
6871         
6872         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6873
6874         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6875
6876         * aot-compiler.c: Extract the image writing functionality into a separate
6877         module to reduce the size of this file.
6878
6879 2009-02-09  Geoff Norton  <gnorton@novell.com>
6880
6881         * mini-s390.c: Fix the signature of emit_sig_cookie.
6882
6883 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6884
6885         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6886
6887         * aot-runtime.c (is_shared_got_patch): Ditto.
6888
6889         * aot-runtime.c (load_named_code): Cope with the fact that 
6890         decode_got_entry () won't decode the patch fully if its corresponding got
6891         entry is already filled.
6892         
6893         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6894         Initialize *ji.
6895         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6896
6897         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6898         as the moving pointer instead of 'buf' for consistency with the rest of the
6899         codebase.
6900         (mono_arch_create_monitor_exit_trampoline): Ditto.
6901
6902         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6903         generic_class_init trampolines.
6904         (add_generic_class): Extract some code from add_generic_instances () into a
6905         separate function so it can be called from other places too.
6906         (compile_method): Call add_generic_class () for the classes of inflated methods
6907         referenced by the method.
6908         (can_encode_patch): Allow references to generic parameters.
6909
6910         * aot-runtime.c: Add support the patches required by the new trampolines.
6911         
6912         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6913         support.
6914
6915         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6916         full-aot support.
6917
6918         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6919         this from get_throw_pending_exception, make the signature full aot compatible.
6920
6921         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6922
6923         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6924
6925         * exceptions.cs: Add a test.
6926
6927 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6928
6929         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6930         use the DWARF_DATA_ALIGN constant instead.
6931
6932         * exception-<ARCH>.c: Update after the above change.
6933
6934         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6935         dwarf unwinder.
6936
6937         * mini-arm.c: Enable the dwarf unwinder.
6938
6939         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6940         instead of mono_class_setup_vtable ().
6941
6942 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6943
6944         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6945         dwarf unwinder.
6946
6947         * mini-x86.h: Enable the dwarf unwinder.
6948
6949 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6950
6951         Fix mcs/tests/test-7.cs
6952         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6953         2009-02-03.
6954
6955 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6956
6957         * mini.c (print_jit_stats): Remove some unused statistics.
6958
6959 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6960
6961         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6962
6963 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6964
6965         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6966         the method we get from mono_object_get_virtual_method() because
6967         that function does it properly, now.
6968
6969 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6970
6971         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6972         opcodes. Fixes #472775.
6973
6974 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6975
6976         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6977         fact that mono_find_jit_info() sometimes returns the context
6978         corresponding to the jit info in new_ctx.  Fixes #472600.
6979
6980 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6981
6982         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6983         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6984         klass->enum_basetype directly.
6985
6986         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6987         enum subtypes.
6988
6989         * unwind.c: Avoid 0 sized arrays.
6990
6991 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6992
6993         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6994         size on systems with 64k pages. Fixes #471389.
6995
6996 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6997
6998         Contributed under the terms of the MIT/X11 license by Steven
6999         Munroe <munroesj@us.ibm.com>.
7000
7001         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
7002         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
7003         necessary.
7004
7005 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7006
7007         Contributed under the terms of the MIT/X11 license by Steven
7008         Munroe <munroesj@us.ibm.com>.
7009
7010         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
7011         comparison fix.
7012
7013         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
7014         The trampoline can be longer on PPC64.
7015
7016 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7017
7018         Contributed under the terms of the MIT/X11 license by Steven
7019         Munroe <munroesj@us.ibm.com>.
7020
7021         * mini-ppc.c: Compiler warning fixes and trivial code
7022         simplifications.
7023
7024 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7025
7026         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
7027         ins->dreg which could be a hardware register, not a vreg.
7028
7029         * aot-compiler.c (emit_method_dwarf_info): Ditto.
7030         
7031         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
7032         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
7033
7034         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
7035         
7036         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
7037         ->dreg, that is not the vreg we are looking for.
7038
7039         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
7040
7041         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
7042         LIVERANGE_END.
7043
7044         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
7045         strange crashes.
7046
7047 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
7048
7049         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
7050
7051         * aot-compiler.c (emit_line_number_info): Fix line number emission when
7052         the line diff is 0.
7053
7054         * aot-compiler.c: Add xdebug support on x86.
7055
7056         * unwind.c: Add x86 support.
7057         
7058         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7059         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7060
7061         * mini.c (mini_method_compile): Ditto.
7062         
7063         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7064         the variable index.
7065
7066         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7067         which mimic .push_section/.pop_section in GAS.
7068         
7069         * aot-compiler.c: Emit precise live range information for variables.
7070
7071         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7072
7073         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7074         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7075         them.
7076
7077         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7078         the live ranges of variables.
7079
7080         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7081         of the variable in terms of native offsets.
7082
7083 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7084
7085         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7086         
7087 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7088
7089         Contributed under the terms of the MIT/X11 license by Steven
7090         Munroe <munroesj@us.ibm.com>.
7091
7092         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7093         order (offset then base reg) for ppc_load_multiple_regs.
7094         (emit_save_saved_regs) Correct operand order for
7095         ppc_store_multiple_regs.
7096         (mono_arch_get_call_filter): Correct operand order for
7097         ppc_load_multiple_regs.
7098
7099         * mini-ppc.c (emit_memcpy): Fix operand order for
7100         ppc_load_reg_update and ppc_store_reg_update.
7101         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7102         (mono_arch_emit_epilog): Correct operand order for
7103         ppc_load_multiple_regs.
7104
7105         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7106         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7107
7108 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7109
7110         * cpu-ppc64.md: Fixed storer4_memindex length.
7111
7112 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7113
7114         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7115         line number info.
7116         
7117         * aot-compiler.c (emit_line_number_info): Optimize this.
7118
7119 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7120
7121         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7122         
7123         * aot-compiler.c: Add debug info for methods without debug info by
7124         emitting an IL file and having the line number info referencing that file.
7125
7126         * aot-compiler.c: Optimize the size of the generated line number info.
7127
7128         * aot-compiler.c: Emit line number info in xdebug mode.
7129
7130         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7131         million arguments.
7132
7133 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7134
7135         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7136
7137         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7138         is used.
7139
7140 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7141
7142         * basic-calls.cs: Test for the weird crash found on arm.
7143         
7144 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7145
7146         * cpu-arm.md: Increase the size of storer8_membase_reg and
7147         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7148
7149         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7150         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7151         reg to LR otherwise we'll be loading/storing from just the offset.
7152
7153 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7154
7155         Question: if we are storing gint32's inside the "*native_offset",
7156         should we change the signature to "gint32 *native_offset" to
7157         ensure that we do not have type definition problems?
7158         
7159         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7160         an int * as this is what the other function expects, causes
7161         problems with Freescale's compiler that defined int32_t to be a
7162         long and makes int incompatible 
7163
7164 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7165
7166         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7167         filename conflict with bjam.
7168
7169 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7170
7171         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7172         as it might use decomposed ops.
7173
7174 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7175
7176         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7177
7178         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7179         is defined.
7180
7181         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7182
7183         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7184         offsets.
7185
7186         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7187         way registers are stored in MonoContext on arm.
7188
7189         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7190         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7191
7192         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7193
7194         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7195
7196         * mini.c (mini_init): Register mono_isfinite.
7197
7198         * jit-icalls.c (mono_isfinite): New jit icall.
7199
7200         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7201         
7202         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7203         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7204         the parent frame.
7205
7206 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7207
7208         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7209         separate frame and stack pointers, so we must use FP to find the register
7210         spill area.
7211         The FP reg is retrieved from the MonoContext::regs array.
7212
7213 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7214
7215         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7216         as FPA requires it.
7217
7218 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7219
7220         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7221         return R4 and R8 when not running under softfloat.
7222
7223         Fixes basic-calls.exe
7224
7225 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7226
7227         * mini-arm.c: Implement some overflow opcodes.
7228
7229 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7230
7231         * ssa.c: handle another alloca.h
7232
7233         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7234         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7235         MONO_ARCH_USE_SIGACTION. 
7236
7237         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7238         capability defines.
7239
7240         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7241
7242         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7243         PPC targets as sigaction does not exist on all platforms, define
7244         this on a per-platform basis.
7245
7246         Instead of erroring out if the platform is not defined, include
7247         mini-ppc-os.h, and expect that the OS specific setting provides
7248         the required information.   
7249
7250 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7251
7252         * aot-compiler.c: Fix --enable-minimal=aot.
7253
7254 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7255
7256         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7257         previous change.
7258
7259 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7260
7261         * exceptions-arm.c: Fix warnings.
7262
7263         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7264         ARM.
7265
7266         * mini-x86.c: Fix --enable-minimal=jit build.
7267
7268         * mini.c: Really fix --enable-minimal=jit build.
7269         
7270         * mini.c (construct_object_context_for_method): Move this outside
7271         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7272
7273         "Backported" of r124984 from 2.0 branch.
7274         
7275         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7276
7277         "Backport" of r124977 + r124978 from 2.0 branch.
7278         
7279         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7280         to avoid calling mono_exception_from_token () from the throw trampoline.
7281         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7282         for throwing corlib exceptions, this fixes full-aot support for corlib
7283         exceptions.
7284
7285         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7286
7287 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7288
7289         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7290         part of the changes to split the code in mini into operating
7291         system specific files.
7292
7293         This patch was done by copying mini.c to the respective files to
7294         preserve SVN history.
7295
7296 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7297
7298         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7299
7300 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7303         remoting-invoke-with-check wrappers of shared methods.
7304
7305         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7306
7307 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7308
7309         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7310         optimization if the top of stack is the last instruction in the
7311         bblock.  Otherwise it might have been used after its definition.
7312         Fixes #469742.
7313
7314 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7315
7316         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7317         method as well when get_vcall_slot () fails to match a code sequence.
7318
7319         * mini-arm.c: Fix the android build, which doesn't have
7320         __aeabi_read_tp.
7321
7322 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7323
7324         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7325         the s390x build.
7326
7327 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7328
7329         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7330
7331 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7332
7333         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7334         and put its id into jinfo->used_regs. This is only used on amd64,
7335         which is currently the only platform generating unwind info.
7336
7337         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7338         the dwarf unwinder. This is required to correctly handle async exceptions
7339         like thread abort and stack overflows, which can happen while a method
7340         is in the middle of its prolog or epilog.
7341         
7342         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7343         the unwind info belonging to an AOTed method.
7344
7345         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7346         into cfg->unwind_ops.
7347         
7348         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7349
7350         * mini.c (mini_init): Call mono_unwind_init ().
7351         (mini_cleanup): Call mono_unwind_cleanup ().
7352
7353         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7354         unwind info to be shared between methods.
7355
7356         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7357         saved in the LMF.
7358
7359         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7360         get_throw_pending_exception () to avoid initialization races.
7361
7362         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7363         mono_arch_exceptions_init () function.
7364
7365         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7366
7367 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7368
7369         * mini.c (mono_get_domain_intrinsic): New helper function.
7370         (mono_get_thread_intrinsic): Ditto.
7371
7372         * mini-arm.c mini-ia64.c: Use the new helper functions.
7373         
7374         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7375         the last constrained_call change, since it is needed in the non-AOT
7376         case as well.
7377
7378         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7379         
7380         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7381         mono_get_lmf_addr () on arm eabi linux.
7382
7383 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7384
7385         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7386         code sequence which matches a non-virtual call.
7387
7388 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7389
7390         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7391         stack pointer (r1).
7392
7393 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7394
7395         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7396         runtime-invoke wrappers, since they are also shared based on signature.
7397
7398 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7399
7400         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7401         info from the (correct) context.
7402
7403 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7404
7405         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7406         
7407         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7408         using dwarf unwinding info. Not yet used.
7409
7410         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7411
7412 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7413
7414         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7415         descriptors.
7416
7417         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7418         special case and handle mono_arch_delegate_invoke_impl() returning
7419         function descriptors.
7420
7421         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7422         trampolines return function descriptors, too.
7423
7424 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7425
7426         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7427         out_of_line optimization.
7428
7429 2009-01-21  Martin Baulig  <martin@ximian.com>
7430
7431         * mini.h
7432         (MonoCompile): Added `disable_deadce_vars' to disable removing
7433         unused variables.
7434
7435         * mini.c
7436         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7437         inside the debugger.
7438
7439         * liveness.c (mono_analyze_liveness): Don't remove any unused
7440         variables if `cfg->disable_deadce_vars' is set.
7441
7442 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7443
7444         * method-to-ir.c: Only apply exception constructor optimization if
7445         the the method actually belongs to an exception class.  Fixes
7446         #467456.
7447
7448 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7449
7450         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7451         change inside a #ifdef __mono_ppc64__.
7452
7453         * aot-compiler.c (compile_method): Remove the previous limitation.
7454
7455         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7456         on type variables in AOTed code.
7457         
7458         * aot-compiler.c (compile_method): Skip generic methods having type 
7459         constraints on their generic parameters.
7460
7461         * aot-compiler.c (compile_method): Check for methods which cannot be
7462         encoded inside RGCTX_FETCH patches as well.
7463
7464         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7465         build.
7466
7467 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7468
7469         * method-to-ir.c: Force the vtable variable in shared generic code
7470         for the case that they might show up on a stack trace where they
7471         are needed.
7472
7473         * mini-exceptions.c: Save and use generic sharing info as well as
7474         IP in stack traces to resolve shared generic instantiations.
7475
7476 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7477
7478         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7479         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7480
7481 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7482
7483         * method-to-ir.c: Do generic sharing for array constructors.
7484
7485 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7486
7487         * mini-exceptions.c (mono_print_thread_dump): Add information
7488         about the thread state using wapi_current_thread_desc.
7489
7490 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7491
7492         * basic-simd.cs: Tests for the new constructors. 
7493
7494 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7495
7496         * mini-ops.h: Added OP_EXPAND_*
7497
7498         * cpu-x86.md: Same.
7499
7500         * mini-x86.c (mono_arch_output_basic_block): Same.
7501         
7502         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7503
7504 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7505
7506         * iltests.il.in: Add a test for #467385.
7507
7508 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7509
7510         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7511         thread been cleaned up is not the same currently in execution.
7512
7513         Fixes appdomain-unload crashes on windows, osx and linux variants
7514         without the __thread keyword.
7515
7516 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7517
7518         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7519         (koush@koushikdutta.com). Implement this for android.
7520
7521         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7522         begins with a digit.
7523
7524         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7525         mono_marshal_get_write_barrier ().
7526
7527 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7528
7529         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7530         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7531         that pass them on a register pair.
7532
7533         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7534         test was crashing due to that.
7535
7536 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7537
7538         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7539         trampoline code. Include ucontext.h only if available.
7540
7541 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7542
7543         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7544         and doesn't check whether it's sharable, like it was before
7545         removing the shared generics hash.  This brings IronPython
7546         performance back to what it was before that change.
7547
7548 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7549
7550         * method-to-ir.c: Handle delegate invocation optimization earlier,
7551         otherwise it would be handled (much more slowly) by the
7552         final/sealed optimization.
7553
7554 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7555
7556         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7557         domain is not set. Fixes #465864.
7558
7559 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7560
7561         * method-to-ir.c: Don't stop sharing of generic methods with catch
7562         clauses - we already handle those.
7563
7564 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7565
7566         * mini.c, mini.h: lookup_generic_method() is now
7567         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7568         making the shared_generics_hash obsolete.
7569
7570 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7571
7572         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7573         use the red zone.  Make room on the stack first and then use it,
7574         not the other way around.
7575
7576 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7577
7578         * mini.c (mini_init): Call mono_xdebug_init ().
7579
7580         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7581
7582 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7583
7584         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7585
7586         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7587         trampolines.
7588
7589         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7590         debug+unwind info for trampolines.
7591
7592         * mini.c (mono_create_unwind_op): New helper function.
7593
7594         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7595
7596 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7597
7598         * aot-compiler.c: Fix the build.
7599
7600 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7601
7602         * Makefile.am: Update dtrace-prelink.sh location.
7603
7604 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7605
7606         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7607         optimization. Fixes #464520.
7608
7609 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7610
7611         * mini-amd64.c : Adding code to save/restore non-volatile registers
7612            on Winx64.
7613
7614         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7615           registers on Winx64.
7616
7617         Contributed under MIT/X11 license.
7618
7619 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7622         __GNUC_MINOR__ which can break when the major version changes.
7623
7624 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7625
7626         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7627
7628 2009-01-07  Geoff Norton  <gnorton@novell.com>
7629
7630         * helpers.c:  Allow mono -v -v -v to work on darwin.
7631
7632 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7633
7634         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7635           pattern. 
7636
7637         Contributed under MIT/X11 license.
7638
7639 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7640
7641         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7642         instead of directly accessing type->data.klass. Fixes #462016.
7643         (mono_allocate_stack_slots_full): Ditto.
7644
7645         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7646         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7647
7648         * aot-compiler.c (emit_plt): Fix ARM build.
7649
7650 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7651
7652         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7653         
7654         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7655         change.
7656
7657         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7658         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7659         #463357.
7660
7661         * iltests.il.in: Add a regression test.
7662
7663 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7664
7665         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7666
7667 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7668
7669         * basic-simd.cs: Add a regression test for #462457.
7670
7671 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7672
7673         * mini-ops.h: Add a definition of XPHI.
7674
7675         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7676
7677         * ssa.c (op_phi_to_move): Handle XPHI.
7678
7679         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7680
7681         Fixes #462457
7682
7683 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7684
7685         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7686
7687 2008-12-31  Geoff Norton  <gnorton@novell.com>
7688
7689         * mini-ppc.c: The prolog size allocated can be too small for darwin
7690         ppc32 under certain circumstances.  Also fix a small logic bug.
7691
7692 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7693
7694         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7695         while loading AOT methods.
7696
7697         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7698         since only the former is nulled out after a successful cast. This prevents
7699         crashes with rethrown exceptions when using --debug=casts.
7700
7701 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7702
7703         * mini.h: New macro for checking whether a method is final,
7704         i.e. whether the method or its class is marked final.
7705
7706         * method-to-ir.c: Use the new macro for all final-checks
7707         consistently.  Fixes the crash in the System.ServiceModel tests.
7708
7709 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7710
7711         * mini-exceptions.c (get_exception_catch_class): Corrected another
7712         overly strict assertion.
7713
7714 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7715
7716         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7717         Clobbering it is not allowed because the caller might use it as
7718         the vtable register in the interface call.
7719
7720 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7721
7722         * mini-exceptions.c (get_exception_catch_class): Corrected an
7723         overly strict assertion.
7724
7725 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7726         
7727         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7728
7729         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7730
7731         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7732
7733         * cpu-mips.md: correct lengths for certain long_ opcodes.
7734
7735         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7736
7737         * 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().
7738         
7739 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7740
7741         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7742         
7743 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7744         
7745         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7746         
7747 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7748
7749         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7750         next basic block.
7751         
7752 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7753
7754         * 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
7755
7756         * 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)
7757         
7758 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7759         
7760         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7761         
7762 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7763
7764         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7765         gshared code. Fixes #458947.
7766
7767         * generics.cs: Add a test.
7768
7769 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7770         
7771         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7772         
7773         * mini-mips.c: first pass n32 code generation.
7774
7775         * mini-mips.h: datatypes and defines for n32 support.
7776
7777         * exceptions-mips.c: first pass n32 code generation.
7778         
7779         * tramp-mips.c: first pass n32 code generation.
7780         
7781         * cpu-mips.md: add long_ opcodes.
7782         
7783 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7784
7785         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7786
7787         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7788         
7789         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7790         
7791         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7792
7793         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7794
7795         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7796
7797         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7798
7799         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7800
7801         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7802
7803 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7804
7805         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7806
7807 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7808
7809         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7810
7811 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7812
7813         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7814         descriptors for helper functions directly in front of the code.
7815
7816 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7817
7818         * method-to-ir.c: Removed an unnecessary assertion.
7819
7820 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7821
7822         * method-to-ir.c: Merge SGEN changes from the old JIT.
7823
7824 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7825
7826         * driver.c (compile_all_methods_thread_main): Handle failure of
7827         mono_get_method ().
7828
7829 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7830
7831         * mini-ppc.c: Merged with mini-ppc64.c.
7832
7833         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7834
7835         * Makefile.am: Use the same sources for PPC and PPC64.
7836
7837         * mini-ppc64.c: Removed.
7838
7839 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7840
7841         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7842         code to mono_bb_is_fall_through.
7843         
7844         * branch-opts.c (mono_remove_critical_edges): Same.
7845
7846 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7847
7848         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7849         expect that an OP_BR_REG will be there.
7850
7851 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7852
7853         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7854         for the many branch ops. The original check miss OP_BR_REG.
7855
7856         Fixes #457574.
7857         
7858 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7859
7860         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7861
7862 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7863
7864         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7865         while holding the aot lock.
7866
7867 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7868
7869         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7870         
7871 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7872
7873         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7874           to release all runtime callable wrappers held by the runtime.
7875
7876         Contributed under MIT/X11 license.
7877
7878 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7879
7880         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7881           for Winx64.
7882
7883         Contributed under MIT/X11 license.
7884
7885 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7886
7887         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7888         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7889
7890 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7891
7892         * cpu-mips.md: fix ckfinite length
7893
7894         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7895         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7896         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7897         
7898 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7899
7900         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7901         
7902 2008-12-08  Geoff Norton  <gnorton@novell.com>
7903
7904         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7905         size by 8 bytes as well.
7906
7907 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7908
7909         * basic-simd.cs: Fix method names for Vector16b.
7910         
7911 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7912
7913         * basic-simd.cs: Fix method names for Vector16sb.
7914
7915 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7916
7917         * basic-simd.cs: Fix method names for Vector8us.
7918         
7919 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7920
7921         * basic-simd.cs: Fix method names for Vector8s.
7922         
7923 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7924
7925         * basic-simd.cs: Fix method names for Vector4ui.
7926
7927 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7928
7929         * basic-simd.cs: Fix method names for Vector2l.
7930
7931 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7932
7933         * basic-simd.cs: Fix method names for Vector2d.
7934
7935 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7936
7937         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7938         that are extension methods.
7939
7940 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7941
7942         * basic-simd.cs: Fix method names for Vector4f.
7943
7944 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7945
7946         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7947         as such. Fixes #456669.
7948
7949 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7950
7951         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7952         
7953 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7954
7955         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7956         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7957         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7958         (mips_adjust_stackframe): handle FP spills
7959                 
7960         * mini-ops.h: add mips_mtc1_s2
7961         
7962         * cpu-mips.md: add mips_mtc1_s2
7963         
7964 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7965
7966         * unwind.c: New file, move the unwind info encoding functions here from
7967         aot-compiler.c, so they could be used at runtime too.
7968
7969 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7970
7971         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7972         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7973         
7974 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7975
7976         * mini-mips.c: cleanup warnings
7977         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7978         (mips_adjust_stackframe): handle case of taking the address of stack locals
7979         
7980 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7981
7982         * aot-compiler.c: Implement a few functions missing from the asm writer.
7983         (emit_method_code): Only write symbols for methods when using the bin
7984         writer, since the assembler can't deal with the characters in our method
7985         names.
7986
7987         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7988
7989         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7990         call.
7991
7992         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7993         a bit to also restore %rax.
7994
7995 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7996
7997         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7998
7999 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8000
8001         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
8002         arguments.
8003
8004 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8005
8006         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
8007
8008         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
8009         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
8010
8011         * exceptions-ppc64.c: Removed.
8012
8013         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
8014
8015 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8016
8017         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
8018         tramp-ppc64.c.
8019
8020         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
8021
8022         * tramp-ppc64.c: Removed.
8023
8024 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8025
8026         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
8027         the TYPESPEC table.
8028
8029 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8030
8031         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
8032
8033         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
8034         mini-ppc.h instead of mini-ppc64.h.
8035
8036         * mini-ppc64.h: Removed.
8037
8038 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8039
8040         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
8041         
8042         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
8043         
8044 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8045
8046         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
8047         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
8048         code easier.
8049
8050 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8051
8052         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
8053
8054 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8055
8056         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8057
8058 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8059
8060         * basic-simd.cs: Tests for operator == and != on Vector4f.
8061
8062 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8063
8064         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8065
8066         * simd-intrinsics.c: Kill useless enum.
8067
8068 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8069
8070         * cpu-mips.md: add long_conv_to_ovf_i4_2
8071         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8072
8073 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8074
8075         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8076         
8077         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8078
8079 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8080
8081         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8082         
8083 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8084
8085         * basic-simd.cs: Add tests for new methods.
8086
8087 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8088
8089         * simd-intrinsics.c: Add support for operator == and !=
8090         on Vector4(u)i.
8091
8092         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8093
8094 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8095
8096         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8097
8098 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8099
8100         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8101
8102         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8103         MONO_PATCH_INFO_ICALL_ADDR.
8104
8105         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8106
8107         * aot-compiler.c: Resurrect full-aot support.
8108
8109 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8110
8111         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8112         
8113 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8114
8115         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8116         
8117 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8118
8119         * basic-simd.cs: Fix tests to work under ppc.
8120         Remove tests for methods that will be removed.
8121
8122 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8123
8124         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8125         generic type (via a typedef or typeref) correctly.
8126
8127 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8128
8129         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8130         diagnose an assertion failure.
8131
8132 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8133
8134         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8135         Fix trampoline size.
8136
8137         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8138         conversion opcodes are implemented natively instead via emulation.
8139
8140 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8141
8142         * cpu-mips.md: remove mips_xori
8143
8144         * mini-ops.h:  remove mips_xori
8145
8146         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8147
8148         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8149         
8150         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8151         
8152 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8153
8154         * cpu-mips.md: fix instruction lengths.
8155
8156         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8157
8158         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8159
8160         * mini-ops.h: fix slti / sltiu op profiles.
8161         
8162 2008-12-02  Martin Baulig  <martin@ximian.com>
8163
8164         * method-to-ir.c (mono_method_to_ir): Disable debugging
8165         information for the init locals block to make the debugger stop
8166         after all locals have been initalized.
8167
8168 2008-12-02  Martin Baulig  <martin@ximian.com>
8169
8170         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8171         running inside the debugger.
8172
8173 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8174
8175         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8176         is enabled.
8177
8178         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8179         alu->alu imm optimization which only shows if deadce is disabled.
8180
8181         * aot-compiler.c: Rename the function names for the binary and asm writers
8182         so they can coexist in the same process. Rework the xdebug code to use the
8183         asm writer. This avoids the need to call into the runtime to dump the
8184         debugging info. Add more debugging info for types.
8185
8186         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8187
8188         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8189         cpu description tables, they can't occur in cpu-<ARCH>.md.
8190
8191         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8192         the stack in CEE_LDFLDA. Fixes #450542.
8193
8194         * generics.cs: Add a new test.
8195
8196 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8197
8198         * mini-ops.h: updated MIPS opcodes
8199         * mini-mips.c: decompose long opts
8200         * mini-mips.h: decompose long opts
8201         
8202 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8203
8204         * cpu-mips.md: fix length on int_rem_un
8205         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8206         
8207 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8208
8209         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8210
8211         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8212
8213 2008-11-29  Martin Baulig  <martin@ximian.com>
8214
8215         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8216         mono_debug_using_mono_debugger() in addition to the
8217         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8218
8219 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8220
8221         * mini-ops.h: updated more MIPS opcodes
8222         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8223         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8224         
8225 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8226
8227         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8228
8229 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8230
8231         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8232         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8233         * mini-ops.h: correct selected mips opcode entries
8234         
8235 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8236
8237         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8238         make them work.
8239
8240 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8241
8242         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8243
8244 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8245
8246         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8247         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8248         * mini-mips.h: disable IMT
8249         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8250         
8251 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8252
8253         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8254
8255 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8256
8257         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8258
8259 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8260
8261         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8262         consistency.
8263
8264 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8265
8266         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8267         for Set/GetVector aligned versions.
8268
8269 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8270
8271         * basic-simd.cs: Add tests for Get/SetVector.
8272
8273 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8274
8275         * mini.c: Removed g_slist_append_mempool().  Now in
8276         metadata/mempool.c.
8277
8278 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8279
8280         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8281         size properly and make the bounds check optional.
8282
8283         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8284         for SetVector and IsAligned.
8285
8286 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8287
8288         * mini.c: Remove unused mono_normalize_opcodes () function.
8289
8290 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8291
8292         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8293         using the new atomic add ops now.
8294
8295         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8296         add.
8297
8298 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8299
8300         * mini-ppc64.c: Several fixes.
8301
8302 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8303
8304         * cpu-mips.md: added jump_table
8305         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8306
8307 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8308
8309         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8310
8311 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8312
8313         * mini-ops.h: corrected a handful of MIPS opcodes.
8314
8315 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8316
8317         * aot-compiler.c: MIPS to use ELF writer
8318
8319 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8320
8321         * mini-codegen.c: remove MIPS specific assert.
8322
8323 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8324
8325         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8326         fixes.  PPC64 now passes most of the runtime regressions.
8327
8328 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8329
8330         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8331         volatile intervals a bit.
8332
8333 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8334
8335         * basic-long.cs: New test case.
8336
8337 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8338
8339         * mini.c (mini_method_compile): Disable globalra for large methods for 
8340         now.
8341
8342         * regalloc2.c (order_moves): Add fp support.
8343
8344         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8345         source bblock ends with an OP_BR_REG.
8346
8347         * ratests.cs: Add a new test.
8348
8349 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8350
8351         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8352         sharing.  PPC64 now passes generics.exe.
8353
8354 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8355
8356         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8357
8358 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8359
8360         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8361         memory when mono_jit_info_table_find () can't find the method in the
8362         LMF case.
8363
8364         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8365         AOTed code too.
8366         
8367         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8368         writer too.
8369
8370 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8371
8372         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8373         Several fixes.  PPC64 now runs exceptions.exe and
8374         devirtualization.exe.
8375
8376 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8377
8378         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8379         arrays.exe and basic-math.exe.
8380
8381 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8382
8383         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8384         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8385
8386 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8387
8388         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8389
8390 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8391
8392         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8393
8394         * ir-emit.h: Move macros from method-to-ir.c to here.
8395
8396 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8397
8398         * mini-ops.h: Correct the long simd ops to use LREG.
8399
8400 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8401
8402         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8403         
8404         * mini-ops.h: Correct the dreg type of a few long opcodes.
8405
8406         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8407         Add netbsd support.
8408
8409 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8410
8411         * mini-ppc.c: remove negative stack references in epilog
8412         for platforms that don't support the red zone.
8413
8414 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8415
8416         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8417         point regs.  Now PPC64 passes basic-calls.exe.
8418
8419 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8420
8421         * basic-simd.cs: Add tests for accessors of Vector2l.
8422
8423 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8424
8425         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8426
8427         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8428         
8429         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8430
8431 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8432
8433         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8434         PPC64 passes basic-long.exe.
8435
8436 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8437
8438         * decompose.c: Decompose carry and overflow add on PPC64 like on
8439         other 64 bit archs.  Don't decompose sub at all on PPC64.
8440
8441         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8442         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8443         basic-long.exe.
8444
8445 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8446
8447         * basic-simd.cs: Add tests for accessors of Vector2d.
8448
8449 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8450
8451         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8452
8453         * cpu-x86.md: Same.
8454
8455         * mini-x86.c (mono_arch_output_basic_block): Same.
8456         
8457         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8458
8459 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8460
8461         * basic-simd.cs: Add tests for accessors of Vector4f.
8462
8463 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8464
8465         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8466
8467         * cpu-x86.md: Same.
8468
8469         * mini-x86.c (mono_arch_output_basic_block): Same.
8470         
8471         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8472
8473 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8474
8475         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8476
8477 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8478
8479         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8480
8481         * cpu-x86.md: Same.
8482
8483         * mini-x86.c (mono_arch_output_basic_block): Same.
8484         
8485         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8486
8487 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8488
8489         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8490
8491 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8492
8493         * simd-intrinsics.c: Enable setters for Vector16sb.
8494
8495 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8496
8497         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8498
8499         * cpu-x86.md: Same.
8500
8501         * mini-x86.c (mono_arch_output_basic_block): Same.
8502         
8503         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8504
8505 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8506
8507         * simd-intrinsics.c: Implement setter for Vector8us.
8508
8509 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8510
8511         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8512         for dead variables.
8513
8514 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8515
8516         * mini-ppc.c: remove references to the red zone in the prolog
8517         (for systems that don't support it).
8518
8519 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8520
8521         * cpu-ppc64.md: Fixed a few instruction lengths.
8522
8523         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8524         now.
8525
8526 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8527
8528         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8529         basic.exe now.
8530
8531 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8532
8533         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8534
8535 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8536
8537         * mini-ops.h: Added OP_INSERT_I2.
8538
8539         * cpu-x86.md: Same.
8540
8541         * mini-x86.c (mono_arch_output_basic_block): Same.
8542         
8543         * simd-intrinsics.c: Implement setter for Vector8s.
8544
8545         * simd-methods.h: Add the names of get setters of Vector8s.
8546
8547 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8548
8549         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8550         
8551         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8552         parameters.
8553
8554         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8555
8556 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8557
8558         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8559         for PPC64.  An empty program runs now.
8560
8561 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8562
8563         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8564
8565         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8566         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8567         info for JITted code is emitted into a shared library, loadable into gdb.
8568
8569 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8570
8571         * Makefile.am: Changes to build PPC64.
8572
8573         * mini-arch.h: Include mini-ppc64.h on PPC64.
8574
8575 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8576
8577         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8578         in PPC code up to r119147.
8579
8580 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8581
8582         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8583         cpu-ppc64.md: Changes for PPC64.
8584
8585         Based on code submitted by andreas.faerber@web.de at
8586         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8587         X11/MIT license.
8588
8589 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8590
8591         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8592         cpu-ppc64.md: Copied from the corresponding PPC files from
8593         r118846.
8594
8595 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8596
8597         * mini-ops.h: Added OP_ROUND.
8598
8599         * cpu-x86.md: Added round.
8600
8601         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8602
8603         * basic-math.cs: Added test_0_round to test rounding.
8604
8605         Contributed under MIT/X11 license.
8606
8607 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8608
8609         * aot-compiler.c : Fix the Winx64 build.
8610
8611         Contributed under MIT/X11 license.
8612
8613 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8614
8615         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8616         in OP_EXTRACT_R8 to avoid possible stack corruption.
8617
8618 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8619
8620         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8621
8622         * cpu-x86.md: Added extract_r8.
8623
8624         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8625         
8626         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8627         a couple of OP_EXTRACT_I4.
8628
8629         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8630
8631         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8632
8633 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8634
8635         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8636         and not 4.1. 
8637
8638 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8639
8640         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8641         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8642
8643         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8644         are not needed any more.
8645
8646         * mini.h: Remove the unused INS_LIST macros.
8647
8648         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8649         longer needed.
8650
8651         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8652         ir-emit.h.
8653
8654         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8655         mono_alloc_ireg () instead.
8656
8657         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8658         macros.
8659
8660         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8661         on amd64.
8662
8663         * aot-runtime.c (load_aot_module): Disable AOT when running under
8664         CAS.
8665
8666         * mini-amd64.h: Change the monitor fastpath defines to check for
8667         !PLATFORM_WIN32 so they work on *bsd too.
8668
8669         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8670
8671         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8672
8673         * mini.h (MonoCompile): Remove new_ir flag.
8674
8675         * regalloc.h regalloc.c: Remove unused code.
8676
8677         * cpu-*.md: Remove more unused opcodes.
8678
8679         * simple-cee-ops.h simple-mini-ops.h: Removed.
8680
8681         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8682         
8683 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8684
8685         * aliasing.h: Removed.
8686
8687         * *.c: Remove references to aliasing.h and inssel.h.
8688
8689         * mini.c: Remove additional unused functions.
8690
8691         * mini-ops.h cpu-*.md: Remove unused opcodes.
8692
8693 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8694
8695         Remove the old JIT code.
8696
8697         * inssel*.brg: Removed.
8698
8699         * ssa.c abcremoval.c aliasing.c: Removed.
8700
8701         * ssa2.c: Renamed to ssa.c.
8702
8703         * abcremoval2.c: Renamed to abcremoval.c.
8704
8705         * *.c: Removed all !cfg->new_ir code.
8706
8707         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8708         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8709
8710         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8711         
8712 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8713
8714         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8715         to simplify the code and cut back on the number of global symbols in the AOT
8716         file.
8717         
8718         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8719
8720 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8721
8722         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8723         with the got/got_info tables.
8724
8725         * mini.h: Bump AOT file format version.
8726         
8727         * unwind.h: New file, contains definitions for stack unwinding.
8728
8729         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8730         to cfg->unwind_ops.
8731         
8732         * aot-compiler.c: Generalize the emitting of unwind information to use the
8733         information in cfg->unwind_ops.
8734
8735         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8736
8737         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8738         AOT method frames. Enable writing symbols for methods by default.
8739
8740 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8741
8742         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8743         and make it work with vectors of element sizes 1, 2 and 4.
8744
8745         * simd-intrinsics.c: Enable getter for all vectors with element size
8746         1, 2 or 4.
8747
8748         * simd-methods.h: Add the names of other getters.
8749
8750         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8751
8752         * cpu-x86.md: Same.
8753
8754         * mini-x86.c: Same.
8755
8756 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8757
8758         * mini-ppc.h: portability fix.
8759
8760 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8761
8762         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8763         buggy and will overwrite it.
8764
8765 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8766
8767         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8768         Use it to emit local symbols for all methods so AOTed methods show up with
8769         their full name in gdb/valgrind output.
8770
8771 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8772
8773         * mini-ppc.c: portability fixes.
8774
8775 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8776
8777         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8778         entries out of the if (!generic_shared...) code so it is always done.
8779         (mono_class_init_trampoline): Do the patching when running under valgrind
8780         too, newer versions of valgrind have no problems with it.
8781
8782 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8783
8784         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8785         further sections.
8786
8787 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8788
8789         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8790         filters.
8791
8792 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8793
8794         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8795
8796 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8797
8798         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8799
8800         * cpu-x86.md: Same.
8801
8802         * mini-x86.c: Same.
8803
8804         * simd-intrinsics.c: Same.
8805
8806 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8807
8808         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8809
8810 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8811
8812         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8813         to work with more Vector types.
8814
8815 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8816
8817         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8818         store the elemens directly instead of using and intermediate.
8819
8820 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8821
8822         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8823
8824         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8825         to preserve %eax for aot plt trampolines.
8826
8827         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8828         (encode_method_ref): Flag synchronized methods so they won't go through
8829         the AOT trampoline.
8830
8831         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8832         wrappers.
8833
8834         * cpu-ia64.md (jmp): Increase max length.
8835
8836 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8837
8838         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8839         open generic classes.
8840
8841         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8842
8843         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8844         box+brtrue optimization since it causes test failures on x86.
8845
8846 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8847
8848         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8849
8850         * cpu-x86.md: Same.
8851
8852         * mini-x86.c: Same.
8853
8854         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8855         for simd ctor values. 
8856
8857         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8858         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8859
8860 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8861
8862         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8863         LogicalRightShift.
8864
8865         * simd-instrincs.c: Same.
8866
8867         * basic-simd.cs: Same.
8868
8869 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8870
8871         * ratests.cs: Add more tests.
8872
8873         * regalloc2.c (add_spill_code): Handle more corner cases.
8874
8875 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8876
8877         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8878         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8879         both the source an destination of an instruction.
8880
8881 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8882
8883         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8884         wapihandles.c: more portability changes.
8885
8886 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8887
8888         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8889         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8890         safe to execute in a signal handler and the kernel provides better
8891         the info in /proc/self/smaps. Avoid the assert on sigaction during
8892         cleanup.
8893
8894 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8895
8896         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8897         do the bblock linking hack if it is actually needed.
8898
8899         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8900         up linking.
8901
8902         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8903         crash problem is fixed.
8904
8905         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8906         bblocks.
8907
8908         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8909         for catch clauses.
8910         (mini_method_compile): Set the starting value of next_vreg to 
8911         MAX_IREGS + MAX_FREGS when using globalra.
8912
8913         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8914         filter clauses with BB_EXCEPTION_HANDLER.
8915
8916         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8917
8918 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8919
8920         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8921         space for stdcall.  Fixes regressions on Win32.
8922
8923 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8926         bblocks.
8927         (linear_scan): Remove an assert which doesn't seem to be needed.
8928
8929         * local-propagation.c (mono_local_deadce): Avoid a call to
8930         MONO_DELETE_INS which would screw up the instruction linking.
8931
8932         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8933
8934         * regalloc2.c: Upgrade to work the current JIT code.
8935
8936 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8937
8938         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8939         case.
8940
8941         * aot-runtime.c: Remove some dead code.
8942
8943         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8944         consistency.
8945         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8946
8947         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8948         trampolines using sscanf since atoi doesn't work on large unsigned values.
8949
8950         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8951         Initialize code_size.
8952
8953 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8954
8955         * method-to-ir.c (mini_emit_inst_for_method): Make
8956         Interlocked.CompareExchange work for Int arguments on 32 bit
8957         archs, as well.
8958
8959 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8960
8961         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8962
8963 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8964
8965         * main.c Fix MSVC build.
8966
8967         Contributed under MIT/X11 license.
8968
8969 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8970
8971         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8972         alignment larger than 8 bytes are aligned correctly, too.
8973
8974         * mini.c: Honor the min_align field of MonoClass when laying out
8975         the stack.
8976
8977 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8978
8979         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8980
8981         * aot-compiler.c (emit_plt): Fix a warning.
8982         
8983         * aot-compiler.c: Implement ARM support in the binary writer.
8984
8985 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8986
8987         * basic-simd.cs: Add test for getter with byref arg.
8988         Fix the naming of a few tests.
8989         Add missing checks to a test.
8990
8991 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8992
8993         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8994
8995         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8996         most of the full-aot support for monitor enter/exit trampolines.
8997
8998         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8999         enter/exit trampoline creation functions.
9000
9001         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
9002         make dist.
9003
9004 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
9005
9006         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
9007         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
9008         implement the needed functionality without adding crap to the runtime.
9009
9010 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
9013         non-x86 builds.
9014
9015         * mini.c (mono_build_date): New global version holding the build date in
9016         string format.
9017         
9018         * Makefile.am (buildver.c): Generate a file containing the build date.
9019
9020         * main.c: Set the build date from the generated file.
9021
9022         * mini.c (mono_get_runtime_build_info): New helper function returning build
9023         information in a string format.
9024         
9025         * driver.c (mono_main): Print the build date in --version.
9026
9027         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
9028         file when the bind-to-runtime-version option is used.
9029
9030 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9031
9032         * simd-intrinsics.c: Fix bug when using getters and byref args. 
9033
9034 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9035
9036         * simd-methods.h: Rename prefetch methods.
9037
9038         * simd-intrinsics.c: Same.      
9039
9040 2008-11-05  Mark Probst  <mark.probst@gmail.com>
9041
9042         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
9043         sizes.
9044
9045 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9046
9047         * aot-compiler.c: Use the bundled elf header files instead of depending on
9048         the system one.
9049         
9050         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
9051         mempool.
9052
9053         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9054         on every call.
9055
9056 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9057
9058         * cpu-x86.md: Add store nta ops.
9059
9060         * mini-ops.h: Same.
9061
9062         * mini-x86.c: Same.
9063
9064         * mini.h: Add an enum for simd prefetch modes.
9065
9066         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9067         of store. Use the changed code to support store nta.
9068
9069         * simd-intrinsics.c: Add prefetch ops for all vector types.
9070
9071 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9072
9073         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9074         threads.
9075         
9076         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9077         names.
9078
9079         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9080         trampolines.
9081
9082 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9083
9084         * mini-x86.c: Fixed commit.
9085
9086 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9087
9088         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9089
9090 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9091
9092         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9093         and MONITOR_EXIT, for the ASM fastpaths.
9094
9095         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9096         available.
9097
9098         * mini.c, patch-info.h: Signature and patch infos for
9099         Monitor.Enter/Exit trampolines.
9100
9101         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9102
9103         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9104         Monitor.Enter/Exit ASM fastpath for Linux.
9105
9106 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9107
9108         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9109
9110         * objects.cs: Add a new test.
9111         
9112         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9113
9114         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9115         if MONO_LOG_LEVEL is set.
9116
9117         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9118
9119         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9120
9121         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9122         
9123         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9124         of file offsets. Align the sections belonging to the data segment to 
9125         PAGESIZE.
9126
9127 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9128
9129         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9130         elf.h. Port it to amd64.
9131
9132 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9133
9134         * driver.c: Enable SIMD by default.
9135
9136 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9137
9138         * cpu-x86.md: Add prefetch op.
9139
9140         * mini-ops.h: Same.
9141
9142         * mini-x86.c: Same.
9143
9144         * mini.h: Add an enum for simd prefetch modes.
9145
9146         * simd-methods.h: Add prefetch function names.
9147
9148         * simd-intrinsics.c: Add prefetch ops for all vector types.
9149
9150 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9151
9152         * aot-compiler.c (emit_bytes): Speed this up a little.
9153
9154 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9155
9156         * aot-compiler.c: Add JIT time etc. statistics.
9157         
9158         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9159
9160         * mini.h (MonoCompile): Add 'got_offset' field.
9161
9162         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9163         method_got_offsets array.
9164
9165         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9166         wrappers.
9167
9168         * aot-compiler.c (compile_method): Add generic method instances referenced
9169         by the method to the list of methods to be compiled, this is required so if
9170         A<T> references B<T>, and another assembly references A<int>, then it will
9171         also get a copy of B<int>.
9172
9173         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9174         when checking for monitor enter/exit.
9175
9176 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9177
9178         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9179         for Monitor.Enter and Monitor.Exit if enabled.
9180
9181         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9182         Solaris.
9183
9184 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9185
9186         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9187         of an OP_MOVE. Fixes #440046.
9188
9189         * basic-long.cs: Add a new test.
9190
9191 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9192
9193         * mini.h: Add synchronization note for the managed counter-part.
9194
9195         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9196         returns the simd caps of the current cpu.
9197
9198 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9199
9200         * basic-simd.cs: Remove Console.WriteLine.
9201
9202 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9203
9204         * basic-simd.cs: New tests for Vector2ul.
9205
9206 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9207
9208         * simd-intrinsics.c: Add new vector type Vector2ul.
9209
9210 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9211
9212         * basic-simd.cs: New tests for Vector2l.
9213
9214 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9215
9216         * cpu-x86.md: Add long version of most packed int ops.
9217
9218         * mini-ops.h: Same.
9219
9220         * mini-x86.h: Same.
9221
9222         * simd-intrinsics.c: Add new vector type Vector2l.
9223
9224 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9225
9226         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9227
9228         * simd-methods.h: Remove SN_op_BitwiseXor.
9229
9230 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9231
9232         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9233         alignment.
9234
9235 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9236
9237         * basic-simd.cs: Test for Vector2d.
9238
9239         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9240         value.
9241
9242 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9243
9244         * cpu-x86.md: Add double version of all packed float ops.
9245
9246         * mini-ops.h: Same.
9247
9248         * mini-x86.h: Same.
9249
9250         * simd-intrinsics.c: Add new vector type Vector2d.
9251
9252         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9253
9254         * simd-methods.h: Add Duplicate.
9255
9256 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9257
9258         * basic-simd.cs: Test for packing with signed saturation.
9259
9260 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9261
9262         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9263         found in the TYPESPEC table.
9264
9265 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9266
9267         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9268         too.
9269
9270         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9271
9272         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9273         instead of the RVA, since the RVA can be changed by tools like the cil 
9274         stripper.
9275
9276         * method-to-ir.c (mono_method_to_ir2): Ditto.
9277
9278         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9279         (deserialize_variable): Ditto.
9280
9281 2008-10-25  Martin Baulig  <martin@ximian.com>
9282
9283         * debug-mini.c (write_variable): Use
9284         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9285
9286 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9287
9288         * cpu-x86.md: Add unsigned variants of packd and packw.
9289
9290         * mini-ops.h: Same.
9291
9292         * mini-x86.h: Emit the right instruction for packd and packw.
9293         Add unsigned variants of packd and packw.
9294
9295         * simd-intrinsics.c: Packd and packw were used in place of their
9296         unsigned variants. Change that.
9297         Add intrinsics for (Signed)PackWithSignedSaturation.
9298
9299         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9300
9301 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9302
9303         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9304
9305 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9306
9307         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9308
9309         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9310
9311         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9312         sse instructions.
9313
9314         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9315
9316 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9317
9318         * method-to-ir.c, mini.c: Special casing for the synchronized
9319         wrapper for the ldtoken+GetTypeFromHandle case.
9320
9321 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9322
9323         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9324
9325         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9326         created/split bblocks.
9327
9328 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9329
9330         * mini-ops.h: Add packed signed mul high.
9331         
9332         * cpu-x86.md: Same.
9333
9334         * mini-x86.c (mono_arch_output_basic_block): Same.
9335
9336         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9337
9338         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9339
9340 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9341
9342         * basic-simd.cs: Tests for Vector16sb.
9343
9344 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9345
9346         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9347
9348 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9349
9350         * mini-ops.h: Add packed signed min, max and compare greater.
9351         
9352         * cpu-x86.md: Same.
9353
9354         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9355         saturation.
9356
9357         * simd-methods.h: Add CompareGreaterThan.
9358
9359         * simd-methods.h: Remove CompareEquals.
9360
9361         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9362
9363         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9364
9365         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9366         CompareEqual.
9367
9368 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9369
9370         * basic-simd.cs: Fix tests due to change in the API.
9371
9372 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9373
9374         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9375
9376 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9377
9378         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9379
9380         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9381         inst_offset as this has invalid values for LDADDR.
9382
9383 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9384
9385         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9386
9387         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9388
9389 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9390
9391         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9392         for accessing field->data.
9393
9394 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9395
9396         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9397
9398 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9399
9400         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9401
9402         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9403
9404 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9405
9406         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9407         from the cfg mempool.
9408
9409 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9410
9411         * basic-simd.cs: Tests for new methods in Vector8us.
9412
9413 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9414
9415         * mini-ops.h: Add multiply and store high.
9416         
9417         * cpu-x86.md: Same.
9418
9419         * mini-x86.c (mono_arch_output_basic_block): Same.
9420
9421         * simd-methods.h: Same.
9422
9423         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9424         and CompareEqual.
9425
9426 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9427
9428         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9429         mono_class_setup_vtable ().
9430
9431         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9432         mono_class_get_vtable_entry () for accessing klass->vtable.
9433
9434         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9435
9436         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9437         found.
9438
9439         * method-to-ir.c (mono_save_token_info): Don't save references made from
9440         wrappers.
9441
9442         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9443         of generic instances.
9444
9445         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9446
9447 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9448
9449         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9450         OP_JMP depends on the method signature.  Calculate it properly.
9451
9452 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9453         
9454         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9455         called directly.
9456
9457         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9458         instances.
9459         (emit_extra_methods): Add another table mapping method indexes to 
9460         offsets in the extra_method_info table.
9461
9462         * mini.h: Bump AOT file format version.
9463         
9464         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9465         and mono_aot_get_method_from_token () into one function.
9466
9467 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9468
9469         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9470         separate counter.
9471
9472 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9473
9474         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9475         methods.
9476
9477         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9478         disable_aot.
9479
9480         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9481
9482         * mini.h: Bump aot file format version.
9483
9484         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9485         AOT file can contain native code for methods which are not in the METHOD
9486         table. Generate code for non-sharable generic instances of generic methods
9487         found in the METHODSPEC table.
9488         
9489         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9490         encoding generic type handles.
9491
9492         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9493         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9494
9495         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9496         macros + MONO_ADD_INS.
9497
9498         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9499         context as well.
9500
9501         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9502
9503         * mini.h: Bump aot file format version.
9504
9505         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9506
9507 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9508
9509         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9510         platforms, with definable stack alignment value.  Set to 16 now
9511         for all platforms.
9512
9513         * mini.c, mini.h, driver.c: Command line option for disabling
9514         stack alignment.
9515
9516 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9517
9518         * basic-simd.cs: Tests for new methods in Vector4ui.
9519
9520 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9521
9522         * mini-ops.h: Add packed int shuffle.
9523         
9524         * cpu-x86.md: Same.
9525
9526         * mini-x86.c (mono_arch_output_basic_block): Same.
9527
9528         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9529         extract mask, max, min, shuffle.
9530
9531         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9532
9533 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9534
9535         * basic-simd.cs: Tests for new methods in Vector8us.
9536
9537 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9538
9539         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9540         RuntimeTypeHandle, not a TypedReference.
9541
9542 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9543
9544         * simd-intrinsics.c: remove relocations.
9545
9546 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9547
9548         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9549         optimizations from the x86 backend.
9550
9551 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9552
9553         * simd-methods.h, simd-intrinsics.c: debloat method names and
9554         prepare for no relocations.
9555
9556 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9557
9558         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9559         
9560         * cpu-x86.md: Same.
9561
9562         * mini-x86.c (mono_arch_output_basic_block): Same.
9563
9564         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9565         extract mask, max, min and sum of absolute differences.
9566
9567         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9568         method name.
9569
9570 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9571
9572         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9573         Renamed one test for consistency.
9574
9575 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9576
9577         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9578         fix to the code that deal with other blocks.
9579
9580 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9581
9582         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9583
9584 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9585
9586         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9587         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9588         able to process the source reg.
9589
9590 2008-10-16  Martin Baulig  <martin@ximian.com>
9591
9592         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9593
9594         * inssel.brg: Add `OP_HARD_NOP'.
9595
9596         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9597
9598         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9599         `OP_HARD_NOP' instruction when running inside the debugger.
9600
9601         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9602         `OP_HARD_NOP' instruction when running inside the debugger.
9603
9604 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9605
9606         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9607         now works. The issue with the regalloc tripping up no longer
9608         happens.
9609
9610         * simd-intrinsics.c (load_simd_vreg): Same.
9611
9612 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9613         
9614         * basic-simd.cs: Tests for new Vector8ui methods.
9615
9616 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9617
9618         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9619         only for type. This fixes crashes where MonoInst::klass is checked
9620         for ops of type != VTYPE or OBJ.
9621
9622         * simd-intrinsics.c (load_simd_vreg): Same.
9623
9624 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9625
9626         * mini-ops.h: Add ops for packed shuffle/max/avg and
9627         extract mask.
9628         
9629         * cpu-x86.md: Same.
9630
9631         * mini-x86.c (mono_arch_output_basic_block): Same.
9632
9633         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9634         extract mask.
9635
9636         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9637         to emit extract mask op.
9638
9639         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9640         to emit word shuffles.
9641
9642 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9643
9644         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9645         the largest alignment needed by a variable, but at least
9646         sizeof(gpointer).
9647
9648 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9649
9650         * basic-simd.cs: Tests for the fixes in the last commit.
9651
9652 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9653
9654         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9655         no longer handles STACK_PTR input.
9656
9657         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9658
9659         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9660         get_simd_vreg   but handles STACK_PTR input.
9661
9662         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9663         as the input can be an arbitrary pointer.
9664
9665         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9666         LDADDR local optimization directly otherwise use a store op.
9667
9668 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9669
9670         * basic-simd.cs: Tests for dup low and dup high.
9671
9672 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9673
9674         * mini-ops.h: Add dup low and dup high ops.
9675         
9676         * cpu-x86.md: Same.
9677
9678         * mini-x86.c (mono_arch_output_basic_block): Same.
9679
9680         * simd-intrinsics.c (vector4f_intrinsics): Same.
9681
9682 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9683
9684         * basic-simd.cs: Tests for recently added functionality.
9685
9686 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9687
9688         * mini-ops.h: Add remaining sse1 fp ops.
9689         
9690         * cpu-x86.md: Add remaining sse1 fp ops.
9691
9692         * mini-x86.c (mono_arch_output_basic_block): Same.
9693
9694         * mini.h: Add enum for simd FP compare conditions.
9695
9696         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9697
9698         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9699         so the backed can generate the appropriate op.
9700
9701 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9702         This patch squeese one more byte from the SimdIntrinsc struct.
9703
9704         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9705         a a shift amount intead of simply or'ing it.
9706
9707         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9708
9709         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9710         byte so we can have an aditional flags field without increasing struct size.
9711
9712         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9713         against the simd_supported_versions bitmask.
9714
9715         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9716
9717 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9718
9719         * mini.c: remove rawbuffer code (the only use here is unsafe because
9720         it takes locks during signal handling and the kernel now provides much
9721         better info in proc/pid/smaps these days).
9722
9723 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9724
9725         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9726         OP_X86_PUSH_OBJ. Fixes #434620.
9727
9728         * objects.cs: Add a test.
9729         
9730 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9731
9732         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9733         that the packuswb/packusdw don't work with unsigned numbers for what
9734         would be negative numbers in signed format.
9735
9736         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9737         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9738
9739         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9740
9741         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9742
9743         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9744
9745         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9746
9747         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9748         add more ops.
9749
9750         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9751         version as the enum in mini.h.
9752
9753         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9754         for sse3 ops, check the simd_version field if present. This way the code
9755         works with all versions of sse.
9756
9757 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9758
9759         * simd-intrinsics.c: Fixed intrinsic name typo.
9760
9761         * mini.h: Added missing simd exported function.
9762
9763         * basic-simd.cs: Added tests for Vector4ui.
9764         Fixed broken test for Vector16b.
9765
9766 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9767
9768         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9769         the max length to 64.
9770
9771 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9772
9773         * method-to-ir.c: Only do the fast virtual generic method call for
9774         non-wrapper methods.
9775
9776         * mini.h, mini-trampolines.c: The new generic virtual remoting
9777         trampoline handles virtual method calls via the vtable (as done by
9778         the fast virtual generic method calls) to remoting proxies.
9779
9780         * mini.c (mono_jit_create_remoting_trampoline): For generic
9781         methods reate a generic virtual remoting trampoline.
9782
9783         * mini-amd64.h: Enable fast virtual generic method calls again.
9784
9785 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9786
9787         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9788         restore registers when doing tail calls.
9789
9790 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9791
9792         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9793         Vector4ui.
9794
9795 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9796
9797         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9798
9799 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9800
9801         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9802
9803 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9804
9805         * basic-simd.cs: Retrofit for API changes.
9806
9807 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9808
9809         * mini-ppc.c: Handle integer stack arguments for tail calls.
9810
9811 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9812
9813         * optflags-def.h: Removed sse3 optimization.
9814
9815         * driver.c: Same.
9816
9817         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9818         sse3.
9819
9820         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9821
9822         * mini.h: Added enumeration with simd versions.
9823
9824         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9825         for detecting SSE3.
9826
9827         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9828
9829         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9830
9831 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9832
9833         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9834
9835         * basic-simd.cs: Fixed test naming.
9836
9837 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9838
9839         * mini-ops.h: Added ops for packed and saturated math, shifts
9840         and packing/unpacking.
9841
9842         * cpu-x86.md: Added descriptors for the above ops.
9843
9844         * mini-x86.c: Added code to emmit the above ops.
9845
9846         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9847
9848 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9849
9850         * aot-compiler.c (compile_method): Enable AOT for generic code.
9851
9852         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9853
9854 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9855
9856         * mini.c: add a workaround for a common screwup that ends up blamed
9857         to mono (other processes blocking signal delivery).
9858
9859 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9860
9861         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9862         in the LDFLD/STFLD opcodes. Fixes #432673.
9863
9864         * iltests.il.in: Add a new test.
9865
9866 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9867
9868         * mini-arm.c: attach the thread in unmanaged->managed transitions
9869         using delegates (bug #433148).
9870
9871 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9872
9873        * basic-simd.cs: Use new ShuffleSel constants.
9874
9875 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9876
9877         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9878
9879         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9880         only disable simd intrinsics if no sse2 is detected.
9881
9882         * optflags-def.h: Added sse3.
9883
9884         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9885         is disabled.
9886
9887 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9888
9889         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9890         when adding delegate-invoke wrappers.
9891
9892 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9893
9894         * Makefile.am: Reenable the simd tests.
9895
9896 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9897
9898         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9899           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9900           other vreg is allocated to that hreg.
9901
9902         Contributed under MIT/X11 license.
9903
9904 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9905
9906         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9907         yet checked in.
9908
9909 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9910
9911         * basic-simd.cs: New test suite for SIMD intrinsics.
9912
9913         * Makefile.am: Added new tests.
9914
9915 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9916
9917         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9918
9919         * mini-ops.h: Same.
9920
9921         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9922
9923         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9924         using SSE2 aware opcodes.
9925
9926         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9927         is enabled, this code path is only reachable if conversion ops are emmited after
9928         mono_method_to_ir.
9929
9930         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9931
9932         This optimization saves 6 bytes per conversion against the old version.
9933
9934 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9935
9936         * aot-compiler.c (compile_method): Don't skip methods referencing 
9937         generic methods without a corresponding entry in token_info_hash, since
9938         encode_method_ref () can handle all generic methods now.
9939
9940         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9941         generic context is set.
9942         
9943         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9944         generic sharing of LDTOKEN.
9945
9946 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9947
9948         * mini-amd64.h: Temporarily disabled fast virtual generic method
9949         calls because it breaks the System.Runtime.Remoting tests.
9950
9951 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9952
9953         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9954
9955         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9956         so inlining actually works.
9957         (check_inline_caller_method_name_limit): Ditto.
9958
9959 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9960
9961         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9962         64 bit safety (from Olaf Hering and Andreas Farber).
9963
9964 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9965         
9966         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9967         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9968         unused virtual call support code.
9969
9970         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9971         
9972         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9973         which can't use aot trampolines.
9974         (decode_patch): Don't create aot trampolines for methods which can't use
9975         them.
9976
9977         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9978         use aot trampolines.
9979
9980         * mini.h: Bump AOT image format version.
9981         
9982 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9983
9984         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9985         to save_token_info () since cmethod is inflated for constrained calls.
9986
9987         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9988
9989 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9990
9991         * Makefile.am: Add build rules for ppc64.
9992         This avoids the build failing at pedump with unresolved symbols
9993         due to lack of arch_sources. Instead it will now fail earlier
9994         due to lack of cpu-ppc64.md.
9995
9996         Contributed under MIT/X11 license.
9997
9998 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9999
10000         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
10001         tail calls.
10002
10003         * iltests.il.in: Add test case for tail call with many arguments.
10004
10005 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10006
10007         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
10008         to the fast virtual generic method code until the aot case is fixed.
10009
10010 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10011
10012         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
10013
10014 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10015
10016         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
10017         thunks.
10018
10019 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10020         
10021         * simd-intrinsics.c: Forgot to add this one.
10022
10023         * mini-codegen.c: Fix macro in case SIMD is not supported.
10024
10025 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10026         
10027         This patch land initial JIT support for simd intrinsics.
10028
10029         * mini-x86.h: Added new define to make --enable_minimal work on x86.
10030
10031         * Makefile.am: Added simd-intrinsics.c
10032
10033         * simd-intrinsics.c: New file with simd instrinsic related
10034         code.
10035
10036         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
10037
10038         * cpu-x86.md: Add simd related instructions.
10039
10040         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
10041
10042         * driver.c: Added two new --regression variants.
10043
10044         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
10045
10046         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
10047
10048         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
10049         extract some complicated logic to helper functions.
10050
10051         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
10052
10053         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10054
10055         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10056         the specialized simplification pass.
10057
10058         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10059
10060         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10061
10062         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10063         table.
10064
10065         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10066         if MONO_ARCH_NEED_SIMD_BANK is defined.
10067
10068         * mini-ops.h: Added the new simd ops.
10069
10070         * mini-x86.c: Added mono_arch_xregname.
10071
10072         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10073
10074         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10075
10076         * mini-x86.h: Define simd related MONO_ARCH macros.
10077
10078         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10079
10080         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10081
10082         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10083         MONO_CLASS_IS_SIMD to deal with simd related IR.
10084
10085         * mini.h (MonoInst): Added spill_var to the backend union.
10086
10087         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10088
10089         * mini.h: Added forward declarations of the new simd fuctions.
10090
10091         * optflags-def.h: Added new optimization names SIMD.
10092
10093         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10094
10095         * regalloc.h: Added support for working with 3 register banks.
10096
10097         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10098
10099         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10100
10101 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10102
10103         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10104
10105 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10106
10107         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10108         instead of one on 64 bit systems.
10109
10110         * method-to-ir.c: Remove unused includes.
10111
10112 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10113
10114         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10115         cfg->used_int_regs, since the two are different on arm.
10116
10117 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10118
10119         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10120         mono_method_get_vtable_index() to get the vtable index.
10121
10122 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10123
10124         * method-to-ir.c (mono_method_to_ir2): Don't create native
10125         wrappers for array methods, because they're never called (and if
10126         they were called they wouldn't work).
10127
10128 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10129
10130         * method-to-ir.c (mono_method_to_ir2): Array methods are
10131         special-cased and must not be invoked indirectly via the (M)RGCTX
10132         when generic sharing is turned on.  Fixes #431413.
10133
10134 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10135
10136         * method-to-ir.c: When generic sharing is active, call
10137         non-interface virtual generic methods via the standard trampoline.
10138
10139         * mini-trampolines.c: Handle virtual generic shared methods.
10140
10141         * mini.h, mini-x86.c, mini-x86.h: New argument for
10142         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10143         method thunks and which is the trampoline to call if the lookup
10144         fails.  Enable the virtual generic method thunk for x86.
10145
10146         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10147         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10148         argument but assert that it's NULL, because these archs don't yet
10149         implement the virtual generic method thunk.  Changes in the IMT
10150         thunk data structures.
10151
10152 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10153
10154         * aot-compiler.c (emit_globals): Avoid invalid characters in
10155         the static linking symbol.
10156
10157         * objects.cs: Add a test for the range check optimization. Fix warnings.
10158
10159         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10160         optimization from the current JIT.
10161
10162         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10163         later in decompose_array_access_opts () to allow more optimizations.
10164
10165         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10166         mono_decompose_soft_float () for consistency.
10167
10168         * mini-ops.h: Fix arguments of OP_STRLEN.
10169
10170         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10171         into a separate function.
10172         (reset_cast_details): Ditto.
10173         (handle_unbox): Save cast details. Fixes #431254.
10174
10175         * method-to-ir.c: Remove some obsolete FIXMEs.
10176
10177 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10178
10179         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10180
10181 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10182
10183         * mini-codegen.c: More work on macros to make them
10184         ready for multiple regbanks.
10185
10186 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10187
10188         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10189
10190         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10191
10192 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10193
10194         * mini-codegen.c (mono_spillvar_offset): Proper support for
10195         multiple regbanks.
10196
10197 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10198
10199         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10200         the stack overflow changes.
10201
10202 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10203
10204         * mini-codegen.c: Make all bank macros depend on reg_bank.
10205
10206         * mini-codegen.c (mono_local_regalloc): Make free mask
10207         initialization regbank aware.
10208
10209 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10210
10211         * mini-codegen.c (mono_local_regalloc): Extract callee
10212         mask selection to a function and make it regbank aware.
10213
10214 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10215
10216         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10217         code to deal with many regbanks.
10218
10219 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10220
10221         * mini-codegen.c: More fp->regbank changes.
10222
10223 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10224
10225         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10226         of a hardcoded constant.
10227
10228 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10229
10230         * method-to-ir.c (type_from_stack_type): Fix typo.
10231
10232 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10233
10234         * mini-ia64.c (emit_move_return_value): Convert float return values to
10235         double.
10236
10237         * objects.cs: Add a new test.
10238         
10239         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10240         VARARG methods to fix an assert later.
10241
10242         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10243         end so it at least compiles.
10244
10245 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10246
10247         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10248
10249 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10250
10251         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10252         optimization to a new function (emit_optimized_ldloca_ir) and enable
10253         it for both ldloca and ldloca_s.
10254
10255 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10256
10257         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10258         gshared CASTCLASS code.
10259
10260         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10261         amd64, where the libc stack unwinder encounters stack frames referring to
10262         native code in unmapped memory.
10263
10264         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10265         sharing.
10266
10267         * generics.cs: Add new test.
10268
10269 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10270
10271         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10272         add a check that one of the ARM_FPU_ constants is defined.
10273
10274         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10275         
10276         * mini-exceptions.c: Fix build on non-altstack platforms.
10277
10278         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10279         sharing of vtypes.
10280
10281         * ir-emit.h: Add a comment to NEW_PCONST.
10282
10283         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10284
10285         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10286
10287         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10288         after the changes to MonoJitDomainInfo.
10289
10290 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10291
10292         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10293
10294 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10295
10296         * mini-ppc.c: Compiler warning fixes.
10297
10298 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10299
10300         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10301         for pinvokes.
10302
10303 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10304
10305         * exceptions-ppc.c, mini-ppc.h: Compile
10306         mono_arch_handle_altstack_exception() on Darwin, too.
10307
10308 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10309
10310         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10311         work on archs which don't have generic sharing implemented, only
10312         without the vtable_arg.
10313
10314 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10315
10316         * mini.c: Added comment explaining why delegate ctor icall
10317         wrappers are compiled.
10318
10319 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10320
10321         * mini.c: Don't produce trampolines to delegate ctor icall
10322         wrappers but compile them upfront.
10323
10324 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10325
10326         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10327         runtime-set function when going back to managed code. Currently this
10328         is used to set back the protection on the soft ovf pages and/or to
10329         throw the stack overflow exception that happened in unmanaged code.
10330
10331 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10332
10333         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10334         runtime-set function when going back to managed code. Currently this
10335         is used to set back the protection on the soft ovf pages and/or to
10336         throw the stack overflow exception that happened in unmanaged code.
10337
10338 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10339
10340         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10341         the support code for restoring stack protection after stack overflows
10342         that happen in unmanaged code. Don't set the exec permission on the
10343         soft overflow area.
10344
10345 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10346
10347         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10348         delegate->method_ptr is set. Fixes #428054.
10349
10350 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10351
10352         * tests.cs: Rename to ratests.cs.
10353
10354         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10355         emit_get_rgctx_... functions.
10356
10357 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10358
10359         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10360
10361 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10362
10363         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10364         before asserting that method is sharable.
10365
10366 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10367
10368         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10369         whether method needs a static RGCTX wrapper used instead of
10370         complex conditions.
10371
10372         * generic-sharing.c, mini.h: A few functions moved to
10373         metadata/generic-sharing.c.
10374
10375 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10376
10377         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10378         Generic code sharing for value types, which essentially means
10379         treating value type methods like static methods.  The RGCTX is
10380         passed in the same way.
10381
10382 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10383
10384         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10385         opcode when creating multi-dimensional arrays of open types.
10386
10387         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10388         open generic types.
10389
10390         * generics.cs: Add a test.
10391
10392         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10393
10394 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10395
10396         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10397
10398         * mini.c (mini_method_compile): Set it when running under the debugger. 
10399
10400         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10401         vreg optimization if the flag is set.
10402
10403         * driver.c (mono_main): Add --attach= option to pass options to
10404         the attach agent.
10405
10406         * mini.c (sigquit_signal_handler): Start the attach agent.
10407
10408         * ssapre.c: Disable this to save space since it is not yet ported to
10409         linear IR.
10410
10411         * regalloc2.c: Disable this to save space.
10412
10413         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10414
10415 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10416
10417         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10418         the -v option useful again.
10419
10420 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10421
10422         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10423         --break-at-bb.
10424
10425         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10426         arrays of arrays. Fixes #428406.
10427
10428         * method-to-ir.c (mini_emit_castclass): Ditto.
10429
10430         * objects.cs: Add new test.
10431         
10432 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10433
10434         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10435         was wrong at it choked against target_type_is_incompatible for byref types.
10436
10437 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10438
10439         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10440         places.
10441
10442 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10443
10444         * mini-exceptions.c: update a few more exceptions-related counters.
10445
10446 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10447
10448         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10449         new functions to allocate from persistent mempools.
10450
10451 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10452
10453         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10454         multiple register banks in the future.
10455
10456         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10457
10458 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10459
10460         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10461
10462         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10463
10464         * mini.h: Export type_to_eval_stack_type.
10465
10466         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10467         is only ins->klass of byref types.
10468
10469 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10470
10471         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10472         (mini_emit_memcpy2): Ditto.
10473
10474         * mini-amd64.c: Fix a warning.
10475
10476 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10477
10478         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10479         linking.
10480
10481 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10482
10483         * method-to-ir.c: Extract stloc micro-optimization to a
10484         function and apply it to all cases.
10485
10486 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10487
10488         * method-to-ir.c: Don't fail generic code sharing in cases we
10489         already support.
10490
10491 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10492
10493         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10494
10495 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10496
10497         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10498         implementation.
10499
10500 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10501
10502         * trace.c: make tracing more useful and correct, with per-thread
10503         id and indent info.
10504
10505 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10506
10507         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10508         doing a method call and the argument is an R4.
10509
10510 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10511
10512         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10513         generic methods.
10514
10515 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10516
10517         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10518
10519 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10520
10521         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10522         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10523
10524 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10525
10526         * driver.c: Add a --agent argument (not supported yet) to load managed
10527         agent assemblies before loading the main assembly, similarly to how the
10528         Java VM handles agents.
10529
10530 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10531
10532         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10533         function to do stack layout of local variables.
10534
10535 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10536
10537         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10538         calculation.
10539
10540 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10541
10542         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10543         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10544         JIT if DISABLE_JIT is defined.
10545
10546         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10547         defined.
10548
10549 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10550
10551         * iltests.il.in: Disable the fconv test on PPC (the result is
10552         undefined according to ECMA).
10553
10554 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10555
10556         * iltests.il.in: Enable tail call tests for PPC.
10557
10558         * mini.h: Add variable for storing incoming valuetype argument
10559         addresses for tail calls.
10560
10561         * mini-ppc.c: Implement valuetype arguments and return values for
10562         tailcalls on Linux.
10563
10564 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10565
10566         * mini-ppc.c: Partially implement tail calls (struct arguments and
10567         return values not supported).
10568
10569         * method-to-ir.c: Enable tail calls on PPC.
10570
10571 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10572
10573         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10574         runtime-invoke wrappers to work around the problem of them getting
10575         assigned to a random class.
10576
10577         * aot-runtime.c (mono_aot_get_method): Ditto.
10578         
10579 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10580
10581         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10582         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10583
10584 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10585
10586         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10587         until they're implemented properly.
10588
10589         * exceptions-ppc.c: Use arch-independent exception-handling code
10590         instead of custom one.
10591
10592         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10593         for Linear IR.
10594
10595         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10596
10597         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10598         applies when __powerpc__ is defined.
10599
10600 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10601
10602         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10603         methods to their code to avoid computing the full name of wrappers and
10604         doing a lookup in a string hash table.
10605
10606 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10607
10608         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10609         we identify bblocks before method_to_ir () is ran.
10610
10611         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10612         Also avoid optimizing branches pointing to themselves.
10613
10614         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10615
10616 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10617
10618         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10619
10620 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10621
10622         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10623         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10624         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10625         'buf'.
10626
10627         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10628         jumped to the same entry in plt_jump_table.
10629
10630 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10631
10632         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10633         dynamic images.
10634
10635 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10636
10637         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10638         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10639         #421807.
10640
10641 2008-08-29  Geoff Norton  <gnorton@novell.com>
10642
10643         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10644         segment, and doesn't properly handle .space as .text.  Fixes
10645         AOT Mach/ARM
10646
10647 2008-08-29  Geoff Norton  <gnorton@novell.com>
10648
10649         * mini.c: Disable the mach exception handler when running on 
10650         ARM
10651
10652 2008-08-29  Geoff Norton  <gnorton@novell.com>
10653
10654         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10655         globals on Darwin/ARM
10656
10657 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10658
10659         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10660         since too many things depend on it. Instead, call 
10661         mono_runtime_set_no_exec ().
10662         
10663         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10664         the new JIT.
10665
10666         * aot-compiler.c: Add an 'asm-only' AOT option.
10667
10668         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10669                 
10670         * aot-compiler.c (compile_method): Disable gshared support for now as it
10671         doesn't yet work.
10672
10673 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10674
10675         * mini-amd64.h : Fix a compiler warning.
10676
10677         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10678           Changed to use a callback function to retrieve the unwind info.
10679           This avoids problems observed when code blocks were removed by
10680           unloading an app domain.
10681
10682         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10683           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10684           to work properly.
10685
10686         Contributed under MIT/X11 license.
10687
10688 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10689
10690         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10691           case to keep the stack aligned to 8.
10692
10693         Contributed under MIT/X11 license.
10694
10695 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10696
10697         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10698         avoid repeated linear searches.
10699
10700 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10701
10702         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10703         methods it can't handle.
10704         
10705         * aot-compiler.c (add_method): Avoid adding a method twice.
10706         (add_wrappers): Add runtime invoke wrappers for all methods.
10707
10708         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10709         function to create an aot-compatible version of this trampoline.
10710
10711         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10712
10713 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10714
10715         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10716
10717         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10718         with a generic sharing failure.
10719
10720         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10721
10722         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10723         CEE_RETHROW. Fixes #419634.
10724
10725         * mini.c (mono_method_to_ir): Ditto.
10726
10727         * exceptions.cs: Add a new test.
10728         
10729         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10730         to mono_type_stack_size_internal () since some callers might not pass in
10731         an rgctx.
10732
10733         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10734         instrument_prolog. Fixes #419878.
10735
10736         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10737         doubles in soft float mode volatile.
10738
10739 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10740
10741         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10742
10743         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10744         to handle soft float correctly.
10745
10746         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10747         the fast path.
10748
10749         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10750
10751         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10752         to sp, since the generics catch code requires it.
10753
10754         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10755         copying.
10756
10757         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10758         mono_arch_emit_imt_argument ().
10759
10760         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10761
10762         * mini-arm.c tramp-arm.c: Generic sharing updates.
10763
10764 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10765
10766         * mini-arm.c: Fix the arm build.
10767
10768         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10769         handling enums, generic instances and generic sharing.
10770         (mini_type_stack_size_full): Ditto.
10771
10772         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10773         
10774         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10775
10776         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10777
10778         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10779         trampolines.
10780
10781         * mini-arm.c: Various small generic sharing changes.
10782
10783         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10784         this for x86.
10785         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10786         custom code.
10787
10788         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10789         helper function to return a generic class init trampoline.
10790
10791         * method-to-ir.c mini.c: Use it.
10792         
10793         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10794         arch-specfic function to return a generic class init trampoline.
10795
10796         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10797         the GENERIC_CLASS_INIT custom code.
10798
10799         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10800         a fatal error, not a sharing failure.
10801
10802         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10803         needed.
10804
10805         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10806         trampoline argument from MONO_ARCH_VTABLE_REG.
10807
10808         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10809         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10810         argument, and pass the vtable in VTABLE_REG.
10811
10812         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10813         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10814         argument, and pass the vtable in VTABLE_REG.
10815         (mono_arch_create_trampoline_code_full): Remove some special casing for
10816         the rgctx fetch trampoline.
10817
10818         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10819         Fixes #419273.
10820
10821         * iltests.il: Add a test for it.
10822
10823 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10824
10825         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10826
10827         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10828         no longer needed.
10829
10830         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10831         use mono_jit_info_table_find () to avoid recursion.
10832         (mono_delegate_trampoline): Add a sync wrapper here.
10833
10834         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10835         here.
10836
10837         * mini.c (mono_method_to_ir): Ditto.
10838         
10839         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10840         add_sync_wrapper argument. Don't add a sync wrapper here.
10841         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10842
10843         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10844         
10845 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10846
10847         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10848           of nonvolatile registers back from MonoContext to CONTEXT.
10849
10850         Contributed under MIT/X11 license.
10851
10852 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10853
10854         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10855           arguments on Winx64 there are only 4 argument registers.  For this
10856           logic to work the last argument must be pulled from the stack.  
10857
10858         Contributed under MIT/X11 license.
10859
10860 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10861
10862         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10863
10864         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10865         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10866         encode/decode_method_ref ().
10867
10868         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10869
10870         * aot-runtime.c (decode_patch): Ditto.  
10871
10872         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10873         MONO_PATCH_INFO_METHOD.
10874
10875         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10876         MonoGenericJitInfo.
10877
10878         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10879         MonoGenericJitInfo.
10880
10881         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10882
10883         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10884         one from the caller.
10885
10886         * aot-runtime.c (decode_generic_inst): New function to decode and
10887         return a interned generic inst.
10888         (decode_klass_ref): Use it.
10889         (decode_method_ref): Ditto.
10890
10891         * aot-compiler.c (emit_exception_debug_info): Save 
10892         jinfo->has_generic_jit_info too.
10893
10894 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10895
10896         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10897
10898         * iltests.il.in: Add a test for fconv_to_i.
10899
10900         * liveness.c: Disable the liveness2 pass for now to save space.
10901
10902         * regalloc2.c: Include mempool-internals.h to fix warnings.
10903
10904         * aot-compiler.c (encode_method_ref): Encode the context of generic
10905         instance methods.
10906
10907         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10908         the context saved in the aot file.
10909
10910         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10911
10912         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10913
10914         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10915         volatile so they won't be optimized away.
10916
10917 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10918
10919         * ssa.c:
10920         * ssa2.c:
10921         * mini.c:
10922         * regalloc2.c:
10923         * dominators.c: Remove duplicated functions that now are in
10924         mempool-internals.h.
10925
10926 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10927
10928         * aot-compiler.c: Fix warnings.
10929
10930         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10931
10932         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10933
10934         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10935         as the patch type.
10936
10937         * mini.c (mono_resolve_patch_target): Ditto.
10938         
10939         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10940         (encode_klass_ref): Add support for encoding VARs/MVARs.
10941
10942         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10943
10944         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10945         the handling of the got entries into a separate 'decode_got_entry' function.
10946         Add support for RGCTX_FETCH.
10947
10948         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10949         clobbered by the trampoline code.
10950
10951         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10952         not clobbered by the indirect calling code.
10953
10954 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10955
10956         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10957         to fix the build.
10958
10959 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10960
10961         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10962         signature using the compilation mempool otherwise we would leak it.
10963
10964 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10965
10966         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10967         mono_emit_abs_call ().
10968
10969         * patch-info.h: Add GENERIC_CLASS_INIT.
10970
10971         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10972
10973         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10974         as their target as a near call.
10975
10976         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10977         ABS handling code.
10978         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10979
10980         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10981         call to a runtime function described by a patch.
10982
10983         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10984         mono_emit_abs_call, this has the advantage that the ABS handling code in
10985         mono_codegen () can handle them both, and can handle other stuff in the
10986         future without additional code.
10987
10988         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10989         entry.
10990         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10991         abs addresses.
10992
10993         * mini.h: Add missing bblock related prototypes.
10994
10995         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10996         reverse_inst_list_len fields.
10997
10998         * mini.c: Refactor this file a bit by moving branch optimizations to 
10999         branch-opts.c.
11000
11001         * method-to-ir.c: Merge generic sharing changes missed earlier.
11002
11003         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
11004
11005         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
11006         shared patches. Process METHODCONST as a shared patch.
11007
11008         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
11009         as it crashes on the 2.0 mscorlib.
11010
11011         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
11012         to cause crashes.
11013         
11014         * aot-compiler.c: Use is_plt_patch () in a few additional places.
11015         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
11016         by IMT.
11017
11018         * aot-compiler.c: Reorganize the got handling code to be a bit more
11019         understandable.
11020
11021 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11022
11023         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
11024         mono_patch_info_equals/hash, and use it to massively simplify
11025         get_plt_index ().
11026
11027         * mini.c (mono_patch_info_hash): Simplify this and add support for
11028         more patch types.
11029
11030         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
11031
11032         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
11033         handling code, since an offset is not enough to identify a trampoline.
11034
11035         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
11036
11037 2008-08-17  Mark Probst  <mark.probst@gmail.com>
11038
11039         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
11040
11041         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
11042
11043         * mini-ops.h: Argument and result types for OVF_CARRY ops.
11044
11045         * decompose.c: PPC decompositions for various ops.
11046
11047         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
11048
11049 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11050
11051         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
11052         call the generic trampoline code using a call, instead of a jump, to
11053         remove some special casing from the generic trampoline code.
11054
11055         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11056         (mono_codegen): Ditto.
11057
11058         * aot-compiler.c aot-runtime.c: Ditto.
11059
11060         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11061
11062         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11063         helper function to find the offset corresponding to a lazy fetch trampoline.
11064
11065         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11066         when doing generic sharing.
11067
11068         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11069         places.
11070         
11071         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11072         mini-trampolines.c to be with the other trampoline creation functions.
11073
11074         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11075         as it is equal to method->signature in most cases, add a 
11076         mono_emit_method_call_full variant which takes a signature and an imt
11077         argument as well.
11078
11079 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11080
11081         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11082         to this function, since it could be computed easily from the method 
11083         argument.
11084         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11085         more.
11086
11087         * method-to-ir.c mini.c: Remove references to 
11088         compile_generic_method_wo_context.
11089
11090         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11091         generic method calls.
11092         
11093         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11094         dimensional non-szarrays.
11095
11096         * mini.c (mini_init): Register mono_array_new_1.
11097
11098         * jit-icalls.c (mono_array_new_1): New jit icall.
11099
11100         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11101         pointing to the method.
11102
11103         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11104         method addresses belonging to METHOD_JUMP patches in the 
11105         jump_target_got_slot_hash.
11106         (mono_aot_load_method): Ditto.
11107
11108         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11109         METHOD_JUMP patches.
11110
11111         * mini.c (mini_create_jit_domain_info): New helper function which 
11112         initializes/frees domain->runtime_info.
11113         (mini_free_jit_domain_info): Ditto.
11114         (mini_init): Install the domain hook functions with the runtime.
11115
11116         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11117         information maintained by the JIT.
11118
11119         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11120         insertion into jump_table_hash into mono_codegen (), also implement proper
11121         locking.
11122
11123         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11124         tail calls, it is already done by the aot code.
11125         
11126         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11127         mechanism on amd64.
11128
11129         * iltests.il.in: Make the jmp test a bit more complex.
11130
11131         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11132         generic instances which doesn't have a token.
11133
11134         * aot-runtime.c (decode_method_ref): Ditto.
11135         
11136         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11137         can handle this case now.
11138         (handle_box): Ditto.
11139
11140 2008-08-15  Geoff Norton  <gnorton@novell.com>
11141
11142         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11143         debugging check.
11144
11145 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11146
11147         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11148         calling generic methods.
11149
11150         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11151
11152         * aot-runtime.c (decode_patch_info): Ditto.
11153
11154         * mini.c (mono_resolve_patch_target): Ditto.
11155         
11156         * patch-info.h: Add METHOD_RGCTX.
11157
11158         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11159
11160 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11161
11162         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11163         arguments in registers.
11164
11165         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11166         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11167
11168         * mini.c (mini_method_compile): Abort aot compilation for generic
11169         methods if generic sharing is disabled.
11170         
11171         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11172         an mrgctx.
11173
11174         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11175         requiring an mrgctx.
11176
11177         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11178         store instructions when converting a vcall to a normal call.
11179
11180         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11181         mono_arch_find_jit_info.
11182
11183 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11186         avoid calling mono_method_full_name () for every method even if the
11187         env var is not set.
11188         (check_inline_caller_method_name_limit): Ditto.
11189
11190 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11191
11192         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11193         assemblies in one run.
11194
11195         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11196         skipped methods if it is not 0.
11197
11198         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11199
11200 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11201
11202         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11203           MONO_ARCH_HAVE_UNWIND_TABLE.
11204
11205         Contributed under MIT/X11 license.
11206
11207 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11208
11209         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11210           from default optimizaton list on Winx64.
11211
11212         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11213
11214         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11215           the LMF from the MonoJitTlsData structure.
11216
11217         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11218
11219         Contributed under MIT/X11 license.
11220
11221 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11222
11223         * mini.c (sigsegv_signal_handler): Fix the build.
11224
11225         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11226         assembly->aot_module.
11227
11228         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11229         hash table. This simplifies and speeds up a lot of code, and fixes support
11230         for .netmodules.
11231
11232         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11233         with the runtime.
11234
11235         * mini-exceptions.c: Ditto.
11236         
11237         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11238         'native_offset' argument, since these are computed in the 
11239         mono_find_jit_info () function.
11240
11241         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11242         is used by exceptions-ppc.c.
11243
11244         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11245         mono_arch_find_jit_info ().
11246         
11247         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11248         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11249         generic code in mini-exceptions.c.
11250
11251 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11252
11253         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11254
11255         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11256         
11257         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11258         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11259         called while holding the loader lock. Fixes #415608.
11260         (mono_aot_get_method_from_token_inner): Ditto.
11261
11262 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11263
11264         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11265         to reduce differences between this and the generic implementation in
11266         mini-exceptions.c.
11267         (ves_icall_get_frame_info): Ditto.
11268
11269         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11270
11271         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11272         longer neccesarry.
11273
11274         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11275         mono_arch_get_call_filter () and make it non-static, for consistency with the
11276         other architectures.
11277
11278 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11279
11280         * mini.c:
11281         * local-propagation.c:
11282         * mini-x86.c: Correct the name of arch defines.
11283
11284 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11285
11286         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11287         NO_EMULATE_LONG_SHIFT_OPS define.
11288
11289 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11290
11291         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11292         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11293
11294         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11295         MACH fixes. Merged from the 2.0 branch.
11296
11297         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11298
11299         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11300         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11301
11302         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11303
11304         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11305         mono_marshal_get_native_wrapper () signature changes.
11306
11307 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11308
11309         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11310         conversion bug under arm.
11311
11312 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11313
11314         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11315
11316         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11317         with overflow checking.
11318
11319 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11320
11321         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11322         to the genmdesc.pl file
11323
11324 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11325
11326         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11327         arg_array in the soft-float versions of the LOAD/STORE macros.
11328
11329         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11330         implementation.
11331
11332         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11333
11334 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11335
11336         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11337         a float HFA. Fixes #413621.
11338
11339 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11340
11341         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11342         frame_size to args_size. Fixes build.
11343
11344 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11345
11346         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11347         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11348
11349         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11350         the stack are not unaligned. Fixes #413247.
11351         
11352 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11353
11354         * mini.c: update jitted methods performance counters.
11355
11356 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11357
11358         * mini-exceptions.c: increase the exceptions thrown performance
11359         counter in mono_handle_exception ().
11360
11361 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11362
11363         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11364         can work with netmodules.
11365
11366 2008-07-28  Geoff Norton  <gnorton@novell.com>
11367
11368         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11369         regression tests.
11370
11371 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11372
11373         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11374         correct place.
11375
11376 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11377
11378         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11379           The float param registers and other param registers must be the 
11380           same index on Windows x64.
11381
11382         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11383           ArgValuetypeAddrInIReg argument case.  Setting the argument
11384           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11385
11386         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11387           variable computed above as the copy length for arguments of storage
11388           type ArgValuetypeAddrInIReg.
11389
11390         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11391           ArgValuetypeAddrInIReg argument case.  This case will rely on
11392           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11393
11394         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11395           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11396           jump and tail call instructoins as they do not follow the typical call behavior.
11397
11398         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11399           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11400           local variable and pass the local variable by reference to the called method.
11401
11402         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11403           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11404           of a struct is passed in a register it must be saved with the other
11405           volatile argument on the stack.
11406
11407         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11408           frame pointer the stack adjustment value must be saved to the unwind 
11409           info structure.
11410
11411         Contributed under MIT/X11 license.
11412
11413 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11414
11415         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11416         which got lost in the merge.
11417
11418 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11419
11420         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11421         build.
11422
11423         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11424         
11425         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11426         icalls, since they won't be patched.
11427
11428         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11429         different code sequence when running under valgrind to prevent some valgrind
11430         errors.
11431
11432         * iltests.il.in: Add new regression test.
11433
11434         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11435         end with a throw.
11436
11437         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11438         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11439
11440         * iltests.il.in: Add new test.
11441
11442         * aot-compiler.c: Fix some warnings.
11443
11444         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11445         Fixes #412494.
11446
11447 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11448
11449         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11450         (mini_usage_jitdeveloper): Add a missing --wapi option.
11451
11452 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11453
11454         * mini-codegen.c: Simplify the is_fp macros.
11455         (free_up_ireg): Remove, use free_up_reg instead.
11456         (free_up_reg): Fix the fp case.
11457
11458 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11459
11460         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11461         lowered earlier.
11462
11463         * exceptions-x86.c: Merge some changes which seemed to have got lost
11464         in the linear-ir merge.
11465
11466         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11467
11468         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11469         long vreg volatile even if the variable was already created.
11470
11471         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11472         volatile variables.
11473
11474 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11475
11476         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11477
11478         * mini.c (mono_jit_compile_method_inner): Add support for 
11479         MONO_EXCEPTION_BAD_IMAGE.
11480
11481         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11482         mini_method_get_context () returns NULL. Fixes #356531.
11483
11484         * mini.c (mono_method_to_ir): Ditto.
11485         
11486         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11487         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11488
11489 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11490
11491         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11492         in the LDFTN implementation.
11493
11494 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11495
11496         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11497         code, patch calls to icalls, too, even if they're not in the
11498         shared generic code hash.  Fixes #411962.
11499
11500 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11501
11502         * cpu-x86.md: Increase the length of the fcall opcodes.
11503
11504         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11505         calls returning floats.
11506
11507         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11508         on NEWARR.
11509         
11510         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11511         missed earlier.
11512
11513         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11514         into the domain->method_code_hash.
11515
11516         * aot-compiler.c: Fix win32 build.
11517
11518         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11519         
11520         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11521         gshared NEWARR implementation.
11522
11523         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11524
11525         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11526         can be used outside of method_to_ir.
11527
11528         * mini.h (MonoCompile): Add arg_types field.
11529
11530         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11531         
11532         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11533         the values of the local arg_array and param_types array.
11534
11535 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11536
11537         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11538         got accesses might only get generated later when NEWOBJ is decomposed.
11539         
11540         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11541         looking up the native code of the target method when a delegate is called
11542         for the first time.
11543
11544         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11545         optimization.
11546
11547         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11548
11549         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11550         AOT work on platforms without a working dlsym implementation.
11551
11552         * mini.h: Bump AOT image format version.
11553         
11554 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11555
11556         * mini-exceptions.c: Free a MonoType with
11557         mono_metadata_free_type() instead of g_free().
11558
11559         * aot-runtime.c: Free a MonoType.
11560
11561 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11562
11563         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11564         optimization.
11565
11566         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11567         fp stack on x86.
11568
11569 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11570         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11571         profiler hook.
11572
11573 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11574
11575         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11576         NEWOBJ calls on valuetypes.
11577
11578         * iltests.il.in: Add new test.
11579
11580         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11581
11582 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11583
11584         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11585         is no longer needed.
11586
11587         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11588         non register sized integer arguments.
11589         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11590         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11591         emit_memcpy2 ().
11592
11593         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11594         CEE_MONO_RETOBJ.
11595         
11596         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11597         two a binop with different sized arguments is emitted.
11598
11599         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11600         instruction in the ins==NULL case.
11601
11602 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11603
11604         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11605
11606         * mini-x86.c: Fix osx build.
11607
11608         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11609         opcodes as well.
11610
11611         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11612         instruction for non int sized variables.
11613
11614         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11615         implementation.
11616
11617 2008-07-23  Robert Jordan  <robertj@gmx.net>
11618
11619         * method-to-ir.c: Fix MSVC build.
11620
11621 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11622
11623         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11624         a non int sized type, widen it to an int since newer versions of gcc seem to
11625         generate code which needs this.
11626
11627         * ssa2.c abcremoval2.c: Fix warnings.
11628
11629         * *: Merge the Linear IR branch.
11630
11631         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11632         the ChangeLog file there describes all the changes done over the years. 
11633         Further documentation can be found at www.mono-project.com/Linear_IL.
11634
11635 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11636
11637         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11638           The float param registers and other param registers must be the 
11639           same index on Windows x64.
11640
11641         Contributed under MIT/X11 license.
11642
11643 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11644
11645         * mini.c: Make the previous fix GC safe.
11646
11647 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11648
11649         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11650
11651 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11652
11653         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11654           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11655           ArgValuetypeAddrInIReg instead.
11656
11657         Contributed under MIT/X11 license.
11658
11659 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11660
11661         * mini-codegen.c (get_register_spilling): Fix a warning.
11662
11663 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11664
11665         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11666         for types which the initialization fails. Raises the provided exception
11667         at the right stop after cleanup.
11668
11669 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11670
11671         * aot-compiler.c: Free most of the memory allocated during compilation.
11672
11673         * mini.c (mini_parse_debug_options): Fix a leak.
11674         
11675         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11676         during aot compilation.
11677
11678 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11679
11680         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11681         it has too much register pressure.
11682
11683 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11684
11685         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11686
11687 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11688
11689         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11690         on x86.
11691
11692         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11693         on amd64 similar to the way it is done on arm.
11694
11695         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11696
11697         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11698         consistency, normalize error messages, avoid loading aot-only modules in
11699         normal mode.
11700
11701         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11702         for consistency.
11703
11704         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11705
11706 2008-07-11  Martin Baulig  <martin@ximian.com>
11707
11708         * debug-debugger.h
11709         (MonoDebuggerInfo): Add `interruption_request'.
11710
11711 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11712
11713         * aot-compiler.c (emit_plt): Remove some dead code.
11714
11715         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11716
11717         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11718         return the plt info offset belonging to a given plt entry.
11719
11720         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11721         mono_aot_get_plt_info_offset.
11722         
11723         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11724         similar to the amd64 code by makeing jumps through a separate jump table 
11725         instead of embedding the jump addresses into the code.
11726
11727 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11728
11729         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11730         method.
11731
11732 2008-07-10  Martin Baulig  <martin@ximian.com>
11733
11734         * mini.c (mini_method_compile): Disable generics sharing when
11735         running in the debugger.
11736
11737 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11738
11739         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11740
11741         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11742         the local register allocator from running out of registers on x86 when 
11743         using aot.
11744
11745 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11746
11747         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11748         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11749         C4146.
11750
11751         Contributed under MIT/X11 license.
11752
11753 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11754
11755         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11756         speed up the assembler.
11757
11758 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11759
11760         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11761         support.
11762
11763         * mini.c: Move the soft float handling macros a bit earlier, add 
11764         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11765         place.
11766
11767         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11768
11769         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11770         read-only to help catch code allocation requests.
11771         
11772         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11773         and turn it off when using --aot-only or when compiling with --aot=full.
11774
11775         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11776         jump table for switches from the normal domain mempool, not the code
11777         manager.
11778
11779         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11780         unbox trampoline which handles aot-only mode too.
11781
11782         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11783         an AOTed unbox trampoline.
11784
11785         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11786
11787 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11788
11789         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11790         ""
11791
11792         Contributed under MIT/X11 license.
11793
11794 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11795
11796         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11797           the unwind information for the method at the end of the allocated block.
11798           
11799         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11800           MonoCompileArch to hold the unwind info for SEH on Winx64
11801         
11802         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11803           frame pointer info for the method being compiled.
11804           
11805         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11806           the call to mono_exception_from_token.
11807           
11808         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11809           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11810           information is stored a the end of the method block because it is all 32-bit offset based.
11811
11812         Contributed under MIT/X11 license.
11813
11814 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11815
11816         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11817
11818         * wapihandles.c: Fix warnings.
11819
11820         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11821         mode.
11822
11823         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11824         mono_jit_compile_method in aot-only mode since that calls the type 
11825         initializer.
11826         
11827         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11828         get_delegate_invoke_impl in aot-only mode.
11829
11830         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11831
11832 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11833
11834         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11835
11836         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11837         is on by default.
11838
11839         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11840
11841         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11842         init trampoline from the AOT file as well.
11843
11844         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11845         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11846         code.
11847
11848         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11849         mono_init.
11850
11851         * exceptions-amd64.c: Add _full variants for the remaining exception code
11852         creation functions as well, allow emission of relocatable code, remove
11853         caching since that is now done by the caller.
11854
11855         * mini-exceptions.c: Add _full variants for the remaining exception code
11856         creation functions as well, add aot-only support.
11857
11858         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11859         if we can determine a proper token for them.
11860         (add_wrappers): Add a few more wrappers.
11861         (emit_method_code): Remove some dead code.
11862         (emit_trampolines): Emit exception code too.
11863
11864         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11865
11866         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11867         mono_array_new_va which avoids varargs.
11868
11869         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11870
11871         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11872         mono_arch_create_specific_trampoline () in all places.
11873
11874         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11875         a bit so it can be used for other things as well.
11876         
11877         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11878         on demand as well.
11879
11880         * exceptions-amd64.c: Rename the caching from the exception code creation
11881         functions, it is done by the caller instead.
11882         
11883         * exceptions-amd64.c: Change the signature of the exception code creation 
11884         functions to allow the creation of relocatable code later.
11885
11886         * mini-exceptions.c: Add a set of functions to query the various 
11887         runtime-generated exception functions.
11888
11889         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11890         mono_arch_.. () functions.
11891         
11892 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11893
11894         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11895
11896         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11897
11898         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11899         (mini_get_vtable_trampoline): Ditto.
11900
11901         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11902         code in the AOT case by returning the code size and a list of relocations to
11903         the caller.
11904
11905         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11906
11907 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11908
11909         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11910           clean the stack.
11911
11912         Contributed under MIT/X11 license.
11913
11914 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11915
11916         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11917         so the buffer size can be computed correctly. Fixes #404735.
11918
11919         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11920         normally as cfg->debug_info is already freed.
11921
11922 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11923
11924         * mini-amd64.c: For calls returning vtypes in registers, don't store
11925         the return address on the stack, instead allocate a separate local for
11926         it. Fixes #404729.
11927
11928 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11929
11930         * mini-trampolines.c, mini.h: Add an argument to
11931         mono_create_jit_trampoline_in_domain() for turning off the adding
11932         of the sync wrapper.
11933
11934         * mini.c: Use the JIT trampoline without sync instead of
11935         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11936         be patched.
11937
11938 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11939
11940         * driver.c: Turn on GSHARED optimization by default.
11941
11942 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11943
11944         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11945         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11946
11947         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11948         create a variant of the generic trampoline code callable from AOTed trampolines.
11949
11950         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11951         trampoline code callable from AOTed trampolines.
11952
11953         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11954
11955 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11956
11957         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11958         pass-through manner.
11959
11960         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11961         and don't fail sharing for them anymore.
11962
11963         * mini-exceptions.c: Handle exceptions in shared generic methods.
11964
11965         * generic-sharing.c: When checking the context of a generic
11966         method, also check its class's context.  Don't treat wrappers as
11967         sharable.
11968
11969         * mini-trampolines.c: Some code factored out to
11970         metadata/generic-sharing.c.  Handle the MRGCTX case.
11971
11972         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11973         we must deal with the method being of another instantiation of the
11974         class.  Add static rgctx invoke wrappers to generic methods.
11975
11976 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11977
11978         * mini.c: Provide all jit infos of generic shared methods with a
11979         generic jit info.
11980
11981         * mini-exceptions.c: Handle the new situation that a generic info
11982         might be available, but not info about the this/vtable/mrgctx
11983         variable.
11984
11985 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11986
11987         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11988         generic methods.
11989
11990 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11991
11992         * dominators.c (check_dominance_frontier): Fix a warning.
11993
11994         * mini.h: Add some missing prototypes.
11995
11996         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11997
11998         * driver.c (mono_jit_init_version): Correct the comments since the first
11999         argument should be the name of the root domain, not a filename.
12000
12001         * aot-runtime.c (make_writable): Error out if this is called while running
12002         with --aot-only.
12003         (load_aot_module): Ditto.
12004
12005         * aot-compiler.c: Really fix the computation of method indexes.
12006
12007         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
12008         optimizations as this is no longer called frequently.
12009
12010         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
12011         method and the invoke impl code and pass it to the delegate trampoline instead of
12012         just the delegate class.
12013
12014 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
12015
12016         * aot-compiler.c: Fixup the computation of method indexes.
12017         (add_wrappers): Create the base methods of the runtime invoke wrappers using
12018         the method builder infrastructure.
12019
12020         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
12021         has no header.
12022
12023         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
12024         mode, load the method right away instead of creating a trampoline.
12025
12026         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
12027
12028         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
12029         some checks a bit.
12030
12031 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
12032
12033         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
12034         (mono_aot_load_method): Use method_index instead of method->token.
12035
12036         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
12037         can handle icalls etc. properly.
12038
12039         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12040
12041         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
12042
12043         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
12044         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
12045         JIT_ICALL_ADDR patch type.
12046
12047         * patch-info.h: Add JIT_ICALL_ADDR patch type.
12048
12049         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
12050         request flag.
12051         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
12052
12053         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12054
12055 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12056
12057         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12058         domain->jit_code_hash.
12059
12060 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12061
12062         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12063
12064 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12067         get_this_arg_from_call, let it compute it when needed.
12068
12069         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12070         gsctx from code only when needed.
12071
12072         * mini-trampolines.c (get_generic_context): Rename this to 
12073         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12074         it can be called by the arch backends.
12075
12076         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12077
12078 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12079
12080         * driver.c (mono_main): Add experimental --aot-only command line option.
12081
12082         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12083         set.
12084
12085 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12086
12087         * driver.c (DllMain): Remove mono_module_handle.
12088
12089         Contributed under MIT/X11 license.
12090
12091 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12092
12093         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12094         for emitting methods which are not in the source assembly. Detect and report
12095         failure of assembling+linking.
12096         
12097         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12098
12099         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12100
12101 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12102
12103         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12104
12105 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12106
12107         * mini.h: Remove some obsolete prototypes.
12108
12109         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12110
12111 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12112
12113         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12114         supported by Visual Studio, so use alloca().
12115
12116 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12117
12118         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12119         Fixes #402585.
12120
12121 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12122
12123         * mini.c: Fail sharing of a generic method if it contains an open
12124         catch clause (because we don't pass MRGCTXs yet).
12125
12126 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12127
12128         * mini.c: When compiling a method with generic sharing, insert the
12129         method instantiated with an all-Object generic context into the
12130         jit info table, instead of the context of the first instantiation
12131         of the method we happen to compile.
12132
12133 2008-06-18  Martin Baulig  <martin@ximian.com>
12134
12135         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12136         `major_version' and `minor_version'.
12137
12138 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12139
12140         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12141         mono_method_is_generic_sharable_impl() takes an additional
12142         argument specifying whether to treat type variables as reference
12143         types.
12144
12145 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12146
12147         * mini.h: Removed obsolete prototypes.
12148
12149 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12150
12151         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12152         already handle them.
12153
12154 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12155
12156         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12157         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12158         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12159         tramp-x86.c: Added a MonoGenericContext* argument to
12160         mono_arch_get_unbox_trampoline() so that it can call other
12161         functions which require it.
12162
12163 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12164
12165         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12166         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12167         mono_arch_get_this_arg_from_call() takes a
12168         MonoGenericSharingContext* as well.
12169
12170 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12171
12172         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12173         implement generic sharing of unbox.
12174
12175 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12176
12177         * mini.c: Don't compute the vtable to determine whether a field is
12178         special static, because it might not work for open types.
12179
12180 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12181
12182         * mini.c: Removed the unused token_type and token_source arguments
12183         from get_runtime_generic_context_ptr().
12184
12185 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12186
12187         * mini.c (ADD_BINOP): fix the build
12188
12189 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12190
12191         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12192         a widening op.
12193
12194 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12195
12196         * mini.h: Removed class relations enum that's not used anymore.
12197
12198 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12199
12200         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12201
12202         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12203         the lazy fetch trampoline access code.
12204
12205 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12206
12207         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12208
12209 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12210
12211         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12212
12213         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12214
12215         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12216
12217 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12218
12219         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12220         intrinsics.
12221
12222         * mini-ops.h: Add MIN/MAX_UN opcodes.
12223
12224         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12225         intrinsics.
12226
12227         * basic-math.cs: Add more min/max tests.
12228
12229         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12230
12231 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12232
12233         * mini.c: Small fix in the prologue of emit_castclass.
12234
12235 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12236
12237         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12238
12239         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12240         do not work even for unsigned types. Fixes #400014.
12241
12242         * basic-math.cs: Add regression tests for unsigned Min/Max.
12243
12244 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12245
12246         * mini.c: Added additional context_used argument to several
12247         functions, which will be needed for sharing generic methods.  Use
12248         GET_RGCTX macro wherever appropriate.  Declare only one
12249         context_used in mono_method_to_ir().
12250
12251 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12252
12253         * mini.c, generic-sharing.c: Removed generic class relations.
12254
12255         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12256         functions due to MRGCTX changes.
12257
12258 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12259
12260         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12261         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12262         with calculated IMT.
12263
12264         * mini.c: Generic sharing of calls via generic interfaces.
12265
12266         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12267         generic method with non-constant MonoGenericContext*.  Instead,
12268         the context is taken out of the method itself.
12269
12270 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12271
12272         * mini.c: Generic sharing of ldvirtftn.
12273
12274 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12275
12276         * mini.c: Generic sharing of ldftn.
12277
12278 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12279
12280         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12281
12282 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12283
12284         * mini.c: Generic sharing of the special case of ldtoken followed
12285         by a call to GetTypeFromHandle.
12286
12287 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12288
12289         * mini.c: Generic sharing of box for nullable types.
12290
12291 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12292
12293         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12294         are passed on the stack. Fixes #324807.
12295
12296 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12297
12298         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12299         for the ArgValuetypeAddrInIReg case.
12300
12301         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12302         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12303
12304         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12305         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12306         local variable and pass the local variable by reference to the called method.
12307           
12308         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12309         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12310
12311         Contributed under MIT/X11 license.
12312
12313 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12314
12315         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12316
12317         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12318         everything.
12319
12320 2008-06-10  Martin Baulig  <martin@ximian.com>
12321
12322         * debug-mini.c
12323         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12324
12325 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12326
12327         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12328         possible error when no arguments are passed.
12329
12330         Contributed under MIT/X11 license.
12331
12332 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12333
12334         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12335         where the file name is NULL.
12336
12337 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12338
12339         * mini.c: Fix s390 build.
12340
12341 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12342
12343         * trace.c (mono_trace_parse_options): Fix warnings.
12344
12345         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12346
12347 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12348
12349         * mini.c (remove_block_if_useless): Avoid printing the method name.
12350         
12351         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12352         MONO_INST_NEW.
12353
12354         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12355         LMF. Not yet used.
12356
12357         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12358         translated code after it has been patched.
12359
12360 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12361
12362         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12363         avoid problems during code patching on SMP systems.
12364         (emit_call): Avoid adding a patch info which is already added by 
12365         emit_call_body.
12366         (mono_arch_emit_exceptions): Ditto.
12367
12368 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12369
12370         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12371         MONO_TYPE_ISSTRUCT already checks for it.
12372
12373 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12374
12375         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12376           structs with floats on Winx64 the float registers are not used.  
12377           The integer registers are always used..
12378         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12379           only one register will be used and only if the size of the struct 
12380           is 1,2,4, or 8 bytes.
12381
12382         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12383           to work for Winx64.
12384
12385         Contributed under MIT/X11 license.
12386
12387 2008-06-05  Martin Baulig  <martin@ximian.com>
12388
12389         * debug-debugger.c (debugger_lookup_class): Also call
12390         mono_class_setup_methods() here; we're only called from RTI.
12391
12392 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12393
12394         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12395         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12396         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12397         Post-process object files and add dtrace-generated object, if necessary.
12398
12399         Contributed under MIT/X11 license.
12400
12401 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12402
12403         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12404         element class.
12405
12406         * mini.c: Generic sharing for unbox.any and castclass.
12407
12408 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12409
12410         * mini.c: Ignore tailcall prefix in shared generic code and when
12411         doing calls which require a vtable/rgctx argument.
12412
12413 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12414
12415         * mini.c: Don't free the JIT info.
12416
12417         * driver.c: Changes in the JIT info table testing code.
12418
12419 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12420
12421         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12422         interruption. Fix some warnings.
12423
12424         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12425         interruption_checkpoint.
12426
12427 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12428
12429         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12430         from embedding applications.
12431
12432 2008-06-02  William Holmes  <billholmes54@gmail.com>
12433
12434         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12435           reserving 32 bytes on the stack when making calls. 
12436
12437         Contributed under MIT/X11 license.
12438
12439 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12440
12441         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12442         the linear IL branch.
12443
12444         * driver.c: Print out more information for --version on arm.
12445
12446 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12447
12448         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12449         bb_exit instead, since out of line bblocks might not actually be emitted
12450         out-of-line.
12451         
12452         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12453         maximum epilog size for out of line bblocks if tracing is enabled.
12454
12455         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12456
12457 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12458
12459         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12460
12461 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12462
12463         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12464         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12465         opcodes.
12466
12467 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12468
12469         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12470         the 'value' to store is a constant.
12471
12472         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12473
12474         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12475         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12476
12477 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12478
12479         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12480         for accessing method->generic_container.
12481
12482 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12483
12484         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12485         
12486         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12487
12488         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12489
12490         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12491         fails.
12492
12493 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12494
12495         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12496
12497         * mini.c: Handle the case when mono_class_vtable () fails.
12498
12499 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12500         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12501         the stat profiler.
12502
12503 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12504
12505         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12506         together with domain sharing.
12507
12508 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12509
12510         * mini.c: Treat callvirts to final methods like non-virtual calls
12511         when doing generic sharing, i.e. look them up in the runtime
12512         generic context.
12513
12514 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12515
12516         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12517         with computed types (for generic sharing).
12518
12519         * mini.c: Generic sharing for mkrefany and refanyval.
12520
12521 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12522
12523         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12524         possible.
12525
12526         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12527         the generic sharing code.
12528         
12529         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12530         when needed.
12531
12532 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12533
12534         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12535
12536 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12537
12538         * driver.c: updated copyright date
12539
12540 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12541
12542         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12543         needed.
12544
12545 2008-05-19  Martin Baulig  <martin@ximian.com>
12546
12547         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12548         pointing to the new `_mono_debug_using_mono_debugger' variable.
12549
12550         * driver.c
12551         (mono_main): Check mono_debug_using_mono_debugger() rather than
12552         the `MONO_INSIDE_MDB' environment variable to check whether we're
12553         inside the debugger.
12554
12555 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12556
12557         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12558         argument.
12559
12560 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12561
12562         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12563
12564         * mini.c: Added mini_assembly_can_skip_verification. This
12565         function checks if the assembly requested to skip verification. 
12566         Fixes part of #387274.
12567
12568 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12569
12570         * mini.c (mini_get_method): Disable the check for open generic classes when
12571         using generic sharing.
12572
12573         * generics.cs: Add a test for #387034.
12574
12575         * mini.c (mini_get_method): Check whenever the method class is an open generic
12576         type, and return NULL in that case, causing a verification error. Fixes
12577         #384123.
12578
12579 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12580
12581         * driver.c (mono_main): Revert r102623. The right
12582         thing to do is to enable the verifier under verifiable
12583         unless a --security flag was passed.
12584
12585         We need this non-trivial behavior for --verify-all otherwise
12586         mcs-compileall won't be able to use it. As it needs everything to
12587         be verified under validil.
12588
12589 2008-05-06  Martin Baulig  <martin@ximian.com>
12590
12591         Fix #383749.
12592
12593         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12594         (mono_debugger_thread_cleanup): Likewise.
12595         (mono_debugger_extended_notification): Likewise.
12596
12597 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12598
12599         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12600         against both inflated and non-inflated methods. We need to check against the
12601         generic definition for cases where the instantiated method is not visible.
12602         We need to check against the inflated types for cases where the instantiation
12603         changes any super type. This fixes #382986.
12604
12605         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12606         that check for visibiliy as generic params only appears as the type subject
12607         of tokens on call opcodes. Field manipulation and ldftn must always
12608         target an exact type.
12609
12610 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12611
12612         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12613         if no related --security flag is passed.
12614
12615 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12616
12617         * mini-arch.h: Prepare support for ppc64.
12618
12619         Contributed under MIT/X11 license.
12620
12621 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12622
12623         * aot-runtime.c: Prepare support for ppc64.
12624
12625         Contributed under MIT/X11 license.
12626
12627 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12628
12629         * mini-ops.h: Prepare support for ppc64.
12630
12631         Contributed under MIT/X11 license.
12632
12633 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12634
12635         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12636
12637         Contributed under MIT/X11 license.
12638
12639 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12640
12641         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12642         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12643         assemblies on windows.
12644
12645 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12646
12647         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12648         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12649         * main.c: Use UTF-8 encoded command line instead of Windows default code
12650         page on Windows to support Unicode.
12651         * driver.c (DllMain): New function for mixed-mode assembly support.
12652         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12653         export __stdcall functions without decoration.
12654
12655         Contributed under MIT/X11 license.
12656
12657 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12658
12659         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12660         saving it very early.
12661
12662 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12663
12664         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12665         deleted.  The only way to access the new RGCTX is via the
12666         trampline.
12667
12668         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12669         vtable instead of the RGCTX to static methods.
12670
12671         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12672         accessing the new RGCTX.
12673
12674         * generic-sharing.c: There is no separation between self, type
12675         arguments and other types in the RGCTX anymore.
12676
12677 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12678
12679         * mini-amd64.c (add_general): Remove previous stack adjustment.
12680         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12681         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12682         for 32 bytes of stack space reserved for all calls.
12683         
12684         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12685         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12686         adjustment.
12687         
12688         Code contributed under MIT/X11 license.
12689
12690 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12691
12692         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12693         against the root definition, peeling out method and type instantiations.
12694         Cache verify success results, code that fails verification is still
12695         checked multiple times.
12696
12697 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12698
12699         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12700
12701 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12702
12703         * mini-amd64.c (add_general): Always increment stack on Win64.
12704         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12705         on Win64.
12706         
12707         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12708         stack based argument handling on Win64.
12709         
12710         Code contributed under MIT/X11 license.
12711
12712 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12713
12714         * Makefile.am (version.h): Add support for git-svn.
12715
12716 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12717
12718         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12719         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12720         avoiding allocations and libc functions which might deadlock.
12721         
12722         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12723         'no-gdb-backtrace' option is set.
12724
12725         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12726
12727         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12728
12729 2008-04-21  Martin Baulig  <martin@ximian.com>
12730
12731         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12732         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12733
12734 2008-04-21  Martin Baulig  <martin@ximian.com>
12735
12736         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12737         `thread_vtable', `event_handler_ptr' and `event_handler'.
12738
12739 2008-04-21  Martin Baulig  <martin@ximian.com>
12740
12741         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12742         allows delayed initialization of the `executable_code_buffer' when
12743         attaching.
12744
12745 2008-04-21  Martin Baulig  <martin@ximian.com>
12746
12747         * mini.h (mono_debugger_create_notification_function): Removed.
12748         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12749
12750         * mdb-debug-info64.s
12751         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12752
12753         * mdb-debug-info32.s
12754         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12755
12756         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12757         currently only works on x86 and x86_64, so don't create it on ppc.
12758
12759 2008-04-21  Martin Baulig  <martin@ximian.com>
12760
12761         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12762
12763         * mini.c
12764         (mini_method_compile): In the fp elimination check, check
12765         `debug_options.mdb_optimizations' in addition to
12766         mono_debug_using_mono_debugger().       
12767
12768         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12769         disable some JIT optimizations which are only disabled when
12770         running inside the debugger.
12771         Added `--help-debug' option to describe the debugging options.
12772         (parse_debug_options): New static function to parse the `--debug'
12773         options, so we can easily add more stuff in future.
12774
12775 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12776
12777         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12778         the method has no body.
12779
12780 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12781
12782         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12783         assembly is not allowed in MSVC 64-bit compiler. 
12784         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12785         as we get floating point exceptions everywhere.
12786         
12787         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12788         correctly align arguments for call to throw_exception.
12789         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12790         
12791         Code contributed under MIT/X11 license.
12792
12793 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12796
12797 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12798
12799         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12800
12801         * mini-amd64.c (NEW_INS): Set cil_code.
12802
12803         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12804         from mini-amd64.c so all debugger related logic is in one place.
12805
12806         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12807         later won't have a random ip assigned to them.
12808
12809 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12810
12811         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12812         the arch specific function initializes code_size.
12813         (mono_create_delegate_trampoline): Ditto.
12814
12815         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12816         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12817         platforms.
12818
12819         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12820         running under the debugger.
12821
12822         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12823         debugger.
12824
12825         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12826         debugger. Also move the disabling of optimizations here from driver.c.
12827         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12828         debugger.
12829
12830         * mini.h (MonoCompile): Add a few new flags.
12831
12832 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12833
12834         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12835         so the cil_code field of created MonoInst's is properly set.
12836         (mini_select_instructions): Ditto.
12837
12838         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12839         (MONO_INST_NEW_CALL): Ditto.
12840
12841         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12842         in many places so the ins->cil_code field is properly initialized.
12843
12844         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12845         place.
12846
12847 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12848
12849         * mini.c (mini_method_compile): Print a different message when compiling a 
12850         shared method.
12851         
12852         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12853         > 1.
12854
12855 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12856
12857         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12858         SSE2 instructions.
12859
12860         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12861         
12862 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12863
12864         * mini.c (handle_stack_args): Make this return void since its return value was
12865         never used. Also set cfg->unverifiable for invalid IL instead of calling
12866         G_BREAKPOINT ().
12867
12868 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12869
12870         * mini.c: Make sure "this" is live in catch clauses with type
12871         variables in shared generic code.
12872
12873 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12874
12875         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12876         generic_class_is_reference_type() to ensure the proper behaviour
12877         when sharing generic code and the type in question is a type
12878         argument.
12879
12880 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12881
12882         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12883         race conditions when printing thread dumps. Fixes #377738.
12884
12885 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12886         
12887         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12888         shows up when both MonoInst arguments can cause aliasig.
12889         There is likely no way in the current JIT to trigger this problem, but
12890         it showed up in the development of generics sharing, when in a new
12891         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12892         When the generics sharing code will be committed, its tests will be
12893         valid also for this bug.
12894
12895 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12896
12897         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12898         PATCH_INFO_METHOD.
12899
12900         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12901         NULL.
12902
12903 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12904
12905         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12906         use a more detailed exception message for InvalidCastException.
12907
12908         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12909
12910         * driver.c (mono_main): Add --debug=casts option to turn on better 
12911         InvalidCastException message details.
12912
12913         * mini.c (mini_get_debug_options): New helper function to return the address of
12914         the debug_options variable.
12915
12916         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12917         the jit_tls TLS variable.
12918
12919         * mini.c (mono_jit_tls): New TLS variable.
12920
12921         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12922         option is used.
12923
12924 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12925
12926         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12927
12928         * mini.c: Removed verifer related stuff, code moved to verify.c.
12929
12930         * driver.c: Using code from verify.c instead of mini.c.
12931
12932 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12933
12934         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12935         longer valid.
12936
12937 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12938
12939         * mini.c (check_for_method_verify): Enabling verification of
12940         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12941         have been fixed.
12942
12943 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12944
12945         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12946         caller saved registers as well.
12947         
12948         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12949         saved registers as well.
12950
12951 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12952
12953         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12954
12955         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12956         code.
12957
12958 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12959
12960         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12961         to get_call_info.
12962         (get_call_info): Take a gsctx argument instead of 'cfg'.
12963
12964 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12965
12966         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12967         mono_verify_all is set.
12968
12969         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12970
12971         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12972
12973 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12974
12975         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12976         an exception.
12977
12978         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12979         verifier and the code generated by the compiler.
12980
12981 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12982
12983         * mini.c: Generic sharing of the non-nullable case of the box
12984         instruction.
12985
12986 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12987
12988         * inssel.brg: Fix the build.
12989
12990         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12991
12992 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12993
12994         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12995         Array:Address. Fixes #372410.
12996
12997         * iltests.il.in: New tests for readonly prefix.
12998
12999 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
13000
13001         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
13002         mini-trampolines.c.
13003
13004         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
13005         mini-exceptions.c.
13006
13007         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
13008         
13009         * mini.c (mono_decompose_op_imm): New helper function.
13010
13011         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
13012         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13013         return value.
13014
13015         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13016         mono_arch_output_basic_block. Fix warnings.
13017
13018         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
13019         for now.
13020
13021 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
13022
13023         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
13024         since the extra frame is now detected automatically inside the loop.
13025
13026         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
13027         opts which are now in mono_peephole_ins ().
13028         
13029         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
13030
13031         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
13032         frames and skip duplicate managed-to-native frames. Fixes #367665.
13033
13034         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13035         opts which are now in mono_peephole_ins ().
13036         (mono_arch_peephole_pass_2): Ditto.
13037
13038         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
13039
13040         * mini-codegen.c (mono_peephole_ins): New helper function containing the
13041         arch independent peephole optimizations.
13042
13043         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13044         opts which are now in mono_peephole_ins ().
13045
13046         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
13047         
13048         * mini-s390.c (mono_arch_output_basic_block): Fix build.
13049
13050         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
13051         pattern.
13052
13053         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13054         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13055         opcode. 
13056
13057 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13058
13059         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13060         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13061         return value.
13062
13063         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13064         mono_arch_output_basic_block. Fix warnings.
13065
13066 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13067
13068         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13069         conv.ovf.u.un.
13070
13071 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13072
13073         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13074         conv.ovf.u.un.
13075
13076         * iltests.il: Add new tests.
13077
13078 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13079
13080         * mini.c: Removed Windows version macros.
13081
13082 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13083
13084         * generic-sharing.c: Put reflection types in the extensible part
13085         of the runtime generic context.
13086
13087         * mini.c: Generic sharing of the GetTypeHandle special case of the
13088         ldtoken instruction.
13089
13090 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13091
13092         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13093
13094         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13095         
13096         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13097         consistency with the other version on the linear IR branch.
13098
13099         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13100
13101         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13102
13103         * iltests.il.in: Add new tests.
13104
13105 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13106
13107         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13108
13109         * iltests.il.in: Add new tests.
13110
13111 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13112
13113         * mini.c: Two variables with the same name were declared in
13114         nesting contexts and one wasn't initialized.  Fixed.
13115
13116 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13117
13118         * mini.c: Generic sharing of the initobj instruction.
13119
13120 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13121
13122         * mini.c: make the test to optimize ldtoken from typeof() more
13123         precise.
13124
13125 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13126
13127         * mini.c: Generic sharing of the initobj instruction for reference
13128         types.
13129
13130 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13131
13132         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13133         the mono_breakpoint_clean_code() code to perform bound checks.
13134
13135 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13136
13137         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13138         mono_arch_patch_callsite() to include the start of the managed method
13139         to be able to perform bound checks.
13140
13141 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13142
13143         * mini.c: Generic sharing for the isinst instruction.
13144
13145 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13146
13147         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13148         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13149         with the runtime generic context argument.
13150
13151         * mini.c: Share calls to several types of unsharable methods by
13152         putting the address of the method code in the runtime generic
13153         context and doing an indirect call.
13154
13155         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13156         to switches.
13157
13158 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13159
13160         * generic-sharing.c: Change due to a change in the runtime genric
13161         context API.
13162
13163 2008-03-15  Martin Baulig  <martin@ximian.com>
13164
13165         * tramp-x86.c
13166         (mono_arch_nullify_class_init_trampoline): Add call to
13167         mono_breakpoint_clean_code() to make things work when running
13168         inside the debugger.
13169
13170         * tramp-amd64.c
13171         (mono_arch_nullify_class_init_trampoline): Add call to
13172         mono_breakpoint_clean_code() to make things work when running
13173         inside the debugger.
13174
13175 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13176
13177         * inssel-long.brg (reg): Fix 64 bit build.
13178
13179 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13180
13181         * mini.c, mini.h: Share static generic code by passing it an
13182         implicit argument pointing to the runtime generic context.
13183
13184         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13185         inssel-long32-mips.brg: New opcodes for calling shared static,
13186         which need to be passed the runtime generic context.
13187
13188         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13189         argument on the stack in the prologue if needed.  New function for
13190         finding the runtime generic context argument from the registers
13191         saved by the trampoline.
13192
13193         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13194         runtime generic context argument.
13195
13196         * tramp-amd64.c: Also restore the register used for the runtime
13197         generic context argument.
13198
13199         * mini-trampoline.c: Resolve shared static calls by consulting the
13200         runtime generic context via the new argument.
13201
13202         * generic-sharing.c: Add an argument to sharability-checking
13203         functions that specifies whether type variables should be treated
13204         as sharable type arguments.
13205
13206         * inssel-x86.brg: Removed a superfluous, buggy rule.
13207
13208         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13209         to switches.
13210
13211 2008-03-14  Martin Baulig  <martin@ximian.com>
13212
13213         * debug-debugger.c (main_thread_handler): Call
13214         mono_runtime_run_main() without sending any notifications.
13215
13216         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13217
13218 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13219
13220         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13221
13222 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13223
13224         * tramp-x86.c: Fixed register restore offsets in the trampoline
13225         code for ECX and EDX.
13226
13227 2008-03-12  Geoff Norton  <gnorton@novell.com>
13228
13229         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13230         different ucontext_t implementations.
13231         * exceptions-arm.c: Use the above defines to get exceptions working on 
13232         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13233         * mini-arm.c: Implement iPhone icache support (based on a patch by
13234         Luke Howard lukeh@padl.com)
13235
13236 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13237
13238         * mini.c: Enable generic sharing of calls to non-static
13239         non-interface non-generic non-value-type methods.
13240
13241         * mini-trampolines.c: Resolve calls from shared generic code.
13242
13243 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13244
13245         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13246
13247         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13248
13249 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13250
13251         * mini.c: some fixes for the AOT compiler.
13252
13253 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13254
13255         * cpu-amd64.md: Add clob:1 to some float opcodes.
13256
13257 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13258
13259         * mini.h: Added MiniVerifierMode enumeration.
13260
13261         * mini.c: Added mini_verifier_set_mode to control
13262         the usage of the new verifier.
13263
13264         * mini.c (mono_method): Integrated the new verifier.
13265
13266         * driver.c: Extended --security option with validil and
13267         verifiable options to activate the new verifier.
13268
13269 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13270
13271         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13272         optimization to ctors taking 0 or 2 arguments too.
13273
13274         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13275         a bit.
13276
13277         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13278
13279         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13280
13281 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13282
13283         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13284         non-aot case as well.
13285
13286         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13287
13288         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13289         changes.
13290
13291         * aot-compiler.c (encode_patch): Ditto.
13292
13293         * mini.h (G_MININT32): Fix the definition of this.
13294
13295 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13296
13297         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13298
13299         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13300
13301 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13302
13303         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13304         methods returning vtypes in registers.
13305         (mono_arch_allocate_vars): Ditto.
13306
13307         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13308
13309         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13310
13311         * generics.cs: Add a test from the linear IR branch.
13312
13313         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13314
13315         * mini.c (inline_method): Cache failed inline attempts.
13316
13317 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13318
13319         * mini.c: For shared methods of generic classes put the location
13320         of "this" into the MonoGenericJitInfo.
13321
13322         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13323         register out of a MonoContext by register number.  Add the generic
13324         sharing context as an argument to mono_arch_find_this_argument().
13325
13326         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13327         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13328         for new arch function.
13329
13330         * mini-exception.c: Handle open exception clauses in shared
13331         generic code.
13332
13333         * mini-trampolines.c: Supply additional argument to
13334         mono_arch_find_this_argument().
13335
13336 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13337
13338         * Makefile.am (regtests): Run the bench.exe tests last.
13339
13340 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13341
13342         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13343         a bit.
13344
13345 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13346
13347         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13348         with MS.
13349
13350         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13351         
13352         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13353
13354         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13355         whose class has no cctor.
13356
13357         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13358
13359 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13360
13361         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13362         unverified.
13363
13364 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13365
13366         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13367         to be in sync with the code on the linear IR branch.
13368
13369         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13370
13371         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13372
13373 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13374
13375         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13376
13377         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13378
13379         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13380
13381         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13382
13383         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13384         
13385         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13386         body.
13387
13388 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13389
13390         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13391         OP_LOADR4_MEMBASE emission.
13392
13393         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13394         (mono_spillvar_offset_float): Ditto.
13395
13396         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13397
13398         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13399         emission.
13400
13401         * basic-long.cs: Add regression tests for them.
13402
13403         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13404         use.
13405         (mono_arch_allocate_vars): Fix representation of single-precision float
13406         argument.
13407         (mono_arch_output_basic_block): Ditto.
13408
13409         * inssel-mips.brg: Ditto, remove duplicate items.
13410
13411         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13412         arguments of tail calls as on other platforms.
13413         (mono_arch_output_basic_block): Handle tail calls.
13414
13415         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13416         register.
13417
13418         * objects.cs (test_5_pass_static_struct): Add test for it.
13419
13420         Contributed under MIT/X11 license.
13421
13422 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13423
13424         * Makefile.am: Use gmcs for compiling the regression tests.
13425
13426         * *.2.cs *.2.il: Rename to *.cs and *.il.
13427
13428 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13429
13430         * regalloc.h: Make the vassign array smaller.
13431
13432         * mini.c (mini_method_compile): Remove an unused field in cfg.
13433
13434         * mini-codegen.c: Add a bunch of micro optimizations.
13435
13436 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13437
13438         * regalloc.h: Remove some unused fields.
13439
13440 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13441
13442         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13443
13444         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13445
13446 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13447
13448         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13449
13450         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13451         trampoline: Fetch an entry from the runtime generic context.  If
13452         it's NULL, jump to the actual trampoline to fill the runtime
13453         generic context.  Otherwise, return it.
13454
13455         * mini.c: Call the lazy fetch trampoline to get entries out of the
13456         runtime generic context.
13457
13458         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13459         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13460         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13461
13462 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13463
13464         * mini.c: Fetch data out of the extensible part of the runtime
13465         generic context instead of calling a helper function.
13466
13467         * generic-sharing.c: Some functions moved into
13468         metadata/generic-sharing.c.  Helper function for fetching other
13469         types now checks and asserts against extensible rgctx (just for
13470         debugging purposes - the helper function isn't called anymore
13471         unless for debugging).
13472
13473 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13474
13475         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13476         for tail calls up to the point that the tests in iltests.exe run. Also add a
13477         dummy CKFINITE implementation.
13478         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13479         needed for trampoline LMF frames.
13480
13481         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13482         trampoline LMF frames.
13483
13484 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13485
13486         * mini.c (inline_method): clean any pending loader error when inlining fail.
13487         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13488
13489 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13490
13491         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13492
13493         * aot-runtime.c (decode_patch_info): Ditto.
13494
13495         * mini.c (mono_resolve_patch_target): Ditto.
13496         
13497         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13498         icall wrappers.
13499
13500         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13501         
13502         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13503         if it references an icall address.
13504
13505 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13506
13507         * cpu-s390x.md: Remove some more unused opcodes.
13508         
13509         * cpu-s390x.md: Remove some unused opcodes.
13510
13511         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13512         mono_op_imm_to_op ().
13513
13514         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13515         instead of a switch statement.
13516         
13517         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13518         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13519
13520         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13521         
13522         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13523
13524         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13525         -1.
13526
13527 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13528
13529         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13530         opened. Fixes #362607.
13531
13532         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13533
13534         * iltests.il.in: Add a test for static methods in interfaces.
13535
13536 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13537
13538         * genmdesc.c (build_table): Fix a crash on older glib versions.
13539
13540         * cpu-sparc.md: Remove some unused opcodes.
13541         
13542         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13543         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13544
13545         * cpu-amd64.md: Remove some unused opcodes.
13546
13547         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13548         like the other opcodes.
13549
13550 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13551
13552         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13553
13554         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13555
13556         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13557         variables 'cfg' instead of 'm' for consistency.
13558
13559         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13560
13561         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13562         argument holding the vtype return address, to avoid the ambigious use of
13563         cfg->ret for this purpose.
13564
13565         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13566
13567         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13568         
13569         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13570         new mono_print_ins () function which only takes one argument.
13571
13572 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13573
13574         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13575         macro arguments.
13576
13577 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13578
13579         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13580
13581         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13582
13583         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13584         opcodes and other small changes.
13585
13586         * mini-ops.h: Add some new opcodes from the linear IR branch.
13587
13588         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13589
13590         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13591         opcodes, use the REG_MEMBASE opcodes instead.
13592         
13593         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13594         opcodes, use the REG_MEMBASE opcodes instead.
13595         
13596         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13597         linear IR branch.
13598
13599         * mini.c (mono_op_imm_to_op): New helper function.
13600
13601         * mini-ops.h: Add some opcodes from linear IR branch.
13602
13603 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13604
13605         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13606         <tsv@solvo.ru>.
13607
13608 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13609
13610         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13611         OP_ICONV_TO_R4/R8.
13612
13613         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13614
13615 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13616
13617         * aot-compiler.c (emit_method_code): Add an assert.
13618
13619         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13620         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13621         methods.
13622
13623 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13626         some load/store opcodes so they are consistent. 
13627         (mono_arch_emit_prolog): Simplify some code.
13628
13629         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13630
13631         * objects.cs: Add tests for large argument offsets on ARM.
13632
13633         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13634         stack offsets. Fixes #359651.
13635
13636         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13637
13638         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13639
13640         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13641
13642         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13643
13644         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13645
13646         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13647         rid of CEE_CONV_R_UN.
13648
13649         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13650
13651 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13652
13653         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13654
13655         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13656
13657         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13658
13659         * cpu-amd64.md: Remove some unused opcodes.
13660
13661         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13662
13663         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13664
13665         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13666         arch specific functions for its parts. Call the peephole pass after local
13667         regalloc so the prolog can compute a more accurate max_offset.
13668         
13669         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13670         the corresponding OP_I/OP_L opcodes.
13671
13672         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13673
13674         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13675
13676 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13677
13678         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13679         as they are handled in mini.c.
13680
13681         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13682         
13683         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13684         case since it is handled in mini.c.
13685
13686         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13687
13688         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13689
13690         * *.c: Use the new opcodes in the IR and back end code.
13691
13692         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13693
13694         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13695
13696 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13697
13698         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13699         an assert because it has a race condition.
13700
13701 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13702
13703         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13704
13705         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13706
13707         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13708
13709         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13710         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13711
13712 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13713
13714         * cpu-amd64.md (move): Correct the maximum size of move.
13715
13716 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13717
13718         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13719         the generic class init trampoline to return quickly if the class
13720         is already inited.
13721
13722 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13723
13724         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13725         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13726
13727 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13728
13729         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13730         branch.
13731
13732 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13733
13734         * objects.cs: Add some soft-float tests.
13735
13736         * mini.c: Fix a couple more soft-float issues.
13737
13738         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13739
13740         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13741         avoid a REX prefix.
13742
13743 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13744
13745         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13746         exception happens while compiling a virtual method.
13747
13748 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13749
13750         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13751         
13752         * mini-sparc.c: Fix build.
13753
13754         * mini-sparc.c (get_call_info): Add support for generic sharing.
13755
13756         * mini-exceptions.c: Add a FIXME.
13757
13758 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13759
13760         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13761         altstack handling code.
13762
13763         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13764         
13765         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13766
13767         * mini-s390.c: Add support for generic sharing.
13768
13769         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13770         Fix CAS on s390.
13771         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13772
13773         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13774
13775         * mini-s390x.c: Add support for generic sharing.
13776         
13777         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13778         Fix CAS on ia64.
13779         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13780
13781         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13782         can be used since it takes a 16 bit signed immediate.
13783
13784         * inssel-s390x.brg: Fix OP_SETRET.
13785
13786         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13787
13788         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13789
13790         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13791
13792         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13793
13794         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13795         in one place.
13796
13797         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13798         stuff.
13799
13800         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13801         of the unused mono_arch_patch_delegate_trampoline stuff.
13802
13803 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13804
13805         * basic-long.cs: Move the fp related tests to basic-float.cs.
13806
13807         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13808
13809         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13810
13811         * basic-calls.cs: Add a test for proper float argument passing.
13812
13813         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13814         if the context corresponds to an exception received through a signal.
13815
13816         * exceptions.cs: Add a test for nullref handling at the start of a try
13817         clause.
13818
13819         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13820
13821         * jit-icalls.c (mono_break): New JIT icall.
13822
13823         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13824
13825         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13826
13827 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13828
13829         * cpu-*.md: Get rid of unused opcodes.
13830
13831         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13832
13833         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13834         by all platforms.
13835
13836         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13837         define.
13838
13839         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13840         the arch independent trampoline code in mini-trampolines.c.
13841
13842         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13843
13844         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13845
13846         * mini-s390.h: Remove an unused define.
13847         
13848         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13849         the arch independent trampoline code in mini-trampolines.c.
13850
13851         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13852
13853 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13854
13855         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13856
13857         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13858
13859         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13860
13861         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13862
13863         * cpu-amd64.md: Use smaller sizes for int opcodes.
13864
13865         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13866
13867         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13868         objects.cs.
13869
13870         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13871         debugging.
13872
13873         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13874         instead of though a pointer to save an indirection when accessing elements of
13875         the array.
13876
13877         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13878         some typos.
13879         (NOT_IMPLEMENTED): New helper macro.
13880         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13881         of a bb.
13882
13883         * *.c: Use the new helper macro.
13884
13885 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13886
13887         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13888
13889 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13890
13891         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13892         stack slots.
13893
13894 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13895
13896         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13897         profiling is enabled.
13898         
13899         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13900         the end.
13901         (mono_arch_emit_prolog): Add more first bblock optimizations.
13902
13903         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13904         in order if possible.
13905         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13906         bblock, since the arguments are still in their original registers.
13907
13908         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13909
13910 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13911
13912         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13913         as well.
13914
13915         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13916         offset 0.
13917
13918         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13919
13920         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13921         process async exceptions received while in unmanaged code.
13922
13923         * mini.c (mini_init): Install a callback with the runtime which will be called
13924         when a thread receives an async exception while in unmanaged code.
13925
13926         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13927
13928         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13929
13930 2008-01-16  Wade Berrier  <wberrier@novell.com>
13931
13932         * cpu-g4.md:
13933         * cpu-arm.md:
13934         * cpu-s390x.md:
13935         fix build
13936
13937 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13938
13939         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13940         compilation with sun cc.
13941
13942         * cpu-*.md: Fix the build.
13943
13944         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13945
13946         * mini-amd64.h: Add some comments to the MonoLMF structure.
13947
13948         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13949         
13950         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13951         in the LMF structure if possible. This saves two instructions in the
13952         managed->native wrappers.
13953
13954         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13955
13956 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13957
13958         * generic-sharing.c: New type argument lookup code which uses the
13959         runtime generic context template.
13960
13961 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13962
13963         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13964
13965         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13966         (mono_arch_output_basic_block): Fix localloc implementation.
13967
13968         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13969
13970         * mini-ia64.c (peephole_pass): Fix ia64 build.
13971
13972         * mini-amd64.c (peephole_pass): Fix a warning.
13973         
13974         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13975         at a constant offset from sp/fp.
13976
13977         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13978         instead of obtaining it from *lmf in the managed method case.
13979
13980 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13981
13982         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13983
13984 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13985
13986         * mini.h (MonoInstList): New type.
13987         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13988         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13989         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13990         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13991         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13992         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13993         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13994         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13995         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13996         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13997         MONO_INST_LIST_FOR_EACH_ENTRY,
13998         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13999         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
14000         mono_inst_list_first, mono_inst_list_last,
14001         mono_inst_list_next, mono_inst_list_prev): New instruction
14002         list handling interfaces.
14003         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
14004         list head 'ins_list'.
14005         (MonoInst): Replace next pointer with list head 'node'.
14006         (MonoCallInst): Make 'out_args' a MonoInstList.
14007         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
14008         (MonoCompile): Delete reverse_inst_list and
14009         reverse_inst_list_len.
14010         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
14011         mono_arch_lowering_pass, mono_arch_local_regalloc,
14012         mono_arch_output_basic_block, mono_arch_emit_prolog):
14013         Convert to new instruction lists.
14014         (insert_after_ins): Delete.
14015         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
14016         instruction lists.
14017         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
14018         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
14019         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
14020         mono_emulate_opcode, mono_emit_load_got_addr,
14021         inline_method, mono_method_to_ir, mono_print_bb_code,
14022         print_dfn, decompose_pass, nullify_basic_block,
14023         replace_out_block_in_code, remove_block_if_useless,
14024         merge_basic_blocks, move_basic_block_to_end,
14025         try_unsigned_compare, optimize_branches, mono_print_code,
14026         mini_select_instructions, remove_critical_edges): Likewise.
14027         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
14028         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
14029         mono_arch_output_basic_block, mono_arch_emit_prolog):
14030         Likewise.
14031         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
14032         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14033         mono_arch_output_basic_block): Likewise.
14034         (inst_list_prepend, insert_after_ins): Delete.
14035         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
14036         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
14037         instruction lists.
14038         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
14039         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
14040         mono_arch_emit_prolog): Likewise.
14041         * cfold.c (mono_constant_fold): Likewise.
14042         * liveness.c (visit_bb, mono_analyze_liveness,
14043         optimize_initlocals): Likewise.
14044         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
14045         * graph.c (mono_draw_code_cfg): Likewise.
14046         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
14047         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
14048         mono_ssa_cprop): Likewise.
14049         * abcremoval (get_relations_from_previous_bb, process_block):
14050         Likewise.
14051         * local-propagation (mono_cprop_invalidate_values,
14052         mono_local_cprop_bb): Likewise.
14053         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14054         peephole_pass, mono_arch_output_basic_block,
14055         mono_arch_emit_prolog): Likewise.
14056         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14057         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14058         mono_arch_emit_prolog): Likewise.
14059         (insert_after_ins): Delete.
14060         * aliasing.c (print_code_with_aliasing_information,
14061         mono_build_aliasing_information, mono_aliasing_deadce):
14062         Convert to new instruction lists.
14063         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14064         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14065         mono_arch_local_regalloc, mono_arch_output_basic_block):
14066         Likewise.
14067         (insert_after_ins): Delete.
14068         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14069         peephole_pass, mono_arch_output_basic_block): Convert to
14070         new instruction lists.
14071         * mini-codegen (InstList, inst_list_prepend,
14072         insert_after_ins): Delete.
14073         (insert_before_ins, get_register_force_spilling,
14074         get_register_spilling, free_up_ireg, free_up_reg,
14075         create_copy_ins, create_spilled_store, alloc_int_reg,
14076         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14077         to new instruction lists.
14078         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14079         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14080         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14081         (insert_after_ins): Delete.
14082         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14083         mono_arch_local_regalloc, mono_arch_output_basic_block,
14084         mono_arch_call_opcode): Convert to new instruction lists.
14085         (insert_after_ins): Delete.
14086         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14087         peephole_pass, mono_arch_output_basic_block,
14088         mono_arch_emit_prolog): Convert to new instruction lists.
14089
14090 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14091
14092         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14093
14094         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14095         Fixes #353182.
14096
14097         * Makefile.am (version.h): Make this work with non-bash shells.
14098
14099 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14100
14101         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14102
14103 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14104
14105         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14106         the InitializeArray optimization.
14107
14108 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14109
14110         * mini.c driver.c: Don't include os/gc_wrapper.h.
14111
14112 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14113
14114         * mini.c (print_jit_stats): Print GC statistics if available.
14115
14116 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14117
14118         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14119
14120 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14121
14122         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14123
14124 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14125
14126         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14127         
14128         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14129
14130         * driver.c (mono_main): Ditto.
14131
14132 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14133
14134         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14135
14136         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14137         in the vtable can't be encoded.
14138         (compile_method): Ditto.
14139
14140 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14141
14142         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14143         defined.
14144
14145         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14146         lmf->rbp.
14147
14148         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14149         the top LMF entry belongs to the current method.
14150
14151         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14152
14153 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14154
14155         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14156         
14157         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14158
14159         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14160
14161         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14162
14163         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14164
14165         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14166         implementation.
14167
14168         * basic-float.cs: Add an ulong->double cast test.
14169
14170 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14171
14172         * mini.c (mono_method_to_ir): Fix a warning.
14173
14174 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14175
14176         * mini-ops.h: Add OP_SWITCH.
14177
14178         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14179         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14180
14181 2007-12-11  Geoff Norton  <gnorton@novell.com>
14182
14183         * mini-s390x.c: Minor change to the MAX() define to allow
14184         it to compile with other gcc versions.
14185
14186 2007-12-11  Geoff Norton  <gnorton@novell.com>
14187
14188         * cpu-s390x.md:
14189         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14190
14191 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14192
14193         exceptions-arm.c (mono_arch_get_restore_context): Restore
14194         the frame pointer.
14195
14196         exceptions-arm.c (throw_exception): Save the frame pointer.
14197         This is a partial fix for #323747. Only the client side is
14198         fixed.
14199
14200 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14201
14202         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14203         was using an unrelated variable to log the class which
14204         needed the cctor to be called. This was crashing on arm.
14205
14206 2007-12-09  Robert Jordan  <robertj@gmx.net>
14207
14208         * mini-x86.c (mono_arch_emit_epilog):
14209         Consider all kinds of 64-bit types. Fixes #323114.
14210
14211 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14212
14213         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14214
14215 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14216
14217         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14218
14219 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14220
14221         * mini.c: run type ctor before allocating an object, not only
14222         when running it's constructor method (fixes at least part of bug #342507).
14223
14224 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14225         
14226         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14227         
14228         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14229         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14230         function.
14231
14232         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14233         mono_generic_class_init_trampoline () the same as it is done with the other
14234         trampolines.
14235
14236         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14237         aot-runtime.c aot-compiler.c: Implement AOT support.    
14238
14239 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14240
14241         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14242         build for archs which don't have the vtable trampoline defined
14243         yet.
14244
14245 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14246
14247         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14248
14249         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14250
14251         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14252
14253         * tramp-<ARCH>.c: Use the new helper function.
14254
14255 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14256
14257         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14258         trampoline call, which takes a vtable argument.
14259
14260         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14261         OP_TRAMPCALL_VTABLEs like other calls.
14262
14263         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14264         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14265         call.  Implemented a support function which fetches the vtable
14266         from a register set.
14267
14268         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14269         Implemented a generic class init trampoline, using the
14270         OP_TRAMPCALL_VTABLE opcode.
14271
14272         * mini.c: Implemented static field access when sharing generic
14273         code.  This implies initing the class using the new
14274         OP_TRAMPCALL_VTABLE call.
14275
14276 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14277
14278         * mini.c: Don't compile methods with sharing enabled if their
14279         classes are disabled for sharing.
14280
14281 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14282
14283         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14284         opcodes. Fixes #346563.
14285
14286         * objects.cs: Add a new test.
14287
14288         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14289
14290         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14291         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14292
14293 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14294
14295         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14296
14297 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14298
14299         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14300         code stream.
14301
14302 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14303
14304         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14305
14306         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14307         optimization in the AOT case.
14308         
14309 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14310
14311         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14312         
14313         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14314
14315         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14316
14317         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14318
14319         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14320         is created by the inlined delegate ctor.
14321
14322         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14323
14324         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14325
14326 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14327
14328         * cpu-x86.md: Fix the length of ckfinite.
14329
14330 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14331
14332         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14333         
14334         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14335         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14336
14337         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14338
14339         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14340         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14341
14342 2007-11-28  Martin Baulig  <martin@ximian.com>
14343
14344         * mini-x86.c
14345         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14346         after creating the trampoline.
14347
14348 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14349
14350         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14351
14352         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14353         the same version.
14354
14355         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14356         instead of the calling method to help AOT.
14357
14358         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14359
14360 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14361
14362         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14363         is defined.
14364
14365 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14366
14367         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14368         
14369         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14370         (encode_method_ref): No need to handle generic method definitions specially.
14371
14372         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14373
14374         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14375         decode_klass_info.
14376
14377         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14378         encode_klass_info.
14379         (compile_method): Enable generic sharing.
14380
14381 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14382
14383         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14384         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14385
14386         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14387         generic code.
14388
14389         * mini-trampolines.c: Fix a warning.
14390
14391         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14392         NEW_PCONST.
14393         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14394         (generic_class_is_reference_type): Remove unused function.
14395
14396         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14397         in the generic vtable trampoline case.
14398
14399         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14400         
14401         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14402         return an AOT method based on a vtable slot.
14403
14404         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14405
14406         * mini.c (mini_get_vtable_trampoline): Export this.
14407
14408 2007-11-22  Martin Baulig  <martin@ximian.com>
14409
14410         * debug-debugger.h
14411         (MonoDebuggerInfo): Move `debugger_version' up.
14412
14413 2007-11-22  Martin Baulig  <martin@ximian.com>
14414
14415         * mini-amd64.c
14416         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14417
14418         * mini-trampolines.c
14419         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14420         after compiling the method.
14421
14422 2007-11-20  Martin Baulig  <martin@ximian.com>
14423
14424         * debug-mini.c
14425         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14426         (mono_debugger_remove_breakpoint): Likewise.
14427         (mono_debugger_check_breakpoints): Likewise.
14428
14429         * debug-debugger.c: Implement the new breakpoint interface here.
14430
14431 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14432
14433         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14434         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14435
14436         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14437
14438 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14439
14440         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14441
14442         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14443         mini.c.
14444
14445         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14446         mini.c.
14447
14448         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14449         returning a vtype in a register.
14450
14451         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14452         here from the arch specific code.
14453
14454         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14455         mini.c.
14456
14457         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14458         (mono_arch_emit_prolog): Increment maximum prolog size.
14459
14460         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14461         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14462
14463         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14464         MonoGenericSharingContext.
14465
14466         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14467         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14468
14469 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14470
14471         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14472         which extract fields out of the runtime generic context.  Full
14473         sharing of the NEWARR opcode.
14474
14475 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14476
14477         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14478         --enable-minimal=ssa.
14479
14480 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14481
14482         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14483         mono_marshal_get_delegate_invoke () signature change.
14484
14485 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14486
14487         * mini.c: Removed the shared context in favor of the generic
14488         sharing context.  Allocate the MonoJitInfo structure with room for
14489         the generic sharing context if it's needed.
14490
14491         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14492         domain-internals.h now.
14493
14494         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14495
14496         * generic-sharing.c: Several changes for working without a shared
14497         context and instead operating on open types instead.
14498
14499 2007-11-12  David S. Miller  <davem@davemloft.net>
14500
14501        * inssel-sparc.brg: Fix double instruction emit.
14502
14503 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14504
14505         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14506         Get/Set/Address methods.
14507         
14508         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14509         mono_marshal_get_delegate_invoke signature change.
14510
14511 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14512
14513         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14514         This can happens with dynamic methods. Fixes the other bug in #322722.
14515
14516 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14517
14518         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14519         BX call sequence.
14520
14521         * mini-arm.c (arm_patch): Implement patching of BX call
14522         sequence. Fixes one of the bugs in #322722.
14523
14524 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14525
14526        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14527        under Linux.  We only need to flush every 32-byte cache line.    
14528
14529 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14530
14531         * mini.c:
14532         move_basic_block_to_end: Add branches when needed, eventually creating
14533         a new BB.
14534         optimize_branches: added a parameter that tells if it's ok to create
14535         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14536         and avoid calling move_basic_block_to_end when it's not ok.
14537         Fixes bug 318677.
14538
14539 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14540
14541         * mini.c: Abort inlining call to InitializeArray if something
14542         looks wrong.  Let the icall handle it, which now has proper safety
14543         checks.
14544
14545 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14546
14547         * mini.c (mono_spill_call): add support for soft-float.
14548
14549         * mini.c (mono_method_to_ir): add support for soft-float
14550         to inlined functions that return float.
14551
14552         * mini.c (mono_method_to_ir): add support for soft-float
14553         to cee_stsfld opcode on float fields.
14554
14555 2007-11-05  Geoff Norton  <gnorton@novell.com>
14556
14557         * mini-x86.h: Fix the structure access for X86 Leopard.
14558
14559
14560 2007-11-05  Martin Baulig  <martin@ximian.com>
14561
14562         * mini-trampolines.c
14563         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14564         after compiling the method to notify the debugger.
14565
14566 2007-11-05  Martin Baulig  <martin@ximian.com>
14567
14568         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14569
14570 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14571
14572         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14573         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14574
14575 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14576
14577         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14578         native-to-managed wrappers.
14579         
14580 2007-11-01  Geoff Norton  <gnorton@novell.com>
14581
14582         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14583         members.
14584
14585 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14586
14587         * mini.c, mini-x86.c: when getting back from unmanaged code
14588         to managed via a marshaled delegate we also need to set the
14589         right domain.
14590
14591 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14592
14593         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14594         for amd64.
14595
14596 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14597
14598         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14599         let the debugger or other external agents to tell the JIT when
14600         a sw breakpoint has been inserted in the code that the JIT needs
14601         to be able to inspect.
14602
14603 2007-10-31  Martin Baulig  <martin@ximian.com>
14604
14605         * debug-debugger.h
14606         (MonoDebuggerInfo): Remove `runtime_class_init'.
14607
14608 2007-10-30  Martin Baulig  <martin@ximian.com>
14609
14610         * debug-mini.h
14611         (mono_debugger_thread_created): Added `MonoThread *' argument.
14612         (mono_debugger_extended_notification): New public method.
14613         (mono_debugger_trampoline_compiled): New public method.
14614
14615         * debug-mini.c
14616         (MonoDebuggerThreadInfo): Added `thread' and
14617         `extended_notifications' fields.
14618
14619         * debug-debugger.c
14620         (debugger_executable_code_buffer): New static variable.
14621
14622         * debug-debugger.h
14623         (MonoDebuggerInfo): Added `executable_code_buffer',
14624         `executable_code_buffer_size', `breakpoint_info_area',
14625         `breakpoint_table' and `breakpoint_table_size'.
14626
14627 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14628
14629         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14630         that IP  either is an unused value or the vtable pointer. IMT 
14631         calls use vtable + offset now. Reduced by almost half the size
14632         of IMT entries.
14633
14634 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14635
14636         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14637         defines to access param registers. Replace long usage with
14638         gsize as sizeof(long) != sizeof(void*) on Win64.
14639
14640         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14641         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14642         instead of non-existant _GetAddressOfReturnAddress.
14643
14644         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14645         param registers. Save/restore %rdi and %rsi in MonoLMF.
14646
14647         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14648         param registers. Modify (throw_exception) signature to take 
14649         %rdi and %rsi on Win64. 
14650
14651         Code is contributed under MIT/X11 license.
14652
14653 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14654
14655         * helpers.c: unlink debugging output files.
14656
14657 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14658
14659         * mini.c: Move mono_create_ftnptr () to object.c.
14660
14661 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14662
14663         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14664         optional. This function can now be used to disassemble code generated
14665         outside the JIT such as trampolines and IMT thunks.
14666
14667         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14668
14669         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14670         vtable pointer from a ldr instruction.
14671
14672         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14673         new IMT call sequence.
14674
14675         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14676         call sequence for interface invocations.
14677
14678         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14679         for imt support. This function is empty since IMT on ARM requires no
14680         special handling on the IR side.
14681
14682         * mini-arm.c (mono_arch_find_imt_method): added, required for
14683         imt support.
14684
14685         * mini-arm.c (mono_arch_find_this_argument): added, required
14686         for imt support.
14687
14688         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14689         a ldr instruction to load a value stored in the code stream.
14690
14691         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14692         for imt support.
14693
14694
14695 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14696
14697         * mini.c (mini_init): Install the jump trampoline callback.
14698
14699 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14700
14701         * mini-trampolines.c: handle synchronized methods with the common
14702         vtable trampoline (bug #335601).
14703
14704 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14705
14706         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14707
14708         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14709         64 bit platforms.
14710
14711         * mini-ia64.h mini-ia64.c: Add support for IMT.
14712
14713         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14714         prolog. Fixes #331958.
14715
14716 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14717
14718         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14719
14720 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14721
14722         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14723         trampoline.
14724
14725 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14726
14727         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14728         trampoline.
14729
14730 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14731
14732         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14733         trampoline.
14734
14735 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14736
14737         * mini-trampolines.c: changed the magic rampoline to understand
14738         the common vtable trampoline method: the method to invoke is
14739         determined by the vtable displacement of the call.
14740
14741 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14742
14743         * mini.c, mini.h: register the common vtable trampoline if the
14744         architecture supports it.
14745
14746 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14747
14748         * cpu-amd64.md: use the correct max length for tls_get.
14749
14750 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14751
14752         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14753         CEE_STELEM_ANY. Fixes #333696.
14754
14755 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14756
14757         * exceptions-x86.c: provide more graceful handling of the case where
14758         we followed a bogus function pointer from managed code (bug #332866).
14759
14760 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14761
14762         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14763         replaces the generic_shared flag and will carry more information
14764         in the future.
14765
14766         * generic-sharing.c: Added mini_type_stack_size() which allows
14767         allows open types if given a generic sharing context.
14768         mini_get_basic_type_from_generic() takes a
14769         MonoGenericSharingContext* instead of a MonoCompile* now.
14770
14771         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14772         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14773         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14774         changes above.  Just passing arguments through to the right
14775         places.
14776
14777 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14778
14779         * mini-arm.c: unify the call emission to emit_code_seq().
14780
14781 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14782
14783         * tramp-arm.c: reduced the trampoline size.
14784
14785 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14786
14787         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14788         variable handling out of arch-specific code.
14789
14790 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14791
14792         * mini-arm.c: implemented fast delegate dispatch.
14793
14794 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14795
14796         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14797         that fp elimination is turned off if the space required by locals is too
14798         big. Fixes #331958.
14799
14800 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14801
14802         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14803         ARM to the new style trampoline.
14804
14805 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14806
14807         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14808
14809         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14810
14811 2007-10-09  Martin Baulig  <martin@ximian.com>
14812
14813         * debug-debugger.h
14814         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14815         `field_info_offset_offset'.     
14816
14817 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14818
14819         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14820         removed more internal usage of the r11 register and made it available
14821         to the register allocator.
14822
14823 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14824
14825         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14826         when sharing generics and treat type variables as references.
14827
14828 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14829
14830         * mini-ppc.c: started removing the internal uses of register r11
14831         to eventually allow the register allocator to manage it as an
14832         additional available register.
14833
14834 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14835
14836         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14837
14838 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14839
14840         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14841         specific trampolines as they are not performance critical as a jump
14842         target (maybe align as before only for AOT code?). This saves about
14843         200 KB of native code on x86 for monodevelop startup.
14844
14845 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14846
14847         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14848         monodevelop startup.
14849
14850 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14851
14852         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14853
14854         * mini-sparc.h mini-sparc.c: Implement IMT support.
14855
14856         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14857         its smaller and doesn't clobber sparc_g1.
14858
14859         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14860
14861 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14862
14863         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14864
14865 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14866
14867         * mini-ppc.c: implemented fast delegate invocation.
14868
14869 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14870
14871         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14872
14873 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14874
14875         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14876         code to the new style trampoline in preparation for IMT support.
14877
14878 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14879
14880         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14881         systems already. This also reduces the specific trampiline sizes and
14882         prepares for the use of r12 as the IMT identifier register.
14883
14884 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14885
14886         * mini-mips.h: endianess fix (simplified from a patch by
14887         Thomas Kunze <thommy@tabao.de>, bug #323737).
14888
14889 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14890
14891         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14892         to access ucontext fields and enable netbsd support
14893         (partially from Magnus Henoch <mange@freemail.hu>).
14894
14895 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14896
14897         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14898         use the preprocessor from the CPP env var if it is set.
14899
14900 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14901
14902         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14903         code, before interface_offset gets used.
14904
14905 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14906
14907         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14908         mono_class_setup_vtable () before accessing klass->vtable.
14909
14910 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14911
14912         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14913         hackish.
14914
14915 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14916
14917         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14918         IMT slots (this saves hundreds of KB of memory in programs like
14919         IronPython and Monodevelop).
14920
14921 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14922
14923         * mini.c: print the delegate counter.
14924
14925 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14926
14927         * mini-x86.c: make it easier to enable the debugging code for IMT
14928         slots.
14929
14930 2007-09-28  Martin Baulig  <martin@ximian.com>
14931
14932         * debug-debugger.h
14933         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14934         `mono_method_klass_offset' and `mono_method_token_offset'.
14935
14936 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14937
14938         * mini.c: First generics sharing implementation.  Can only share
14939         in very simple cases.  If sharing doesn't work it falls back to
14940         dedicated compilation.
14941
14942         * mini.h: Flag in MonoCompile to specify whether generic
14943         compilation is shared.  Flags enum for marking which generic inst
14944         of a context is used.  Prototypes for helper functions.
14945
14946         * generic-sharing.c: Helper functions for generic method sharing.
14947
14948         * optflags-def.h: Optimization flag (gshared) for enabling generic
14949         method sharing added.
14950
14951         * Makefile.am: generic-sharing.c added.
14952
14953 2007-09-19 Daniel Nauck <dna@mono-project.de>
14954
14955         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14956
14957 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14958         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14959         fixes bug 325507.
14960
14961 2007-09-19  Martin Baulig  <martin@ximian.com>
14962
14963         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14964         mono_debug_cleanup() is now part of mono_cleanup().
14965
14966 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14967
14968         * driver.c (mono_main): Fix a warning.
14969
14970 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14971
14972         * aot-compiler.c: Optimize various parts when processing large assemblies.
14973         Fixes ##325568.
14974
14975         * mini.c (mono_patch_info_hash): Improve hash function.
14976
14977 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14978
14979         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14980         
14981         Code is contributed under MIT/X11 license.
14982
14983 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14984
14985         * mini.c (mini_init): Fix a leak.
14986
14987         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14988
14989 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14990
14991         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14992
14993 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14994
14995         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14996
14997 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14998
14999         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
15000         variance tests.
15001
15002         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
15003
15004         * mini.c (handle_alloc): Enable managed allocators in AOT code.
15005
15006         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
15007
15008         * aot-runtime.c (decode_patch_info): Ditto.
15009
15010 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15011
15012         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
15013         static case. Cache delegates in architecture specific code, 
15014         based on number of parameters.
15015         
15016         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
15017         in architecture specific code, based on number of parameters.
15018         
15019         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
15020         caching happen in architecture specific code now.
15021         
15022         Code is contributed under MIT/X11 license.
15023
15024 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15025
15026         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
15027         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
15028         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
15029
15030         Code is contributed under MIT/X11 license.
15031
15032 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15033         * mini.c: (mono_thread_abort) Fixed bug #82416.
15034
15035 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15036
15037         * mini.: hook the new managed GC allocation feature into the JIT.
15038
15039 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15040
15041         * mini.c: implementation for the new runtime tls opcode.
15042
15043 2007-09-11  Martin Baulig  <martin@ximian.com>
15044
15045         * debug-debugger.h
15046         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
15047         `mono_method_inflated_offset'.
15048
15049 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
15050
15051         * driver.c mini.h mini.c: Add a new devel command line option for injecting
15052         async exceptions into a method.
15053
15054         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15055         purpose of testing whenever the unwinder works at every instruction.
15056
15057 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15058
15059         * mini.c: check accessibility of method used in ldftn (fixes
15060         bug #82635).
15061
15062 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15063
15064         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15065
15066         * inssel.brg: Fix a warning.
15067
15068 2007-09-03  Martin Baulig  <martin@ximian.com>
15069
15070         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15071         now takes the `main_method' as argument.
15072
15073 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15074
15075         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15076
15077 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15078
15079         * driver.c: include the cil-coff.h header on Windows.
15080         
15081         Code is contributed under MIT/X11 license.
15082
15083 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15084
15085         * mini.c, driver.c: don't include the cil-coff.h header.
15086
15087 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15088
15089         * mini.c: flag places that needs fixes fo soft-float support.
15090
15091 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15092
15093         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15094         endian systems (partially from Dean Jenkins, bug #81924).
15095
15096 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15097
15098         * mini.c (check_linkdemand): Remove embedded reference object in
15099         call to LinkDemandSecurityException.
15100         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15101         with an IntPtr instead of a reference object.
15102
15103 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15104
15105         * mini.c (handle_initobj): Handle alignment properly.
15106
15107         * inssel.brg (mini_emit_memset): Ditto. 
15108
15109         * inssel.brg (mini_emit_memcpy): Ditto. 
15110
15111         * inssel-sparc.brg: Ditto.              
15112
15113         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15114
15115 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15116
15117         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15118         exceptions raised in unmanaged code. Fixes part of #82594.
15119
15120 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15121
15122         * mini.c (mono_method_to_ir), declsec.c
15123         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15124
15125 2007-08-22  Martin Baulig  <martin@ximian.com>
15126
15127         * debug-mini.h
15128         (MonoDebuggerThreadInfo): New typedef.
15129         (mono_debugger_thread_table): New global variable.
15130         (mono_debugger_thread_created): New public function.
15131         (mono_debugger_thread_cleanup): New public function.
15132
15133         * debug-debugger.h
15134         (MonoDebuggerInfo):
15135         - removed `get_current_thread' and `lookup_assembly'.
15136         - removed `data_table'.
15137         - added `thread_table'.
15138
15139         * mini.c
15140         (mono_thread_start_cb): Call mono_debugger_thread_created().
15141         (mono_thread_attach_cb): Likewise.
15142         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15143         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15144         initial domain.
15145
15146         * driver.c (mono_main): Move mono_debug_init() up, before calling
15147         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15148
15149 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15150
15151         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15152         together when passing several arguments of type double (gives a small
15153         speedup and saves a few bytes of generated code).
15154
15155 2007-08-20  Jb Evain  <jbevain@novell.com>
15156
15157         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15158
15159 2007-08-20  Jb Evain  <jbevain@novell.com>
15160
15161         * mini.c (mono_method_to_ir): throw MethodAccessException
15162         and FieldAccessException instead of InvalidProgramException.
15163
15164 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15165
15166         * mini.c: CoreCLR security checks.
15167
15168         * mini.h: Removed MonoSecurityMode (moved to
15169         metadata/security-manager.h) and mono_security_mode global var
15170         (replaced by set/get functions in security-manager.h).
15171
15172         * driver.c: Added "core-clr-test" security mode for testing.  Used
15173         set-function for setting security mode.
15174
15175 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15176
15177         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15178         the new jit_info_table.
15179
15180         * driver.c: Test code for the new jit_info_table (enabled by the
15181         define MONO_JIT_INFO_TABLE_TEST).
15182
15183 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15184
15185         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15186         detection of call <REG> instruction sequence. Fixes build on freebsd.
15187
15188 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15189
15190         * mini-exceptions.c: Fix a warning.
15191
15192 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15193
15194         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15195         stack overflow handling code on amd64 too.
15196
15197         * mini-exceptions.c (mono_setup_altstack): Make this use 
15198         mono_thread_get_stack_bounds ().
15199
15200         * mini-x86.h: Disable sigaltstack on solaris x86.
15201
15202 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15203
15204         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15205
15206 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15207
15208         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15209
15210 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15211
15212         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15213
15214         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15215
15216 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15217
15218         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15219         due to alignment.
15220
15221 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15222
15223         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15224         to be emitted (bug #82281).
15225
15226 2007-08-01  Martin Baulig  <martin@ximian.com>
15227
15228         Merged the `debugger-dublin' branch.
15229
15230         * debug-debugger.h (MonoDebuggerInfo):
15231         Removed the `old_*' compatibility entries.
15232         Added `debugger_version' and `data_table'.
15233         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15234         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15235
15236         * debug-mini.c
15237         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15238         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15239         instead of a `gconstpointer'.
15240         (mono_debugger_insert_method_breakpoint): Return a
15241         `MonoDebugMethodAddressList *'.
15242
15243 2007-06-28  Martin Baulig  <martin@ximian.com>
15244
15245         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15246
15247 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15248
15249         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15250         __builtin_frame_address () since it is broken on older gcc versions.
15251
15252 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15253
15254         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15255         on the stack overflow handling and made the managed stack overflows
15256         catchable in most cases using soft guard pages.
15257         * exceptions-x86.c: added code to restore the protection in the soft
15258         guard pages at the end of exception handling.
15259
15260 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15261
15262         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15263
15264 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15265
15266         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15267         exception handling.
15268
15269 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15270
15271         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15272         signal handling support until it has been ported to the new mechanism.
15273         * mini.c: fixed stack overflow detection and use the new
15274         architecture code  to handle signals on the altstack.
15275
15276 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15277
15278         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15279         stack overflows on the alt stack.
15280
15281 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15282
15283         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15284         stack overflows on the alt stack.
15285
15286 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15287
15288         * exceptions-ppc.c: cleanup preparing for altstack support.
15289
15290 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15291
15292         * exceptions-arm.c: cleanup preparing for altstack support.
15293
15294 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15295
15296         * mini.c (print_jit_stats): Output hazard pointer stats.
15297
15298 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15299
15300         * driver.c, mini.c: Replaced security mode flags with a single
15301         enum variable.
15302
15303 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15304
15305         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15306
15307 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15308
15309         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15310         (which doesn't do anything yet) for activating Core CLR
15311         (Silverlight) security.
15312
15313 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15314
15315         * mini-codegen.c: work around a possible gcc bug on arm.
15316
15317 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15318
15319         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15320         message for platforms that don't support AOT compilation.
15321
15322 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15323
15324         * mini.h, mini.c, driver.c: temporary smcs hack.
15325
15326 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15327
15328         * mini-arm.h, mini-arm.c: arm EABI fixes.
15329
15330 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15331
15332         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15333         case.
15334
15335         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15336         trampolines taking a method argument.
15337
15338         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15339
15340         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15341         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15342
15343         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15344         JIT compilation throws an exception. Fixes #82050.
15345
15346 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15347
15348         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15349         with the MONO_EXCEPTION_ defines.
15350
15351 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15352
15353         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15354         #82117.
15355         
15356         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15357         the cause of an assertion.
15358
15359 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15360
15361         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15362         removed.
15363
15364 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15365
15366         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15367         assert. Should fix #82103.
15368
15369 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15370
15371         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15372         here too. Fixes #82095.
15373
15374         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15375         addresses.
15376
15377         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15378
15379         * mini-amd64.h: Enable IMT for amd64.
15380         
15381         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15382
15383 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15384
15385         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15386
15387 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15388
15389         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15390         as soon as check_linkdemand sets an exception_type.
15391
15392 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15393
15394         * mini-x86.c: fixed offsets for IMT call sequence.
15395         * mini-x86.h: enable IMT again.
15396
15397 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15398
15399         * trace.c (mono_trace_enter_method): Decode MonoType too.
15400
15401         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15402
15403         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15404
15405         * mini-amd64.c: Add preliminary IMT implementation.
15406         
15407 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15408
15409         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15410         understand the new IMT-base interface invocation (thanks to
15411         Daniel Nauck for the report and the remote debugging session).
15412
15413 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15414
15415         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15416
15417 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15418
15419         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15420
15421 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15422
15423         * mini-trampolines.c: implement AOT IMT support.
15424         * mini-x86.h: enable IMT support for wider testing.
15425
15426 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15427
15428         * inssel.brg (emit_imt_argument): Add aot support here.
15429
15430         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15431
15432 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15433
15434         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15435         of the IMT implementation, partially from massi, with my
15436         implementation of the bsearch sequence. Disabled by default until
15437         the AOT code is implemented.
15438
15439 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15440
15441         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15442
15443         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15444
15445 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15446
15447         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15448         arch-independent IMT JIT code from Massimiliano
15449         Mantione (massi@ximian.com) with small cleanups from me.
15450
15451 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15452
15453         * Makefile.am: fix svn invocation to get the svn revision to be
15454         independent of the local language (build fix).
15455
15456 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15457
15458         * mini.c (inline_method): Reset cfg->exception_type if the
15459         inlining is aborted.  Fixes: 82049.
15460
15461 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15462
15463         * mini.c: remove assert from exception handling code when exception_ptr
15464         is not set.
15465
15466 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15467
15468         * mini.c (mono_codegen): Add an assert.
15469
15470         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15471         enter and leave code.
15472         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15473
15474 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15475
15476         * mini-ppc.c: fixed memory corruption for localloc(0)
15477         (bug #81852).
15478
15479 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15480         
15481         * mini.c: Fix warnings.
15482
15483 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15484
15485         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15486         to emit better double->int conversions.
15487
15488 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15489
15490         * mini.c: the provided Min/Max optimizations are valid for unisgned
15491         ints.
15492
15493 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15494
15495         * 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
15496
15497 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15498
15499         * mini.c (mono_running_on_valgrind): Add support for reporting the
15500         method and  its boundaries to valgrind.
15501
15502 2007-06-28  Martin Baulig  <martin@ximian.com>
15503
15504         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15505
15506 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15507
15508         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15509
15510         * generic.2.cs: Add new test case.
15511
15512 2007-06-25  Martin Baulig  <martin@ximian.com>
15513
15514         Merged the `debugger-dublin' branch.
15515
15516         * debug-mini.c
15517         (mono_debugger_insert_method_breakpoint): New public method.
15518         (mono_debugger_remove_method_breakpoint): Likewise.
15519         (mono_debugger_check_breakpoints): New static method.
15520         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15521
15522         * debug-debugger.h (MonoDebuggerInfo):
15523         Renamed (to keep backward compatibility in the vtable):
15524         `insert_breakpoint' -> `old_insert_breakpoint'.
15525         `remove_breakpoint' -> `old_remove_breakpoint'.
15526         `create_string' -> `old_create_string'.
15527         `lookup_class' -> `old_lookup_class'.
15528         `lookup_type' -> removed; changed into a dummy field.
15529         `lookup_assembly' -> `old_lookup_assembly'.
15530         Added (same functionality, but different signature):
15531         `create_string', `lookup_class', `lookup_assembly'
15532         Added new:
15533         `get_method_addr_or_bpt', `remove_method_breakpoint',
15534         `runtime_class_init'.
15535
15536         * debug-debugger.c: Merged the `debugger-dublin' branch.
15537
15538 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15539
15540         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15541         well.
15542         (peephole_pass): Likewise.
15543
15544 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15545
15546         * driver.c: hopefully make setaffinity work also for ancient
15547         versions of linux.
15548
15549 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15550
15551         * driver.c : win32 build fix.
15552
15553 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15554
15555         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15556         processor if it is set.
15557
15558 2007-06-21  Martin Baulig  <martin@ximian.com>
15559
15560         * debug-mini.h: New file.
15561
15562         * debug-mini.c
15563         (mono_debugger_insert_breakpoint_full): Moved here from
15564         ../metadata/mono-debug-debugger.c.
15565         (mono_debugger_remove_breakpoint): Likewise.
15566         (mono_debugger_breakpoint_callback): Likewise.
15567
15568 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15569
15570         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15571         changes in MonoGenericClass.
15572
15573 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15574
15575         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15576
15577 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15578
15579         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15580         removal of MonoGenericMethod.
15581
15582 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15583
15584         * mini-exceptions.c: hooks for the exception events profiling API.
15585
15586 2007-06-14  Randolph Chung  <tausq@debian.org>
15587
15588         * Makefile.ma: Add hppa target.
15589         * mini-arch.h: Include mini-hppa.h
15590         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15591         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15592         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15593
15594 2007-06-14  Randolph Chung  <tausq@debian.org>
15595
15596         * inssel.brg: Add rules for "chained" compare-branch operations so that
15597         a single compare op can affect multiple branches.  Adjust cost for
15598         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15599         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15600         cost for some rules so that they can more easily be overridden by
15601         per-arch rules (with fixes from lupus).
15602         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15603
15604 2007-06-13  Randolph Chung  <tausq@debian.org>
15605
15606         * mini-ops.h: Reorder branch ops so that they match the order of the
15607         corresponding CEE_* ops.  The code expects them this way.
15608         Add new ops for HPPA target.
15609         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15610
15611 2007-06-13  Randolph Chung  <tausq@debian.org>
15612
15613         * mini-exceptions.c: Handle cases where the stack grows towards
15614         larger addresses.
15615         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15616
15617 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15618
15619         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15620         counter.
15621         * driver.c: explain where a non-matching corlib is found.
15622
15623 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15624
15625         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15626
15627 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15628
15629         * mini-exceptions.c: Generate a method profile leave event during
15630         an exception to ensure that the profiler gets notified.
15631
15632 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15633
15634         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15635         branch.
15636
15637         * cpu-amd64.md: Add long_and/or/xor opcodes.
15638
15639 2007-06-06  Wade Berrier  <wberrier@novell.com>
15640
15641         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15642         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15643         length of instruction shr_imm (expected 8, got 10)
15644
15645 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15646
15647         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15648
15649 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15650
15651         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15652         MonoInternalHashTable again (fixed bug in the internal hash table
15653         code).
15654
15655 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15656
15657         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15658         Have to figure out what makes it crash the SWF regression.
15659
15660 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15661
15662         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15663
15664 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15665
15666         * mini.c: optimize out the type check when storing null in a
15667         reference array.
15668
15669 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15670
15671         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15672         MonoInternalHashTable.
15673
15674 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15675
15676         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15677         signed integer methods.
15678
15679 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15680
15681         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15682         permanently since the current approach doesn't work.
15683
15684 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15685
15686         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15687         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15688
15689 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15690
15691         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15692         the sreg2==rdx case.
15693         
15694         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15695         account if it contains a rex prefix.
15696         (peephole_pass): Handle OP_FMOVE as well.
15697
15698 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15699
15700         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15701         as it causes regressions.
15702
15703 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15704
15705         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15706         static case as well.
15707
15708         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15709
15710         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15711         (mono_arch_get_this_arg_from_call): Ditto.
15712
15713         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15714
15715         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15716         invoke_impl field.
15717
15718         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15719         (mono_arch_get_this_arg_from_call): Ditto.
15720
15721         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15722         
15723         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15724         try to create optimized invoke code and use that for further invocations. 
15725         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15726
15727         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15728
15729 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15730
15731         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15732         sealed classes or methods.
15733         *devirtualization.cs: tests for the new optimization
15734
15735 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15736
15737         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15738         by the update_volatile () function.
15739
15740 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15741
15742         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15743         require it.
15744
15745         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15746
15747 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15748
15749         * mini.c: Add configure checks for header files.
15750         * mini-x86.c: Add configure checks for header files.
15751         * trace.c: Add configure checks for header files.
15752         * aot-runtime.c: Add configure checks for header files.
15753         * aot-compiler.c: Add configure checks for header files.
15754         * driver.c: Add configure checks for header files.
15755         * mini-codegen.c: Add configure checks for header files.
15756         
15757         Code is contributed under MIT/X11 license.
15758
15759 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15760
15761         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15762         icompare_imm -128 + op_iclt. Fixes #81703.
15763
15764 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15765
15766         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15767
15768 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15769
15770         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15771         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15772         so that all isinst checks now use "interface_bitmap".
15773
15774 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15775
15776         * cpu-amd64.md (jmp): Fix a warning.
15777
15778         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15779
15780         * basic.cs: Add new regression test.
15781
15782         * basic.cs: Remove test which is now in basic-long.cs.
15783
15784         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15785
15786         * basic-long.cs: Add new test.
15787         
15788 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15789
15790         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15791
15792 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15793
15794         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15795
15796         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15797         places.
15798         
15799         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15800         throwing code a bit.
15801
15802         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15803         the exception throwing code a bit.
15804
15805         * mini-x86.c (get_call_info): Allocate result from a mempool.
15806
15807 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15808
15809         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15810
15811         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15812
15813         * mini.h (MonoCompile): Add 'token_info_hash' field.
15814
15815         * mini.c: Save token->method associations during compilation so the AOT 
15816         compiler can use it.
15817         
15818         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15819         which reference generic classes and methods.
15820
15821 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15822
15823         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15824
15825         * aot-compiler.c (compile_method): Fix a typo in a comment.
15826
15827         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15828
15829         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15830         everything generic.
15831
15832         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15833
15834 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15835
15836         * mini.h (MonoCompile): Add 'args' field.
15837
15838         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15839         into cfg->args.
15840
15841         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15842
15843 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15844
15845         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15846
15847         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15848
15849         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15850         opcodes for some opcodes.
15851
15852         * mini.h *.brg *.c: Use the new opcodes.
15853
15854 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15855
15856         * mini.h: Bumped aot revision.
15857
15858         * inssel.brg: modified code generation of type checks for interfaces
15859         to use the new "MonoClass.interface_bitmap" instead of the old
15860         "MonoClass.interface_offsets".
15861
15862 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15863
15864         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15865
15866 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15867
15868         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15869         64 bit platforms.
15870
15871 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15872
15873         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15874
15875 2007-04-27  Wade Berrier  <wberrier@novell.com>
15876
15877         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15878         mini.h) to fix build.
15879
15880 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15881
15882         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15883         
15884         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15885         causes the corlib unit tests to fail.
15886
15887 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15888
15889         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15890
15891         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15892
15893         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15894         opcodes to the comparison relations.
15895
15896         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15897         opcodes to their types.
15898         
15899         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15900
15901         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15902         it in cfg->arch.cinfo.
15903
15904         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15905
15906         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15907         cfg->cil_offset_to_bb.
15908
15909 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15910
15911         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15912         created becase of initlocals.
15913
15914 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15915
15916         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15917         Sergey Tikhonov <tsv@solvo.ru>.
15918
15919 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15920
15921         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15922
15923 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15924
15925         * cpu-s390.md (break): Correct the length of break instruction.
15926
15927 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15928
15929         * mini.c: fix a couple of soft-float issues and comments.
15930
15931 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15932
15933         * trace.c (is_filenamechar): - is also a filename char.
15934
15935 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15936
15937         * mini-s390.c: Correct checking for enum type in return value processing.
15938
15939 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15940
15941         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15942         (version.h): Makefile is in the build directory.
15943
15944 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15945
15946         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15947
15948 2007-04-11  Martin Baulig  <martin@ximian.com>
15949
15950         * mini.c (can_access_member): Fix handling of generic classes;
15951         fixes #81259.
15952
15953 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15954
15955         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15956
15957 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15958
15959         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15960
15961 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15962
15963         * mini-codegen.c: make sure the right spill amount is
15964         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15965
15966 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15967
15968         * mini-ppc.c: fixes for the fp_branch_nan test.
15969
15970 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15971
15972         * basic.cs: Comment out new test which still fails on ia64.
15973
15974 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15975
15976         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15977
15978 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15979
15980         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15981
15982 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15983
15984         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15985         on 64 bit machines. Fixes part of #80738.
15986
15987         * basic.cs: Add regression test.
15988
15989 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15990
15991         * inssel.brg basic.cs: Revert previous change to fix build.
15992
15993         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15994         platforms.
15995         
15996         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15997
15998         * basic.cs: Add new regression test.
15999
16000 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16001
16002         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
16003         many arguments.
16004
16005 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16006
16007         * cpu-s390x.md: Correct length of break instruction.
16008
16009 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16010
16011         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
16012         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
16013
16014 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
16015
16016         * *.c: Begin WIN64 port.
16017         * mini.c:  Use correct register in profiler.
16018         * mini-amd64.c: No inline assembly on Win64.
16019         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
16020         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
16021         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
16022         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
16023         mono_arch_ip_from_context for Win64.
16024         
16025         Contributed under MIT/X11 license.
16026
16027 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
16028
16029         * exceptions-amd64.c (seh_handler): Ditto.
16030
16031         * exceptions-x86.c (seh_handler): Fix a memory leak.
16032
16033 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
16034
16035         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
16036         mini-s390x.c: fixed peephole optimizations to deal
16037         correctly with 1 and 2 byte reload avoidance.
16038
16039 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
16040
16041         * cpu-s390.md, cpu-s390x.md: update localloc length.
16042
16043 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16044
16045         * cpu-g4.md: added missing descriptions.
16046
16047 2007-03-14  Miguel de Icaza  <miguel@novell.com>
16048
16049         *  Makefile.am: Add support so the tail tests are not executed on
16050         PowerPC as that is a known limitation of the PowerPC port.
16051
16052 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16053
16054         * runmdesc.bat:  Move to msvc directory.
16055         
16056 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16057
16058         * runmdesc.bat:  Run executable that was produced by the current
16059         target and sent via an argument.
16060         
16061 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16062
16063         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16064         #81102.
16065
16066         * generics.2.cs: Add regression test.
16067
16068 2007-03-09  Wade berrier  <wberrier@novell.com>
16069
16070         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16071
16072 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16073
16074         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16075         AOT code depends on this.
16076
16077 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16078
16079         * mini.c: more precise tracking of types in the eval stack
16080         (part of fix for bug #81044).
16081
16082 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16083
16084         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16085
16086         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16087
16088 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16089
16090         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16091
16092         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16093
16094 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16095
16096         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16097         a pointer on 64 bit systems. Fixes #80190.
16098
16099         * iltests.il: Add new regression test.
16100
16101 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16102
16103         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16104
16105 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16106
16107         * trace.c: Remove an erroneous alignemnt check when tracing.
16108           Fixes --trace on OSX86.
16109
16110 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16111
16112         * mini-$(arch).h: initialize SP in context for all the archs.
16113
16114 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16115
16116         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16117         regressions in the thread tests.
16118
16119 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16120
16121         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16122         - fixed implementation of LOCALLOC opcode
16123         - implemented non-un compare for floats
16124         - code cleanup
16125         - implementation of FDIV and CKFINITE opcodes
16126         - fixes for latest mono updates
16127         - additional arch opcodes
16128
16129 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16130
16131         * Makefile.am: simplify and merge rules for cross-compilation.
16132
16133 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16134
16135         * local-propagation.c: Actually *apply* the fix for bug 80591...
16136
16137 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16138
16139         * mini-exceptions.c: backuot part of the last change
16140         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16141
16142 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16143         * inssel.brg: Fix bug 59286.
16144
16145
16146 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16147
16148         * mini-exceptions.c: patch from Zoltan to correctly check for
16149         stack boundaries (using the stack register, not the frame register),
16150         fixes bugs #80724, #79717.
16151
16152 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16153
16154         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16155         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16156
16157         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16158         presence of frame pointer elimination.
16159
16160 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16161         
16162         * mini-x86.h: NetBSD UCONTEX_REG defines.
16163
16164 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16165
16166         * inssel-amd64.brg: Fix amd64 build.
16167
16168 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16169
16170         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16171         on amd64.
16172
16173 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16174
16175         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16176         ends.
16177
16178         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16179
16180 2007-01-30 Mark Mason <mason@broadcom.com>
16181
16182            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16183            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16184            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16185            beginning support for CEE_JMP [not quite working yet]
16186            * tramp-mips.c: LMF handling now works
16187         
16188 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16189
16190         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16191
16192         * mini.h (NULLIFY_INS): New macro.
16193
16194 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16195
16196         * mini.c: statistical profiler fix for windows, patch
16197         from Tor Lillqvist (tml@novell.com).
16198
16199 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16200         * local-propagation.c: Fix bug 80591.
16201
16202 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16203
16204         * Makefile.am: put back the --export-dynamic option as with
16205         the previous gmodule flags (thanks to Robert Jordan).
16206
16207 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16208
16209         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16210
16211         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16212         simplify and speed up the local register allocator. Also rename some fields
16213         like iassign->vassign.
16214         
16215         * regalloc.c: Remove some functions which are no longer used since their
16216         inlined version is in mini-codegen.c.
16217         
16218         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16219
16220         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16221
16222 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16223
16224         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16225         narrowing. Fixes #80622.
16226
16227         * iltests.il: Add new regresssion test. 
16228
16229 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16230
16231         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16232         debug-debugger.c, debug-debugger.h: warning fixes.
16233         * driver.c: updated copyright year and made it fit in one line.
16234
16235 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16236
16237         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16238
16239 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16240
16241         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16242
16243         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16244
16245         * iltests.il: Add new test for bug #80507.
16246
16247 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16248
16249         * mini-arm.h: use soft-float also on vfp for now.
16250
16251 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16252
16253         * mini.c: fix some more soft-float issues.
16254
16255 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16256
16257         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16258
16259 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16260         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16261         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16262         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16263
16264 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16265
16266         * mini-arm.c: typo fix.
16267
16268 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16269
16270         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16271
16272 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16273
16274         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16275         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16276
16277         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16278
16279         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16280
16281         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16282         
16283         * inssel.brg: Fix a warning.
16284
16285         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16286
16287         * abcremoval.c ssa.c ssapre.c: Update after this change.
16288         
16289         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16290
16291         * dominators.c (df_set): Use mono_bitset_union_fast.    
16292
16293 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16294
16295         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16296         mini-codegen.c: reduce relocations and memory usage for the cpu
16297         description.
16298
16299 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16300
16301         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16302
16303         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16304         to reduce their size.
16305
16306 2007-01-19 Mark Mason <mason@broadcom.com>
16307
16308         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16309         * mini-mips.c: more configuration macros, support long conditional branches, additional
16310         asserts, fix epilog instrumentation.
16311         * mini-mips.h: use standard stack walk
16312         * cpu-mips.md: increase size of div, rem and conditional branches
16313         
16314 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16315
16316         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16317         to cpu spec data.
16318
16319 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16320
16321         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16322         (compile_method): Ditto.
16323
16324         * aot-runtime.c (decode_klass_info): Ditto.
16325
16326         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16327         needed by the code generated by inssel.brg. Also fix a warning.
16328
16329 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16330
16331         * mini.c: deal with enums that become genericinsts by
16332         being nested in a generic class (bug #79956).
16333
16334 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16335
16336         * mini.c: match the generic definition to check for
16337         private access with generic types (bug #78431).
16338
16339 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16340
16341         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16342         to make life easier for people cross-compiling that insist on not
16343         using scratchbox.
16344
16345 2007-01-17 Mark Mason <mason@broadcom.com>
16346
16347         * inssel-long.brg: patch to deal with mips missing flags
16348         * inssel-long32-mips.brg: implement overflow checks
16349         * insset-mips.brg: implement overflow checks
16350         * mini-mips.h: implement conditional exception handling
16351         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16352           Remove unused code, minor cleanups.
16353         * exceptions-mips.c: minor cleanups
16354         * mini-ops.h: add mips conditional exception ops
16355         * cpu-mips.md: add mips conditional exception ops
16356
16357         
16358 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16359
16360         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16361         to deal with mips missing of flags.
16362
16363 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16364
16365         * exceptions-ppc.c: execute fault handlers.
16366
16367 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16368
16369         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16370
16371 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16372
16373         * mini.c: handle also floating point values in initialize_array.
16374
16375 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16376
16377         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16378         array initialization and make it conditional on the intrins option.
16379
16380 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16381
16382         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16383         relocations and put the patch info names close to the enum definition.
16384
16385 2007-01-15 Mark Mason <mason@broadcom.com>
16386
16387         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16388
16389 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16390
16391         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16392
16393 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16394
16395         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16396
16397 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16398
16399         * Makefile.am: distribute the mips sources.
16400
16401 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16402
16403         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16404         directly.
16405
16406 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16407
16408         * cpu-x86.md: back out for now as this triggers other regressions.
16409
16410 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16411
16412         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16413         to eax:edx, so ecx can't get allocated to them (bug #80489).
16414
16415 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16416
16417         * mini.c, mini-exceptions.c: enabled running fault handlers
16418         (bug #80469).
16419
16420 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16421
16422         * driver.c: If nothing fail, do not use the string "failed",
16423         because it makes it very annoying to view test result logs on the
16424         web. 
16425
16426 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16427
16428         * debug-debugger.c (mono_debugger_main): Rename "main" to
16429         "main_method" to prevent a warning.
16430
16431         Remove a warning for unused field.
16432
16433 2006-12-28  Martin Baulig  <martin@ximian.com>
16434
16435         * debug-debugger.c
16436         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16437
16438 2006-12-22  Martin Baulig  <martin@ximian.com>
16439
16440         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16441         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16442         seperate `.mdb_debug_info' section, so we can access it from the
16443         debugger even if the binary is stripped.
16444
16445         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16446         from the `.mdb_debug_info' here to prevent the linker from
16447         removing that section.
16448
16449         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16450         mdb-debug-info64.s.
16451
16452 2006-12-19  Robert Jordan  <robertj@gmx.net>
16453
16454         * mini-x86: enable the code to return small structures in
16455         registers for FreeBSD as well. Fixes bug #80278.
16456         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16457
16458 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16459
16460         * mini-x86.c: align the stack when calling the profiler
16461         function instrumenting the prolog (on OSX).
16462
16463 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16464
16465         * mini.c: emit a break opcode where Debugger.Break () is called.
16466
16467 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16468
16469         * mini.c (mono_method_to_ir): Provide useful information on this
16470         assert, to prevent others from debugging like I did.
16471
16472 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16473
16474         * mini.c: enable code which was incorrectly commented
16475         (bug #80235).
16476
16477 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16478
16479         * mini-x86.c: enable on OSX, too, the code to return small
16480         structures in registers.
16481
16482 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16483
16484         * mini-x86.c: remove the use of the dynamic code manager here, too.
16485
16486 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16487
16488         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16489         mono_debugger_create_notification_function() to use
16490         mono_global_codeman_reserve () instead of a dynamic code manager.
16491
16492 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16493
16494         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16495         ves_array_element_address() jit icall and use a generated
16496         managed method instead (which is about 4 times faster for a rank 3
16497         array access).
16498
16499 2006-11-29  Mark Mason  <mason@broadcom.com>
16500
16501         * basic-calls.cs: additional tests for passing
16502         structures as function arguments.
16503
16504 2006-11-29  Mark Mason  <mason@broadcom.com>
16505
16506         * mini-mips.h: disable custom exception handling
16507         * mini-mips.c: throw/rethrow should use jalr to call
16508         exception stubs.  Fixed bug with passing structures
16509         by value. More support for tracing floating point
16510         functions.
16511
16512 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16513
16514         * mini.c: fixed typo in the soft-float ldind.r4 handling
16515         (bug #80086).
16516
16517 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16518
16519         * mini.c, mini.h, driver.c: added --runtime command line
16520         option to select a different runtime than the autodetected one.
16521         * jit.h: added API for embedders to initialize with a specific
16522         runtime version.
16523
16524 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16525
16526         * mini.c: handle also boxing of r4 values (bug #80024).
16527
16528 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16529
16530         * mini-ppc.c: force indirect calls until we reserve
16531         enough address space for all the generated code.
16532
16533 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16534
16535         * exceptions-arm.c: workaround bugs in the libc definition
16536         of struct ucontext.
16537
16538 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16539
16540         * inssel.brg: fixes from me and Mark Mason.
16541
16542 2006-11-23  Dick Porter  <dick@ximian.com>
16543
16544         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16545         semaphore display now we've fixed the initial value
16546
16547 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16548
16549         * inssel.brg: partially revert the last change to fix the build.
16550
16551 2006-11-21  Mark Mason  <mason@broadcom.com>
16552
16553         * inssel.brg: Add and use compare-and-branch macros to support
16554         architectures that do not have condition code registers (ie. MIPS).
16555         * *-mips.{c,brg,md}: Fix copyright statements
16556
16557 2006-11-20  Mark Mason  <mason@broadcom.com>
16558
16559         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16560         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16561         * mini.h: Added declaration for mono_print_ins()
16562         * mini-codegen.c: added ins_spec initializer for MIPS
16563         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16564         vreg to be virtual and hreg to be non-virtual.
16565         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16566         is not yet working/implemented correctly.
16567         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16568         non-static, fixup calls to print_ins() from other parts in the file.
16569
16570 2006-11-20  Mark Mason  <mason@broadcom.com>
16571
16572         * basic-calls.cs: added tests for passing structures as arguments
16573         to calls.
16574
16575 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16576
16577         * inssel-long32.brg: optimize signed division by power of two.
16578
16579 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16580
16581         * mini-arm.c: added support for interworking with thumb code
16582         (mono must be still be built using the ARM instruction encoding).
16583
16584 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16585
16586         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16587         verifier has different rules for it.   Fixes a few verifier issues
16588         in the test suite.
16589
16590         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16591         at the end, so people know what happened.
16592
16593 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16594
16595         * brach-opts.c: in optimize_exception_target() make sure we
16596         are in a catch clause (fixes bug #79871).
16597
16598 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16599
16600         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16601         more soft-float support fixes.
16602
16603 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16604
16605         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16606         that are passed half on the stack and half in registers.
16607
16608 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16609
16610         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16611         more mips integration work from Mark E Mason 
16612         <mark.e.mason@broadcom.com>.
16613
16614 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16615
16616         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16617         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16618         tramp-mips.c: added sources for the mips port, not
16619         integrated in the build yet. Contributed by
16620         Mark E Mason <mark.e.mason@broadcom.com>.
16621
16622 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16623
16624         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16625
16626 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16627
16628         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16629         put the soft-float rules in its own file since it seems to
16630         break s390 compilation.
16631
16632 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16633
16634         * mini-arm.c: fixed wrnings.
16635
16636 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16637
16638         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16639         inssel-arm.brg: ARM support for soft-float.
16640
16641 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16642
16643         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16644         loads and stores of 32 bit fp values.
16645
16646 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16647
16648         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16649
16650         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16651         works. Fixes #79852 and #79463.
16652
16653 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16654
16655         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16656         more soft-float support WIP and fixes.
16657
16658 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16659
16660         * mini-arm.c: some VFP updates.
16661
16662 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16663
16664         * mini-exceptions.c: 0 is a valid local var offset in some
16665         architectures, don't assert (bug #78508).
16666
16667 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16668
16669         * exceptions-arm.c: fixed off by one error in stack walk code.
16670
16671 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16672
16673         * mini.h, mini.c: more precise tracking of type load exceptions.
16674
16675 2006-11-03  Robert Jordan  <robertj@gmx.net>
16676
16677         * Makefile.am: [WIN32] Add monow.exe target.
16678         * driver.c: [WIN32] Don't detach the console when debugging.
16679         Fixes bug #79797.
16680         
16681 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16682
16683         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16684
16685 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16686
16687         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16688
16689         * driver.c (mini_regression): Fix --regression with AOT.
16690
16691         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16692
16693 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16694
16695         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16696
16697         * mini-sparc.h: Don't use sigaction on sparc/linux.
16698
16699         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16700
16701         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16702
16703         * mini-exceptions.c: Add proper include files for getpid ().
16704
16705 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16706
16707         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16708         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16709         method.
16710
16711         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16712         name cache to reduce its size.
16713
16714         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16715
16716 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16717
16718         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16719         the mono_lmf TLS variable.
16720
16721         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16722         trampoline lmf frames.  
16723
16724         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16725
16726 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16727
16728         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16729         the mono_lmf TLS variable.
16730
16731         * mini-exceptions.c: Access the LMF structure through accessors.
16732
16733         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16734         variable instead of in jit_tls->lmf.
16735
16736         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16737         
16738         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16739         trampoline lmf frames.
16740
16741         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16742
16743 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16744
16745        * mini.c trace.c mini-x86.c: Revert these too.
16746         
16747        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16748        signature change.
16749
16750 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16751
16752         * genmdesc.c: removed now dead code.
16753
16754 2006-10-09  Robert Jordan <robertj@gmx.net>
16755
16756         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16757
16758 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16759
16760         * mini.h: do not leave gaps in the opcode values.
16761
16762 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16763
16764         * jit-icalls.h: flag functions as internal here, too.
16765
16766 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16767
16768         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16769         functions with the internal attribute.
16770
16771 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16772
16773         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16774
16775 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16776
16777         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16778         for soft-float.
16779
16780 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16781
16782         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16783         tail calls as on other platforms.
16784
16785         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16786
16787         * iltests.il: Add a few tailcall tests.
16788
16789 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16790
16791         * driver.c: fix loop for old compilers (bug #79521).
16792
16793 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16794
16795         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16796
16797         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16798
16799         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16800         metadata without any code.
16801
16802         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16803         more precise debugging information using gdb.
16804
16805 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16806
16807         * inssel-ia64.brg: Make the helper methods static.
16808
16809 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16810
16811         * inssel-x86.brg: make the helper methods static.
16812
16813 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16814
16815         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16816
16817 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16818
16819         * mini.c: updates for monoburg changes.
16820         * inssel.brg: make a few helper functions static as they should.
16821
16822 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16823
16824         * Makefile.am: Move mini-codegen.c to common_sources.
16825
16826 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16827
16828         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16829         instructions.
16830         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16831         mini-ppc.h: port to use the common local register allocator.
16832
16833 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16834
16835         * mini.h: Remove the comment too then.
16836
16837 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16838
16839         * mini.h: put back backend.data which is to be used shortly and
16840         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16841         pointers on 4 byte boundaries it'd have much bigger issues running
16842         and you can ifdef it out anyway.
16843
16844 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16845
16846         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16847         MonoInst size by 4 bytes on 64 bit machines.
16848
16849 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16850
16851         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16852         replacement with more meaningful field names. Arch maintainers, please
16853         check the assigned names are good enough for your arch.
16854
16855 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16856
16857         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16858         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16859
16860 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16861
16862         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16863         relocations and memory requirements, put the optimization flags
16864         definitions in their own file.
16865
16866 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16867
16868         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16869
16870         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16871
16872 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16873
16874         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16875
16876 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16877
16878         * inssel.brg: use the correct function to get the size of an item
16879         in an array, given an element class.
16880         * aot-compiler.c: do not access class->class_size directly.
16881
16882 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16883
16884         * mini.h, debug-mini.c: added a debugging function to print
16885         info about local variables and arguments in a jitted method.
16886
16887 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16888
16889         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16890
16891         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16892
16893 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16894
16895         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16896         inner and outer loops when passing vtypes.
16897
16898 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16899
16900         * mini-ppc.c: take into account the cpu errata for cache flushing
16901         which caused some random errors (bug #79381).
16902
16903 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16904
16905         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16906         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16907
16908 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16909
16910         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16911         loaded.
16912
16913         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16914         freebsd ports tree.
16915
16916         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16917         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16918
16919         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16920         displacement.
16921
16922 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16923
16924         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16925
16926 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16927
16928         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16929         macro does not have to be changed during debugging.
16930
16931         * 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>.
16932
16933         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16934
16935         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16936         
16937         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16938         MONO_ARCH_NO_EMULATE_MUL is defined.
16939
16940         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16941
16942         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16943
16944         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16945
16946         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16947         
16948 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16949
16950         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16951         stuff to mini-exceptions.c where it is used.
16952
16953         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16954         setup code, the real one is in mini-exceptions.c.
16955
16956         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16957         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16958         some changes from the freebsd ports tree.
16959
16960         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16961         constants.
16962         
16963         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16964
16965 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16966
16967         * mini.c: on Linux, check for /proc to be mounted
16968         (bug# 79351, novell bug#201204).
16969
16970 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16971
16972         * mini.c: handle cases where pthread_attr_getstack() behaves
16973         incorrectly (bug #78096).
16974
16975 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16976
16977         * mini-arm.c: support larger stack frames (bug #79272).
16978
16979 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16980
16981         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16982
16983         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16984         tokens.
16985
16986         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16987         mono_class_from_name () to find a class from its name.
16988
16989         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16990
16991 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16992
16993         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16994
16995 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16996
16997         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16998
16999 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
17000
17001         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
17002         callinfo->trampoline.
17003
17004         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
17005         fixes #79271.
17006         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
17007         future.
17008
17009 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
17010
17011         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
17012
17013 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
17014
17015         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
17016         stats.method_trampolines, it is already done by the generic trampoline code.
17017
17018         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
17019         
17020 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
17021
17022         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
17023
17024         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
17025
17026         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
17027
17028         * mini.c (print_jit_stats): Print mscorlib mempool size too.
17029         
17030         * mini.c (print_jit_stats): Print new stats.
17031
17032         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
17033
17034 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
17035
17036         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
17037         Address on two dimensional arrays. Fixes #78729.
17038
17039         * mini.h (MonoCompile): Add a 'skip_visibility' field.
17040
17041         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
17042         a method.
17043
17044         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
17045
17046         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
17047         #79130.
17048         
17049         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
17050         a race condition.
17051         (mini_get_ldelema_ins): Ditto.
17052
17053 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17054
17055         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17056         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17057         Fixes #79213.
17058
17059 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17060
17061         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17062         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17063
17064         * exceptions-s390x.c: Cosmetic change.
17065
17066         * tramp-s390.c: Fix warning.
17067
17068         * cpu-s390.md: Correct length of mul_imm.
17069
17070 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17071
17072         * aot-compiler.c: added binary writer with ELF backend
17073         implementation (only on Linux/x86 for now).
17074
17075 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17076
17077         * Makefile.am: Don't run net 2.0 AOT tests.
17078
17079         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17080         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17081
17082         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17083
17084 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17085
17086         * aot-compiler.c: simplified and refactored the asm-writing code
17087         to allow different backends.
17088
17089 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17090
17091         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17092
17093         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17094         little. Share patches of type TYPE_FROM_HANDLE as well.
17095
17096         * mini.c (mono_patch_info_equal): New helper function.
17097         (mono_patch_info_hash): Ditto.
17098
17099         * aot-compiler.c (emit_method_code): Fix s390 build.
17100
17101         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17102         is not handled because it is stored as a flag and not as a type ctor. Fixes
17103         #79016.
17104
17105 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * aot-compiler.c: Fix computation of GOT slot statistics.
17108         
17109         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17110         Also remove support for not PIC AOT.
17111
17112         * mini.h: Bump AOT file format version.
17113
17114         * objects.cs: Add a test for #78990.
17115
17116         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17117         (peter.dettman@iinet.net.au). Fixes #79087.
17118
17119         * basic-long.cs: Add a test for the above.
17120
17121 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17122
17123         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17124         
17125         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17126         code somewhat.
17127
17128 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17129
17130         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17131         exceptions.
17132
17133 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17134
17135         * mini.c: Don't verify COM proxy invoke calls
17136         
17137
17138 2006-08-10  Dick Porter  <dick@ximian.com>
17139
17140         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17141         which process is holding semaphores locked.
17142
17143 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17144
17145         * mini-ia64.c mini-amd64.c: Fix #79027.
17146
17147         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17148
17149         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17150
17151         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17152         implicit arguments in a vararg call. Fixes #79027.
17153
17154 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17155
17156         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17157         (mono_get_array_new_va_signature): Ditto.
17158
17159 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17160
17161         * aot-runtime.c: Call init_plt lazily.
17162
17163         * inssel-long.brg: Fix unsigned long->int conversion.
17164
17165         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17166
17167         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17168         that most data is now in the .rss/.data section.
17169
17170 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17171
17172         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17173
17174         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17175
17176         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17177
17178         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17179
17180         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17181         virtual call. Fixes #79010.
17182
17183         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17184         and use the result as the this argument in the real call.
17185
17186         * generics.2.cs: Add a new test for #79010.
17187         
17188 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17189
17190         * mini-x86.c: Fix a warning.
17191
17192         * aot-compiler.c: Add a bunch of statistics.
17193
17194         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17195
17196 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17197
17198         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17199
17200 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17201
17202         * 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>.
17203
17204 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17205
17206         * mini.c (mono_method_to_ir): Obtain the original method in the
17207         CIL stream and use this to perform validation.
17208
17209         Fixed: #78816
17210
17211 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17212
17213         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17214         (mono_arch_call_opcode): Ditto.
17215
17216         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17217         #78826.
17218
17219         * mini.c (mono_patch_info_dup_mp): New helper function.
17220         
17221         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17222         compilation. Fixes #78827.
17223
17224 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17225
17226         * declsec.c: Use original security informations for
17227           MONO_WRAPPER_MANAGED_TO_MANAGED.
17228
17229 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17230
17231         * mini.c: Allow Com Interop methods/classes and
17232         don't verify COM wrapper calls
17233         
17234
17235 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17236
17237         * inssel-long32.brg: Fix long->i4 checked conversion.
17238
17239         * exceptions.cs: Add a test for the above.
17240
17241 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17242
17243         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17244
17245         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17246         leaks.
17247
17248         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17249         #78775.
17250
17251 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17252
17253         * mini.c: Fix solaris/x86 exception handling.
17254
17255         * Makefile.am: Get rid of $(ICU_LIBS).
17256
17257 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17258
17259         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17260         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17261         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17262
17263         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17264
17265         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17266         this function causes a SIGSEGV.
17267
17268 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17269
17270         * mini.c: Remove unused solaris/x86 includes.
17271
17272 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17273
17274         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17275
17276 2006-06-20  Jb Evain  <jbevain@gmail.com>
17277
17278         * cpu-g4.md: fix max length of start_handler instruction.
17279
17280 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17281         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17282
17283 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17284         * ssa.c: Fixed bug 78653 for SSA based deadce.
17285         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17286         MonoInst.flags, used in SSA based deadce.
17287         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17288         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17289
17290 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17291
17292         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17293         it can end up using non executable memory on ppc64 systems
17294         running ppc32 userspace (fix from Johannes Berg).
17295
17296 2006-06-14  Dick Porter  <dick@ximian.com>
17297
17298         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17299         4.1.1
17300
17301 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17302         * mini.c: Made so that inline is locally disabled if it would
17303         trigger a .cctor, because too many apps depend on this behavior
17304         (which seems to be also the one of the MS CLR).
17305
17306 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17307
17308         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17309         No idea why this worked before.
17310
17311         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17312         which branch to outer exception clauses since they could skip the
17313         inner finally clauses. Fixes #78633.
17314
17315         * exceptions.cs: Add a test for the above.
17316
17317         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17318         Fixes #78629.
17319
17320         * iltests.il: Add a test for the above.
17321
17322 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17323
17324         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17325         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17326
17327         * iltests.il: Add a test for the above.
17328
17329 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17330
17331         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17332         
17333         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17334         methods as instrinsics.
17335
17336 2006-06-09  Wade Berrier <wberrier@novell.com>
17337
17338         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17339         (simple-cee-ops.h ssapre-mini-ops.h)
17340
17341 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17342
17343         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17344         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17345         instruction).
17346         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17347         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17348
17349 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17350
17351         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17352
17353 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17354
17355         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17356         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17357         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17358         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17359         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17360         of opcodes, so that bug 78549 should not happen again.
17361         * ssapre.c: Updated to use the renamed files.
17362
17363 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17364
17365         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17366         in OP_ATOMIC_EXCHANGE_I4.
17367
17368 2006-06-07  Wade Berrier <wberrier@novell.com>
17369
17370         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17371         in mono_debugger_create_notification_function)
17372
17373 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17374
17375         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17376         
17377         * mini.c (type_from_stack_type): Disable some changes which do not
17378         seem to work.
17379
17380         * driver.c: Reenable opts.
17381
17382         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17383         of the evaluation stack.
17384         
17385         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17386         evaluation stack trace at entry to the bblock.
17387
17388         * mini.c (merge_stacks): New function to perform verification of stack merges.
17389         Turned off by default.
17390
17391         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17392         STACK_MP.
17393         
17394 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17395
17396         * local-propagation.c: Fixed bug 78549.
17397
17398 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17399
17400         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17401
17402 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17403
17404         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17405         tramp-arm.c, tramp-ia64.c
17406         (mono_debugger_create_notification_function): Update signature to
17407         new signature and use new protocol for creating the notification
17408         function.  
17409
17410         Should fix the build.
17411
17412 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17413
17414         * exceptions-ppc.c (mono_jit_walk_stack)
17415         (ves_icall_get_frame_info): Fix the build
17416
17417 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17418
17419         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17420
17421 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17422
17423         * il2tests.2.il: New file for generics CIL tests.  Add test for
17424         #78019.
17425         * Makefile.am: Update.
17426
17427         Fix #78019
17428         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17429         to nullable types.
17430
17431 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17432
17433         * aliasing.c: Fixed bug 78311.
17434
17435 2006-05-29  Martin Baulig  <martin@ximian.com>
17436
17437         * mini-exceptions.c (mono_find_jit_info): When computing the
17438         native offset, check whether we're actually inside the method's
17439         code; call mono_debug_print_stack_frame() to format the frame.
17440         (ves_icall_System_Exception_get_trace): Call
17441         mono_debug_print_stack_frame() to format the stack frame.
17442         (ves_icall_get_trace): Update to the new debugging API.
17443         (mono_jit_walk_stack_from_ctx): Likewise.
17444         (ves_icall_get_frame_info): Likewise.
17445
17446         * mini.c (get_method_from_ip): Use the new debugging API.
17447         (mono_print_method_from_ip): Likewise.
17448
17449         * exceptions-ppc.c
17450         (mono_jit_walk_stack): Use the new debugging API.
17451         (ves_icall_get_frame_info): Likewise.   
17452
17453 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17454
17455         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17456
17457 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17458
17459         * mini.c: Added "limitator" to inline for debugging.
17460
17461 2006-05-24  Martin Baulig  <martin@ximian.com>
17462
17463         * debug-debugger.c (mono_debugger_init): Create a private,
17464         malloc()-based code manager for the notification function and
17465         intentionally leak it on exit.  This fixes the crash-on-exit race
17466         condition.
17467
17468         * tramp-amd64.c
17469         (mono_debugger_create_notification_function): Added
17470         `MonoCodeManager *' argument.
17471
17472         * tramp-x86.c
17473         (mono_debugger_create_notification_function): Added
17474         `MonoCodeManager *' argument.
17475
17476 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17477
17478         * aliasing.c: Fixed 64 bit issue.
17479         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17480         default since all known bugs are fixed (one more time!).
17481
17482 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17483
17484         * mini.c: write barrier support.
17485
17486 2006-05-23  Martin Baulig  <martin@ximian.com>
17487
17488         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17489         check at the top of the file.
17490
17491 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17492
17493         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17494         reverting changes without reason and without changelog entries.
17495
17496 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17497
17498         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17499         to a few opcodes. Fixes #78439.
17500
17501         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17502         consistency with other archs.
17503
17504         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17505
17506 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17507
17508         * debug-debugger.c: fix the build.
17509
17510 2006-05-17  Martin Baulig  <martin@ximian.com>
17511
17512         * debug-debugger.c
17513         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17514         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17515         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17516         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17517
17518 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17519
17520         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17521
17522 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17523
17524         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17525         MONO_TYPE_GENERICINST.
17526         
17527         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17528         MONO_TYPE_GENERICINST.
17529
17530 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17531
17532         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17533         #78325.
17534
17535 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17536
17537         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17538         mempool.
17539         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17540
17541 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17542
17543         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17544         mono_trace_cleanup ().
17545
17546         * iltests.il: Fix problem with the newly added test.
17547
17548         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17549         due to register constraints, free up the previous hreg. Fixes #78314.
17550
17551         * iltests.il: Add new test for #78314.  
17552
17553         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17554         Interlocked.Add. Fixes #78312.
17555
17556         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17557         
17558 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17559
17560         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17561
17562 2006-05-05  Martin Baulig  <martin@ximian.com>
17563
17564         * debug-mini.c (mono_debug_open_block): New method.
17565
17566         * mini-amd64.c
17567         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17568         the beginning of each basic block.
17569
17570         * mini-x86.c
17571         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17572         the beginning of each basic block.
17573
17574 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17575
17576         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17577         default until I understand why they break the build on amd64.
17578
17579 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17580
17581         * mini.c (mini_cleanup): Call mono_cleanup ().
17582
17583         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17584         errors.
17585
17586 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17587
17588         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17589         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17590         default since all known bugs are fixed, and I cannot reproduce bug
17591         77944... I'm asking Matt Hargett to test again after this commit.
17592
17593 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17594
17595         * mini-codegen.c: Fixed typo that thrashed inline.
17596
17597 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17598
17599         * dominators.c (compute_dominators): Avoid using a worklist since
17600         it is not correct in some cases. Instead, iterate over all bblocks as
17601         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17602
17603 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17604
17605         * mini.c (mono_jit_compile_method_inner): Use
17606         mono_prepare_exception_from_error that resets the value
17607         internally.
17608
17609 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17610
17611         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17612         
17613 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17614
17615         * aliasing.c: Fixed bug 78210.
17616
17617 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17618
17619         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17620         default until all their problems (or the ones they trigger) are fixed.
17621
17622 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17623
17624         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17625         
17626         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17627         as loaded only after resolving patches since that could invoke the same method.
17628
17629         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17630
17631         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17632         functions.
17633
17634         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17635         AOT loader.
17636
17637         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17638         stack.
17639
17640         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17641         made from AOT code through the PLT table.
17642
17643         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17644         holding the plt offset when a call is made to the aot plt trampoline.
17645         
17646 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17647
17648         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17649         amd64 AOT support.
17650
17651         * Makefile.am (common_sources): Fix build breakage.
17652
17653         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17654         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17655         intra-assembly calls if possible.
17656         
17657         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17658
17659         * mini-trampolines.c: Handle PLT entries.
17660
17661         * mini.c: Avoid creating a GOT var for calls.
17662
17663         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17664         from mscorlib code.
17665
17666         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17667         from mscorlib code.
17668
17669         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17670         AOT code.       
17671
17672         * mini.h: Bump AOT file format version.
17673         
17674         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17675         covers more cases.
17676
17677 2006-04-25  Martin Baulig  <martin@ximian.com>
17678
17679         * driver.c: Disable copyprop, consprop and inline when running
17680         inside the debugger.
17681
17682 2006-04-25  Martin Baulig  <martin@ximian.com>
17683
17684         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17685         with `get_current_thread' and added `detach'.
17686         (MonoDebuggerMetadataInfo): Added `thread_size',
17687         `thread_tid_offset', `thread_stack_ptr_offset' and
17688         `thread_end_stack_offset'.
17689
17690 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17691
17692         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17693         aot-runtime.c.
17694
17695         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17696         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17697
17698         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17699
17700         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17701
17702         * aot.c: Add support for ADJUSTED_IID.  
17703
17704 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17705
17706         * aot.c (emit_method_order): Don't align method_order_end.
17707
17708         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17709         the interface ID changes.
17710
17711 2006-04-21  Dick Porter  <dick@ximian.com>
17712
17713         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17714         cleaning up a thread.  Fixes the new part of bug 77470.
17715
17716 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17717
17718         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17719         to managed wrapper.
17720                      
17721 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17722
17723         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17724         
17725         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17726         SIGSEGV. Fixes #78072.
17727
17728         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17729         unregister our SIGABRT handler.
17730
17731 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17732
17733         * mini.c: Disabled inline where it can alter the call stack in a
17734         way visible from managed code.
17735         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17736         default.
17737
17738 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17739
17740         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17741         on other platforms. Fixes #78089.
17742
17743 2006-04-13  Martin Baulig  <martin@ximian.com>
17744
17745         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17746         determine whether we're inside the debugger.
17747
17748         * debug-debugger.h
17749         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17750
17751 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17752
17753         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17754         handler clauses. Fixes #78024.
17755
17756         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17757         in the CALL_MEMBASE opcodes. Fixes #78088.
17758         (mono_arch_get_vcall_slot_addr): Ditto.
17759
17760 2006-04-10  Martin Baulig  <martin@ximian.com>
17761
17762         * debug-debugger.c: The thread handling code has now been moved
17763         into ../metadata/threads.c.
17764
17765 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17766
17767         * driver.c (mono_main): Fix --with-gc=none build.
17768
17769         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17770         (mono_spillvar_offset_float): Ditto.
17771         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17772         hreg, not when its !global, since on ia64, there is a third category: stacked
17773         registers.      
17774
17775 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17776
17777         * mini.c: set MonoInst->klass for load field address and a few other
17778         places.
17779
17780 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17781
17782         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17783
17784 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17785
17786         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17787         the branch opt changes.
17788
17789 2006-04-06  Dick Porter  <dick@ximian.com>
17790
17791         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17792         
17793         * wapihandles.c (mini_wapi_seminfo): 
17794         * driver.c (mono_main): Add semaphore info option
17795
17796 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17797
17798         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17799         branch optimization changes. Fixes #78009.
17800
17801 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17802
17803         * mini.c: ignore accessibility of methods in managed->native wrappers.
17804
17805 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17806
17807         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17808         
17809         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17810
17811 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17812
17813         * mini.c: Modify the branch optimizations to preserve the invariant that
17814         the entries inside the in_bb and out_bb arrays are unique.
17815         (mono_unlink_bblock): Avoid creation of new arrays.
17816
17817 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17818
17819         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17820         change (#77992).
17821
17822 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17823
17824         * mini.c (optimize_branches): Remove the "optimizations" in
17825         the cbranch1/cbranch2 -> branch cases which were causing several
17826         problems in the past. Fixes #77986.
17827
17828 2006-03-31  Chris Toshok  <toshok@ximian.com>
17829
17830         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17831         default optimizations :(
17832
17833 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17834
17835         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17836         branch.
17837
17838 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17839
17840         * local-propagation.c: Added comments to structs and removed
17841         "Mono" prefixes from local tree mover types.
17842
17843 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17844
17845         * Makefile.am (arch_sources): Define this for each architecture so 
17846         libmono_la_SOURCES is defined in one place.
17847
17848 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17849
17850         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17851         from handles/.
17852
17853 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17854
17855         * driver.c: print the GC name supplied by configure.
17856
17857 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17858
17859         * local-propagation.c: Added tree mover, and moved here all the
17860         local propagation code from mini.c
17861         * mini.c: Added support for treeprop, and moved all the local
17862         propagation code to local-propagation.c
17863         * mini.h: Added support for treeprop
17864         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17865         treeprop, inline and deadce by default
17866         * Makefile.am: Added local-propagation.c
17867
17868 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17869
17870         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17871
17872 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17873
17874         * debug-debugger.c: make it compile without the Boehm GC.
17875
17876 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17877
17878         * mini.c: fixed issue with mismatch when an icall is registered
17879         with multiple names but same address.
17880
17881 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17882
17883         * declsec.c, mini-exceptions.c: use write barrier to set reference
17884         fields of managed objects.
17885
17886 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17887
17888         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17889         (can_access_internals): Fix a warning.
17890
17891         * mini.c (print_method_from_ip): Rename this to 
17892         mono_print_method_from_ip so it gets exported.
17893
17894         * trace.c: Deal with strings inside StringBuilder's containing garbage
17895         and fix memory leaks. Fixes #77848.
17896
17897 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17898
17899         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17900         fixes #77787.
17901
17902 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17903         
17904         * mini-s390.c: Remove OP_X86_TEST_NULL.
17905
17906 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17907
17908         * mini.c: use the correct GetHashCode() for the moving collector.
17909
17910 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17911
17912         * liveness.c: Regalloc spill cost tuning.
17913
17914 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17915         
17916         * mini-s390x.h: Correct S390_LONG macro.
17917
17918         * mini-s390x.c: Cleanup unused code.
17919
17920 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17921
17922         * jit-icalls.h: New file.
17923
17924         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17925         icalls and include that instead of including jit-icalls.c.
17926
17927         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17928         OP_X86 opcodes.
17929
17930 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17931
17932         * mini.c: when checking for member accessibility, also check for
17933         friend assemblies and for explicit interface implementations.
17934
17935 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17936
17937         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17938
17939         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17940
17941         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17942         common cases are done first.    
17943
17944         * mini-ops.h: Only define platform specific opcodes on the given platform.
17945
17946         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17947         branch.
17948         
17949 2006-03-14  Martin Baulig  <martin@ximian.com>
17950
17951         Revert Paolo's change from r57348:
17952
17953         * mini.h: don't use gboolean for bitfields.
17954         * mini.c: verifier changes for fields and methods accessibility.
17955
17956 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17957
17958         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17959
17960         * mini-s390x.c: Fix conv_r_un.
17961
17962         * cpu-s390, cpu-s390x.md: Fix lengths.
17963
17964 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17965
17966         * mini.c: nested types have access to all the nesting
17967         levels, not just the enclosing types.
17968
17969 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17970
17971         * mini.c: added a few more verification checks.
17972
17973 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17974
17975         * liveness.c: Merge optimizations from the linear-il branch.
17976
17977 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17978
17979         * mini-ia64.c (emit_call): Add a comment.
17980
17981         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17982
17983         * tramp-ia64.c: Fix some warnings.
17984
17985 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17986
17987         * mini.h: don't use gboolean for bitfields.
17988         * mini.c: verifier changes for fields and methods accessibility.
17989
17990 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17991
17992         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17993         lazy icall wrapper changes.
17994
17995         * dominators.c: Replace all the dominator algorithms with faster
17996         ones from the linear-il branch.
17997
17998         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17999         the mempool.
18000
18001         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18002         common cases are done first.
18003
18004         * mini-amd64.c: Fix some warnings.
18005
18006         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
18007         from the mempool.
18008
18009         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
18010         added code.
18011
18012         * mini.h: Add a missing prototype.
18013
18014 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
18015
18016         * mini.c: Compile icall wrappers lazily.
18017
18018         * mini-codegen.c: Use printf instead of g_print since its much faster.
18019
18020         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
18021         function.
18022
18023         * mini.c (optimize_branches): Cache the negative result from 
18024         remove_block_if_useless ().
18025
18026         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
18027         Also fix some bblock linking issues.
18028
18029         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
18030         assembly files.
18031
18032         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
18033
18034         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
18035         accessed fields first, for better cache behavior.
18036         
18037 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18038
18039         * mini.c: speedup IList<T> array accesses.
18040
18041 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
18042
18043         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
18044         inline_costs counter. Fixes #77190.
18045
18046 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
18047
18048         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
18049         trace messages. Fixes #77706.
18050
18051 2006-03-04  Martin Baulig  <martin@ximian.com>
18052
18053         * tramp-amd64.c, tramp-x86.c
18054         (mono_debugger_create_notification_function): Use
18055         mono_global_codeman_reserve() to allocate a buffer at runtime and
18056         return it.
18057
18058         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18059
18060         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18061         notification function at runtime and then call `initialize' in the
18062         `MONO_DEBUGGER__debugger_info' vtable.
18063
18064 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18065
18066         * iltests.il: Fix a visibility problem.
18067
18068 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18069
18070         * driver.c, mini.c: add hooks for the counters API.
18071
18072 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18073
18074         * driver.c: show disabled options.
18075
18076 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18077
18078         * linear-scan.c: always use cost-driven selection.
18079
18080 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18081
18082         * jit-icalls.c (helper_compile_generic_method): Revert change from
18083         2006-02-24.
18084
18085 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18086
18087         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18088
18089 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18090
18091         * inssel.brg: style fixes, mostly to force the updated monoburg
18092         to run for people using svn.
18093
18094 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18095
18096         * mini.c: match monoburg changes.
18097
18098 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18099
18100         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18101         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18102         declaration in the header file.
18103
18104 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18105
18106         * helpers.c: reduce relocations and mem usage.
18107
18108 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18109
18110         * mini.h, mini-codegen.c: disable logging features if
18111         requested by configure.
18112
18113 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18114
18115         * mini.c: tiny verifier changes.
18116
18117 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18118
18119         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18120         cpu-pentium.md: stack alignment changes for osx/x86,
18121         partially from Geoff Norton <gnorton@customerdna.com>.
18122
18123 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18124
18125         * jit-icalls.c (helper_compile_generic_method): Update to changes
18126         in metadata/class.c.
18127
18128 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18129         
18130         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18131         
18132         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18133         interface calls with large offsets.
18134
18135 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18136
18137         * jit-icalls.c (helper_compile_generic_method): Document the
18138         special-case we depend on so that we can inflate the method twice
18139         with the same context with no bad side-effects.
18140
18141 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18142
18143         * mini-x86.c, mini-amd64.c: fix for case when xen support
18144         is disabled.
18145
18146 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18147
18148         * mini-x86.c, mini-amd64.c: generate code to access tls items
18149         in a faster way for Xen systems.
18150
18151 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18152
18153         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18154         updates and compilation fixes for the OSX/x86 port, mostly from
18155         Geoff Norton <gnorton@customerdna.com>.
18156
18157 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18158
18159         * inssel.brg: faster interface call implementation
18160         to sync with the interface_offsets MonoVTable changes.
18161
18162 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18163
18164         * mini.c: more verification checks.
18165
18166 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18167
18168         * mini.c: added a few more verification checks.
18169
18170 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18171
18172         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18173         facility on the processor and use it if available.
18174
18175 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18176
18177         * driver.c, aot.c, mini.c: throw exception if the IL code is
18178         invalid or unverifiable.
18179
18180 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18181
18182         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18183         m.StructField.
18184
18185 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18186
18187         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18188
18189 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18190
18191         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18192         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18193         handling of instantiated generic valuetypes.
18194
18195 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18196
18197         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18198         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18199         instead.
18200
18201         * generics.2.cs: Revert the nullable reftypes tests.
18202
18203 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18204
18205         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18206         using __builtin_frame_address (1) as it doesn't work in the presence
18207         of optimizations. Hopefully fixes #77273.
18208
18209         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18210         -> generics.cs change as it doesn't work with some automake versions.
18211
18212 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18213
18214         * mini.c: handle systems that sue a different way to
18215         retrieve the stack address of the current thread.
18216
18217 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18218
18219         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18220         it specially in the makefile.
18221
18222         * generics.2.cs: Add tests for nullable reference types.
18223
18224 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18225
18226         * mini.c: always handle the case when mono_jit_init()
18227         is called in a thread different from the main thread,
18228         confusing libgc (bug #77309).
18229
18230 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18231
18232         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18233
18234 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18235
18236         * mini.c: change optimize_branches () to use a single loop
18237         and introduce a new optimization to simplify some range checks.
18238
18239 2006-02-03  Martin Baulig  <martin@ximian.com>
18240
18241         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18242         and merged with debugger_thread_manager_add_thread().
18243         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18244         inform the debugger about the main thread.
18245
18246 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18247
18248         * basic.cs: Add test for div.un/rem.un constant folding.
18249
18250 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18251
18252         * cpu-s390x.md: correct int_xor_imm length
18253
18254 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18255
18256         * generics.2.cs: New test for #77442.
18257
18258         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18259         #77442.
18260
18261 2006-02-02  Martin Baulig  <martin@ximian.com>
18262
18263         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18264         <mono/metadata/mono-debug-debugger.h>   
18265
18266         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18267
18268 2006-02-02  Martin Baulig  <martin@ximian.com>
18269
18270         * debug-debugger.h: New header file for debug-debugger.c.
18271
18272         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18273         function is a separate thread anymore; add support for attaching.
18274
18275 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18276
18277         * tramp-x86.c: Fix a warning.
18278
18279 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18280
18281         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18282         on very large methods.
18283
18284         * aot.c (load_patch_info): Fix a warning.
18285
18286 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18287
18288         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18289         mini-ops.h: alu membase optimizations.
18290
18291 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18292
18293         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18294         to speedup StringBuilder.
18295
18296 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18297
18298         * dominators.c (mono_compute_natural_loops): Fix detection of
18299         loop body start blocks.
18300
18301         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18302
18303 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18304
18305         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18306         #75145.
18307
18308 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18309
18310         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18311
18312 2006-01-25  Martin Baulig  <martin@ximian.com>
18313
18314         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18315         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18316         started to cleanup this file a little bit.
18317
18318 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18319
18320         * mini.c: optimize a codepath frequently happening in generics code.
18321
18322 2006-01-23  Martin Baulig  <martin@ximian.com>
18323
18324         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18325
18326         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18327         functions directly.
18328
18329         * driver.c: debug-debugger.c is only available if
18330         `MONO_DEBUGGER_SUPPORTED' is defined.   
18331
18332 2006-01-23  Martin Baulig  <martin@ximian.com>
18333
18334         * debug-debugger.c: Only enable this on platforms where the Mono
18335         Debugger is working (x86 and x86_64).
18336
18337 2006-01-21  Martin Baulig  <martin@ximian.com>
18338
18339         The Mono Debugger is now using the normal `mono' instead of the
18340         `mono-debugger-mini-wrapper' when executing managed code.
18341
18342         * debug-debugger.c: New file; previously known as
18343         debugger/wrapper/wrapper.c.
18344
18345         * debug-mini.c (mono_init_debugger): Removed.
18346
18347         * driver.c (mono_main): Added new `--inside-mdb' command line
18348         argument which is used when running inside the debugger.
18349
18350 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18351
18352         * liveness.c (mono_analyze_liveness): Remove some unused data
18353         structures.
18354
18355 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18356
18357         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18358
18359 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18360
18361         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18362         depends on implementation details of monobitset.
18363
18364         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18365         Fixes #77271.
18366
18367 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18368
18369         * liveness.c: Update after monobitset changes.
18370
18371 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18372
18373         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18374
18375 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18376
18377         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18378
18379         * mini-s390x.c: Remove warning messages.
18380
18381 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18382
18383         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18384
18385 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18386
18387         * generics.2.cs: Add ldelem/stelem_any test.
18388
18389 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18390
18391         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18392
18393 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18394
18395         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18396         
18397 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18398
18399         * generics.2.cs: Reenable vtype tests.
18400
18401         * inssel-x86.brg: Remove an icorrect valuetype rule.
18402
18403 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18404
18405         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18406         initial support for OP_ABS.
18407
18408 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18409
18410         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18411
18412 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18413
18414         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18415         conversion and implement LADD/LSUB.
18416
18417         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18418         architectures.
18419
18420 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18421
18422         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18423
18424         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18425         architectures.
18426
18427 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18428
18429         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18430         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18431         (stack walk problem).
18432
18433 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18434
18435         * aot.c (mono_aot_load_method): Fix a warning.
18436
18437 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18438
18439         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18440
18441 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18442
18443         * iltests.il: Add test for #77148.
18444
18445         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18446         #77148.
18447
18448 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18449
18450         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18451
18452 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18453
18454         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18455         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18456
18457         * basic-long.cs: Add lconv-to-r4/r8 tests.
18458
18459 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18460
18461         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18462
18463         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18464         here as on other archs.
18465
18466 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18467
18468         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18469
18470 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18471
18472         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18473         
18474         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18475
18476         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18477         instrument_prolog; Add memory_barrier instruction.
18478
18479 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18480
18481         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18482
18483 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18484
18485         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18486
18487         * aliasing.c inssel.brg: Fix warnings.
18488
18489         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18490         could skip initialization of some parts of memory.
18491
18492         * mini.c mini-ia64.c: Fix warnings.
18493
18494         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18495
18496 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18497
18498         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18499         a crash seen on sparc.
18500
18501         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18502         
18503         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18504
18505 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18506
18507         * mini-ops.h: Add s390_backchain instruction
18508
18509         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18510
18511         * cpu-s390.md: Add s390_backchain instruction
18512
18513         * mini-s390.c: Significant ABI changes
18514
18515         * mini-s390.h: Cater for zero length structures
18516
18517 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18518
18519         * mini-s390.c: ABI fixes
18520
18521         * inssel-s390.brg: Remove debug statements
18522
18523         * cpu-s390.md: Fix length of ATOMIC_xx operations
18524
18525 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18526
18527         * basic-float.cs: Add float<->long conversion tests.
18528
18529 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18530
18531         * mini-s390.c: Fix LOCALLOC processing.
18532
18533         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18534
18535 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18536
18537         * iltests.il: Add tests for some opcodes not covered by the other
18538         tests.
18539
18540 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18541
18542         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18543         register loading for Tail processing; Correct trace output.
18544
18545         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18546
18547         * cpu-s390.md: Correct size of jmp instruction. 
18548
18549 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18550
18551         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18552
18553 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18554
18555         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18556           Bring s390 up to current level.
18557
18558 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18559
18560         * generics.2.cs: Disable the newly added tests as they do not work yet.
18561         
18562         * generics.2.cs: Add valuetype tests.
18563
18564 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18565
18566         * basic-long.cs: Add i4->u8 test.
18567
18568         * objects.cs: Add tests for JIT intrinsic.
18569
18570         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18571         optimizations lost by a mistake.
18572
18573 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18574
18575         * basic-long.cs: Remove a test moved to objects.cs.
18576
18577         * arrays.cs: Add more array tests.
18578
18579 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18580
18581         * arrays.cs: Add new tests for multi-dimensional arrays.
18582
18583 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18584
18585         * Makefile.am (test_sources2): Add generics.2.cs.
18586         (EXTRA_DIST): Add test_sources2.
18587
18588 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18589
18590         Support for boxing and unboxing nullable types as well as the
18591         isinst operation on nullables, per the CLI ammendment.
18592
18593         * inssel.brg (CEE_ISINST): Special case for nullable
18594
18595         * mini.c (handle_unbox_nullable): new method
18596         (handle_box): Special case for nullable types
18597         (mono_method_to_ir): Call handle_unbox_nullable in correct
18598         places.
18599
18600         * generics.2.cs: New test suite
18601
18602         * Makefile.am: Support for regression tests with generics.
18603
18604 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18605
18606         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18607         allocated to registers. Fixes #76800.
18608
18609 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18610
18611         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18612
18613 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18614
18615         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18616         of platforms.
18617
18618 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18619
18620         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18621         objects.cs.
18622
18623         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18624         
18625         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18626 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18627
18628         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18629         single precision before storing to a single precision location.
18630
18631 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18632
18633         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18634
18635 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18636
18637         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18638         correct files.
18639
18640         * basic.cs: Remove test_0_byte_compares test which was moved to
18641         objects.cs a long time ago.
18642
18643 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18644
18645         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18646
18647 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18648
18649         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18650         handlers are called.
18651
18652         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18653         throwing code.
18654
18655          * mini-ia64.c: Add support for the throw->branch exception 
18656         optimization.   
18657
18658         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18659
18660 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18661
18662         * mini.c: Enabled "fastpath" deadce :-)
18663         
18664 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18665
18666         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18667         alias analysis pass to support it.
18668         * mini.h: Likewise.
18669         * ssa.c: Likewise.
18670         * liveness.c: Likewise (liveness computation can use aliasing
18671         information to be more accurate).
18672         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18673         moreover made so that "--compile-all" uses the given optimization
18674         flags and not the default ones.
18675         * aliasing.c: Alias analysis (new file).
18676         * aliasing.h: Likewise.
18677         * Makefile.am: added "aliasing.c" and "aliasing.h".
18678         
18679 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18680
18681         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18682         OP_L opcodes.
18683
18684 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18685
18686         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18687         fp >= end_of_stack exit condition, as it is not needed, and it might
18688         become true for fp eliminated frames.
18689
18690 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18691
18692         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18693         coded offsets.
18694
18695 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18696
18697         * mini-arm.c: fixed alignment of doubles/longs to match
18698         the C ABI (bug #76635).
18699
18700 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18701
18702         * aot.c: fix compilation with --enable-minimal=aot.
18703
18704 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18705
18706         * mini-arm.c: fixed compatibility with the new
18707         floating point emulator package for compares.
18708
18709 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18710
18711         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18712
18713 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18714
18715         * mini-exceptions.c (print_stack_frame): Output to stderr.
18716         (mono_handle_native_sigsegv): Ditto.
18717
18718 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18719
18720         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18721         OP_LCONV_TO_OVF_I implementation.
18722
18723         * mini-amd64.c: Add support for the throw->branch exception 
18724         optimization.
18725
18726         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18727         when the catch clause catches a more general exception, i.e. Object.
18728
18729 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18730
18731         * cpu-ia64.md: Remove unused opcodes.
18732
18733         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18734         specific defines for architectures defining USE_SIGACTION.
18735
18736         * mini-ia64.c: Fix some warnings.
18737
18738         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18739         version seemed to skip a frame.
18740
18741 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18744         only calls which are made to native code use this flag.
18745
18746 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18747
18748         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18749         varargs methods as well.
18750         
18751         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18752         which have save_lmf set. Reorganize methods prologs a bit.
18753
18754         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18755         debugger to the proper place.
18756
18757 2005-10-29  Martin Baulig  <martin@ximian.com>
18758
18759         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18760         when running inside the debugger until the debugger has support
18761         for it.
18762
18763 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18764
18765         * mini.h: Fix a warning.
18766
18767 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18768
18769         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18770         we expose publicly, this returns the string.
18771
18772 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18773
18774         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18775         with fp elimination.
18776
18777 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18778
18779         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18780         native stacktrace using the glibc 'backtrace' function if available.
18781
18782 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18783
18784         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18785
18786         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18787         handle SIGSEGVs received while in native code.
18788
18789         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18790         code, call mono_handle_native_sigsegv which will abort the runtime
18791         after printing some diagnostics, instead of converting it into a
18792         confusing NullReferenceException.
18793
18794 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18795
18796         * cpu-pentium.md: Remove unused opcodes.
18797
18798 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18799
18800         * mini-amd64.h (MonoLMF): Add rsp field.
18801
18802         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18803         the lmf too.
18804
18805 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18806
18807         * mini-codegen.c (get_register_spilling): Fix some warnings.
18808
18809 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18810
18811         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18812         elimination during exception handling. Enable fp elimination by
18813         default.
18814
18815         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18816         elimination.
18817
18818 2005-10-16  Martin Baulig  <martin@ximian.com>
18819
18820         * mini-exceptions.c
18821         (mono_debugger_run_finally): New public method for the debugger.
18822
18823 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18824
18825         * debug-mini.c (mono_debug_init_method): Fix warning.
18826
18827         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18828         the 'exname' parameter const to fix some warnings.
18829
18830 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18831
18832         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18833         introduced by the previous patch.
18834
18835 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18836
18837         * basic-float.cs: Add test for precision of float arithmetic.
18838
18839         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18840         when loading/storing single values from/to memory.
18841
18842         * mini.c (mono_jit_compile_method_with_opt): Create the function
18843         pointers in the correct domain.
18844
18845 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18846
18847         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18848         introduced by previous patch.
18849         
18850         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18851         when out_filter_idx is NULL.
18852
18853         * mini-exceptions.c: Don't run filter clauses twice during exception
18854         handling. Fixes #75755.
18855
18856 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18857
18858         * aot.c: Add support for ldflda wrappers.
18859
18860         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18861         #75902.
18862
18863 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18864
18865         * mini.c, mini.h: do not consider exception handlers blocks when
18866         setting up interface variables.
18867
18868 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18869
18870         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18871
18872 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18873
18874         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18875         causes a regression.
18876
18877         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18878
18879 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18880
18881         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18882         of the OP_P definitions.
18883
18884         * TODO: Add a proposal for dealing with the CEE/OP mess.
18885
18886         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18887         optimizations from the x86 port.
18888
18889         * cpu-amd64.md: Ditto.
18890
18891         * basic.cs basic-long.cs: Add tests.
18892
18893 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18894
18895         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18896         Patrik Torstensson's implementation of my exception-handling
18897         optimization idea, when the exception object is not used
18898         (bug #62150).
18899
18900 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18901
18902         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18903         of the mul_imm optimizations from the old jit.
18904
18905 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18906
18907         * mini.c, liveness.c: patch by Patrik Torstensson and
18908         Zoltan Varga to improve performance in methods with
18909         exception clauses.
18910
18911 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18912
18913         * driver.c: Remove 'Globalization' entry from --version.
18914
18915 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18916
18917         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18918         there is a profiler interested in JIT events.
18919
18920         * aot.c: Load profile files produced by the AOT profiling module, and
18921         reorder methods based on the profiling info. Add a 'method_order' table
18922         to the AOT file to make mono_aot_find_jit_info work with the reordered
18923         methods.
18924
18925         * mini.h: Bump AOT file version info.
18926
18927 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18928
18929         * mini-arm.h: work around what looks like a gcc bug when optimizations
18930         are enabled.
18931
18932 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18933
18934         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18935         conditionals.  Use ...
18936         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18937
18938 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18939
18940         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18941         to determine the amount of memory to copy when passing valuetypes.
18942
18943         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18944         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18945
18946 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18947
18948         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18949         information about aot.
18950
18951 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18952
18953         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18954         macros. This will allow a deadlock debugger to easily be plugged
18955         in.
18956
18957 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18958
18959         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18960
18961 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18962
18963         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18964         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18965         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18966         ($(arch_built)) [CROSS_COMPILING]: Error out.
18967
18968 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18969
18970         * aot.c: Add support for the no_special_static flag for classes.
18971
18972 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18973
18974         * Reapply reverted patches.
18975
18976         * *: Revert r50174 as well.
18977
18978         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18979
18980 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18981
18982         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18983
18984 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18985
18986         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18987         part of the SIG_HANDLER_SIGNATURE.  
18988
18989 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18990
18991         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18992         statistics.
18993
18994         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18995         introduced by previous patch.
18996
18997 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18998
18999         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
19000         saved registers too.
19001
19002         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
19003         upon the information returned by get_call_info ().
19004         
19005         * mini-x86.c (add_float): Fix stack size calculation.
19006         (mono_arch_call_opcode): Rewrite this so it works based up the
19007         information returned by get_call_info ().
19008         (mono_arch_get_this_vret_args): Ditto.
19009
19010 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
19011
19012         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
19013         in cinfo to determine the registers which need to be used.
19014
19015 2005-09-20  Miguel de Icaza  <miguel@novell.com>
19016
19017         * driver.c (mono_main): Add --server and --desktop flags. 
19018
19019 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
19020
19021         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
19022         registers as global registers.
19023
19024         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
19025         longer needed with the new register allocator.
19026
19027         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
19028
19029         * cpu-ia64.md: Remove unused opcodes.
19030         
19031         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
19032         
19033 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
19034
19035         * cpu-amd64.md: Remove unused opcodes.
19036
19037         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
19038         needed with the new register allocator.
19039
19040         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
19041         reg-reg moves.
19042
19043 2005-09-16  Raja R Harinath  <rharinath@novell.com>
19044
19045         * Makefile.am (check-local): Don't invoke semdel-wrapper.
19046
19047 2005-09-16  Martin Baulig  <martin@ximian.com>
19048
19049         * exceptions-amd64.c
19050         (throw_exception): Don't call mono_debugger_throw_exception() if
19051         we're a rethrow - see the FIXME in the code.
19052
19053 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19054
19055         * mini.c (mono_init_exceptions): This only works on some architectures.
19056         
19057 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19058
19059         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19060         on ia64.
19061
19062         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19063
19064         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19065         now in mini-exceptions.c.
19066
19067 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19068
19069         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19070         now in mini-exceptions.c.
19071
19072 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19073
19074         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19075         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19076
19077         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19078         code into mini-exceptions.c. Add some assertions to it.
19079
19080 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19081
19082         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19083         (<software@solmersa.com>). Fix as errors on windows.
19084
19085 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19086
19087         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19088         method info into the LMF.
19089
19090 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19091         
19092         * mini-ia64.c: Add proper unwind info for method epilogs.
19093
19094         * exceptions-ia64.c: Add some code to help debugging.
19095         
19096         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19097
19098         * mini-exceptions.c: Fix warning.
19099
19100 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19101
19102         * mini.c: Really fix build.
19103
19104         * mini-x86.c mini-amd64.c: Fix build.
19105
19106 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19107
19108         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19109
19110         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19111         some Interlocked methods as intrinsics.
19112
19113         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19114         for Thread methods as well.
19115
19116         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19117
19118         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19119
19120         * mini-ia64.c mini-x86.c mini-amd64.c 
19121         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19122         OP_MEMORY_BARRIER.
19123         
19124         * mini.c (mono_init_exceptions): Fix build breakage.
19125
19126 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19127
19128         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19129         of instructions. Use the new ia64_unw_op macros for emitting unwind
19130         info.
19131
19132         * mini.c (mono_init_exceptions): Initialize exception handling
19133         related trampolines at startup.
19134
19135 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19136
19137         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19138
19139 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19140
19141         * mini.c: Handle type loading errors gracefully during compilation and
19142         throw the appropriate exception.
19143
19144 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19145
19146         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19147         for the mono binary.
19148
19149 2005-09-09  Martin Baulig  <martin@ximian.com>
19150
19151         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19152         the release.
19153
19154 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19155
19156         * mini-arm.h: use emulation for conv.r.un for the release.
19157
19158 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19159
19160         * mini-arm.c, objects.cs: more fixes and tests for them.
19161
19162 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19163
19164         * mini-arm.c: align structures to at least 4 bytes to be able
19165         to keep our current optimized memcpy.
19166
19167 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19168
19169         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19170
19171 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19172
19173         * mini.c: ignore SIGPIPE.
19174
19175 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19176
19177         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19178
19179         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19180
19181 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19182
19183         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19184
19185 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19186
19187         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19188         exception handling support.
19189         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19190         patch by Brian Koropoff <briank@marakicorp.com>).
19191
19192 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19193
19194         * mini.c: revert another 'optimization' which breaks when
19195         items on the eval stack need to be saved at a basic block end
19196         (bug #75940).
19197
19198 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19199
19200         * jit-icalls.c: for arrays, ensure we always provide
19201         lower bounds.
19202
19203 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19204
19205         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19206         
19207         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19208
19209 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19210
19211         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19212         arguments in their original register.
19213
19214 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19215
19216         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19217         memset/memcpy.
19218
19219         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19220         when ssapre is enabled.
19221
19222         * inssel-long.brg: Fix bug in previous patch.
19223
19224         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19225         multiplication by a constant.
19226
19227 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19228
19229         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19230         icc.
19231
19232         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19233         saving registers.
19234
19235 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19236
19237         * inssel-arm.brg: apply changes tested by Brian Koropoff
19238         <briank@marakicorp.com>.
19239
19240 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19241
19242         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19243         
19244 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19245
19246         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19247         to the same register if dreg is just a base register.
19248         (print_ins): Improve printing of membase opcodes.
19249
19250         * inssel-x86.brg: Add optimized ldind(reg) rules.
19251
19252         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19253
19254 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19255
19256         * mini.c: when running under valgrind, set the stack bottom for
19257         the GC at the actual approximate stack for the app (fixes running
19258         mono with valgrind).
19259
19260 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19261
19262         * mini.c: do no break at the first valuetype to init found
19263         (fixes bug #75791).
19264
19265 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19266
19267         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19268
19269 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19270
19271         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19272
19273 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19274
19275         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19276
19277 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19278
19279         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19280
19281         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19282         code.
19283
19284         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19285         code.
19286
19287         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19288         methods.
19289
19290 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19291
19292         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19293
19294 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19295
19296         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19297         in the tail recursion optimization.
19298
19299         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19300         debug info into the assembly file.
19301
19302         * iltests.il: Add test for filter regions.
19303
19304         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19305         initial stack of filter regions. Fixes #75755.
19306
19307 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19308
19309         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19310         stack requirements.
19311
19312 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19313
19314         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19315         the check for an already compiled method on non-ia64 platforms.
19316         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19317         proper domain.
19318
19319         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19320
19321         * inssel-x86.brg: Add some optimized call rules.
19322
19323 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19324
19325         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19326         method here.
19327
19328         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19329         mono_arch_patch_delegate_trampoline.
19330
19331         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19332
19333         * mini-trampolines.c: Fix build.
19334
19335         * mini-amd64.h: Add delegate trampolines.
19336
19337         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19338
19339         * inssel-amd64.brg: Add optimized call rules.
19340         
19341         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19342
19343         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19344
19345 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19346
19347         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19348         change.
19349
19350         * mini-ia64.c: Remove LMF fixmes.
19351
19352         * mini-ia64.h: Remove most fields from LMF.
19353
19354         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19355
19356         * mini-trampolines.c: Add support for IA64 function descriptors.
19357
19358         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19359         for IA64 function descriptors.
19360
19361 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19362
19363         * tramp-arm.c: patch the vtable for virtual calls. Added
19364         support code to register/unregister the LMF.
19365         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19366         more LMF work.
19367
19368 2005-08-19  Dick Porter  <dick@ximian.com>
19369
19370         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19371         bit value if needed.
19372
19373 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19374
19375         * mini.c (mini_get_method): Move handling of wrapper data here.
19376
19377         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19378
19379         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19380         virtual.
19381
19382         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19383         bblock->code does not remain empty.
19384
19385 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19386
19387         * arrays.cs: Add regression test for #75832.
19388
19389         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19390         rules. Fixes #75832.
19391
19392         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19393         instruction scheduling.
19394
19395 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19396
19397         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19398
19399 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19400
19401         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19402
19403         * mini-codegen.c: Fix VC build.
19404
19405         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19406
19407 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19408
19409         * mini.h: fix signature for mono_register_opcode_emulation.
19410
19411 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19412
19413         * mini.c: Get rid of most of the helper_sig_... constants using
19414         mono_create_icall_signature ().
19415
19416 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19417
19418         * jit-icalls.c (helper_ldstr): New helper function.
19419
19420         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19421
19422         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19423         throw, load the string using a helper call instead of creating a string object.
19424
19425         * aot.c: Update after LDSTR changes.
19426
19427         * mini.h: Bump AOT file version.
19428         
19429         * aot.c: Save class size info into the AOT file. Print more statistics during
19430         compilation.
19431
19432         * mini.h: Bump AOT file version.
19433
19434         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19435         ordering of disasm cases. Fixes #74957.
19436
19437 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19438
19439         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19440         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19441         the generic code needed for the ARM port.
19442
19443 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19444
19445         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19446         inssel-arm.brg: more ARM features and fixes.
19447
19448 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19449
19450         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19451         ARM port work in progress.
19452
19453 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19454
19455         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19456
19457         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19458
19459         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19460
19461         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19462
19463         * *-ia64.*: Ongoing IA64 work.
19464         
19465         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19466
19467 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19468
19469         * TODO: Remove out-of-data todo stuff.
19470
19471         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19472         dead code.
19473
19474         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19475
19476         * mini.h: Bump corlib version.
19477
19478 2005-07-27  Martin Baulig  <martin@ximian.com>
19479
19480         * mini-codegen.c
19481         (create_copy_ins): Added `const unsigned char *ip' argument; set
19482         `copy->cil_code' from it.
19483
19484 2005-07-27  Martin Baulig  <martin@ximian.com>
19485
19486         * mini-exceptions.c (mono_handle_exception): Don't call
19487         mono_debugger_handle_exception() for filters.
19488
19489 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19490
19491         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19492         as well.
19493
19494 2005-07-26  Martin Baulig  <martin@ximian.com>
19495
19496         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19497
19498         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19499         helper_compile_generic_method() if the method is actually virtual
19500         and non-final.
19501
19502 2005-07-26  Martin Baulig  <martin@ximian.com>
19503
19504         * mini.c
19505         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19506         public; this is now accessed directly by the debugger.
19507         (mono_generic_trampoline_code): Removed.
19508
19509         * debug-mini.c
19510         (mono_debug_init_method): Also add interncalls and wrappers.
19511
19512 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19513
19514         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19515
19516 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19517
19518         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19519
19520 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19521
19522         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19523
19524 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19525
19526         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19527         getting TLS offsets on AMD64 too.
19528
19529 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19530
19531         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19532
19533 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19534
19535         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19536         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19537
19538 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19539
19540         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19541
19542         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19543         to mini.c.
19544
19545         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19546         mono_sparc_is_virtual_call ().
19547         
19548         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19549
19550         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19551         trampoline parameters.
19552
19553         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19554         
19555         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19556         to mono_arch_get_vcall_slot_addr.
19557
19558         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19559         trampoline code.
19560
19561         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19562
19563 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19564
19565         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19566
19567 2005-07-19  Martin Baulig  <martin@ximian.com>
19568
19569         * exceptions-amd64.c (throw_exception): Call
19570         mono_debugger_throw_exception() here like we're doing it on i386.
19571
19572 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19573
19574         * mini-ia64.c: Add optimized TLS access support.
19575
19576 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19577
19578         * mini-exceptions.c: Ongoing IA64 work.
19579
19580         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19581
19582         * mini.c: Use the default optimization set when embedding. Fixes
19583         #75194.
19584
19585 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19586
19587         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19588         of trampolines to a separate file.
19589
19590         * mini-trampolines.c: New file.
19591
19592         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19593         separate file.
19594         
19595         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19596         amd64/ia64 code.
19597
19598         * mini-codegen.c: Fix cygwin build.
19599
19600 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19601
19602         * mini.c: Add some minor changes needed by the IA64 port.
19603
19604         * *-ia64.*: Ongoing IA64 work.
19605
19606 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19607
19608         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19609         trampolines into arch-independent and arch-dependent parts.
19610
19611         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19612
19613 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19614
19615         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19616
19617         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19618         the xp-regalloc-branch for amd64.
19619
19620         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19621         xp-regalloc-branch for x86.
19622
19623 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19624
19625         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19626
19627 2005-07-06  Martin Baulig  <martin@ximian.com>
19628
19629         * mini.c
19630         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19631         (mono_jit_runtime_invoke): Likewise.
19632
19633 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19634
19635         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19636         on x86 too.
19637         
19638         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19639         without loading their metadata. Reorganize the file format so exception handling+
19640         debug info is kept separate from normal method info. Create MonoJitInfo 
19641         structures for methods lazily.
19642
19643         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19644         loading metadata.
19645         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19646
19647         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19648
19649         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19650         in AOT code.
19651
19652         * mini.h: Bump AOT file version.
19653
19654 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19655
19656         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19657
19658 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19659
19660         * Makefile.am (check-local): Call semdel-wrapper.
19661
19662 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19663
19664         * mini-x86.c: Revert the last change as it seems to break the build..
19665
19666 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19667
19668         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19669         
19670         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19671
19672 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19673
19674         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19675         outside of the macro, so strange stuff doesn't happen with gcc4
19676         (NEW_AOTCONST_TOKEN): Likewise.
19677
19678 2005-06-28  Martin Baulig  <martin@ximian.com>
19679
19680         * mini.c (mini_class_is_system_array): New static method; use this
19681         instead of `klass->parent == mono_defaults.array_class' everywhere
19682         since this also works for the new generic array class.
19683
19684 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19685
19686         * inssel.brg: Remove warnings.
19687
19688 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19689
19690         * mini-ia64.c: Ongoing IA64 work.
19691
19692         * basic-float.cs: Add float->i1 conversion test.
19693
19694         * iltests.il: Add conv.u4 test.
19695
19696 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19697
19698         * inssel-long.brg: Fix bug caused by last change.
19699
19700 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19701
19702         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19703         BSDs.  Allows the x86 JIT to work on OSX86
19704
19705 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19706
19707         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19708         u4->i8 conversion.
19709
19710         * mini-ia64.c: Ongoing IA64 work.
19711
19712 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19713
19714         * mini-ia64.c: Ongoing IA64 work.
19715
19716         * driver.c: Clean up jit_code_hash as well when using --regression.
19717
19718         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19719
19720         * basic-long.cs: Add tests for long->u4 conversion.
19721
19722 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19723
19724         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19725         that we do not depend on undefined C behavior: the order stuff
19726         gets evaluated within an expression. Fixes mono when compiled on
19727         GCC 4.
19728
19729 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19730
19731         * *-ia64.*: Ongoing IA64 work.
19732
19733         * aot.c: Lower memory usage while loading AOT methods.
19734
19735         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19736
19737         * mini.h: Bump AOT file format version.
19738
19739 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19740
19741         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19742
19743 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19744
19745         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19746         not on callee assembly). Fixed some comments.
19747
19748 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19749
19750         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19751         it gets proper disassembly.
19752         (emit_method_info): Remove some dead code.
19753
19754         * mini.c (mini_method_compile): Allways allocate the GOT var in
19755         mono_method_to_ir for emulating opcodes.
19756
19757 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19758
19759         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19760         before freeing the code memory. Fixes #74990.
19761
19762         * objects.cs: Add regression test for #74992.
19763
19764         * liveness.c: Extend live ranges of arguments to the beginning of the
19765         method. Fixes #74992.
19766
19767         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19768         so it points into the faulting instruction.
19769
19770 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19771
19772         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19773
19774         * *-ia64.*: Ongoing IA64 work.
19775
19776         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19777
19778 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19779
19780         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19781
19782         * *-ia64.*: Ongoing IA64 work.
19783
19784 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * basic-long.cs: Add tests for add/sub.ovf.
19787
19788         * basic.cs: Add tests for sub.ovf.
19789
19790         * *-ia64.*: Ongoing IA64 work.
19791
19792 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19793
19794         * *-ia64.*: Ongoing IA64 work.
19795
19796         * basic.cs: Add conv.ovf.i4.un test.
19797
19798 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19799
19800         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19801         
19802 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19803
19804         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19805
19806 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19807
19808         * *-ia64.*: Ongoing IA64 work.
19809
19810 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19811
19812         * trace.[ch]:
19813         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19814
19815 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19816
19817         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19818
19819 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19820
19821         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19822
19823         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19824         of a call is callable by a near call.
19825
19826 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19827
19828         * mini-ia64.c: Ongoing IA64 work.
19829
19830 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19831
19832         * genmdesc.c: Make the generated array non-static.
19833
19834         * inssel-long.brg: Fix LSHR_IMM rule.
19835
19836         * *-ia64.*: Ongoing IA64 work.
19837
19838         * *-ia64.*: Ongoing IA64 work.
19839
19840 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19841
19842         * *-ia64.*: Ongoing IA64 work.
19843
19844         * *-ia64.*: Ongoing IA64 work.
19845         
19846         * mini-ia64.c: Ongoing IA64 work.
19847
19848         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19849
19850 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19851
19852         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19853         
19854         * objects.cs basic-long.cs: Move some tests to objects.cs.
19855
19856 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19857
19858         * *-ia64.*: Ongoing IA64 work.
19859
19860         * iltests.il: Add a new test.
19861
19862         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19863         newobj. Fixes #75042.
19864
19865 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19866
19867         * *-ia64.*: Ongoing IA64 work.
19868         
19869         * *-ia64.*: Ongoing IA64 work.
19870         
19871         * *-ia64.*: Ongoing IA64 work.
19872
19873         * basic.cs objects.cs: Move tests accessing static variables as well.
19874
19875         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19876
19877 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19878
19879         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19880
19881         * driver.c: Always print failed tests.
19882
19883         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19884         frame pointer.
19885
19886         * *ia64*: Ongoing IA64 work.
19887
19888 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * basic.cs: Add tests for add.ovf. Fix warnings.
19891
19892 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19893
19894         * driver.c (mono_main): Avoid crash if no argument is passed to
19895         --break;  Do not use g_error, but f_printf.   And fix all other
19896         ocurrences of the same crash.
19897
19898 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19899
19900         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19901         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19902         Fixes #74742.
19903
19904 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19905
19906         * *-ia64.*: Add beginnings of IA64 backend.
19907
19908         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19909
19910 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19911
19912         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19913         Fixes #74925.
19914
19915         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19916
19917         * mini-amd64.c: Fix a warning.
19918
19919 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19920
19921         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19922         in float_neg. Fixes #74897.
19923
19924         * mini-amd64.c (emit_call): Fix another near call bug.
19925
19926 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19927
19928         * declsec.c: Keep the appdomain information in the structure. Added a 
19929         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19930         value gets overwritten).
19931         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19932         an MonoAppDomain member to MonoSecurityFrame.
19933         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19934         used in the stack walk. Now use a MonoArray which grow (double) when
19935         it gets full.
19936
19937 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19938
19939         * mini.c: Re-enabled runtime cleanup, since running threads should
19940         now properly stop when exiting.
19941
19942 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19943
19944         * mini-codegen.c: New file contaning the arch-independent local
19945         register allocator. Not used by any architectures yet.
19946
19947         * mini.h linear-scan.c: Merge some changes from the 
19948         mini-xp-local-regalloc branch.
19949
19950 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19951
19952         * mini-amd64.c (emit_call): Fix calls to native functions when the
19953         runtime is compiled as a shared library. Fixes #74756.
19954
19955         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19956         on a literal field. Fixes #74751.
19957
19958 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19959
19960         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19961
19962 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19963
19964         * objects.cs: Add missing null casting test.
19965
19966 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19967
19968         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19969         in wrapper methods. Also rename 'address' variable to 'offset'.
19970
19971 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19972
19973         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19974         warnings.
19975         
19976         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19977
19978         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19979         work on windows.
19980
19981 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19982
19983         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19984
19985 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19986
19987         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19988         just the last bytes.
19989
19990 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19991
19992         * aot.c (mono_compile_assembly): Fix warning.
19993
19994         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19995         by the _MSC_VER stuff.
19996
19997 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19998
19999         * inssel-long.brg: Fix #74588.
20000
20001         * cpu-amd64.md: Fix #74591.
20002
20003         * iltests.il: Add new regression tests.
20004
20005 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
20006
20007         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
20008         valuetype.
20009
20010 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
20011
20012         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
20013
20014         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
20015         from Bill Middleton <flashdict@gmail.com>.
20016
20017 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
20018
20019         * arrays.cs: Add new regression test. Fix warnings.
20020
20021 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
20022
20023         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
20024         and leakage in CKFINITE.
20025
20026         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
20027         this to a null op since it is called on amd64 too.
20028
20029         * exceptions-amd64.c (get_throw_trampoline): Align stack.
20030
20031         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
20032         body since this is not used on amd64.
20033         
20034         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
20035
20036         * mini-amd64.c: Remove obsolete fixmes.
20037
20038         * mini.c (print_method_from_ip): Fix debugging support.
20039
20040 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20041
20042         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
20043         so that expressions that don't give much gain are not reduced.
20044         * ssapre.h: Likewise.
20045
20046 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
20047
20048         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
20049
20050         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
20051
20052         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
20053
20054 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20055
20056         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20057
20058         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20059
20060 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20061
20062         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20063         stack touching.
20064
20065         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20066
20067         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20068
20069         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20070
20071         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20072         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20073
20074         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20075
20076         * mini-x86.c: Fix up stack overflow handling.   
20077
20078         * exceptions.cs: Add new regression test.
20079
20080 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20081
20082         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20083         mono_jit_thread_attach.
20084
20085         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20086
20087 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20088
20089         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20090         avoid calling constructors using callvirt.
20091
20092         * inssel.brg: Fix #74073.
20093
20094 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20095
20096         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20097         compilation with non-GCC compilers.
20098         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20099         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20100
20101 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20102
20103         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20104         klass->interface_offsets (will likely fix bug#74073).
20105
20106 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20109
20110 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20111
20112         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20113         to amd64_div_reg_size ().
20114         
20115         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20116
20117 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20118
20119         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20120
20121 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20122
20123         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20124
20125 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20126
20127         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20128         
20129         * mini.c (mono_precompile_assembly): Load and precompile referenced
20130         assemblies as well. Fixes #74015.
20131
20132 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20133
20134         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20135
20136 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20137
20138         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20139         a lot of checks and (anyway) permissions cannot work until corlib is 
20140         loaded.
20141
20142 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20143
20144         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20145
20146 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20147
20148         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20149         calls (fixes bug#72824).
20150
20151 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20152
20153         * mini.c: fix tail recursion elimination (see test in bug#73936).
20154
20155 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20156
20157         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20158         some fp functions in sse2 mode.
20159
20160 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20161
20162         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20163
20164 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20165
20166         * mini.h mini.c: Add mono_get_jit_tls_key ().
20167
20168         * mini-x86.c: Enable fast TLS support on windows.
20169
20170 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20171
20172         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20173         * mini.c: Check for p/invoke method when generating code. If a
20174         p/invoke method, or it's class, isn't decorated with [Suppress
20175         UnmanagedCodeSecurity] then generate code to call System.Security.
20176         UnmanagedDemand (only if the security manager is active).
20177
20178 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20179
20180         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20181         last change as it seems to cause strange crashes.
20182         
20183 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20184
20185         * *.c: handle unsafe function pointers where needed.
20186
20187 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20188
20189         * mini.c (mono_jit_free_method): Remove the fixme too.
20190
20191 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20192
20193         * mini.c: As discussed, make the code actually free the delegate
20194         thunk now, to enable the debugging of delegate problems, use
20195         MONO_DEBUG=1 when running Mono. 
20196
20197         This takes also care of parts of the leaks as seen by Joe.
20198
20199 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20200
20201         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20202         thread_tls_offset calculation.
20203
20204 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20205
20206         * declsec.c: Reworked linkdemand checks for icall. The previous code
20207         was using the declaration code (untrusted) and didn't work as expected
20208         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20209         specific case.
20210
20211 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20212
20213         * iltests.il: Add new localloc test.
20214
20215         * mini-amd64.c: Handle large stack allocations the same way as on
20216         windows if stack overflow handling is working.
20217         
20218         * mini-amd64.c: Allocate the signal stack using mmap.
20219
20220         * mini.c (sigsegv_signal_handler): Fix reading of context.
20221
20222         * mini-exceptions.c: Fix up stack overflow handling.
20223
20224         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20225
20226         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20227
20228         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20229
20230         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20231
20232         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20233         tramp_init functions as they are no longer needed.
20234
20235 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20236
20237         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20238         
20239         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20240
20241         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20242         
20243         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20244         support that now.
20245
20246         * mini-ops.h: Add OP_LMUL_IMM.
20247
20248         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20249         long mul/div opcodes as intrinsic.
20250
20251         * mini-amd64.c (emit_call): Handle the case when the callee might be
20252         an AOT method.
20253
20254 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20255
20256         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20257         extra safe.
20258         
20259         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20260
20261         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20262
20263 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20264
20265         * mini.c (mono_codegen): Don't leak here, to help people running
20266         monogrind.
20267
20268 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20269
20270         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20271         conversions in sse2 mode.
20272
20273         * basic-float.cs: Add regression test.
20274         
20275         * mini-amd64.c: Reenable sse2.
20276
20277 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20280
20281 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20282
20283         * driver.c: Copyright text should include 2005.
20284         
20285 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20286
20287         * cpu-amd64.md (load_membase): Fix more max lengths.
20288
20289 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20290
20291         * cpu-amd64.md (load_membase): Fix max length.
20292
20293         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20294
20295         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20296
20297         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20298         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20299
20300         * basic-float.cs: Add rounding regression test.
20301
20302         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20303
20304 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20305
20306         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20307         structures in registers for pinvoke wrappers.
20308
20309 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20310
20311         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20312
20313 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20314
20315         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20316         wrapper to mono_jit_thread_attach.
20317
20318         * mini.c (mini_jit_thread_attach): New jit icall.
20319
20320         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20321         native->managed wrappers.
20322
20323         * exceptions.cs: Add new regression test.
20324
20325         * mini.c (optimize_branches): Check regions in the cbranch to throw
20326         block case as well. Fixes #73242.
20327
20328 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20329
20330         * mini.c: thread safety fixes.
20331
20332 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20333
20334         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20335         patching stuff, since delegates use jump trampolines so there is
20336         no caller.
20337
20338         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20339         jump trampolines.
20340         
20341         * tramp-amd64.c: Fix build.
20342
20343         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20344         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20345
20346         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20347         Rename this to mono_arch....
20348         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20349
20350         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20351
20352         * mini-amd64.c (emit_call): If both the caller and the callee is
20353         guaranteed to have 32 bit addresses, emit a normal call.
20354
20355         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20356
20357         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20358         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20359         method_ptr inside delegates.
20360
20361 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20362
20363         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20364         invalidated. Fixes #73001.
20365
20366         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20367
20368         * mini-x86.c: Only use stdcall for pinvokes on windows.
20369
20370 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20371
20372         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20373         * mini-x86.c: remove unreliable __thread var offset detection,
20374         use the correct accessors and enable by default.
20375
20376 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20377
20378         * mini.c (mono_jit_free_method): Fix memory leak.
20379
20380 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20381
20382         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20383
20384 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20385
20386         * cpu-amd64.md: Fix lengths of atomic opcodes.
20387
20388 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20389
20390         * driver.c: try to not imply using ICU is any good.
20391
20392 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20393
20394         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20395         functions as inline ops.
20396
20397         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20398         some Interlocked functions as inline ops.
20399
20400         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20401
20402         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20403
20404         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20405
20406         * mini.c: Add support for OP_NOT_TAKEN.
20407
20408         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20409         structures in registers for pinvoke wrappers.
20410
20411         * mini-amd64.c: Fix warnings.
20412
20413 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20414
20415         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20416
20417         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20418
20419         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20420         address instead of loading the address from it.
20421
20422         * mini-x86.c: Add support for returning small structs in registers
20423         on Win32. Fixes part of #70864.
20424         
20425 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20426
20427         * trace.c (get_token): Improve error checking.
20428
20429 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20430
20431         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20432
20433 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20434  
20435         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20436         it can be reused for MonoClass.
20437         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20438         _LINKDEMAND.
20439
20440 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20441
20442         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20443         instead of a MonoReflectionMethod. The method information wasn't used
20444         when displaying SecurityException details (but will be now).
20445
20446 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20447
20448         * Makefile.am : windows build fix.
20449
20450 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20451
20452         * iltests.il: Add new regression test.
20453
20454         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20455         #72522.
20456
20457 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20458  
20459         * mini.c: Moved linkdemand check into helper function check_linkdemand
20460         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20461         LDFTN, LDVIRTFTN).
20462
20463 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20464
20465         * declsec.c: Added statistics counter for different kinds of 
20466         LinkDemands.
20467         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20468         (and commented) declaration.
20469         * mini.c: Added statistics counter for security Demand code 
20470         generation. Added display of security statistics.
20471
20472 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20473
20474         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20475         Fix compilation errors under gcc-2.95.
20476
20477 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20478
20479         * mini.c, driver.c: Use the new jit trampoline hashtable
20480
20481 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20482
20483         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20484
20485 2005-02-11  Martin Baulig  <martin@ximian.com>
20486
20487         * debug-mini.c (mono_debug_close_method): Free the line number array.
20488
20489 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20490
20491         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20492         icalls.
20493
20494         * mini.h: Bump AOT file format version. 
20495
20496 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20497
20498         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20499         APTC and P/Invoke.
20500         * declsec.h: Added macros to get/set lazyly initialized security 
20501         informations about assemblies. Added new enum for different type of
20502         possible LinkDemand violation. Added function to check LinkDemands.
20503         * mini.h: Added a field to MonoCompile to hold any security violation
20504         detected when JITting a method (so it can be thrown later).
20505         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20506         and CEE_CALLVIRT. Added code to throw exception at the end of
20507         mini_method_compile (note: the exception is unhandled right now).
20508
20509 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20510
20511         * mini.c, jit-icalls.c: use the managed implementation of
20512         memset for initobj and memset, to avoid managed <-> unmanaged
20513         transitions.
20514
20515 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20516
20517         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20518         optimization if it would need a GOT var.
20519
20520         * basic.cs: Add tests for constant propagation and switch statements.
20521
20522         * ssa.c: Fix out-of-range constant propagation and switch statements.
20523
20524 2005-02-09    <vargaz@freemail.hu>
20525
20526         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20527
20528 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20529
20530         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20531
20532 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20533
20534         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20535
20536 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20537
20538         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20539         arithmetic operations.
20540
20541 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20542
20543         * mini-ppc.c: add a workaround for broken user code that
20544         DllImports vararg functions with non-vararg signatures.
20545
20546 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20547
20548         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20549         meaningfull error message for assemblies written in Managed C++.
20550
20551         * tramp-amd64.c mini-amd64.h: Add support for 
20552         create_trampoline_from_token ().
20553
20554         * aot.c mini-x86.c abcremoval.c: Applied patch from
20555         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20556
20557 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20558
20559         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20560         which takes a MonoImage/token as parameter instead of a MonoMethod.
20561
20562         * aot.c: Use the new trampoline for initializing vtables.
20563
20564         * aot.c: Add support for ldfld/stfld_remote wrappers.
20565
20566         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20567         rules for compare <MEM>, IMM.
20568
20569         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20570
20571         * aot.c: Handle inherited finalizers correctly.
20572
20573 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20574
20575         * inssel.brg (stmt): Add a missing _setup_... ().
20576
20577         * aot.c: Save some parts of the class state to the AOT file and use it
20578         to recompute that state when a class is initialized.
20579
20580         * mini.c: Install AOT hooks into the runtime.
20581
20582         * mini.h: Bump AOT file format version.
20583         
20584         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20585         Fixes #72148.
20586
20587         * iltests.il: Add new test.
20588
20589 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20590
20591         * mini.c: fix typo.
20592
20593 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20594
20595         * mini.c: setup the statistical profiler in the thread attach
20596         callback to cope with the new single thread code.
20597
20598 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20599
20600         * mini-ppc.c: ensure we have enough room for the profiler
20601         calls (fixed bug#72084).
20602
20603 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20604
20605         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20606         it.
20607
20608 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20609
20610         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20611
20612 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20613
20614         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20615         to succesfully execute parrotbench).
20616         * ssapre.h: Likewise.
20617
20618 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20619
20620         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20621         variable for stores to method arguments (fixes a SSAPRE issue).
20622
20623 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20624
20625         * mini.c: handle value types in dup, fixes gen-112.cs.
20626
20627 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20628
20629         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20630         sequence for calls in dynamic methods to avoid thunks.
20631
20632 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20633
20634         * mini.c: correctly remove dynamic methods from the hashtable.
20635
20636 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20637
20638         * driver.c: Disabled SSAPRE until fix the bug that appears
20639         in IronPython's parrotbench.
20640
20641 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20642
20643         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20644
20645         * mini.c (mono_method_to_ir): Revert the previous change.
20646         
20647         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20648         when AOT compiling.
20649
20650         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20651         mono_jit_info_table_find () etc. when running under valgrind.
20652
20653         * inssel.brg: Fix warnings.
20654
20655         * mini-exceptions.c: Fix warnings.
20656
20657 2005-01-31  Martin Baulig  <martin@ximian.com>
20658
20659         * driver.c (compile_all_methods_thread_main): Don't try to compile
20660         generic methods or anything which has type parameters.
20661
20662 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20663
20664         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20665
20666         * TestDriver.cs: Add --verbose flags.
20667
20668         * graph.c ssa.c: Fix 64 bit warnings.
20669         
20670         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20671         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20672         Fix 64 bit warnings.
20673
20674         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20675         variable not spotted by gcc.
20676         
20677         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20678         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20679         X86_COMPARE_MEMBASE opcodes.
20680
20681         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20682
20683 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20684
20685         * *: MonoMethod->signature might be NULL now. You *MUST* use
20686         mono_method_signature.
20687
20688 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20689
20690         * driver.c (compile_all_methods_thread_main): Compile the methods
20691         without invoking cctors.
20692
20693 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20694
20695         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20696         * basic-calls.cs: test for the above.
20697
20698 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20699
20700         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20701         MonoJitInfo changes.
20702
20703 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20704
20705         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20706         eagerly if it contains dynamic methods.
20707         
20708         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20709
20710         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20711         trace, it is now computed by an icall from trace_ips.
20712         
20713         * mini-exceptions.c: Fix a warning.
20714
20715 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20716
20717         * mini-exceptions.c: don't bother getting stack trace info if
20718         it's not going to be used.
20719
20720 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20721
20722         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20723         ssapre-mini-ops.h.
20724
20725 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20726
20727         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20728
20729         * aot.c: Avoid calling mono_method_get_header () if not needed.
20730
20731         * mini.h: Bump AOT file format version.
20732         
20733         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20734
20735         * mini.c (mono_print_tree): Print more info for calls.
20736
20737 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20738
20739         * declsec.h: Remove warning by adding missing include for marshal.h
20740
20741 2005-01-26  Martin Baulig  <martin@ximian.com>
20742
20743         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20744         `ip' twice.
20745
20746 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20747
20748         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20749         flags.
20750
20751         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20752
20753         * aot.c (mono_compile_assembly): Fix a warning.
20754
20755 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20756
20757         * declsec.c: Look for security attributes on the original MonoMethod 
20758         (and not the wrapped one). This fix permissions on icalls.
20759
20760 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20761
20762         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20763
20764         * mini.c (mono_allocate_stack_slots): Add a fixme.
20765
20766         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20767
20768 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20769
20770         * inssel.brg: optimize casts of sealed types (more
20771         optimizations waiting for fixes in remoting).
20772
20773 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20774
20775         * inssel.brg (stmt): Add another dummy rule.
20776
20777         * driver.c: Fix warnings.
20778
20779         * driver.c (mono_main): If running under valgrind, instruct glib to use
20780         the system allocation functions so valgrind can track the memory
20781         allocated by the g_... functions.
20782
20783         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20784
20785         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20786
20787         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20788
20789         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20790         variables in try regions.
20791
20792         * mini.c (mini_method_compile): Don't disable optimizations on large
20793         methods when AOT compiling.
20794
20795         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20796         allocate stack slots. Not yet used.
20797
20798 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20799
20800         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20801
20802 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20803
20804         * mini-ppc.c: make the branch info relative as the code
20805         buffer can be reallocated.
20806
20807 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20808
20809         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20810         * driver.c: Removed the AOT/security restriction. Now initialize the
20811         security manager (in metadata) if --security is used.
20812         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20813         rather than the pointer to declarative security, when AOT is used.
20814
20815 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20816
20817         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20818         basic blocks, reduced intrinsic exception throwing code size.
20819
20820 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20821
20822         * driver.c (mini_usage): Reorder the usage screen.
20823
20824 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20825
20826         * mini.c (mono_resolve_patch_target): Fix warning.
20827
20828 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20829
20830         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20831         previous patch.
20832
20833         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20834
20835         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20836         breaks the amd64 build.
20837
20838         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20839         register allocation. Fixes #71454.
20840
20841         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20842
20843         * arrays.cs: Add new regression test.   
20844
20845 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20846
20847         * ssapre.c: Turned usage of snprintf to GString.
20848         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20849         (I left it on by mistake in my previous commit).
20850
20851 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20852
20853         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20854         on cond branch optimization (fixes bug# 71515).
20855
20856 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20857
20858         * abcremoval.c: Fixed bug 71062.
20859         * abcremoval.h: Likewise.
20860
20861 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20862
20863         * mini.c: Added a new functionality to optimize_branches, the removal
20864         of useless basic blocks, and fixed some problem in the removal of
20865         critical edges; some utility functions added for both purposes.
20866         * ssapre.c: Added complex expression support, and fixed bug 70637.
20867         * ssapre.h: Likewise.
20868         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20869         enabled in SSAPRE.
20870         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20871         * driver.c: Re-enabled SSAPRE.
20872
20873 2005-01-19  Martin Baulig  <martin@ximian.com>
20874
20875         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20876         the result of mono_get_method_constrained().
20877
20878 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20879
20880         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20881         manager.
20882
20883 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20884
20885         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20886         be detected.  Fixes #59296.
20887
20888 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20889
20890         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20891         which can happen. Fixes #71361.
20892
20893 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20894
20895         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20896         manager.
20897
20898 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20899
20900         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20901         appdomain-unload.exe to fail.
20902         
20903         * mini.c: Fix some memory leaks.
20904
20905 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20906
20907         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20908         Fixed bug and sped up some codepaths.
20909
20910 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20911
20912         * mini.c: Fix some memory leaks.
20913
20914         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20915         conversion.
20916
20917         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20918
20919         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20920         #71320.
20921
20922         * iltests.il: Add regression test for #71320.
20923
20924 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20925
20926         * mini.c (mono_codegen): Fix installation of profiler hooks.
20927
20928         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20929
20930 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20931
20932         * mini.h, mini.c, cfold.c: optimize access to enum
20933         readonly fields, too. Eval conditional branches if possible
20934         to perform unreachable code removal in more cases.
20935
20936 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20937
20938         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20939
20940         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20941         code manager.
20942
20943         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20944         WinXP DEP. Fixes #71244.
20945
20946 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20947
20948         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20949
20950 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20951
20952         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20953
20954 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20955
20956         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20957         changes.
20958
20959         * mini.h: Bump AOT version.
20960
20961         * mini.h (MonoCompile): Change exvar to a hash table.
20962
20963         * mini.c: Allocate a separate exvar for each handler block.
20964
20965         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20966
20967         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20968         ex var with the pending exception and only throw if the two are equal.
20969         Fixes #68552.
20970         
20971         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20972
20973         * mini-x86.c: Fix warnings.
20974
20975         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20976         used by all the ports now.
20977
20978         * aot.c: Add write-symbols and save-temps options.
20979
20980 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20981
20982         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20983
20984 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20985
20986         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20987         operations.
20988
20989         * tramp-s390.c: Check vtable slot belongs to the domain.
20990
20991         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20992         as per other platforms.
20993
20994         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20995
20996 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20997
20998         * driver.c: we don't run the Main() code in a subthread anymore.
20999
21000 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
21001
21002         * mini.c: added experimental rtc support in the statistical
21003         profiler: if the user has the permission, more accurate statistics
21004         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
21005         The MONO_RTC value must be restricted to what the linux rtc allows:
21006         power of two from 64 to 8192 Hz.
21007
21008 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21009
21010         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
21011
21012 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
21013
21014         * mini-ppc.c: better icache flush for smp.
21015
21016 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
21017
21018         * mini-amd64.c (emit_move_return_value): Fix memory leak.
21019
21020         * mini-x86.c (get_call_info): Add the get_call_info () code from the
21021         amd64 port, not yet used.
21022
21023 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21024
21025         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
21026         a struct type.
21027
21028 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
21029
21030         * driver.c: Added --security option to activate the security manager.
21031         Right now this will allow code generation for declarative demands and
21032         is disabled when AOT is specified.
21033         * mini.c: Add code generation for declarative security demands.
21034         * mini.h: Add mono_use_security_manager as an extern gboolean.
21035
21036 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21037
21038         * aot.c (mono_compile_assembly): Speed up compilation a bit by
21039         emitting more dense assembly code.
21040
21041         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
21042         exception throwing stuff.
21043
21044 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21045
21046         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
21047         dead code.
21048
21049         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
21050         left in by mistake.
21051
21052         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
21053         fixed.
21054
21055         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21056
21057         * tramp-*.c: Only patch vtable slots if the object is in the current
21058         domain. Fixes appdomain-unload.exe.
21059
21060         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21061         
21062         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21063         x86 branch.
21064
21065 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21066
21067         * mini.c (reverse_branch_op): New helper function.
21068
21069         * mini.c (optimize_branches): Run the new optimization only on 
21070         platforms which support it. Also reverse all kinds of branches.
21071
21072         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21073
21074         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21075         a throw statement.
21076
21077         * mini.c (optimize_branches): Reverse not-equals branches if the false
21078         bblock is a throw. This happens a lot of time with argument checking in
21079         corlib.
21080
21081         * mini.c (mono_codegen): Add support for placing basic blocks after
21082         the function epilogue.
21083
21084         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21085         function epilogue.
21086         
21087 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21088
21089         * mini.c (setup_stat_profiler): Only set this up if the platform
21090         supports ITIMER_PROF.
21091
21092 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21093
21094         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21095         previous patch.
21096
21097         * inssel.brg: Fix a warning.
21098
21099 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21100
21101         * mini.c: added support for statistical profiler 
21102         (run with: --profile=default:stat).
21103
21104 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21105
21106         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21107
21108         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21109
21110         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21111         related to global registers from the amd64 port.
21112
21113 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21114
21115         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21116
21117         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21118         with global registers.
21119         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21120
21121         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21122
21123 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21124
21125         * debug-mini.c (encode_value): Fix off-by-one.
21126
21127         * aot.c (encode_value): Likewise.
21128
21129         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21130
21131 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21132
21133         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21134         AOT.
21135
21136         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21137         
21138         * aot.c (emit_method_info): Increase size of temp buffer.
21139
21140         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21141         the AOT case.
21142
21143 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21144
21145         * aot.c (emit_method_info): Fix build.
21146         
21147         * aot.c: Further rework of the AOT file format to reduce the size of
21148         the method info data.
21149
21150         * mini.h: Bump AOT file format version.
21151
21152 2004-12-27  Martin Baulig  <martin@ximian.com>
21153
21154         * mini.c (mini_get_method): New static method; call
21155         mono_get_method_full() and mono_get_inflated_method().
21156         (mono_method_to_ir): Use mini_get_method() instead of
21157         mono_get_method_full(). 
21158
21159 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21160
21161         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21162
21163 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21164
21165         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21166
21167         * inssel-amd64.brg: Add some optimization rules.
21168
21169 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21170
21171         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21172         standard not GC'd stuff is fine.
21173
21174 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21175
21176         * aot.c: Rework the AOT file format to get rid of most of the global
21177         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21178
21179         * mini.h: Bump AOT file format version.
21180         
21181 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21182
21183         * mini.h: Bump AOT file format version.
21184
21185         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21186         address is inside a GOT.
21187
21188         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21189
21190         * cpu-pentium.md: Increase the maximum size of some instructions which
21191         might involve a got access.
21192         
21193         * mini.c (get_method_from_ip): Another debug helper function.
21194
21195         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21196         when got var accesses are created during the decompose phase.
21197
21198         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21199
21200         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21201         argument mini_compile_method and to MonoCompile, and use this to
21202         determine whenever a given method is compiled for AOT. This allows the
21203         other methods compiled during AOT compilation to be free of AOT stuff,
21204         so the backends does not need to add special support for them by
21205         creating a fake GOT etc.
21206
21207         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21208         longer needed.
21209
21210 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21211
21212         * mini.c (mono_method_to_ir): It turns out that some of the
21213         x-appdomain wrappers are lax with types, so just ignore this for
21214         all wrappers.
21215
21216         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21217         at the vtable->klass. If it is non-shared code we can just use the
21218         vtable.
21219
21220 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21221
21222         * mini-ppc.c: access MonoDomain from tls, too.
21223
21224 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21225
21226         * declsec.c: Removed unused variable (and related warning ;-)
21227
21228 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21229
21230         * iltests.il: New test for LDELEMA on an array of ref types.
21231
21232         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21233         all ldelema's on reftypes.
21234         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21235         it was the wrong place to put it.
21236
21237         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21238         register to pop to make this cleaner, at the request of Paolo.
21239
21240 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21241
21242         * mini-ops.h (OP_GETHASHCODE): New op.
21243
21244         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21245
21246         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21247         operation.
21248
21249         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21250         by 25%.
21251         
21252         * mini-x86.c (mono_arch_output_basic_block): Rather than
21253
21254         add ebp, 4
21255
21256         Emit
21257
21258         pop edx
21259
21260         The first is 3 bytes while the second is 1. This saves 36 kb on
21261         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21262         see a small boost because of icache locality.
21263
21264         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21265
21266 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21267
21268         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21269         started code sharing with the generic code.
21270
21271 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21272
21273         * mini-ppc.c, cpu-g4.md: added code for direct access to
21274         tls data slots.
21275
21276 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21277
21278         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21279          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21280         to OP_TLS_GET.
21281
21282 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21283
21284         * declsec.c|h: Added functions to cache the declarative stack modifiers
21285         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21286         structure.
21287         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21288         created. Register internal calls for System.Security.SecurityFrame::
21289         _GetSecurityFrame and _GetSecurityStack.
21290         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21291         the definitions for the new stack walk/callback mechanism.
21292         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21293         first security frame for LinkDemands and InheritanceDemands) and
21294         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21295         from lupus.
21296         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21297         walk initialization (lupus).
21298
21299 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21300
21301         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21302         idiom.
21303         (handle_loaded_temps): Do not create a temporary variable for
21304         things that we know are temps. They will never be modified.
21305         (mono_spill_call): Set MONO_INST_IS_TEMP
21306         (mono_emulate_opcode): ditto
21307         (emit_tree): ditto
21308         (mono_method_to_ir.CEE_DUP): ditto
21309
21310 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21311
21312         * mini.c (type_to_eval_stack_type): Make this handle the void type
21313         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21314         (emit_tree): use ip_in_bb to special case some common idioms
21315         Update all callers to pass in the IP.
21316         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21317
21318         This gives us a nice 2% speedup in mcs bootstrap.
21319
21320         * mini-x86.c (peephole_pass): Peephole pass to make
21321         mov  [foo], eax
21322         push [foo]
21323
21324         into
21325
21326         mov [foo], eax
21327         push eax
21328
21329         * mini.c (ip_in_bb): new method.
21330         (mono_method_to_ir): use this method rather than doing the hash
21331         lookup ourselves.
21332
21333         * linear-scan.c (mono_linear_scan): When expiring actives, you
21334         don't need to keep around variables that expire on this
21335         instruction. This makes it so that:
21336              a = b + 1
21337         will turn into:
21338              store (ebx add (ebx, 1))
21339         which will become
21340              add ebx, 1
21341
21342 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21343
21344         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21345         combination to avoid doing two copies. Fix up problems with previous
21346         patch.
21347
21348         * mini.c: Fix 64 bit warnings.
21349
21350         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21351
21352 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21353
21354         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21355         changes from the x86 code.
21356
21357         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21358
21359 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21360
21361         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21362         throwing code to reduce its size, unify the AOT and non-aot code and 
21363         get rid of relocations in the AOT case.
21364
21365         * mini-x86.h mini.c exceptions-x86.c 
21366         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21367         raise corlib exceptions which doesn't require relocations in the 
21368         caller.
21369
21370         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21371
21372 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21373
21374         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21375         needed.
21376
21377         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21378         in the AOT case.
21379
21380 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21381
21382         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21383         with add function when used from Inc/dec atomic 
21384         functions. Re-enabled optimization on x86.
21385         * mini-ops.h: renamed atomic_add functions to
21386         allow _add to match the Interlocked::Add and
21387         _add_next to match Interlocked::Inc/Dec.
21388
21389 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21390
21391         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21392         linking of BBs to the end BB, and enabled SSAPRE also with
21393         consprop and copyprop (which was prevented by that bug).
21394
21395 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21396
21397         * mini-x86.c: disabling the Interlocked optimizing code. 
21398
21399 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21400
21401         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21402         file version check.
21403         
21404 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21405
21406         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21407         interlocked optimization due lack of support on x86, rewrote 
21408         exchange to take into account that base may be in eax.
21409         
21410         xsp works again; activated Interlocked optimizing code.
21411         
21412 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21413
21414         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21415
21416 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21417
21418         * mini-ops.h: Add new opcodes.
21419
21420         * mini.h: Add new patch types. Add got_var to MonoCompile.
21421
21422         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21423         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21424         make it work with all kinds of patchable code.
21425
21426         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21427         address of the GOT, and referencing entries in the GOT.
21428
21429         * mini.c: Add code to load the GOT address if needed by an opcode.
21430
21431         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21432         independent AOT code on the x86 using an elf-style Global Offset Table.
21433
21434 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21435
21436         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21437
21438 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21439
21440         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21441         when running xsp.
21442
21443 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21444
21445         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21446         of Interlocked:Increment/Decrement/Add as inline ops.
21447         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21448
21449 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21450
21451         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21452         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21453
21454 2004-12-12  Duncan Mak  <duncan@ximian.com>
21455
21456         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21457         again. `patch_info->table_size' is no longer valid after Zoltan's
21458         commit #37636.
21459
21460 2004-12-12  Martin Baulig  <martin@ximian.com>
21461
21462         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21463         if we are the "real" method, ie. not an inlined method inside it.
21464
21465 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21466
21467         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21468         before we look in the special fields table. This fixes
21469         ../tests/thread-static-init.cs.
21470
21471 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21472
21473         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21474         for Array get_Rank and get_Length. Fixes bug #70465.
21475
21476 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21477
21478         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21479         separate structure to reduce the size of MonoJumpInfo.
21480
21481 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21482
21483         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21484
21485 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21486
21487         * mini.c (mini_get_inst_for_method): Changed to allow ports
21488         to return a MonoInst instead of opcode 
21489         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21490         
21491         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21492         Allow ports to return a created MonoInst instead of op-code, will enable
21493         new optimizations.
21494         (renamed mini_get_opcode_for_method to better reflected the functionality)
21495
21496 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21497
21498         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21499
21500 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21501
21502         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21503         Fixes #69985.
21504
21505 2004-12-08  Martin Baulig  <martin@ximian.com>
21506
21507         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21508         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21509
21510 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21511
21512         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21513         correctly.
21514
21515         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21516         arithmetic.
21517
21518 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21519
21520         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21521
21522 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21523
21524         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21525         bug introduced by the previous patch.
21526
21527 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21528
21529         * mini-ppc.c, objectc.cs: handle large structs passed by value
21530         (fixes bug #69972).
21531
21532 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21533
21534         * mini-ppc.c: OP_ARGLIST implementation from
21535         Geoff Norton  <gnorton@customerdna.com>.
21536
21537 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21538
21539         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21540         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21541
21542 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21543
21544         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21545
21546 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21547
21548         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21549         support.
21550
21551 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21552
21553         * mini-sparc.c: Zero out localled-ed memory.
21554
21555         * iltests.il: Add tests for zeroing out localloc-ed memory.
21556
21557 2004-12-04  Martin Baulig  <martin@ximian.com>
21558
21559         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21560         mono_method_get_signature_full().       
21561
21562 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21563
21564         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21565         and some utility functions (always for SSAPRE), integrated SSAPRE.
21566         * mini.h: Likewise.
21567         * driver.c: Added ssapre option.
21568         * ssa.c: Small fix on OP_ARG handling.
21569         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21570         * Makefile.am: Likewise.
21571
21572 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21573
21574         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21575         now in the xp code.
21576
21577         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21578         icall.
21579
21580 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21581
21582         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21583         
21584         * cpu-s390.md : Increase instruction length of oparglist.
21585
21586         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21587
21588 2004-11-30  Martin Baulig  <martin@ximian.com>
21589
21590         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21591         virtual generic methods.  We call a special helper_compile_generic_method()
21592         icall to retrieve the method from the vtable, inflate and compile
21593         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21594
21595         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21596
21597 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21598
21599         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21600
21601 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21602
21603         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21604         Fixes #69929.
21605
21606 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21607
21608         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21609         platforms with PIC aot.
21610
21611 2004-11-28  Martin Baulig  <martin@ximian.com>
21612
21613         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21614         Fixes gen-112.cs.
21615
21616 2004-11-28  Martin Baulig  <martin@ximian.com>
21617
21618         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21619         the result of mono_type_get_underlying_type() to check whether
21620         we're byref.
21621
21622 2004-11-26  Martin Baulig  <martin@ximian.com>
21623
21624         * mini.c
21625         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21626         in the g_assert().
21627
21628 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21629
21630         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21631         the same way as the other arguments so they won't get clobbered.
21632
21633         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21634         calls through R11 since it is clobbered by the trampoline code.
21635
21636 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21637
21638         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21639         pick up in-tree mscorlib.dll.
21640
21641 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21642
21643         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21644
21645         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21646         runtime data/code are now stored in a table similar to the GOT in ELF. 
21647         This allows the code itself to be position independent.
21648
21649         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21650         loading changes.
21651
21652         * aot.c: Attach ELF type (object/function) directives to all global
21653         symbols.
21654
21655         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21656
21657         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21658
21659         * mini-amd64.h: Turn on PIC AOT code.
21660
21661         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21662         returning the offset within an OP_AOTCONST instruction where the GOT
21663         offset needs to be added.
21664
21665         * mini.h: Bump AOT file format version.
21666
21667 2004-11-25  Martin Baulig  <martin@ximian.com>
21668
21669         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21670         uninflated generic methods.
21671
21672 2004-11-25  Martin Baulig  <martin@ximian.com>
21673
21674         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21675
21676 2004-11-24  Martin Baulig  <martin@ximian.com>
21677
21678         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21679         original klass (this only applies for generic instances).
21680
21681 2004-11-24  Martin Baulig  <martin@ximian.com>
21682
21683         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21684         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21685         that array).
21686
21687 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21688
21689         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21690         localloc. Fixes #69678.
21691
21692         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21693         
21694 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21695
21696         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21697         used SSE registers on pinvoke calls. Fixes #69774.
21698
21699 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21700
21701         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21702         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21703
21704 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21705
21706         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21707         Refer directly to the mcs/ tree.
21708
21709 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21710
21711         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21712         Check if a trampoline for a synchronized method is required. 
21713
21714 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21715
21716         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21717         with localloc if needed. Throe arithmetric exception in
21718         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21719         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21720
21721 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21722
21723         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21724         types before switching on type.  Fixes #69622.
21725
21726 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21727
21728         * Makefile.am (check-local): New.  Integrate into 'make check'.
21729         (MCS,RUNTIME): Define using in-tree mono and mcs.
21730         (ILASM): New.
21731         (%.exe): Use $(ILASM).
21732
21733 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21734
21735         * mini-ppc.c: adjust initial prolog size (bug #69691).
21736
21737 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21738
21739         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21740         #69664.
21741
21742 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21743
21744         * Makefile.am (clean-local): Rename from 'clean'.
21745
21746 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21747
21748         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21749         to mono_arch_is_int_overflow. 
21750         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21751         SIGFPE events.
21752
21753 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21754
21755         * declsec.c|h: New files to support declarative security attributes.
21756         Added function to check if a method has (applicable) security.
21757         * mini.c|h: Add check for declarative security attributes in
21758         mono_method_check_inlining.
21759         * Makefile.am: Added declsec.c and declsec.h to the build.
21760
21761 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21762
21763         * mini.c, mini.h: update to keep dynamic code info per-domain.
21764
21765 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21766
21767         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21768         (mini_init): Get rid of it from here too.
21769
21770 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21771
21772         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21773         implemented OP_RETHROW (patch by Geoff Norton
21774         <gnorton@customerdna.com>).
21775
21776 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21777
21778         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21779         between appdomains.  Fixes appdomain-unload on PPC.
21780
21781 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21782
21783         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21784         mini-exceptions.c: handle the new wrapper types.
21785         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21786         token value as a MonoClass* when compiling a wrapper.
21787         mono_jit_create_remoting_trampoline now takes an additional
21788         MonoRemotingTarget parameter.
21789         
21790 2004-11-10  Martin Baulig  <martin@localhost>
21791
21792         * mini.c (mono_method_to_ir): Use `generic_container->context'
21793         rather than creating a new one.
21794
21795 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21796
21797         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21798
21799         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21800
21801 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21802
21803         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21804         the experimental aot cache stuff.
21805
21806 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21807
21808         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21809         mini-exceptions.c: update to exception clause structure changes.
21810
21811 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21812
21813         * exceptions-x86.c (throw_exception): Fix warnings.
21814
21815         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21816         for OP_RETHROW.
21817
21818 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21819
21820         * exceptions-sparc.c (get_throw_exception): Really fix this.
21821
21822 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21823
21824         * tramp-*.c: we no longer support icalls without wrappers, so
21825         a bit of code can be removed here
21826
21827 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21828
21829         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21830         patch.
21831
21832         * cpu-sparc.md: Add op_rethrow.
21833
21834         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21835
21836         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21837
21838         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21839         * mini-ops.h: Add OP_RETHROW.
21840
21841         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21842
21843         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21844
21845 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21846         
21847         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21848         Makes the output much easier to read
21849
21850 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21851
21852         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21853         prevents another huge leak when compiling with ssa. Secondly, the
21854         performance of doing this rather than freeing the lists is much
21855         better. GList does a lock every time you allocate a list link,
21856         so that it can use a memory pool. So, it is better to just use
21857         a memory pool of our own.
21858         
21859         * ssa.c, linear-scan.c: replace g_list_remove_link with
21860         g_list_delete.  The remove one does not free the GList, so we were
21861         leaking memory. On -O=all --compile-all with corlib, this cut down
21862         3 MB of allocations.
21863
21864 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21865
21866         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21867
21868         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21869
21870         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21871         into a new function mono_create_jit_trampoline ().
21872
21873 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21874
21875         * trace.c (get_spec): Allow tracing of classes without a namespace.
21876
21877 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21878
21879         * mini.c: Fix pointer overwrite in mini_method_compile.
21880
21881 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21882
21883         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21884         The darwin ABI needs some special handling for 1 and 2 byte structs
21885         Lets use lbz/lhz instead of lwz everywhere.
21886         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21887         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21888         Use stb/sth for the former, and put the latter always on stack instead of in
21889         argument registers.
21890
21891 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21892
21893         * trace.c (is_filenamechar): Add '_'.
21894
21895 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21896
21897         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21898
21899         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21900
21901 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21902
21903         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21904         depends on libmonogc. Fixes #68805.
21905
21906 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21907
21908         * mini.c (mono_jit_free_method): Provide extra information for
21909         this error.  Currently this leaks, but will be turned into a
21910         developer option in the future.
21911
21912 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21913
21914         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21915
21916 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21917
21918         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21919         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21920         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21921
21922 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21923
21924         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21925         trampolines for AOT code.
21926
21927 2004-10-22    <vargaz@freemail.hu>
21928
21929         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21930         constructed types. Fixes #68136.
21931
21932 2004-10-21  Martin Baulig  <martin@ximian.com>
21933
21934         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21935         if it returns true, unwind the stack to the call instruction.
21936
21937 2004-10-21    <vargaz@freemail.hu>
21938
21939         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21940
21941         * mini.h: Bump AOT version number.
21942
21943         * objects.cs: Add another test for unbox trampolines.
21944
21945         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21946         valuetype methods.
21947
21948 2004-10-20    <vargaz@freemail.hu>
21949
21950         * driver.c: Add SHARED to the set of optimizations tested.
21951
21952         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21953
21954         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21955         used by CEE_NEWARR.
21956
21957         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21958
21959 2004-10-20  Martin Baulig  <martin@ximian.com>
21960
21961         * mini-exceptions.c (mono_handle_exception): Call
21962         mono_debugger_handle_exception() to tell the debugger about
21963         catch/finally clauses.
21964
21965 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21966
21967         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21968
21969         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21970         #68447.
21971
21972 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21973
21974         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21975         methods as their native size, fixed bug #57543, #57545.
21976         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21977         This saves a temporary register and mullw call down into 1 (minor perf
21978         increase for cases like sum = sum * 5;  This use to translate into:
21979             li r11,5
21980             mullw r28,r28,r11
21981         It now translates to
21982             mulli r28,r28,5
21983
21984 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21985
21986         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21987         #68388.
21988
21989 2004-10-11  Martin Baulig  <martin@ximian.com>
21990
21991         * mini.c (mono_method_to_ir): If we're a generic method, get the
21992         MonoGenericContainer from our MonoMethodNormal and create a
21993         MonoGenericContext from it.
21994
21995 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21996
21997         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21998
21999         * basic-long.cs: Add test for checked i8->i2 cast.
22000
22001 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22002
22003         * inssel-ppc.brg: added a couple of speedup rules.
22004
22005 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
22006
22007         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
22008         to speed up rebuilds.
22009
22010 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22011
22012         * mini-s390.c: Minor fix to OP_OR_IMM.
22013
22014 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
22015
22016         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
22017         better. Fixes appdomain-unload.exe on sparc.
22018
22019 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
22020
22021         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
22022         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
22023         see bug 67324.
22024
22025 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
22026
22027         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
22028
22029 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
22030
22031         * mini.c: Always generate a field read/write wrapper for members
22032         of the class MarshalByRefObject since the actual instance could
22033         be a CBO.
22034
22035 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22036
22037         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
22038
22039 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22040
22041         * driver.c mini.h trace.c: Move the setting of the main assembly into
22042         a separate function called mono_trace_set_assembly () and call it after
22043         actually loading the main assembly. Fixes #66872.
22044
22045 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22046
22047         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
22048         using the code manager.
22049
22050 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22051
22052         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
22053
22054 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22055
22056         * cpu-amd64.md: Fix bug in previous patch.
22057         
22058         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22059         #66650.
22060
22061 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22062
22063         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22064         mini-exceptions.c: updates for changed stack walk interface.
22065
22066 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22067
22068         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22069
22070 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22071
22072         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22073
22074 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22075
22076         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22077         since assemblies can't be unloaded.
22078         
22079 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22080
22081         * cpu-amd64.md: Fix more instruction lengths.
22082
22083         * cpu-amd64.md: Fix lengths of some instructions.
22084
22085 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22086
22087         * inssel.brg: Make the array ldelema check aot friendly.
22088
22089 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22090
22091         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22092
22093         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22094
22095 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22096
22097         * mini-x86.c: Fix build.
22098
22099         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22100         mono_type_get_underlying_type () helper function to simplify code.
22101         
22102 2004-09-09  Martin Baulig  <martin@ximian.com>
22103
22104         * mini-amd64.c: Don't access `type->data.klass' directly, call
22105         mono_class_from_mono_type() instead since the type may be a
22106         generic instance.
22107
22108 2004-09-09  Martin Baulig  <martin@ximian.com>
22109
22110         * mini-amd64.c (get_call_info): Fix support for generic instances.
22111         (add_valuetype): Use mono_class_from_mono_type() to get the class
22112         since we can be a generic instance.
22113
22114 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22115
22116         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22117
22118 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22119
22120         * liveness.c: reset spill costs on each scan: bug 62107
22121
22122 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22123
22124         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22125         unnecessary line that doesn't compile
22126
22127 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22128
22129         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22130         trampolines, make them call an error function so people can fix their
22131         code.
22132
22133 2004-09-06  Martin Baulig  <martin@ximian.com>
22134
22135         * mini.c (mono_method_to_ir): When initializing locals, handle a
22136         generic instances like a valuetype if it's a valuetype and like a
22137         class if it's a class.
22138
22139 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22140
22141         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22142         stack. Fixes #64674.
22143
22144         * exceptions.cs: Add test for unwinding of call arguments.
22145
22146 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22147
22148         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22149         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22150         set the carry/borrow flag). The sparc and s390 implementations
22151         can now use optimized versions (and simplify the code). ppc bugfixes.
22152
22153 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22154
22155         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22156
22157 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22158
22159         * inssel-amd64.brg: Remove leftover 32 bit rule.
22160
22161         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22162
22163 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22164
22165         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22166         mono_arch_find_jit_info functions into a new function. Fix a memory
22167         leak.
22168
22169         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22170         refactored code.
22171         
22172 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22173
22174         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22175         as well.
22176         
22177         * exceptions.cs: Add array size tests.
22178
22179         * mini.c: Allocate a separate icall wrapper for each arity of 
22180         mono_array_new_va. Fixes #59509.
22181
22182         * exceptions.cs: Add testcase for 64578.
22183
22184         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22185
22186         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22187         
22188 2004-09-02  Martin Baulig  <martin@ximian.com>
22189
22190         * mini.c (mono_method_to_ir): When initializing the locals, call
22191         handle_initobj() on the generic instance itself, not its
22192         underlying type.
22193
22194 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22195
22196         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22197         MonoJitInfo for dynamic methods.
22198
22199         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22200
22201         * mini.c: Add support for freeing JIT data for dynamic methods.
22202         
22203 2004-09-01  Martin Baulig  <martin@ximian.com>
22204
22205         * mini-x86.c (is_regsize_var): Added support for generic
22206         instances.
22207         (mono_arch_emit_prolog): Make this compile again, use
22208         `x86_push_imm_template (code)'.
22209
22210 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22211
22212         * mini-x86.c: make all push_imm instructions that get
22213         patched always emit the long form
22214
22215 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22216
22217         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22218         in a per-domain hash.
22219
22220         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22221         types.
22222
22223 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22224
22225         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22226         work.
22227         
22228         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22229         work.
22230
22231         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22232         Beginnings of SSE2 support.
22233
22234         * exceptions.cs: Add more tests for checked int<->uint casts.
22235
22236 2004-08-28  Martin Baulig  <martin@ximian.com>
22237
22238         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22239         generic instances.
22240
22241         * mini.c
22242         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22243         Handle generic instances recursively.
22244
22245 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22246
22247         * iltests.il: test for conv.u8 on a constant
22248
22249 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22250
22251         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22252         LCONV_x4 (shrun_32 (membase)).
22253
22254 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22255
22256         * inssel-x86.brg: c&p rules for push/setret of long
22257
22258 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22259
22260         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22261         compare (regvar, base)
22262
22263         * inssel-x86.brg: more burg love
22264
22265         * inssel.brg: more cleanup
22266
22267         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22268
22269 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22270
22271         * basic-long.cs, basic-calls.cs: new tests for optimization.
22272
22273 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22274
22275         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22276         patch.
22277
22278 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22279
22280         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22281         
22282 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22283
22284         * inssel.brg (mini_emit_memcpy): use 
22285         NO_UNALIGNED_ACCESS to disable memcpy optimization
22286
22287 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22288
22289         * mini-amd64.c: Handle generic types in various places.
22290
22291         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22292
22293 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22294
22295         * mini.c (handle_box): Fix warning.
22296
22297         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22298
22299         * mini-amd64.h: Enable the emit_state optimization.
22300
22301         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22302
22303         * mini-amd64.c: Add some new 64 bit peephole opts.
22304
22305         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22306
22307         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22308
22309         * mini-amd64.c: Register allocator fixes.
22310
22311         * mini.c: Add an optimization to emit_state to avoid allocation of new
22312         registers on some platforms.
22313
22314 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22315
22316         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22317
22318         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22319         allocation. Fixes #63085.
22320
22321         * basic-long.cs: Add new regression test.
22322
22323         * mini-amd64.c: Register allocator improvements.
22324
22325 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22326
22327         * mini-amd64.c (read_tls_offset_from_method): Add another code
22328         sequence.
22329
22330         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22331         instruction sequence for nullifying class init trampolines.
22332
22333         * objects.cs: Add new regalloc test.
22334
22335         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22336
22337 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22338
22339         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22340         
22341         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22342         arguments.
22343
22344         * driver.c: Fix profiling after TLS changes.
22345         
22346         * driver.c (mono_main): Set mono_stats.enabled if needed.
22347
22348         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22349         CEE_BOX.
22350
22351 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22352
22353         * mini-x86.c: use a 1 op rather than a 2 op tls access
22354         instruction -> faster.
22355
22356 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22357
22358         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22359         x86 backend.
22360
22361 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22362
22363         * exceptions-sparc.c (throw_exception): fix typo
22364
22365 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22366
22367         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22368         set tree->dreg correctly with tls. Allow any
22369         register to be used.
22370
22371         * mini-x86.c (read_tls_offset_from_method): add new code
22372         generation pattern seen with GCC.
22373
22374
22375 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22376
22377         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22378         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22379         exceptions-sparc.c: fix some performance issues in exception
22380         handling and setting of the stack trace for exceptions that were
22381         already thrown.
22382
22383 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22384
22385         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22386         x86 backend.
22387         
22388         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22389         registers.
22390
22391 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22392
22393         This patch inlines tls access, when possible.
22394         
22395         * mini.h: new arch functions for TLS intrinsics.
22396         All platforms updated with a stub.
22397
22398         * mini.c: use the new intrinsics
22399
22400         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22401         arch specific intrinsic for tls variables
22402
22403 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22404
22405         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22406         under windows.
22407
22408 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22409
22410         * mini.c: thread local allocation
22411
22412 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22413
22414         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22415
22416         * Makefile.am: Link against the static version of libmonogc.
22417         
22418         * Makefile.am: Link the static versions of the convenience libraries
22419         into the mono executable.
22420
22421         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22422
22423 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22424
22425         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22426         on integer overflow.
22427
22428         * mini-amd64.c: Reorganize function call code.
22429
22430         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22431
22432 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22433
22434         * inssel-x86.brg: use xor eax,eax.
22435         
22436         * basic.cs: new tests
22437
22438 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22439
22440         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22441         in exception throwing code.
22442         
22443 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22444
22445         * inssel-x86.brg: use xor esi,esi.
22446
22447 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22448
22449         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22450         can trace methods compiled during mini_init () too.
22451
22452         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22453         CEE_CONV_U4.
22454
22455 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22456
22457         * Makefile.am: static link on x86 (r=zoltan)
22458
22459 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22460
22461         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22462         code since it causes some programs to fail.
22463
22464 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22465
22466         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22467
22468 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22469
22470         * mini.c: ovfops_op_map - add STACK_OBJ case for
22471         CONV_I 
22472         * basic.cs: add test_0_pin_string as test
22473         case for above.
22474
22475 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22476
22477         * Makefile.am: build C# if srcdir != builddir
22478
22479 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22480
22481         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22482         fall-through blocks.
22483
22484 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22485
22486         * driver.c: enable loop by default again and include abcrem in -O=all.
22487
22488 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22489
22490         * iltests.il: Add some localloc tests.
22491
22492         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22493
22494         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22495         Fixes #62574.
22496
22497         * inssel-amd64.brg: Add some optimizations.
22498
22499         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22500         for gcc-3.4.
22501
22502         * Makefile.am: Statically link mono against libmono on AMD64.
22503         
22504         * mini-amd64.c inssel-amd64.brg: Optimizations.
22505
22506 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22507
22508         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22509
22510         * tramp-amd64.c: Patch calling code in trampolines.
22511
22512 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22513
22514         * mini-amd64.c: pinvoke struct passing fixes.
22515
22516 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22517
22518         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22519         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22520
22521 2004-08-05  Duncan Mak  <duncan@ximian.com>
22522
22523         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22524         CEE_LDELEM_ANY.
22525
22526 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22527
22528         * mini-amd64.c (emit_move_return_value): Move return value for normal
22529         calls too.
22530
22531 2004-08-05  Martin Baulig  <martin@ximian.com>
22532
22533         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22534         `type->type'; just modify `type' itself when dealing with enums
22535         and generic instances.
22536         (check_call_signature): Make `simple_type' a `MonoType *'.
22537
22538 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22539
22540         * mini.c: Use OP_PADD to add offsets to addresses.
22541
22542         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22543
22544 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22545
22546         * mini-sparc.c (mono_arch_emit_epilog): fix check
22547         for folding last op into restore instruction
22548
22549 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22550
22551         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22552         helper methods using the code manager.
22553         
22554         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22555
22556         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22557
22558 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22559         
22560         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22561           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22562
22563         * mini-s390.c: fix tail processing
22564
22565 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22566
22567         * mini-ppc.c: mul.ovf.un exception name fix.
22568
22569 2004-08-03  Martin Baulig  <martin@ximian.com>
22570
22571         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22572         instances; before jumping to `handle_enum', also modify `ptype'.
22573
22574 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22575
22576         * cpu-sparc.md: fcall maximal length too small.
22577
22578 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22579
22580         * mini-amd64.c mini.h: Add initial support for passing/returning 
22581         structures to/from pinvoked methods.
22582
22583 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22584
22585         * mini-ppc.c: reg allocator fix.
22586
22587 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22588
22589         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22590
22591         * inssel.brg: Optimize memset on 64 bit machines.
22592
22593         * mini-amd64.c: Fix some vararg cases.
22594
22595 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22596
22597         * mini-s390.c: Corrected macro in emit_float_to_int
22598
22599         * s390-abi.cs: Tests to exercise the s390 ABI
22600
22601 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22602
22603         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22604         caller saved regs.
22605
22606         * basic.cs: Add a test for add.ovf.un.
22607
22608 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22609
22610         * mini-sparc.c: add case for OP_IDIV_UN
22611
22612 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22613
22614         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22615         
22616         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22617
22618 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22619
22620         * basic.cs: regression tests.
22621
22622         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22623         regressions.
22624
22625 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22626
22627         * basic.cs: Add a new test.
22628
22629         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22630         and AOT. Various fixes and optimizations.
22631
22632         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22633
22634 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22635
22636         * mini-ppc.c: make sure temp regs are not used for global reg
22637         allocation.
22638
22639 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22640
22641         * cpu-sparc.md: conv_i8 fix for 64bits
22642
22643         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22644
22645 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22646         
22647         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22648         add opcode for cmp BYTE PTR [eax], imm.
22649
22650         * inssel.brg: Make memcpy and memset takes bases.
22651
22652 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22653
22654         * *-amd64.*: More AMD64 work.
22655         
22656 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22657
22658         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22659         add a compare-not-equal opcode.
22660         
22661 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22662
22663         * mini.c: Use mono_init_from_assembly instead of mono_init.
22664         
22665 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22666
22667         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22668
22669         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22670
22671         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22672
22673         * inssel.brg: 64 bit fixes.
22674
22675         * mini.h (MonoCallInst): Add some AMD64 specific data.
22676
22677         * mini.h: Add some OP_P opcodes.
22678
22679 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22680
22681         * basic.cs: tests for 61797 and 61740
22682
22683 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22684
22685         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22686         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22687
22688 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22689
22690         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22691
22692         * *-amd64*.*: Ongoing AMD64 work.
22693
22694 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22695
22696         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22697
22698         * *-amd64*: Ongoing AMD64 work.
22699
22700         * mini-arch.h: Add AMD64 support.
22701
22702         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22703
22704         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22705
22706         * mini-ops.h: Add new opcodes.
22707
22708         * Makefile.am: Add AMD64 support.
22709
22710         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22711         rules into the inssel-long*.brg files.
22712
22713         * *-amd64.*: Add beginnings of AMD64 backend.
22714
22715 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22716
22717         * mini.c (print_dfn): commenting out the code that prints
22718         the cil. With -O=deadce, this makes -v -v crash.
22719         
22720         * cpu-pentium.md: make checkthis have a length of 2
22721
22722 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22723
22724         * mini-sparc.h: fix implementations of __builtin
22725         functions for Sun compiler for V9.
22726
22727 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22728
22729         * mini.c: use the new stelem.ref wrapper
22730         * exceptions.cs, arrays.cs: new stelem.ref tests
22731
22732 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22733
22734         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22735         new XSP should work with these changes).
22736
22737 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22738         
22739         * inssel-{long32,x86,}.brg: trivial optimizations.
22740         
22741 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22742
22743         * mini.c: load value when emitting box operation in
22744         constrained calls.
22745
22746 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22747
22748         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22749         is one byte shorter than cmp DWORD PTR [eax], 0.
22750
22751 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22752
22753         * inssel-ppc.brg: arguments on the stack are always
22754         relative to the stack pointer (spotted by Neale Ferguson).
22755
22756 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22757
22758         * exceptions-x86.c: delay appending the method name to the trace until
22759         after mono_jit_info_table_find is called, as this gets the real
22760         MonoMethod.
22761
22762 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22763
22764         * aot.c: register roots
22765
22766 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22767
22768         * aot.c : I could just use PLATFORM_WIN32 flag.
22769
22770 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22771
22772         * aot.c : Reverting the previous fix. This time it broke linux build.
22773
22774 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22775
22776         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22777
22778 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22779
22780         * mini.c (handle_stack_args): Remove some more debugging code.
22781         
22782         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22783
22784         * driver.c mini.h aot.c: Allow additional options to be specified with
22785         --aot and pass them to mono_compile_assembly.
22786
22787         * aot.c: Add experimental code to AOT compile all loaded assemblies
22788         on demand and save the code into a cache in the filesystem.
22789
22790         * aot.c: Add support for more wrapper methods.
22791         
22792         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22793         58863.
22794
22795         * cpu-*.md: Remove removed opcodes.
22796
22797         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22798         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22799         related icalls to marshal.c.
22800
22801 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22802
22803         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22804
22805         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22806
22807         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22808
22809 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22810         * liveness.c: If liveness is recomputated we need to reset the information
22811         for each variable. This way, if the liveness range has been narrowed
22812         by optimizations that happened after the last computation, we can return
22813         a smaller range.
22814         
22815         For example, if you have
22816         
22817         {
22818                 int i = 0;
22819                 
22820                 // Tons of code that does not affect i
22821                 
22822                 i = foo ();
22823                 ...
22824         }
22825         
22826         i = 0 is dead code and will be removed by SSA. However, when
22827         linear scan gets to the code, i will still appear to be live
22828         throughout the entire block. This prevents good register allocation.
22829
22830 2004-07-06  Martin Baulig  <martin@ximian.com>
22831
22832         * debug-mini.c (mono_debug_init_method): Allow
22833         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22834         (mono_debug_add_icall_wrapper): New method.
22835
22836         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22837
22838 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22839
22840         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22841         optimization.
22842
22843 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22844
22845         * aot.c (mono_aot_load_method): Fix loading of debug info.
22846
22847 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22848
22849         * aot.c: Add logging support.
22850
22851 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22852
22853         * mini.h: Add prototype for mono_print_method_from_ip.
22854
22855         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22856
22857         * inssel.brg: 64 bit fixes.
22858
22859         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22860         inssel-long32.brg.
22861
22862         * Makefile.am: Add SPARC64 support.
22863
22864 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22865
22866         * aot.c: Fix alignment problems on 32 bit platforms.
22867
22868 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22869
22870         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22871         SPARC64.
22872
22873         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22874         problems.
22875
22876         * mini.h: Bump AOT file version. Some 64 bit fixes.
22877
22878 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22879
22880         * inssel-sparc.brg: Add new rule to avoid register moves.
22881
22882         * inssel.brg: Add ldind_to_load_membase helper function.
22883
22884 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22885
22886         * mini.c: OffsetToStringData intrinsic.
22887         
22888 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22889
22890         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22891
22892         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22893         regression tests.
22894
22895         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22896 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22897
22898         * mini.c: reinstated mono_compile_get_interface_var()
22899         on x86, too, since the change breaks the Gtk# build there as well.
22900
22901 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22902
22903         * driver.c: remove loop from the default optimizations: it seems to
22904         interact badly with some of the other options (see bug #60613).
22905
22906 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22907
22908         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22909         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22910
22911 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22912
22913         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22914         vararg-using methods.
22915
22916 2004-06-21  Martin Baulig  <martin@ximian.com>
22917
22918         * mini/mini-exceptions.c
22919         (mono_handle_exception): Added `gpointer original_ip' argument.
22920         After calling mono_unhandled_exception(), call
22921         mono_debugger_unhandled_exception() and if that returns true,
22922         restore the context and return.
22923
22924 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22925
22926         * mini-ppc.c: prefer the use of relative branches so
22927         they won't need to be patched in aot code (patch from Patrick Beard).
22928
22929 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22930
22931         * aot.c: patch from Patrick Beard to make the output assembly
22932         more correct for the MacOSX assembler. Small tweak to
22933         generate sane images on Linux/PPC, too.
22934
22935 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22936
22937         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22938         case until bug #59509 is fixed (shows up in #60332).
22939
22940 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22941
22942         * mini.c: make sure the needed wrappers are compiled, too, with
22943         precomp.
22944
22945 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22946
22947         * driver.c: remove NPTL reference in --version output.
22948
22949 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22950
22951         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22952         generate valid assembly for the Mach-O assembler.
22953
22954 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22955
22956         * driver.c: don't include abcrem in the all optimization specifier
22957         since it slows down jit compilation too much for now.
22958
22959 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22960
22961         * mini.c: use BIGMUL only if both operands have the same signage.
22962         * iltests.il: Test for bug 60056. (errors related to signage in
22963         BIGMUL).
22964
22965         r=lupus.
22966
22967 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22968
22969         * mini.c, aot.c: memory leak fixes.
22970
22971 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22972
22973         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22974
22975 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22976
22977         * Makefile.am: remove the -static hack completely, it links in
22978         statically glib as well.
22979
22980 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22981
22982         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22983         * exceptions.cs: make it compile with new mcs/csc.
22984
22985 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22986         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22987         and added relevant test case.
22988
22989 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22990
22991         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22992         regressions in gtk-sharp.
22993
22994 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22995
22996         * exceptions.cs: New regression tests.
22997
22998         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22999
23000 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
23001
23002         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
23003
23004 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
23005
23006         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
23007
23008         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
23009
23010 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
23011
23012         * mini.c (mono_jit_runtime_invoke): Init class in this
23013         method instead of trusting mono_jit_compile_method to
23014         do the work (because wrappers can be in object class)
23015
23016 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
23017
23018         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
23019
23020         * basic-long.cs: New regression test.
23021
23022 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
23023
23024         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
23025         and div/rem checks.
23026
23027 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
23028
23029         * Makefile.am: fix miguel's change to build mono statically against
23030         libmono (track build dependencies).
23031
23032 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23033
23034         * cfold.c: Some glib versions do not have G_MININT32.
23035
23036 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
23037
23038         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
23039         with precision of tan, atan, sin and cos, and implemented related
23040         regressions tests (fixes bug 54467, but one new problem appeared and
23041         is not fixed yet).
23042
23043 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23044
23045         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
23046
23047         * exceptions.cs: Add test for constant folding && division by zero.
23048
23049         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
23050         since driver.c is in libmono too, so the optimization was useless.
23051
23052         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
23053         variable to driver.c so the compiler can emit more efficient code to
23054         access them.
23055
23056 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23057
23058         * Makefile.am: don't distribute generated inssel.[ch] files.
23059
23060 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23061
23062         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23063         into the default appdomain. Fixes #58707.
23064
23065         * jit-icalls.c: Remove the broken approximation for truncl, doing
23066         no conversion is better.
23067
23068         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23069         Fixes #58863.
23070
23071 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23072
23073         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23074         of the mcrxr instruction which is not available on some processors
23075         even if it's documented to be. Implement add and sub overflow correctly
23076         (still not complete for long unsigned). Speed up icalls a bit.
23077
23078 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23079
23080         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23081         we run .cctor in the current domain instead of target_domain.
23082         
23083         Fixes bug #58558, .cctor not being called in -O=shared.
23084
23085 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23086
23087         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23088
23089 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23090
23091         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23092         which can be done with an imm8, do it that way.
23093         (mono_arch_output_basic_block): ditto for a jmp
23094         (mono_arch_emit_prolog): Computate maximum offset of a label.
23095
23096 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23097
23098         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23099         now tries to allocate prefered physical reg's for virtual
23100         regs. This reduces the number of emited spills/loads with
23101         20-30% on our core assemblies.
23102
23103 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23104
23105         * jit-icalls.c: truncl() is not needed and trunc() is
23106         the correct thing to do anyway (bug #58287).
23107
23108 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23109
23110         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23111         if available.
23112
23113 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23114
23115         * driver.c: enable loop optimizations by default.
23116
23117 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23118
23119         * mini-x86.c: fix calc of max loop size when aligning loops start.
23120
23121 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23122
23123         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23124         the stack.
23125
23126 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23127
23128         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23129         should set carry.
23130
23131         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23132
23133         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23134         
23135         * mini.c (inline_method): Allways inline some wrappers even if the cost
23136         is too large. Fixes #58785.
23137
23138         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23139         
23140 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23141
23142         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23143         (crichton@gimp.org). Beginning of support for sparc/linux.
23144
23145         * mini-sparc.c: Optimize retrieval of LMF address.
23146
23147 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23148
23149         * exceptions-ppc.c:  handle alloca in methods with clauses.
23150
23151 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23152
23153         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23154
23155 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23156
23157         * mini.c: Delegate most of the abort signal work to 
23158           mono_thread_request_interruption, which also handles Stop and Suspend
23159           states.
23160
23161 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23162
23163         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23164         supports the save/restore lmf opcodes.
23165
23166 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23167
23168         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23169         by gcc-3.4 as well.
23170
23171         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23172
23173 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23174
23175         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23176         methods which contain array accesses.
23177
23178         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23179         boundaries. Fixes #58537.
23180
23181         * iltests.il: Add regression test for #58537.
23182
23183 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23184
23185         * mini-x86.c (mono_arch_local_regalloc): Last part of
23186         fix for bug #58633 (releasing register to early).
23187
23188 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23189
23190         * basic-long.cs: Add new regression test.
23191
23192 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23193
23194         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23195         register too early on the chain.
23196
23197 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23198
23199         * mini.c (create_helper_signature): Use a helper function to reduce
23200         the code which needs to be written. Also set the calling convention of
23201         icalls on windows. Fixes #57840.
23202
23203 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23204
23205         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23206         exceptions-ppc.c: added helper function to get the instruction address
23207         from a signal handler context.
23208
23209 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23210
23211         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23212         from gonzalo.
23213
23214 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23215
23216         * helpers.c: Add new env variable to pass args to objdump.
23217         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23218
23219 2004-05-17  Radek Doulik  <rodo@ximian.com>
23220
23221         * Makefile.am (common_sources): added abcremoval.h so it get
23222         disted and daily mono packages on go-mono.com will build again
23223
23224 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23225
23226         * abcremoval.c: Fixed coding style, added copyright header.
23227
23228         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23229
23230         * mini.h: Added prototype for abc removal main function.
23231
23232         * build_relations_propagation_table.pl: Added copyright header.
23233
23234 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23235
23236         * basic-long.cs: reg test for complex ceq_long bug.
23237
23238 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23239
23240         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23241         reg in long and clob case (bug #58343). Fixed/added comments.
23242
23243 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23244
23245         * mini.c (mono_jit_runtime_invoke): Follow new convention
23246         of calling the invoke method with an function pointer.
23247
23248 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23249
23250         * ChangeLog: Fix author of memory leak patch.
23251
23252 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23253
23254         * Makefile.am: fix make dist as well...
23255
23256
23257 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23258
23259         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23260         on archs where pointers are 4 bytes long.
23261
23262         * Makefile.am: Added abcremoval.c source file.
23263
23264         * abcremoval.c: Added abcremoval.c.
23265
23266         * abcremoval.h: Added abcremoval.h.
23267
23268         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23269
23270         * inssel.brg: Enabled bounds check removal.
23271
23272         * mini.c: Added support for abcrem optimization.
23273
23274         * mini.h: Added abcrem optimization label.
23275
23276         * driver.c: Added support for abcrem optimization.
23277
23278         * propagated_relations_table.def: Added propagated_relations_table.def.
23279
23280 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23281
23282         * mini.c, cfold.c: fix style.
23283
23284 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23285
23286         * mini.c: handle issue with the low-level implementation of
23287         some long opcodes (bug #54209).
23288
23289 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23290
23291         * basic.cs: test for my new cmov stuff.
23292
23293 2004-05-13      Patrik Torstensson
23294
23295         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23296         opt and added peephole documentation.
23297
23298 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23299
23300         * tramp-ppc.c: rewrote the generic trampoline code.
23301
23302 2004-05-11      Patrik Torstensson
23303
23304         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23305
23306 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23307
23308         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23309
23310         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23311         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23312
23313         * mini.c: Add new icalls for AsAny marshalling.
23314
23315 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23316
23317         * tramp-ppc.c, mini-ppc.c: more cleanups.
23318
23319 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23320
23321         * mini.c: no warnings.
23322
23323 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23324
23325         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23326
23327 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23328
23329         * mini.c: In the thread abort signal handler, if the thread is in the
23330         process of being stoped, don't throw the Abort exception, just stop the
23331         thread.
23332
23333 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23334
23335         * tramp-ppc.c: removed old code.
23336
23337 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23338
23339         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23340         do some simple speed optimizations on ppc.
23341
23342 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23343
23344         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23345         and large offsets in load/store.
23346
23347 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23348
23349         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23350         it causes regressions.
23351
23352 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23353
23354         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23355         support.
23356
23357 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23358
23359         * jit-icalls.c: remove warnings.
23360         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23361         speedups for unsafe code.
23362
23363 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23364
23365         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23366
23367 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23368
23369         * basic-calls.cs: Add new regression test.
23370
23371         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23372         more portable.
23373
23374         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23375
23376         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23377         is no longer used.
23378
23379 2004-05-06      Patrik Torstensson
23380
23381         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23382         long reg allocation in any reg (not only eax:edx) and implemented 
23383         long shl/shr ops in asm instead of helpers.
23384
23385 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23386
23387         * mini-sparc.h: Fix warnings.
23388
23389         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23390         stack.
23391
23392         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23393         separate statement for clarity.
23394
23395         * mini-sparc.c: Update status.
23396
23397 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23398
23399         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23400         here.
23401
23402 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23403
23404         * inssel-ppc.brg: another small pre-release workaround:
23405         we don't do overflow detection for long_sub_un.
23406
23407 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23408
23409         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23410         (also works around a weird ppc bug: 57957).
23411
23412 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23413
23414         * tramp-ppc.c: trampoline fixes.
23415
23416 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23417
23418         * mini-ppc.c: fixed typos.
23419
23420 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23421
23422         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23423         at the top of the stack. Fixed typos. Use a frame registers
23424         for all the methods with exception clauses.
23425
23426 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23427
23428         * exceptions-ppc.c: restore fp registers.
23429
23430 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23431
23432         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23433         order from the stack top (moved the stack room to save the
23434         return value for trace after the param area). Fixed corruption
23435         in restoring registers on unwind.
23436
23437 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23438
23439         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23440
23441 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23442
23443         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23444         and prolog/epilog for methods that use it. Allow
23445         enough param area room for varargs methods. Fix miguel's
23446         breakage in exception handling.
23447
23448 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23449
23450         * Makefile.am: run genmdesc only on current arch.
23451
23452 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23453
23454         * exceptions-x86.c:
23455         * mini-x86.h: fix the build on windows.
23456
23457 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23458
23459         * 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.
23460
23461         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23462
23463         * mini-exceptions.c: New file.
23464         
23465         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23466         Move some parts of the x86 exception handling code to an 
23467         arch-independent file so it can be shared with other ports.
23468
23469 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23470
23471         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23472
23473 2004-04-26  David Waite  <mass@akuma.org>
23474
23475         * driver.c: remove comma from end of enumeration declaration
23476
23477 2004-04-26  Jackson Harper  <jackson@ximian.com>
23478
23479         * driver.c: parse config file before loading first assembly. This
23480         allows the user gac to be enabled/disabled. 
23481         
23482 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23483
23484         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23485         simpler mechanism: we do not care what is encoded initially
23486         (branch absolute or relative), we care about the code and its
23487         target.  I kept the old code for reference for now.
23488
23489         The new code tries first to determine if the jump is anywhere in
23490         the -/+32 absolute meg range, if it succeeds, it encodes using the
23491         absolute branch;  If not, it tried to find something in the
23492         relative range, if not, it uses the handle_thunk code. 
23493
23494 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23495
23496         * exceptions-ppc.c: use the correct ip register on macosx.
23497
23498 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23499
23500         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23501
23502 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23503
23504         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23505         Raise exception on integer divide by zero by hand since the hw
23506         doesn't support it. Handle NaNs in FP compares.
23507
23508 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23509
23510         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23511         code reducing duplication between the platforms and enabled
23512         signal exception handling (on linux for now).
23513
23514 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23515
23516         * exceptions-ppc.c: more macosx support.
23517
23518 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23519
23520         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23521
23522 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23523
23524         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23525
23526 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23527
23528         * iltests.il: more tests.
23529
23530 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23531
23532         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23533         vars as well.
23534
23535 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23536
23537         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23538
23539 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23540
23541         * liveness.c: Mark variables as volatile in all basic blocks reachable
23542         from exception clauses.
23543
23544 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23545
23546         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23547         inlining.
23548
23549 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23550
23551         * iltests.il, basic.cs: more tests for regalloc.
23552
23553 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23554
23555         * iltests.il: Some tests for register allocation modifications
23556         I have locally.
23557
23558 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23559
23560         * exceptions.cs: Add regression test for bug #56782.
23561
23562         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23563         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23564         the beauty of fixing the same thing in 5 different files...
23565
23566 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23567
23568         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23569         methods.
23570
23571 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23572
23573         * mini.c: Add support for STRWLPARRAY marshalling convention.
23574
23575 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23576
23577         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23578         to init the context to setup the regs pointer).
23579
23580 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23581
23582         * exceptions-ppc.c: more exceptions work.
23583
23584 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23585
23586         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23587         not allowed.
23588
23589 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23590
23591         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23592         can use the memory directly.
23593
23594         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23595
23596         add x86_add_membase, x86_sub_membase, x86_mul_membase
23597
23598 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23599
23600         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23601         GENERAL_REGS they were also hardcoded for all PPC ports.
23602
23603         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23604
23605         Remove hard-coded limit for floating point registers, use
23606         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23607
23608         Notice that in MacOS X calling conventions you can fit a lot more
23609         floating point values in registers, so I should update the PInvoke
23610         test to excercise the passing of floating point values on the
23611         stack (currently broken).
23612         
23613 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23614
23615         * tramp-ppc.c (create_trampoline_code): Added
23616         JUMP_TRAMPOLINE_SIZE. 
23617         (ppc_magic_trampoline): Follow the pattern from
23618         x86_magic_trampoline: if code is set to zero, return. 
23619         (create_trampoline_code): Always pass MonoMethod to the jump
23620         trampoline, before it was passing a null.
23621         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23622         share the code with mono_arch_create_jit_trampoline. 
23623
23624         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23625         implemented.
23626         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23627         implemented.  
23628
23629         * cpu-g4.md: Added length for jmp instruction, the worst case
23630         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23631         for save_lmf).
23632
23633 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23634
23635         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23636
23637 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23638
23639         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23640         before each IL instruction.
23641
23642         * mini.c (CEE_BOX): Fix warnings.
23643
23644 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23645
23646         * mini.c: removed a few unused vars and extra whitespace.
23647
23648 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23649
23650         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23651         checks.
23652         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23653         index.
23654         (OP_GETCHR): use the above
23655         (CEE_LDELEMA): use the above.
23656
23657         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23658         version of the generic impl.
23659         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23660         (CEE_LDELEMA): use the above.
23661
23662 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23663
23664         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23665         Fixes #56317.
23666
23667         * iltests.il: Added new regression test for #56317.
23668
23669 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23670
23671         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23672         under NetBSD. Fixes #56450.
23673
23674         * liveness.c (update_gen_kill_set): Fix previous patch.
23675
23676 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23677
23678         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23679
23680 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23681
23682         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23683         ldsfld and ldsflda.
23684
23685         * inssel-sparc.brg: Add more optimizations.
23686
23687         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23688
23689 2004-04-01  Martin Baulig  <martin@ximian.com>
23690
23691         * mini.c (handle_box): New static function; moved the
23692         implementation of CEE_BOX here.
23693         (mono_method_to_ir): Added `constrained_call' variable.
23694         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23695         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23696         mono_method_get_constrained() to get the method.
23697
23698 2004-04-01  Martin Baulig  <martin@ximian.com>
23699
23700         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23701         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23702         (mono_method_to_ir): We don't need these macros anymore since
23703         mono_class_get_full() already takes care of it. 
23704
23705 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23706
23707         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23708         use @function (as doesn't accept #function here) and check the return
23709         value of system and stop if fails.
23710
23711 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23712
23713         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23714
23715 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23716
23717         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23718
23719         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23720
23721         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23722         #56223.
23723
23724         * basic-long.cs: Add test for negation of Int64.MinValue.
23725
23726 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23727
23728         * mini-sparc.c: Update status.
23729
23730         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23731
23732         * exceptions-sparc.c: Fix return value in filters.
23733
23734         * inssel-sparc.brg: Fix register allocation in some rules.
23735
23736 2004-03-28  Martin Baulig  <martin@ximian.com>
23737
23738         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23739         if neccessary.  
23740
23741 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23742
23743         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23744         
23745         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23746         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23747         remove unused conv_u4 opcode.
23748
23749         * mini-x86.c: Remove valgrind workaround since it slows down things
23750         even when mono is not run under valgrind.
23751
23752 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23753
23754         * mini-sparc.c: Update status.
23755
23756         * inssel-sparc.brg: Add some optimizations.
23757
23758         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23759         future delay slot filling. Add support for varargs, tail calls and JMP.
23760
23761         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23762         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23763
23764         * inssel.brg: Fix register allocation in OP_ARGLIST.
23765
23766         * inssel.brg: Fix warnings.
23767
23768 2004-03-25  Martin Baulig  <martin@ximian.com>
23769
23770         * mini.c (inflate_generic_field): Removed.
23771         (mini_get_method): Removed, use mono_get_method_full(),
23772         (mini_get_class): Removed, use mono_class_get_full().
23773         (mono_method_to_ir): Pass our generic context to
23774         mono_field_from_token().        
23775
23776 2004-03-25  Martin Baulig  <martin@ximian.com>
23777
23778         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23779         of a `MonoMethod *'.
23780         (mini_get_method): Take a `MonoGenericContext *' instead
23781         of a `MonoMethod *'.
23782         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23783         a new local variable called `generic_context' which holds the
23784         current `MonoGenericContext *'; use it to lookup things.
23785
23786 2004-03-24  Martin Baulig  <martin@ximian.com>
23787
23788         * mini.c (mini_get_class): New static method; if we're inside a
23789         generic instance, inflate the class if neccessary.
23790         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23791
23792 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23793
23794         * iltests.il: New regression test for #55976.
23795
23796         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23797         #55976.
23798
23799 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23800
23801         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23802         output.
23803
23804 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23805
23806         * liveness.c: Consider SSA stores as well as loads when making vars
23807         volatile.
23808
23809         * exceptions.cs: New regression tests for register allocation.
23810         
23811 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23812
23813         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23814         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23815           domain lock only to protect puntual access to data structures.
23816           Added access lock for sighash, jit_icall_hash_name, 
23817           jit_icall_hash_addr and domain->code_mp.
23818
23819 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23820
23821         * driver.c: Print SIGSEGV handling method.
23822
23823         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23824
23825         * mini.c (setup_jit_tls_data): Handle case when this is called
23826         multiple times for a thread.
23827
23828         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23829         is different from fbxx_un. Fixes #54303. Also use constants instead of
23830         magic numbers in a lot of places.
23831
23832 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23833
23834         * exceptions.cs: Fix cctor test when --regression is used.
23835
23836 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23837
23838         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23839         for Linux/ppc.
23840
23841 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23842
23843         * inssel-ppc.brg: fixed register assignments for some rules.
23844
23845 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23846
23847         * exceptions.cs: Add test for exceptions in static constructors.
23848
23849         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23850         static constructors outside the domain lock. Fixes #55720.
23851
23852 2004-03-17  Martin Baulig  <martin@ximian.com>
23853
23854         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23855         (inflate_generic_field): Take the `MonoMethod *' instead of the
23856         `MonoClass *' and added support for generic method.
23857         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23858         have a `field->parent->gen_params', only inflate the field if it's
23859         an open constructed type.
23860
23861 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23862
23863         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23864         exception object instead of the preconstructed ones.
23865
23866 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23867
23868         * mini.c: reverted changed to sigsegv_signal_handler commited
23869         accidentally in the previous patch.
23870
23871 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23872
23873         * mini.c:
23874         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23875         running --aot with an old assembly.
23876
23877 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23878
23879         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23880         point values.
23881
23882         * mini-sparc.c: Add support for v9 branches with prediction.
23883
23884 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23885
23886         * mini.c (mini_init): #warning is GNUC only
23887
23888         * mini-sparc.h: implement __builtin_frame_address
23889         and __builtin_return_address for Sun C compiler
23890
23891 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23892
23893         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23894
23895 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23896
23897         * basic-calls.cs: Add test for unaligned byref long argument passing.
23898
23899         * mini-ops.h: Add sparcv9 compare and branch instructions.
23900
23901         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23902         v9 instructions if we have a v9 cpu.
23903
23904         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23905         registers for global allocation.
23906
23907         * exceptions-sparc.c: Fixes.
23908         
23909 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23910
23911         * liveness.c (mono_analyze_liveness): Optimized version.
23912
23913         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23914
23915         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23916         sparc work.
23917
23918         * basic-float.cs basic-calls.cs: New regression tests.
23919
23920 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23921
23922         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23923         sigaltstack implementation.
23924
23925         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23926         
23927         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23928         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23929
23930 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23931
23932         * mini.c: Fix warnings.
23933         
23934         * mini.c (mono_resolve_patch_target): New function which contains the
23935         arch independent part of the patching process.
23936
23937         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23938         patching code to a separate function.
23939
23940 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23941
23942         * mini.c (add_signal_handler): ifdef out on Windows
23943
23944 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23945
23946         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23947         cpu-sparc.md: Add exception handling support + other fixes.
23948
23949         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23950         typed GC detection in --version.
23951
23952         * basic.cs exceptions.cs: New regression tests.
23953
23954         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23955         the arch specific code can store data during a compilation.
23956
23957         * mini-ops.h: Add OP_SETFRET.
23958
23959         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23960         function, register a separate icall for each arity, so the icalls can
23961         get a wrapper.
23962         
23963         * mini.c (mono_print_tree): Print negative offsets in a more readable
23964         form.
23965         
23966         * mini.c: Make signal handling work on sparc.
23967         
23968         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23969
23970         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23971
23972         * jit-icalls.c: Emulate truncl by aintl on solaris.
23973
23974         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23975
23976 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23977
23978         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23979
23980 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23981
23982         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23983         a MarshalByRef type, inline a method that performs the check, taking into
23984         account that the object can be a proxy. Also implemented tow new opcodes:
23985         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23986         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23987         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23988
23989 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23990
23991         * mini-ppc.c: if a relative branch displacement is too big
23992         but it points to and area reachable with an absolute branch, 
23993         avoid the thunks.
23994
23995 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23996
23997         * mini.c: optimize small copies in cpblk.
23998
23999 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
24000
24001         * basic-calls.cs basic-float.cs: New regression tests.
24002
24003         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
24004         negative offsets from %fp. Implement localloc. Fix local register 
24005         allocation. Fix the case when the this argument needs to be saved to
24006         the stack. Implement some missing opcodes.
24007
24008 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
24009
24010         * mini.c (mini_method_compile): Reenable global regalloc in methods
24011         with exception handlers.
24012
24013         * linear-scan.c (mono_varlist_sort): Fix warning.
24014
24015         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
24016
24017         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
24018         regalloc costs.
24019
24020         * liveness.c: Make all variables uses in exception clauses volatile, to
24021         prevent them from being allocated to registers. Fixes #42136.
24022
24023 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
24024
24025         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
24026         causes regressions.
24027
24028         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
24029         argument to mono_arch_regalloc_cost.
24030
24031         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
24032         precisely.
24033
24034 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
24035
24036         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
24037         Make the cost of allocating a variable to a register arch dependent.
24038
24039         * basic-calls.cs: Fix compilation of tests.
24040         
24041         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
24042         helper function to cut back on the number of #ifdefs needed.
24043
24044         * mini-ppc.c: Fix compilation.
24045
24046         * basic-calls.cs: New regression tests.
24047
24048         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
24049
24050         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
24051         of l0 since that is callee saved.
24052
24053         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24054         to virtual calls.
24055
24056         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24057         of delay instruction.
24058
24059         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24060
24061         * mini.h (MonoCallInst): Add 'virtual' flag.
24062
24063         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24064
24065 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24066
24067         * *.cs: New regression tests.
24068
24069         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24070         work.
24071
24072         * mini.c (mono_runtime_install_handlers): Fix build.
24073
24074         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24075         'signal_stack_size' members.
24076
24077         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24078         alternate signal stack.
24079
24080         * exceptions-x86.c: Add stack overflow handling.
24081
24082         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24083         functions to arch independent code.
24084
24085         * mini.c (mono_print_tree): Print more detailed info for load_membase
24086         opcodes.
24087         
24088 2004-02-23  Martin Baulig  <martin@ximian.com>
24089
24090         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24091
24092 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24093
24094         * mini-x86.c: fixed reg allocation for div/rem.
24095
24096 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24097
24098         * driver.c (mono_main): Report some configuratio options on --version.
24099
24100 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24101
24102         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24103         low in the address space. Correctly flush memory in thunks where we
24104         output native code.
24105
24106 2004-02-20  Martin Baulig  <martin@ximian.com>
24107
24108         * mini.c (mini_get_method): New static method; inflate all generic
24109         methods and methods in open generic instances.
24110         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24111         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24112
24113 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24114
24115         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24116
24117         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24118
24119 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24120
24121         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24122
24123         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24124         it compile using Sun's compiler.
24125
24126 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24127
24128         * 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.
24129
24130         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24131
24132 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24133
24134         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24135         code.
24136         * mini-ppc.c: handle calls outside of the allowed range with thunks
24137         allocated using the code manager.
24138         * tramp-ppc.c: use the code manager to hold generated native code.
24139         Fixed the magic trampoline to just patch vtable entries.
24140
24141 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24142
24143         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24144         independent file.
24145
24146 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24147
24148         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24149         PPC.
24150
24151         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24152         if we have a working __thread implementation.
24153
24154         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24155         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24156
24157 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24158
24159         * mini-x86.c: Fix compilation under gcc 2.
24160         
24161 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24162
24163         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24164         contains a call to the wrapped function.
24165
24166         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24167         OP_<CALL>_IMM opcodes, and use them under X86.
24168         
24169         * mini.c (mono_jit_find_compiled_method): Fix warning.
24170
24171         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24172
24173         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24174
24175         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24176         functionality to mini.c.
24177
24178         * mini.c (mono_create_jump_trampoline): New function to create a jump
24179         trampoline. Return a compiled method instead of a trampoline if it
24180         exists. Add a cache for jump trampolines.
24181
24182         * mini.c (mono_jit_find_compiled_method): New function to return a
24183         compiled method if it exists.
24184
24185         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24186         mono_arch_create_jit_trampoline.
24187
24188         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24189         a jump trampoline. Fixes #52092.
24190         
24191 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24192
24193         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24194         which is not up-to-date. Add check_corlib_version () instead.
24195
24196         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24197         have to call it.
24198         
24199         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24200         since newer valgrind versions do not need it.
24201
24202         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24203         compile a method with a given set of optimizations.
24204
24205         * mini.c: Compile icall wrappers on-demand instead of at startup.
24206
24207         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24208         wrapper for an icall.
24209
24210 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24211
24212         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24213         #54063.
24214
24215         * iltests.il: Add test for non-empty stack before switch instruction.
24216
24217 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24218
24219         * mini.c: Add support for new stringbuilder marshalling conventions.
24220
24221         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24222
24223 2004-02-01  Martin Baulig  <martin@ximian.com>
24224
24225         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24226         in `ginst->mtype_argv'.
24227
24228 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24229
24230         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24231         facilitate grepping.
24232
24233 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24234
24235         * mini.c: fixed buglet in initobj generic implementation for references.
24236
24237 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24238
24239         * Makefile.am: make the version script conditional.
24240         * jit-icalls.c: handle missing truncl().
24241
24242 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24243
24244         * exceptions.cs: Add more tests for double->int conversion.
24245
24246         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24247         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24248
24249 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24250
24251         * driver.c: make --verbose --version emit an error
24252         if the loaded corlib doesn't match the runtime version.
24253
24254 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24255
24256         * mini-ppc.h: export ppc_patch().
24257         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24258         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24259         on par or better than on MacOSX.
24260
24261 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24262
24263         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24264         mono_lookup_pinvoke_call.
24265
24266         * mini-x86.c: Under windows, the default pinvoke calling convention is
24267         stdcall. Fixes #52834.
24268
24269         * mini.c (optimize_branches): Add an upper bound to the number of
24270         iterations to prevent infinite loops on strange loops. Fixes #53003.
24271
24272 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24273
24274         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24275         and ISINST. Fixes #52093.
24276
24277         * objects.cs (test_0_vector_array_cast): New tests.
24278         
24279 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24280
24281         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24282         checking in Array.Set ().
24283
24284         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24285         #52590.
24286
24287         * object.cs (test_0_multi_array_cast): New regression test.
24288
24289 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24290
24291         * exceptions-ppc.c: fix build on Linux/PPC.
24292
24293 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24294
24295         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24296         running under valgrind.
24297         (x86_magic_trampoline): Fix build bustage.
24298
24299         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24300         negative values as well. This is needed for the encoding of the line number
24301         info, since sometimes the line numbers are not in increasing order.
24302
24303 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24304
24305         * cpu-pentium.md (localloc): Increase the size of the localloc 
24306         instruction since it is a loop under Win32.
24307
24308         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24309         allocation.
24310
24311 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24312
24313         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24314         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24315         Max Horn (max@quendi.de). Fix file names in comments.
24316
24317 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24318
24319         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24320         avoid stack overflow.
24321         (replace_usage): Avoid uninitialized variable warnings.
24322
24323         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24324         and taking the address of valuetype variables.
24325
24326 2004-01-03  Patrik Torstensson
24327
24328         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24329         for other purposes than FP later on.
24330
24331 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24332
24333         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24334         of tail calls.
24335
24336 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24337
24338         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24339
24340 2003-12-30  Patrik Torstensson <p@rxc.se>
24341
24342         * mini-x86.h: Decreased number of availiable fp regs.
24343         Solves corner cases with FP spilling.
24344
24345 2003-12-23  Patrik Torstensson <p@rxc.se>
24346
24347         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24348         for floating point stack tracking / spilling on x86. 
24349         Fixes bug #49012.
24350         
24351         * basic-float.cs: added float mul overflow test.
24352
24353 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24354
24355         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24356
24357 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24358
24359         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24360         supports for cond branches that overflow the immediate
24361         overflow offset. mcs can compile simple programs.
24362
24363 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24364
24365         * exceptions-ppc.c: exception handling support wip:
24366         finally handlers get run on exception.
24367
24368 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24369
24370         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24371         profiling.
24372
24373 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24374
24375         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24376         initial support for stack walking and unwinding.
24377
24378 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24379
24380         * driver.c (mono_main): Make corlib-out-of-sync message more 
24381         descriptive. Also remove verify_corlib call.
24382
24383 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24384
24385         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24386         not overlap with other call's arguments, too.
24387
24388 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24389
24390         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24391         move to arch-specific code the choice of arch-specific
24392         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24393         * mini.c: ensure emulation calls will not interleave
24394         with other calls.
24395
24396 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24397
24398         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24399         the magic trampoline stack frame is dropped before executing
24400         the new method.
24401
24402 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24403
24404         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24405         and integer to fp conversions. Added support for overflowing
24406         arguments on the stack. Reserve a couple more registers as temps.
24407         Added support for aot compilation (as output still needs to be
24408         tweaked, though).
24409
24410 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24411
24412         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24413         Don't overwrite return register in some corner cases.
24414
24415 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24416
24417         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24418         static constructors when AOT compiling.
24419
24420         * driver.c (mono_main): Call mono_check_corlib_version.
24421
24422 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24423
24424         * cpu-g4.md, basic.cs: fixed div target register.
24425
24426 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24427
24428         * mini-ppc.c, basic.cs: shl_imm fix with test.
24429
24430 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24431
24432         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24433         structures by value. Misc fixes.
24434         * objects.cs: more tests.
24435
24436 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24437
24438         * mini-ppc.c: lconv.ovf.i implemented.
24439
24440 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24441
24442         * mini.c:
24443         (mini_init): don't error out if someone already called g_thread_init.
24444
24445 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24446
24447         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24448         to be any type per the spec. Fix abnormal memory usage when
24449         the same object is repeatedly thrown.
24450
24451 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24452
24453         * mini.c: check for overruns in IL code.
24454
24455 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24456
24457         * TODO: Add/remove some todo entries.
24458
24459 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24460
24461         * driver.c (mono_main): Call mono_verify_corlib.
24462
24463 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24464
24465         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24466         This has been moved to mini.c
24467         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24468         type being casted is marshalbyref it could be a proxy, so instead of
24469         emitting the type check code, emit a call to a runtime method that will
24470         perform the check by calling CanCastTo if needed.
24471
24472 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24473
24474         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24475         methods with large stack frames under Win32.
24476
24477 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24478
24479         * Makefile.am: Distribute regression tests.
24480
24481         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24482         at the end instead of inserting each variable into the sorted list.
24483
24484         * linear-scan.c (mono_varlist_sort): New helper function.
24485         
24486 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24487
24488         * mini.c: ensure arguments and locals are within bounds.
24489
24490 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24491
24492         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24493         related fixes.
24494
24495 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24496
24497         * mini.c (mono_cprop_copy_values): Fix crash.
24498
24499         * aot.c: Set verbosity back to 0.
24500         
24501 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24502
24503         * regalloc.c: complete memory leak fix by Laurent Morichetti
24504         (l_m@pacbell.net).
24505
24506 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24507
24508         * driver.c (main_thread_handler): Revert the previous patch.
24509
24510         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24511         under valgrind.
24512
24513         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24514         memory from the memory pool.
24515
24516         * driver.c (main_thread_handler): Turn on all optimizations when
24517         --aot is used.
24518
24519         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24520         an array for better performance.
24521
24522         * regalloc.c (mono_regstate_assign): Fix memory leak.
24523
24524         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24525         serialize the debug info.
24526
24527         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24528         debug info from the serialized representation.
24529
24530         * aot.c: Save debug info into the generated file and load it when 
24531         loading a method.
24532
24533         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24534
24535 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24536
24537         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24538         More FP-related fixes.
24539
24540 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24541
24542         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24543         and register allocation buglet. Hello world now runs.
24544
24545 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24546
24547         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24548         * tramp-ppc.c: fixed class init trampoline.
24549         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24550
24551 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24552
24553         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24554         mini.c: more ppc changes/fixes.
24555
24556 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24557
24558         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24559         Also optimize the case when the arguments are the same in the caller 
24560         and in the callee.
24561
24562         * iltests.il: Add tests for tail calls with valuetype arguments.
24563
24564 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24565
24566         * mini-ppc.c: fixes for struct return type.
24567
24568 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24569
24570         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24571         mono_spillvar_offset() to arch-specific code.
24572
24573 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24574
24575         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24576
24577 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24578
24579         * exceptions-x86.c: Fix stack space leaks.
24580         
24581         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24582         registers from the lmf if the method has save_lmf set.
24583
24584 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24585
24586         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24587         of icall wrappers into InvokeInDomain, since these are now per-domain.
24588
24589 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24590
24591         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24592         make some opcode emulation and intrinsic ops enabled/disabled 
24593         according to the architecture. More fixes.
24594
24595 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24596
24597         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24598
24599 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24600
24601         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24602         arch-specific handling for 'this' and struct return type to
24603         arch-specific code.
24604
24605 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24606
24607         * aot.c: prevent divide by zero error when reporting (it happened with
24608         Accessibility.dll).
24609
24610 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24611
24612         * mini.h (inst_switch): Remove unused macro.
24613
24614 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24615
24616         * aot.c:
24617         (load_aot_module): free 'info->methods' and 'info' properly. No more
24618         "free(): invalid pointer blah" messages when you have an old aot
24619         compiled assembly.
24620
24621 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24622
24623         * jit-icalls.c, mini.c: Added support for context static fields.
24624
24625 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24626
24627         * mini.c (mono_method_blittable): Methods which set LastError are not 
24628         blittable either. Fixes #51108.
24629         
24630 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24631
24632         * mini.c: flush icache.
24633         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24634
24635 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24636
24637         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24638
24639 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24640
24641         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24642         safe on IA32.
24643
24644         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24645         vararg calls.
24646
24647         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24648
24649 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24650
24651         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24652         instruction when the result is discarded.
24653
24654         * iltests.il (test_0_div_regalloc): New regression test.
24655
24656         * arrays.cs: Fix compilation error.
24657
24658 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24659
24660         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24661         float rules to inssel-x86.brg: sane architectures with FP registers
24662         don't need to implement these rules.
24663
24664 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24665
24666         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24667
24668 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24669
24670         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24671         implementation of 32 bit systems.
24672
24673 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24674
24675         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24676         (Jeroen Zwartepoorte).
24677
24678 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24679
24680         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24681         the caller and the callee matches.
24682         
24683         * mini.c (mono_method_to_ir): Add comment.
24684
24685         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24686         signbit is missing on some platforms.
24687
24688 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24689
24690         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24691
24692         * mini.c (setup_jit_tls_data): Call the new function.
24693         
24694         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24695
24696         * mini-x86.c: Add experimental support for fast access to the lmf
24697         structure under NPTL/Linux 2.6.x.
24698
24699 2003-11-06  Martin Baulig  <martin@ximian.com>
24700
24701         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24702         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24703         the debugger.
24704
24705 2003-11-02  Martin Baulig  <martin@ximian.com>
24706
24707         * mini.c (inflate_generic_field): New static method.
24708         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24709         generic instance and the field is declared in a generic type, call
24710         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24711
24712 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24713
24714         * mini.h mini.c (mono_method_same_domain): New function to return
24715         whenever the caller and the callee are in the same domain.
24716
24717         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24718
24719 2003-10-30  Martin Baulig  <martin@ximian.com>
24720
24721         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24722         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24723         method parameters.
24724         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24725         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24726
24727 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24728
24729         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24730         propagation.
24731
24732         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24733         object here, so it is in the correct appdomain etc.
24734
24735 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24736
24737         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24738         already done.
24739         (mono_method_to_ir): Avoid freeing the type created returned from
24740         mono_type_create_from_typespec, since it is put into an internal cache
24741         by the function. Fixes pointer.exe.
24742
24743         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24744         trampolines for icalls and pinvokes as well. Fixes #33569.
24745
24746 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24747
24748         * mini.c: Update after appdomain changes.
24749
24750         * mini.c (mono_jit_compile_method_inner): Allways compile native
24751         method wrappers in the root domain, since there can only be one
24752         instance of them, whose address is stored in method->info.
24753
24754 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24755
24756         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24757         environment variable. Instead detect automatically whenever running
24758         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24759         valgrind.h.
24760
24761 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24762
24763         * trace.c, trace.h: New files that implement the new trace option
24764         parsing. 
24765
24766         * driver.c: Document new --trace options.
24767
24768         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24769         mini-x86.c: Apply:
24770
24771         -       if (mono_jit_trace_calls)
24772         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24773
24774         * mini.h: prototypes.
24775         
24776 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24777
24778         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24779
24780         * mini.c inssel.brg: Implement typedefbyref opcodes.
24781
24782         * mini.c (mono_jit_compile_method): Remove unused local variable.
24783
24784         * mini.c (mono_jit_compile_method_inner): Ditto.
24785         
24786 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24787
24788         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24789         
24790         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24791
24792 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24793
24794         * mini.c (mono_no_aot): Remove unused global variable.
24795
24796         * mini.c: Thread safety fixes.
24797
24798 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24799
24800         * mini.c (mono_create_class_init_trampoline): Add a lock around
24801         class_init_hash_addr.
24802
24803         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24804         #30073.
24805
24806         * mini.c: Decompose the NEWARR instruction before decomposing its
24807         arguments. Fixes #30073.
24808
24809 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24810
24811         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24812         convention.
24813
24814 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24815
24816         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24817
24818         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24819
24820         * driver.c: Add support for compiling icall wrappers to --compile.
24821
24822 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24823
24824         * inssel.brg: The empty value in class->interface_offsets is -1, not
24825         0. Fixes #49287.
24826
24827 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24828
24829         * objects.cs: New test for 'is' operator on an array of interfaces.
24830
24831 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24832
24833         * tramp-ppc.c: update trampoline code to support jumps
24834         and class initialization.
24835
24836 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24837
24838         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24839
24840         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24841
24842         * inssel.brg (OP_UNBOX): Remove unused rule.
24843
24844         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24845         region instead of one for each method. Fixes #47813.
24846
24847 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24848
24849         * exceptions.cs (test_0_nested_finally): New regression test for
24850         nested exception handlers.
24851
24852         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24853
24854         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24855
24856         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24857         inlining.
24858
24859         * mini.c (mono_method_check_inlining): Make the inlining limit 
24860         configurable by an environment variable.
24861         
24862         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24863
24864         * mini.h: Bump AOT file version.
24865
24866         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24867         token, store the image along with the token, since the token might not 
24868         refer to the same image as the method containing the relocation, 
24869         because of inlining.
24870
24871 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24872
24873         * mini.c (mono_precompile_assemblies): New function to compile
24874         all methods in all loaded assemblies.
24875
24876         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24877
24878         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24879         iassign and fassign to int*, since they can contain large negative
24880         values if the register is spilled. Also added some comments. Fixes
24881         #45817.
24882
24883         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24884         under Win32. Fixes #42964.
24885
24886 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24887
24888         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24889
24890         * aot.c: Added support for AOT compiling methods which contain calls
24891         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24892         handled.
24893         
24894         * driver.c (compile_all_methods): Run the compilation in a thread
24895         managed by mono. Fixes #44023.
24896
24897         * mini.c (mono_codegen): Print full method name in verbose output.
24898
24899         * mini-x86.c (mono_arch_patch_code): Fix warning.
24900         
24901         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24902         jumps, since the method we are jumping to might be domain-specific.
24903
24904         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24905
24906 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24907
24908         * inssel.brg: string chars are unsigned.
24909
24910 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24911
24912         * TODO: New todo item.
24913
24914         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24915         which calls mono_runtime_class_init and patches the call site to
24916         avoid further calls.
24917         (mono_arch_create_class_init_trampoline): New arch specific function 
24918         to create a class init trampoline.
24919         (create_trampoline_code): Generalized so it can create
24920         class init trampolines as well.
24921
24922         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24923         (mono_create_class_init_trampoline): New function to create and cache
24924         class init trampolines.
24925         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24926         vtable given the address of a class init trampoline. Used by the
24927         patching process.
24928         (mono_codegen): Generate a call to a trampoline instead of
24929         mono_runtime_class_init in LDSFLD[A].
24930         (mono_codegen): Add relocations for the new trampoline.
24931         
24932         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24933         MONO_PATCH_INFO_CLASS_INIT.
24934
24935         * mini.h: Bump AOT version number.
24936
24937         * aot.c: Create a copy of the loaded code instead of using the original
24938         so methods which call each other will be close in memory, improving
24939         cache behaviour.
24940         
24941         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24942         patch since it breaks the regression tests.
24943         
24944         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24945         for the register saving instruction sequence since the 
24946         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24947
24948 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24949
24950         * TODO: Fix todo item && remove another.
24951
24952 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24953
24954         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24955         previous checkin.
24956
24957         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24958         function of the module.
24959
24960         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24961         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24962         --no-aot command line option.
24963
24964 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24965
24966         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24967         by Bernie Solomon (bernard@ugsolutions.com).
24968
24969         * inssel.brg: Refactor the interface offset table related code into
24970         its separate functions and add support for the AOT case.
24971
24972 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24973
24974         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24975         
24976         * aot.c: Added mono_aot_verbose variable and made all debugging
24977         output depend on the value of this variable.
24978
24979         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24980         method_label and info_label.
24981
24982         * mini.h mini-x86.c aot.c: Added a new relocation type 
24983         MONO_PATCH_INFO_IID for klass->interface_id.
24984
24985         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24986         the MonoJitInfo structure.
24987
24988         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24989         a non-root appdomain in shared mode.
24990
24991 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24992
24993         * aot.c: make aot loader less verbose. Remove free of unused variable.
24994
24995 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24996
24997         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24998
24999         * .cvsignore: Added *.dll.
25000
25001         * mini.c (mono_print_tree_nl): New function callable while debugging.
25002
25003         * mini.c (mono_print_code): Export this.
25004
25005         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
25006         patched code.
25007
25008 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
25009
25010         * mini.h (MonoCompile): Added 'jit_info' field.
25011
25012         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
25013         the cfg structure, since it is needed by the AOT compiler.
25014
25015         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
25016
25017         * aot.c: A major rewrite. Changes include:
25018         - save exception tables for methods which have them.
25019         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
25020         to g_module_symbol.
25021         - reworked the file format so it is now much smaller and needs
25022         fewer relocation entries.
25023         
25024 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25025
25026         * aot.c (load_aot_module): Fix build bustage on platforms without
25027         Boehm GC.
25028
25029 2003-09-04  Martin Baulig  <martin@ximian.com>
25030
25031         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
25032
25033 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25034
25035         * TODO: Some new optimization ideas.
25036
25037         * aot.c: Move AOT module loading logic here from mono_assembly_open.
25038
25039         * aot.c: Save the optimization flags used to compile the code into
25040         the AOT module.
25041
25042         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
25043         support emitting domain specific code.
25044         
25045         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
25046         no longer domain neutral. It can be made domain neutral by compiling 
25047         with --optimize=shared.
25048
25049         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
25050         between appdomains.
25051
25052         * driver.c mini.h mini.c: New --no-aot debugging option which disables
25053         loading of AOT code.
25054
25055         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25056         
25057         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25058         if there is no domain neutrality information.
25059
25060 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25061
25062         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25063         format version into the generated library.
25064
25065         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25066         callee method into the caller since one of them could be shared.
25067
25068         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25069         system exceptions from AOT code now works.
25070
25071         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25072         method if it is domain neutral and the callee is not.
25073
25074         * graph.c (cfg_emit_one_loop_level): Fix warning.
25075
25076 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25077
25078         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25079         last checkin.
25080
25081 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25082
25083         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25084         is needed  by code which is executed before mono_runtime_init ().
25085         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25086         
25087         * mini.c (mono_thread_abort): Fix warning.
25088         (mono_jit_compile_method): Call static constructor in the AOT case too.
25089
25090         * aot.c (mono_compile_assembly): Fix warning.
25091
25092 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25093
25094         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25095
25096 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25097
25098         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25099
25100         * cpu-pentium.md: Fix the length of call opcodes so they include the
25101         ESP restoring instruction. Fixes #47968.
25102
25103 2003-08-28  Martin Baulig  <martin@ximian.com>
25104
25105         * mini-x86.c (mono_arch_call_opcode): Added support for
25106         MONO_TYPE_GENERICINST.
25107
25108         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25109
25110 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25111
25112         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25113         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25114
25115         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25116         metadata_section.
25117
25118 2003-08-26  Martin Baulig  <martin@ximian.com>
25119
25120         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25121         when reporting an error, set this to the actual error location.
25122         (mono_method_to_ir): Report the correct error location if
25123         get_basic_blocks() returned an error.
25124
25125 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25126
25127         * mini.c (mono_type_blittable): OBJECT is not blittable.
25128         (mono_method_blittable): Methods which have marshalling descriptors
25129         are not blittable either. Fixes #47842.
25130
25131 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25132
25133         * driver.c mini.c: Use an environment variable instead of a global 
25134         variable. Also fix the build.
25135
25136         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25137         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25138         reporting this. 
25139
25140         * driver.c mini.c: Added --with-valgrind option to turn off some
25141         code which prevents mono from running under valgrind.
25142
25143         * mini.c (mono_emit_call_args): Fixed warning.
25144
25145         * mini.c (mono_emulate_opcode): Fixed warning.
25146
25147 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25148
25149         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25150         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25151         regalloc.c, regalloc.h: specify available registers in arch-specific
25152         code and support floats in the regallocator (patch by Laurent Morichetti 
25153         <l_m@pacbell.net>)
25154
25155 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25156
25157         * mini.c: mono_thread_current() can be called only after
25158         mono_runtime_init(): rearrange code to not call it early on.
25159
25160 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25161
25162         * mini.c: allocate jump tables in the code mempools.
25163
25164 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25165
25166         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25167         freed.
25168
25169 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25170
25171         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25172         12 to 16.  This fixes bug #47453.
25173
25174
25175 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25176
25177         * mini-ppc.c: fixed indexed load and unsigned compares.
25178
25179 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25180
25181         * mini.c: reenabled installation of handler for
25182           thread abort signal.
25183
25184 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25185
25186         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25187         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25188         until it's fixed and actually useful.
25189
25190 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25191
25192         * inssel-long32.brg: couple more opcodes implemented.
25193
25194 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25195         
25196         * mini-sparc.c: Even more opcodes implemeted.
25197
25198 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25199
25200         * mini-sparc.c: More opcodes implemented.
25201
25202 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25203
25204         * mini-sparc.c: More opcodes implemented.
25205
25206 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25207
25208         * inssel-sparc.brg: Add some needed rules.  Direct
25209         copy from PPC.
25210         * Makefile.am: Use inssel-sparc.brg
25211         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25212         an assert happy for now.
25213
25214 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25215
25216         * mini-sparc.c: Fixed compile errors.
25217         * exceptions-sparc.c: Same.  We now produce a mono binary 
25218         on sparc-linux.  Yea.
25219
25220 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25221
25222         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25223         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25224         They compile, but do not work.
25225
25226 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25227
25228         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25229         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25230         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25231         (ct@gentoo.org).
25232
25233 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25234
25235         * mini.c: more opcodes implemented and better support for generics.
25236
25237 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25238
25239         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25240         * mini.c, mini.h: first cut at generics support: some new instructions 
25241         added and changed the behaviour of some of the existing ones.
25242
25243 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25244
25245         * mini.c: Removed definition of metadata_shared mutex here.
25246
25247 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25248
25249         * mini-x86.c: make vararg calls work for instance methods.
25250
25251 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25252
25253         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25254         returns the arguments in a separte list, now.
25255
25256 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25257
25258         * aot.c, mini.c: updates for array type representation changes.
25259
25260 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25261
25262         * mini.c: register function to perform jit shutdown.
25263
25264 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25265
25266         * mini.c: use a faster allocator if possible.
25267
25268 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25269
25270         * aot.c: some cleanups and portability changes.
25271
25272 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25273
25274         * mini.c: use faster allocation for CEE_BOX if possible.
25275
25276 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25277
25278         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25279         Moved inlined mempcy code to its own function so that is can be
25280         reused. Added an inline memset function as well (optimized initobj).
25281         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25282
25283 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25284
25285         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25286
25287 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25288
25289         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25290         arch code can setup the cpu for CLR execution, if needed.
25291         We use it on x86 to set the precision of FP operations.
25292
25293 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25294
25295         * mini.c: disable some optimizations if we can guess they'll cost too
25296         much for a given method.
25297
25298 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25299
25300         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25301         
25302 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25303         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25304         info collection support.
25305
25306 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25307
25308         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25309         is now implemented in the profiling API. Get rid of a couple of
25310         unnecessary global variables.
25311
25312 2003-06-15  Nick Drochak <ndrochak@gol.com>
25313
25314         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25315         * cpu-g4.md: add op_bigmul and op_bigmul_un
25316         * cpu_pentium.md: add op_bigmul_un
25317         * inssel-long32.brg: add rule for unsigned bigmul
25318         * mini-ops.h: define OP_BIGMUL_UN
25319         * mini-x86.c: THE BUG: handle (un)signed properly
25320         * mini.c: choose unsigned opcode if needed.
25321         This set of patches fixes bug #44291
25322
25323 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25324
25325         * mini.c (optimize_branches): improved to handle all kinds of
25326         conditional branches.
25327
25328 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25329
25330         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25331         don't raise exceptions.
25332
25333 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25334
25335         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25336         to arch-specific files.
25337
25338 2003-06-09  Martin Baulig  <martin@ximian.com>
25339
25340         * Makefile.am (libs): Added $(LIBGC_LIBS).
25341
25342 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25343
25344         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25345         and OP_ATAN (fixes bug#44293).
25346
25347 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25348
25349         * Makefile.am, mini-x86.c: rename cpu description array to
25350         pentium_desc, since some compilers define the 'pentium' preprocessor
25351         symbol.
25352
25353 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25354
25355         * mini.c (mini_select_instructions): add explicit branch if the
25356         following block is not the false target of a conditional branch -
25357         we need this with any optimization that reorder or remove bblocks
25358
25359         * mini.c (optimize_branches): bug fixes
25360
25361 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25362
25363         * mini.c (mono_method_to_ir): inline static readonly fields
25364
25365         * ssa.c (fold_tree): start cfold support for long (very simple
25366         cases only)
25367
25368         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25369
25370 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25371
25372         * inssel.brg: fixed memcpy (bug #44219).
25373
25374 2003-06-05  Dick Porter  <dick@ximian.com>
25375
25376         * driver.c: Set the glib log levels to not abort if g_message
25377         recurses.
25378
25379         g_set_prgname() has to happen before mini_init() so that the
25380         process handle gets the info.
25381         
25382 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25383
25384         * driver.c: add intrins to the default optimizations to get wider
25385         exposure.
25386
25387 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25388
25389         * mini.h: some large basic blocks will overflow a 16-bit
25390         integers for symbolic registers.
25391
25392 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25393
25394         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25395         (mono_arch_output_basic_block): fix bug 43499 
25396
25397 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25398
25399         * mini.c: kill duplicated definition of mono_debug_format.
25400
25401 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25402
25403         * mini-x86.c, arrays.cs: fixed register allocation bug.
25404
25405 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25406
25407         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25408
25409         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25410
25411 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25412
25413         * mini.c:
25414         (print_method_from_ip): also print source location information if
25415         available.
25416
25417 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25418
25419         * mini.c (mono_find_block_region): bug fix in region code
25420         (mini_method_compile): enable removing unreachable code again, but
25421         only in methods without exception clauses.
25422
25423 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25424
25425         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25426         Implemented arglist opcode and handling of TypedReference type.
25427         Fixed x86 call convention when a structure is returned.
25428         Minimal support for calling static vararg methods.
25429
25430 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25431
25432         * mini.c (mini_method_compile):  always remove unreachable code,
25433         because the code in them may be inconsistent  (access to dead
25434         variables for example).
25435
25436 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25437
25438         * driver.c, debug-mini.c: warning fixes.
25439
25440 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25441
25442         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25443
25444 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25445
25446         * mini.c: thread-static fields are registered in mono_class_vtable(),
25447         so ensure the function is called before checking for them.
25448
25449 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25450
25451         * mini.c (optimize_branches): fix for bug 43586
25452
25453         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25454         overflow (fixes Bug #43639)
25455
25456 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25457
25458         * mini.c, objects.cs: allow the use of stobj for primitive types.
25459
25460 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25461
25462         * mini.c: be less strict about argument checking until we support
25463         running the verifier.
25464
25465 2003-05-27  Nick Drochak <ndrochak@gol.com>
25466
25467         * basic-long.cs: tests for (ulong)int * (ulong)int also
25468         * mini.c: use the same trick for (ulong)int * (ulong)int
25469
25470 2003-05-27  Nick Drochak <ndrochak@gol.com>
25471
25472         * basic-long.cs: add regression test for (long)int * (long)int
25473         * cpu-pentium.md: add op_bigmul specification
25474         * inssel-long32.brg: add OP_BIGMUL rule
25475         * mini-ops.h: add OP_BIGMUL
25476         * mini-x86.c: register allocator: handle case where src1 needs to be
25477         in EAX.
25478         * mini.c: substitute special BIGMUL opcode in the tree for 
25479         (long)int * (long)int
25480
25481 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25482
25483         * jit-icalls.c: call the type ctor on field access if needed.
25484
25485 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25486
25487         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25488         to a method (including results of ldelema, bug#43207).
25489
25490 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25491
25492         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25493         colors to show exception handler blocks.
25494
25495         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25496         (fix for pinvoke7.cs).
25497
25498 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25499
25500         * mini.h, mini.c: ensure correct initialization order for types that
25501         require it. Prepare for lazy compilation of jit icall wrappers.
25502         Provide a name for opcode emulation to reduce unneeded mallocing.
25503
25504 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25505
25506         * mini-x86.c: better register restoring code and profiling
25507         support for tail calls.
25508
25509 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25510
25511         * mini.h, driver.c: prepare for leaf methods optimization.
25512
25513 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25514
25515         * mini.c: get targets of branches before converting a method.
25516
25517 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25518
25519         * mini.c (optimize_branches): added some experimental code (disbaled) 
25520
25521 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25522
25523         * mini.c (optimize_branches): fix branch to branch optimization 
25524
25525         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25526
25527         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25528
25529         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25530
25531         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25532         if needed.
25533
25534 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25535
25536         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25537         enable use of interface variables again.
25538
25539         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25540         I1 to registers because there is no simply way to sign extend 8bit
25541         quantities in caller saved registers on x86.
25542
25543         * inssel-float.brg: set costs of some rules to 2 so
25544         that monobure always select the arch. specific ones if supplied,
25545         regardless of the order we pass the files to monoburg.
25546
25547 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25548
25549         * mini.c, mini-x86.c: since the magic trampoline for jumps
25550         can't patch the code directly, we do it as soon as the
25551         method gets compiled.
25552
25553 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25554
25555         * mini-x86.c, mini.h: introduce a new patching method
25556         to support CEE_JMP and tail calls.
25557         * mini.c: obey tail.call. Don't precompile methods target
25558         of CEE_JMP.
25559         * tramp-x86.c: new trampoline code to handle methods
25560         reached through a jump.
25561
25562 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25563
25564         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25565         bit values to registers
25566
25567 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25568
25569         * mini.c (mono_compile_get_interface_var): share interface
25570         variables if possible.
25571
25572 2003-05-16  Martin Baulig  <martin@ximian.com>
25573
25574         * debug-mini.c (mono_init_debugger): New function to initialize
25575         the debugger.  This is not in the debugger since it needs to
25576         access some of mini's internals.
25577
25578 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25579
25580         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25581
25582 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25583
25584         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25585         for value type handling.
25586
25587 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25588
25589         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25590         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25591
25592 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25593
25594         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25595           the constructor through a proxy.
25596
25597 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25598
25599         * jit-icalls.c, inssel.brg: fixes to array element address
25600         calculations.
25601
25602 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25603
25604         * mini-x86.c (is_regsize_var): allocate pointer to registers
25605
25606 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25607
25608         * driver.c: fixed typo, added intrins to the set of optimizations
25609         tested with regressions.
25610
25611 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25612
25613         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25614         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25615         test case.
25616
25617 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25618
25619         * inssel.brg: remove some common pop instructions without side effects
25620
25621 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25622
25623         * inssel-x86.brg: fixed thinko in int to double conversions.
25624
25625 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25626
25627         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25628
25629 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25630
25631         * inssel-long32.brg: two more missing instructions.
25632
25633 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25634
25635         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25636         if not already set.
25637
25638 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25639
25640         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25641         correctly.
25642
25643         * basic-float.cs: Added tests for negative zero.
25644
25645 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25646
25647         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25648         a couple of missing operations for long casts, with test cases.
25649
25650 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25651
25652         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25653
25654 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25655
25656         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25657         code size estimation.
25658
25659 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25660
25661         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25662         abstract methods (fix bug 42542)
25663
25664         * aot.c: add ability to handle array types
25665         
25666 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25667
25668         * mini.c: Call the _specific versions of the object allocation
25669         functions if possible.
25670
25671 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25672
25673         * driver.c: call setlocale ().
25674
25675 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25676
25677         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25678         windows build.
25679
25680 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25681
25682         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25683
25684         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25685         wrappers (fix bug 42122)
25686
25687 2003-05-04  Martin Baulig  <martin@ximian.com>
25688
25689         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25690
25691         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25692         s/mini_set_defaults/mono_set_defaults/g.
25693
25694 2003-05-04  Martin Baulig  <martin@ximian.com>
25695
25696         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25697
25698 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25699
25700         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25701         (reported by Don Roberts).
25702
25703 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25704
25705         * mini.c: temporarily work around two bugs for this release.
25706
25707 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25708
25709         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25710         that contains -export-dynamic and it makes using the ld script
25711         useless.
25712         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25713
25714 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25715
25716         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25717         specific cpu.
25718
25719 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25720
25721         * mini.c: make sure leave calls all the needed finally blocks,
25722         even when the target jumps out of multiple exception clauses.
25723
25724 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25725
25726         * ldscript, Makefile.am: add linker script to reduce the number of
25727         exported symbols (should also fix the issues with libwine defining
25728         some of the same symbols in io-layer).
25729
25730 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25731
25732         * driver.c (mini_main): Avoid assertion when no file name is given on 
25733         the command line.
25734
25735 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25736
25737         * driver.c: added --version/-V command line option.
25738         Added the inline optimization in the regression tests.
25739
25740 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25741
25742         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25743         to the type in the method signature (fixes bug#42134).
25744
25745 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25746
25747         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25748
25749 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25750
25751         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25752
25753 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25754
25755         * driver.c: fixed bug #42100.
25756
25757 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25758
25759         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25760
25761 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25762
25763         * mini.c: moved most of the code required to do inlining to its own
25764         function so it can be reused. Inline also ctors if appropriate.
25765
25766 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25767
25768         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25769         the runtime can call mono API functions.
25770
25771 2003-04-27  Martin Baulig  <martin@ximian.com>
25772
25773         * debug-mini.c (mono_debug_init_method): Added
25774         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25775         send a notification to the debugger.
25776
25777         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25778         running in the Mono Debugger, just pass the breakpoint number to
25779         mono_debug_init_method().
25780
25781         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25782
25783 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25784
25785         * mini.c: allow some more unsafe compares.
25786
25787 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25788
25789         * mini-x86.c, Makefile.am: make distcheck works (partially from
25790         a patch by Richard Lee <r.h.lee@attbi.com>).
25791         * regset.c, regset.h: removed, they are unused.
25792
25793 2003-04-25  Dick Porter  <dick@ximian.com>
25794
25795         * driver.c: Usage reports the name as 'mono' not 'mini'
25796         * exceptions-x86.c: Build and run on freebsd
25797
25798 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25799
25800         * Makefile.am: install the program with the 'mono' name and
25801         the library as libmono instead of mini and libmini.
25802
25803 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25804
25805         * driver.c: provide the APIs for the embedding interface of the old jit.
25806
25807 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25808
25809         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25810
25811 2003-04-23  Martin Baulig  <martin@ximian.com>
25812
25813         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25814
25815         * driver.c: Added `--debug' command line argument to enable
25816         debugging support.
25817
25818 2003-04-23  Martin Baulig  <martin@ximian.com>
25819
25820         * debug.[ch]: Removed.  The code is now in
25821         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25822
25823         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25824         last six months.
25825
25826 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25827
25828         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25829
25830 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25831
25832         * mini.c:
25833         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25834         mono_domain_finalize.
25835         (mini_method_compile): use mono_method_profile* if the the option is
25836         enabled.
25837
25838 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25839
25840         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25841         methods with their wrapper.
25842
25843         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25844         methods with their wrapper.
25845
25846         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25847         their wrapper.
25848
25849         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25850         wrapper.
25851
25852         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25853         methods.
25854
25855 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25856
25857         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25858
25859 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25860
25861         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25862         of the mempool. This is slightly faster and uses less memory
25863
25864 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25865
25866         * mini.c: avoid O(n) allocation for variables.
25867
25868 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25869
25870         * mini.c: handle items on the stack after inlining methods.
25871
25872 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25873
25874         * mini.c: make the method->opcode optimization dependent
25875         on MONO_OPT_INSTRINS and do it lazily.
25876
25877 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25878
25879         * driver.c: print overall results at the end of regression run.
25880
25881 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25882
25883         * inssel.brg: don't overwrite symbolic registers.
25884
25885 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25886
25887         * inssel-x86.brg: fix conversion from long to float.
25888
25889 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25890
25891         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25892
25893 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25894
25895         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25896
25897         * driver.c: Added --print-vtable option as in the old JIT.
25898
25899 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25900
25901         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25902
25903 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25904
25905         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25906
25907 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25908
25909         * mini.c regalloc.c regalloc.h: Fix memory leak.
25910
25911 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25912
25913         * aot.c (mono_aot_get_method): register all used strings
25914
25915 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25916
25917         * mini.c: always intern strings references with ldstr at compile time.
25918
25919 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25920
25921         * Makefile.am: add BUILT_SOURCES.
25922
25923 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25924
25925         * driver.c: give a better error message when the assembly to execute
25926         doesn't have an entry point.
25927
25928 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25929
25930         * Makefile.am: added hack for automake
25931
25932         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25933         correct sematics.
25934
25935         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25936
25937 22003-04-07  Martin Baulig  <martin@ximian.com>
25938
25939         * Makefile.am: Added Makefile.am.
25940
25941         * debugger-main.c: Removed, this is now in the debugger where it
25942         belongs.
25943
25944         * mini.pc.in: Call this package `mini' for the moment.
25945
25946
25947
25948
25949
25950
25951
25952
25953
25954
25955
25956
25957
25958
25959