e509ae7482cf0eeed807b1d6e8797813eb9577e7
[mono.git] / mono / mini / ChangeLog
1 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4         function.
5
6 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
7
8         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
9         call to mono_marshal_get_rgctx_invoke ().
10
11         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
12         mono_marshal_get_static_rgctx_invoke (), all platforms which support
13         gshared use the static rgctx trampolines now.
14         
15         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
16         platform supports it.
17
18 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
19
20         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
21
22         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
23
24 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
25
26         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
27
28         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
29         for ppc.
30
31 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
32
33         Made it possible for mono_arch_instrument_epilog to preserve
34         argument registers, otherwise instrumenting the "epilogue" before
35         a tail call would clobber them.
36         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
37         if like mono_arch_instrument_epilog but with an additional parameter
38         that states if argument registers must be preserved.
39         * mini.c: implemented mono_arch_instrument_epilog as a call to
40         mono_arch_instrument_epilog_full without asking to preserve argument
41         registers (this makes the existing code work as usual).
42         * mini-amd64.c:
43         - mono_arch_instrument_epilog: add parameter to transform it into
44         mono_arch_instrument_epilog_full, and preserve argument registers
45         when required.
46         - mono_arch_output_basic_block, OP_TAILCALL case: call
47         mono_arch_instrument_epilog_full.
48         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
49         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
50         only transformed mono_arch_instrument_epilog into
51         mono_arch_instrument_epilog_full.
52
53 2009-05-15  Geoff Norton  <gnorton@novell.com>
54
55         * mini-darwin.c: This works on arm now.
56
57 2009-05-14  Geoff Norton  <gnorton@novell.com>
58
59         * jit.h, driver.c: Allow full-aot to be decided programatically by the
60         embedding api.
61
62 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
63
64         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
65         label names.
66
67         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
68         wrappers during full aot mode correctly.
69
70         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
71         methods correctly.
72
73         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
74         mono_metadata_type_hash ().
75
76 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
77
78         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
79         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
80         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
81         Removed MONO_INST_BRLABEL from the instruction flags, and the
82         remaining code that used it, because we do not support branches inside
83         basic blocks (and branch target labels) anymore.
84         * Makefile.am: As part of the above cleanup, remove reference to
85         BURG files which don't exist anymore.
86
87 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
88
89         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
90         osx.
91
92         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
93         to use mono_arch_throw_corlib_exception.
94
95         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
96         mono_arch_throw_corlib_exception for throwing corlib exceptions.
97
98         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
99         domain mempool.
100
101         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
102
103         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
104         for the got to make debugging easier and to avoid confusing it with the
105         system got.
106         
107         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
108         method so a breakpoint can be set when using gdb.
109
110 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
111
112         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
113         on mono_method_get_imt_slot ().
114
115         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
116         num_decodes variables.
117
118         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
119         change as it doesn't seem to work.
120         
121         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
122         wrappers.
123
124 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
125
126         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
127         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
128
129         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
130         builder when using full aot.
131
132         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
133         here, it is already handled.
134         
135         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
136         correctly for IMT.
137
138         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
139
140         * mini-arm.h: Enable IMT for full aot.
141         
142         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
143         arch doesn't support it.
144
145         * mini.c (mini_init): Don't disable IMT for full aot if the
146         architecture supports it.
147
148         * mini.h (MonoAotTrampoline): New enum containing the different types
149         of 'numerous' trampolines.
150         (MONO_AOT_FILE_VERSION): Bump this.
151
152         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
153         static rgctx trampolines. Add support for full-aot IMT thunks.
154
155         * mini-amd64.h: Enable IMT for full aot.
156
157         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
158         to exclude tests belonging to a category.
159
160         * generics.cs: Mark some tests with a !FULLAOT category.
161
162         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
163         generics tests.
164
165 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
166
167         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
168         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
169         (emit_plt): Fix a warning.
170
171 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
172
173         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
174         back into aot-compiler.c to a place where the other functions shared by
175         the runtime and aot compiler are.
176         
177         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
178         as done previously, instead of in MonoAotFileInfo, since pointers might have
179         alignment requirements.
180
181         * mini.h: Bump AOT file format version.
182
183 2009-05-10  Miguel de Icaza  <miguel@novell.com>
184
185         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
186         that is used at runtime from the aot-compiler.c, this makes it
187         work on setups that remove the AOT compiler from the output
188         image. 
189
190 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
191
192         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
193         PPC.
194
195         * mini-ppc.h: Enable static rgctx trampolines for ppc.
196
197         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
198
199         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
200         stuff to mono_arch_decompose_long_opts ().
201         (mono_decompose_opcode): Remove some dead code.
202
203 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
204
205         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
206         cmethod can be null for quite a some reasons.
207
208 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
209
210         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
211
212 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
213
214         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
215
216 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
217
218         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
219         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
220         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
221         calls returning structures by addr on amd64.
222
223         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
224
225         * iltests.il.in: Restructure the tail call tests a bit.
226         
227 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
228
229         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
230         for virtual methods too.
231
232 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
233
234         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
235         due to regression in verifying System.dll.
236
237 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
238
239         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
240         in dynamic methods.
241
242         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
243         instances.
244
245         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
246         g_str_hash () which can change.
247
248         * driver.c (mini_regression): Disable optimizations not supported by
249         the cpu. Fixes #500019.
250
251         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
252         build.
253
254 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
255
256         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
257         to the latest LLVM code.
258
259 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
260
261         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
262
263 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
264
265         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
266         x86/amd64.
267
268         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
269         no longer saving offsets, so just save the patch types along with the other
270         info.
271         * aot-runtime.c (load_patch_info): Update after the changes to 
272         encode_patch_list ().
273         (decode_got_entry): Removed, merged into load_patch_info ().
274         (is_shared_got_patch): Removed, call the same function from
275         aot-compiler.c.
276
277         * mini.h: Bump aot file format version.
278         
279         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
280         half-finished no-dlsym code.
281
282         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
283         option.
284
285         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
286         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
287
288 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
289
290         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
291         buffer length to work with AOT code.
292
293         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
294         ldfld/stfld opcodes.
295
296         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
297         as it is not used.
298
299         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
300
301         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
302
303         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
304         LLVM API.
305
306         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
307         if needed. Don't decompose long operations when using llvm.
308
309 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
310
311         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
312         PAGESIZE constant.
313
314         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
315
316 2009-05-03  Martin Baulig  <martin@ximian.com>
317
318         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
319         mono_debugger_insert_method_breakpoint() since the class init
320         handler we're inserting at the top of the method already gives us
321         a notification.
322
323 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
324
325         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
326         to mono_arch_decompose_long_opts () for x86 and arm.
327
328 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
329
330         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
331         TARGET_AMD64 here.
332
333 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
334
335         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
336         JIT code.
337
338 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
339
340         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
341         number of trampolines used in full-aot mode.
342
343         * aot-compiler.c: Add an ntrampolines option to set the number of 
344         trampolines emitted in full-aot mode.
345
346 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
347
348         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
349         a volatile load. Get rid of get_tempname (), llvm assigns names
350         automatically.
351
352         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
353         builder function.
354
355         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
356         a value.
357
358         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
359         level 1.
360
361         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
362         to the same register as a fixed sreg2. Fixes #497271.
363
364         * iltests.il.in: Add a new test.
365
366 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
367
368         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
369         stack, since pushes complicate exception handling.
370
371         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
372         the stack if they are passed using moves.
373
374         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
375
376         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
377         when using llvm.
378
379         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
380         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
381         of FMOVE if it is an R4.
382
383 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
384
385         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
386
387         * mini.h (LLVMCallInfo): New structure to store calling convention 
388         information for the LLVM back end similar to the CallInfo structures in 
389         the back-ends.
390
391         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
392         call information in a format usable by LLVM.
393         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
394
395         * method-to-ir.c (mono_emit_call_args): Emit calls using 
396         mono_llvm_emit_call () when compiling using LLVM.
397
398         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
399         comments to all functions. Fix memory leaks. Add a public init/cleanup
400         function.
401
402         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
403
404         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
405         mono_array_new_va () jit icall.
406         
407 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
408
409         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
410         multiple machine description files to be specified.
411         * mini-ops.h: fixes for cross-compilation.
412
413 2009-04-22  Miguel de Icaza  <miguel@novell.com>
414
415         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
416         some porting work.
417
418 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
419
420         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
421         to prevent asserts in various passes. Fixes #497220.
422
423 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
424
425         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
426         a racy assert.
427
428         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
429         table to avoid duplicates.
430
431         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
432         
433         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
434         option is used.
435
436 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
437
438         * mini.c (mini_method_verify): Fail fulltrust code if the exception
439         is for method or field access.
440
441 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
442
443         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
444         a Value to stdout.
445
446         * mini-llvm.c (mono_llvm_emit_method): Use it.
447         
448         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
449         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
450         on volatile values.
451
452         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
453         synchronized methods.
454
455         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
456
457         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
458
459         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
460         OP_LOADI8_MEM.
461
462         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
463         allowing some options to be set dynamically.
464
465 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
466
467         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
468         unconditional branch.
469
470         * mini.h (MonoTrampolineType): Add new trampoline type 
471         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
472         compiled code.
473
474         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
475         function.
476
477         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
478         creation function.
479
480         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
481         is enabled. Instead, use the llvm vcall trampoline.
482         
483         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
484
485         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
486         
487         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
488         functions.
489
490         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
491         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
492
493         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
494         OP_IA64_CSET opcode.
495
496         * mini.c: Fix a warning.
497
498         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
499         THROW to the appropriate llvm type.
500
501 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
502
503         * mini.c (mini_method_compile): Add statistics for methods JITted
504         with/without LLVM.
505
506 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
507
508         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
509         OP_IA64_CMP_<cond>_IMM opcodes.
510
511 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
512
513         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
514         corlib exceptions.
515
516         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
517         correctly.
518
519         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
520         GENERICINST.
521
522 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
523
524         * mini-exceptions.c : add thread id to EXCEPTION trace message.
525
526 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
527
528         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
529         support.
530
531         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
532         rgctx invoke trampolines for x86.
533
534         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
535         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
536         (mono_arch_get_vcall_slot): Simplify this.
537
538 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
539
540         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
541         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
542
543 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
544
545         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
546         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
547
548         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
549
550         * liveness.c (visit_bb): Remove a needless assert.
551
552 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
553
554         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
555         full aot support to the arch specific code.
556
557         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
558
559         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
560
561         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
562         
563         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
564         collect information about the delegate invoke impl trampolines.
565
566         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
567         to save trampolines during full-aot mode.
568
569         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
570         creation function which returns a trampoline which sets the rgctx
571         argument.
572         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
573         wrapper if possible.
574         (mono_delegate_trampoline): Ditto.
575
576         * mini.c (mono_jit_runtime_invoke): Ditto.
577
578         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
579         
580         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
581
582         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
583         
584 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
585
586         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
587         just setting the opcode to OP_NOP.
588
589 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
590
591         * mini.c (mini_method_compile): Put the last change inside an 
592         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
593         
594         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
595         and extend live ranges to cover the whole method when using xdb.
596
597         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
598         do it in the trampolines.
599
600         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
601         needed.
602
603         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
604         
605         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
606         call code in full-aot mode since IMT is disabled there.
607         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
608         new JIT no longer has that restriction.
609
610         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
611
612         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
613         a more compact format.
614         (mono_aot_wrapper_name): New function to return a unique name for a
615         wrapper method, also used by the AOT runtime.
616
617         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
618         aot-compiler.c.
619
620         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
621         when a ICollection<T> etc is encountered.
622         (add_generic_instances): Process method arguments/locals too.
623         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
624         trampoline names.
625
626         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
627         
628 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
629
630         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
631
632         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
633
634         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
635         representing the result of the decomposition. Nullify instructions
636         instead of setting them to OP_NOP since nops can't have registers
637         set.
638
639 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
640
641         * aot-compiler.c (mono_compile_assembly): Split this huge function into
642         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
643         info. Strip 'mapping symbols' on ARM.
644
645         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
646         
647         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
648         this with the native genmdesc.
649
650 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
651
652         * aot-runtime.c:  Fixing the MSVC build.
653
654         Code is contributed under MIT/X11 license.
655
656 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
657
658         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
659         JITted code depends on it.
660
661 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
662
663         * aot-compiler.c: Use new MonoGenericParam accessors.
664
665 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
666
667         Reduce memory usage and improve correctness wrt MonoGenericParam
668         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
669         handing.  Avoid allocating MonoGenericParams, but use the ones in
670         the container itself.
671
672 2009-04-07  Miguel de Icaza  <miguel@novell.com>
673
674         * tasklets.c: Return exceptions in the out argument.
675
676 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
677
678         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
679         opcode. Use pointer types in more places instead of casting them to 
680         integers.
681
682         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
683         optimizations.
684         (mono_llvm_optimize_method): New helper function to optimize a method.
685
686         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
687         widening code so it could be called from more places.
688         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
689         code paths in the call opcodes.
690
691 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
692
693         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
694
695 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
696
697         * dwarfwriter.c: Use _ to separate class name 
698         components as gdb can't handle '.'. Represent reference variables
699         as 'class <NAME>&'.
700         
701         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
702
703         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
704         
705         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
706
707         * gc-test.cs: New file with GC stack marking tests.
708         
709         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
710         negative numbers for vfp.
711
712         * basic-float.cs: Add a test.
713         
714 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
715
716         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
717
718 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
719
720         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
721         part of tasklet/continuation support.
722
723 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
724
725         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
726         amd64 opcodes inside an ifdef.
727
728         * dwarfwriter.c: Emit inheritance information for classes, emit fields
729         of complex types.
730         
731         * dwarfwriter.c (emit_type): Emit the class info for classes.
732
733 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
734
735         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
736
737         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
738
739         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
740
741         * ssa.c (mono_ssa_compute): Fix some memory leaks.
742
743 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
744
745         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
746
747         * mini-llvm.c: Update comments.
748
749         * mini.h (COMPILE_LLVM): New macro.
750
751         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
752
753         * ssa.c (mono_ssa_compute): Ditto.
754         
755         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
756         the unwind ops from a DWARF FDE.
757
758         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
759         methods by extracting the dwarf unwind ops from the unwind info generated
760         by LLVM.
761         
762         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
763         calls.
764
765         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
766         addressing modes.
767
768 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
769
770         * Makefile.am (llvm_sources): Enable this.
771
772         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
773         failing back to the JIT if something cannot be handled.
774
775         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
776         compiling with LLVM.
777
778         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
779         compiling with LLVM.
780
781         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
782         compiling with LLVM.
783
784         * mini-ops.h: Add a few opcodes needed by LLVM.
785
786         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
787         has no unwind info.
788
789         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
790         backend.
791
792         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
793
794         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
795
796 2009-04-01  Mark Probst  <mark.probst@gmail.com>
797
798         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
799         ridiculously large methods.
800
801 2009-03-31  Martin Baulig  <martin@ximian.com>
802
803         * debug-debugger.c (debugger_remove_breakpoint): Call
804         mono_debugger_remove_class_init_callback ().
805
806 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
807
808         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
809         right before emitting code, not at the start.
810
811         * mini.c (mono_postprocess_patches): Extract this into a separate function
812         from mono_codegen ().
813
814         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
815         byref types correctly.
816
817 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
818
819         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
820         by the last change.
821
822 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
823
824         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
825         indirect calls, this avoids problems where get_vcall_slot () would get
826         confused by the native code for the instruction preceeding the call.
827         (mono_arch_get_vcall_slot): Simplify this.
828         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
829
830         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
831         register allocator now seems to depend on them instead of the data in
832         cpu-<ARCH>.md.
833
834         * mini.c (mini_method_compile): Throw the correct type of exception if
835         mono_method_get_header () fails because of a loading error.
836
837 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
838
839         * mini.c (mini_method_compile): Clear the loader error if the method
840         header cannot be decoded.
841
842         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
843         interface methods on proxies correctly.
844
845         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
846         this argument for vtype methods. Add precise liveness info for arguments.
847
848         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
849         LIVERANGE_START/END opcodes.
850
851         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
852         for arguments and values in registers.
853
854 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
855
856         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
857         return a valuetype. Fixes #487518.
858
859         * iltests.il: Add a test.
860         
861         * aot-compiler.c: Use mono_thread_create () to create helper threads.
862
863         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
864         closed over a null reference correctly.
865
866 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
867
868         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
869
870 2009-03-25  Mark Probst  <mark.probst@gmail.com>
871
872         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
873         allocated to the same registers as fixed sregs.
874
875 2009-03-24  Mark Probst  <mark.probst@gmail.com>
876
877         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
878         ATOMIC_CAS_IMM ops.
879
880         * method-to-ir.c: Handle more cases for
881         Interlocked.CompareExchange.
882
883         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
884         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
885         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
886
887 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
888
889         * aot-runtime.c (decode_method_ref): Fix a warning.
890
891         * unwind.c (mono_unwind_frame): Ditto.  
892
893 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
894
895         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
896         (mono_compile_assembly): Enable the binary writer for full-aot as well.
897
898         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
899         fix the handling of large values in the ALU_PC_G0_NC relocation.
900
901 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
902
903         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
904
905 2009-03-22  Mark Probst  <mark.probst@gmail.com>
906
907         * method-to-ir.c (mono_spill_global_vars): Support for ternary
908         ops.
909
910 2009-03-22  Mark Probst  <mark.probst@gmail.com>
911
912         * method-to-ir.c: MINI_OP3 needs a comma.
913
914         * method-to-ir.c, mini.h, mini.c: Remove
915         mono_init_op_sreg_counts ().
916
917 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
918
919         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
920         OP_JMP.
921         
922         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
923         assertion.
924
925         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
926
927         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
928         code somewhat.
929
930 2009-03-21  Mark Probst  <mark.probst@gmail.com>
931
932         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
933         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
934         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
935         operations.
936
937 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
938
939         * driver.c: Change location of gc_wrapper.h.
940
941         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
942         inside finally clauses correctly. Fixes #485721.
943
944         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
945         after the change above.
946
947         * exceptions.cs: Add a test.
948         
949 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
950
951         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
952
953         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
954         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
955         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
956
957         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
958         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
959
960 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
961
962         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
963         Simplify logic for ensure_method_is_allowed_to_call_method. 
964         Handle wrappers on callers.
965
966 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
967
968         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
969         them don't run yet.
970
971         * basic-simd.cs: Fix the names of some test methods.
972
973 2009-03-18  Geoff Norton  <gnorton@novell.com>
974
975         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
976
977 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
978
979         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
980
981 2009-03-17  Jb Evain  <jbevain@novell.com>
982
983         * driver.c: remove now uneeded call to mono_gc_base_init before
984         mono_profiler_load.
985
986 2009-03-17  Jb Evain  <jbevain@novell.com>
987
988         * dwarfwriter.c (token_handler): handle more cases.
989
990 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
991
992         * method-to-ir.c: Remove more dead code (that was required only
993         because of method_is_safe). Fix compiler warnings.
994
995 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
996
997         * method-to-ir.c: Remove unneeded/useless method_is_safe
998         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
999
1000 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1001
1002         * mini.c (mini_method_compile): Print the method been compiled with
1003         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
1004         for people not familiar with the runtime.
1005
1006 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1007
1008         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
1009         a managed object which is later put into a GList. Return its class instead.
1010
1011         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
1012         stack slots when using sgen.
1013
1014 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
1017
1018 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
1019
1020         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
1021         > so it works on the first vreg as well.
1022
1023 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
1024
1025         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
1026         trigger randomly.
1027
1028         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
1029         
1030         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
1031         implement GArray.
1032
1033 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
1036         native->IL offset mapping.
1037
1038 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
1039
1040         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
1041
1042         * basic.cs: Add a test.
1043
1044 2009-03-11  Mark Probst  <mark.probst@gmail.com>
1045
1046         * mini-x86.c (mono_arch_output_basic_block): Use different
1047         registers in case the ones we want to overwrite are used by the
1048         other operand.  Fixes regression in #480807.
1049
1050 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1051
1052         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
1053
1054         * dwarfwriter.c (emit_line_number_info): The line number info for
1055         IL code was off by one. Fix that.
1056
1057         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
1058         stack.
1059
1060 2009-03-09  Mark Probst  <mark.probst@gmail.com>
1061
1062         Contributed under the terms of the MIT/X11 license by Steven
1063         Munroe <munroesj@us.ibm.com>.
1064
1065         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
1066         Fixes #483462.
1067
1068 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
1071         as well.
1072
1073 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
1076         the delegate ctor handling code. Fixes #482638.
1077         
1078         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
1079         #481458.
1080
1081         * iltests.il.in: Add a test.
1082         
1083         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
1084         mini-posix.c.
1085
1086 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1087
1088         * mini-trampolines.c (mono_create_jump_trampoline): If the method
1089         is shared generic code, return the trampoline, even if the method
1090         has already been compiled.  Fixes #479763.
1091
1092         * mini.c, mini.h: New function
1093         mono_jit_find_compiled_method_with_jit_info() which is the same as
1094         mono_jit_find_compiled_method() but also returns the jit info.
1095
1096 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1097
1098         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
1099         for methods which actually have one.  For all other methods, make
1100         sure the this argument var is live the whole method.
1101
1102         * mini.c (mini_method_compile): Every shared method has a
1103         this/vtable/mrgctx info.  Fixes #480807.
1104
1105 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1106
1107         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
1108         generic/imt thunks where some entries branch through the vtable,
1109         while other entries branch directly.
1110
1111 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
1114
1115         * mini-windows.c: Ditto.
1116         
1117         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
1118         ctors.
1119
1120 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
1121
1122         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
1123         down an assert.
1124
1125 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1126
1127         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
1128         #481403.
1129
1130 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1131
1132         * exceptions-x86.c: Include debug-mini.h - fixes build.
1133
1134 2009-03-04  Martin Baulig  <martin@ximian.com>
1135
1136         * debug-mini.c: Clean up the exception API and add documentation.
1137         (mono_debugger_handle_exception): New public method; this is
1138         called when throwing an exception or encountering an unhandled one.
1139         (mono_debugger_call_exception_handler): Formerly known as
1140         mono_debugger_handle_exception(); this is used to tell the
1141         debugger that we're about to invoke an exception handler.
1142
1143 2009-03-04  Martin Baulig  <martin@ximian.com>
1144
1145         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
1146         ../metadata/mono-debug-debugger.c; save and reset exception state.
1147
1148 2009-03-02  Martin Baulig  <martin@ximian.com>
1149
1150         * debug-mini.c: Moved the debugger exception handling here from
1151         ../metadata/mono-debug-debugger.c.
1152
1153         * debug-mini.h
1154         (MonoDebuggerExceptionAction): New exception typedef.
1155
1156         * debug-mini.c
1157         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
1158
1159         * exceptions-amd64.c
1160         (mono_amd64_throw_exception): Use the new debugger exception
1161         handling code.
1162
1163         * mini-exceptions.c
1164         (mono_handle_exception_internal): Don't call
1165         mono_debugger_unhandled_exception() here.
1166
1167 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * mini.c aot-compiler.c: Update after the changes to 
1170         mono_marshal_get_runtime_invoke ().
1171
1172         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
1173         Virtual generic methods might not have method->slot set, work around
1174         that.
1175
1176         * generics.cs: Add a test.
1177
1178 2009-03-02  Geoff Norton  <gnorton@novell.com>
1179
1180         * mini.c:
1181         * driver.c: Allow signal chaining of SIGFPE as well.
1182
1183 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1184
1185         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
1186         this since it now receives the method not its generic context in the
1187         IMT reg.
1188
1189         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
1190         generic/imt thunks where some entries branch through the vtable, while
1191         other entries branch directly.
1192
1193         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
1194
1195         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
1196         support for interface methods as well.
1197
1198         * mini-trampolines.c: Add support for virtual generic methods in interfaces
1199         using the normal IMT thunks.
1200
1201         generics.cs: Add new tests.
1202         
1203         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
1204         the generic inst to the generic imt thunks. This fixes AOT support, 
1205         improves consistency with the normal IMT thunks, and makes it easier to
1206         add support for interface generic virtual methods later.
1207
1208         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
1209         
1210 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
1211
1212         * driver.c (mono_set_signal_chaining): New public API function to enable
1213         signal chaining on POSIX platforms.
1214
1215         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
1216         (si@lindenlab.com) to implement signal chaining. The original patch was
1217         contributed under the MIT X/11 license:
1218         https://bugzilla.novell.com/show_bug.cgi?id=318894
1219
1220 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1221
1222         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
1223         too until it can be made to run on amd64.
1224
1225 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1226
1227         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
1228         to  get_generic_context_from_code () + get_call_info () if possible.
1229
1230 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
1233         suspend-on-sigsegv functionality.
1234
1235         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
1236         to suspend when a native SIGSEGV is received. This is useful for debugging
1237         crashes which don't happen under gdb, since a live process contains more
1238         information than a core file.
1239
1240         * mini-exceptions.c (mono_print_thread_dump): Use 
1241         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
1242
1243         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
1244
1245         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
1246         
1247         * basic-float.cs: Disable the tests which currently fail on amd64.
1248
1249         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
1250         value to mono_arch_patch_callsite () to fix crashes.
1251         
1252         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
1253
1254 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1255
1256         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
1257         nop code by patching the call address to point to the nullified class init
1258         trampoline, as the former does not seem to be safe on SMP machines.
1259
1260 2009-02-23  Mark Probst  <mark.probst@gmail.com>
1261
1262         * mini-ops.h: Fix the argument types for a few x86 opcodes where
1263         they were wrong.
1264
1265 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1266
1267         * basic-float.cs basic-calls.cs: Fix warnings.
1268
1269 2009-02-22  Mark Probst  <mark.probst@gmail.com>
1270
1271         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
1272         correct frame pointer in the LMF.  Should fix #478394.
1273
1274 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1275
1276         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
1277
1278         * image-writer.c: Make the binary writer less verbose.
1279
1280 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1281
1282         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
1283         are called from runtime invoke wrappers.
1284
1285 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * cpu-ppc.md (store_memindex): Increase the size of this.
1288
1289 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1290
1291         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1292
1293         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
1294
1295         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
1296         OP_LCONV_TO_R_UN.
1297
1298         Last fix for of #467201.
1299
1300
1301 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1302
1303         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1304
1305         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
1306         and long_conv_to_r8_2:
1307
1308         Fixed part of #467201.
1309
1310 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1311
1312         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1313
1314         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
1315         conversion to 32 bits.
1316
1317         * cpu-x86.md: Increase the size of int_conv_to_r4.
1318
1319         * basic-float.cs: Add a test for this.
1320
1321         Fixed part of #467201.
1322
1323 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1324
1325         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1326
1327         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
1328         conversion to 64 bits.
1329
1330         * basic-float.cs: Add a test for this.
1331
1332         Fixed part of #467201.
1333
1334 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1335
1336         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1337
1338         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
1339         This behavior is compatible with MS.
1340
1341         * iltest.il.in: Add a test for this.
1342
1343         Fixed part of #467201.
1344
1345 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1346
1347         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1348
1349         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
1350         change the precision of the value.
1351
1352         * cpu-x86.md: Define len for float_conv_to_r4.
1353
1354         * basic-float.cs: Add a test for this.
1355
1356         Fixed part of #467201.
1357
1358 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1359
1360         * mini.c: Adjust locking order to the new semantics where the loader lock
1361         comes first.
1362
1363 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1364
1365         * aot-runtime.c:
1366         * mini-amd64.c:
1367         * mini-arm.c:
1368         * mini-ia64.c:
1369         * mini-mips.c:
1370         * mini-ppc.c:
1371         * mini-sparc.c:
1372         * mini-trampolines.c:
1373         * mini-x86.c:
1374         * mini.c:
1375         * tramp-alpha.c:
1376         * tramp-amd64.c:
1377         * tramp-arm.c:
1378         * tramp-hppa.c:
1379         * tramp-ia64.c:
1380         * tramp-mips.c:
1381         * tramp-ppc.c:
1382         * tramp-s390.c:
1383         * tramp-s390x.c:
1384         * tramp-sparc.c:
1385         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
1386
1387 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1388
1389         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
1390         as it is incorrect.
1391
1392 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
1395         for cctors if needed.
1396
1397 2009-02-17  Mark Probst  <mark.probst@gmail.com>
1398
1399         * mini-ppc.c: Fix build on Darwin.
1400
1401 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1402
1403         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
1404         version instead of 3 as valgrind doesn't like version 3.
1405
1406         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1407
1408         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
1409         usable for hashing methods.
1410         (emit_extra_methods): Use the new hash to avoid putting every method in the
1411         same hash bucket.
1412
1413         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
1414
1415         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
1416         whenever a method ref could match a method.
1417         
1418         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
1419         test to fail.
1420         
1421         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
1422         methods refs.
1423
1424         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
1425
1426         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
1427         the encoding buffer.
1428
1429         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
1430         mono_method_get_header () on inflated methods as an optimization.
1431
1432 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1433
1434         * ssa.c (fold_ins): Fix another crash if the instruction following the
1435         switch was optimized away.
1436
1437 2009-02-16  Mark Probst  <mark.probst@gmail.com>
1438
1439         Contributed under the terms of the MIT/X11 license by Steven
1440         Munroe <munroesj@us.ibm.com>.
1441
1442         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
1443
1444 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1445
1446         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
1447         around the mono_domain_alloc calls, it is now done by the functions
1448         themselves.
1449
1450         * aot-compiler.c (compile_method): Only add wrappers referenced by
1451         the method if compiling with full AOT.
1452         (mono_compile_assembly): Error out if --aot=full is specified on
1453         a platform where it is not supported.
1454
1455         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
1456         on ARM too.
1457
1458         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
1459         AOT support.
1460
1461         * aot-runtime.c (load_named_code): Handle 
1462         mono_arm_throw_exception_by_token.
1463
1464         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
1465
1466         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
1467         unaligned.
1468
1469         * Makefile.am (fullaotcheck): Exit if a test fails.
1470
1471         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
1472         on ARM.
1473         (mono_compile_assembly): Handle the assembler failing.
1474
1475         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
1476         accepting subsections of .bss.
1477
1478         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
1479         was optimized away.
1480
1481         * aot-compiler.c: Remove some unused includes.
1482         
1483         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
1484         now in MonoImageWriter.
1485
1486         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
1487         code sequence which matches a non-virtual call. Fixes #472654.
1488
1489 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1490
1491         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
1492         xdebug code.
1493         
1494         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
1495         use the image/dwarf writers directly.
1496
1497         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
1498         field.
1499
1500         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
1501         MonoDwarfWriter.
1502
1503         * image-writer.h: Fix some typos.
1504
1505         * dwarfwriter.h dwarfwriter.c: New files.
1506         
1507         * aot-compiler.c: Extract the DWARF info writing functionality into a 
1508         separate module.
1509
1510         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
1511         argument to return unwind info.
1512
1513         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
1514
1515         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
1516         
1517         * aot-runtime.c (decode_method_ref): Add a case for 
1518         MONO_AOT_METHODREF_WRAPPER_NAME.
1519
1520         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
1521         for AOT.
1522
1523         * aot-compiler.c (encode_method_ref): Use the new constants.
1524
1525         * aot-runtime.c (decode_method_ref): Ditto.
1526
1527         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
1528         be compiled, not the icall itself.
1529
1530 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
1531
1532         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
1533         using decode_method_ref ().
1534
1535         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
1536         convert it to an in32. Fixes #475859.
1537
1538         * arrays.cs: Add a test.
1539
1540 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1541
1542         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
1543         OP_LCONV_TO_U2.
1544
1545         * basic-long.cs: Add a test.
1546
1547 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1548
1549         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
1550         remove the frame pointer in leaf methods which don't receive any
1551         arguments, don't throw exceptions and don't do dynamic stack
1552         allocations.
1553
1554 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1555
1556         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
1557         the fail_tramp changes. Hopefully fixes #475132.
1558
1559 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1560
1561         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
1562         instead of mono_metadata_signature_dup_full.
1563
1564 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1565
1566         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
1567         for processing jump tables. Fixes #473787.
1568
1569 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1570
1571         * mini-generic-sharing.c: mini_method_get_context() just calls
1572         mono_method_get_context_general() now.
1573
1574         * mini.c, mini.h: Moved get_object_generic_inst(),
1575         construct_object_context_for_method() and
1576         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
1577
1578 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
1581         basic block fell through to its successor bblock without a branch. Fixes
1582         #474718.
1583
1584         * iltests.il.in: Add a test.
1585         
1586         * aot-compiler.c (encode_method_ref): Encode methods of array types.
1587         (can_encode_patch): We can now handle arrays of generic parameters and
1588         array methods.
1589
1590         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
1591
1592         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
1593         the AOT file to avoid some #ifdefs in aot-runtime.c
1594
1595         * mini.h: Bump AOT file format version.
1596
1597 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1598
1599         * Makefile.am (fullaotcheck): Make this run the tests.
1600
1601         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
1602
1603 2009-02-10  Mark Probst  <mark.probst@gmail.com>
1604
1605         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
1606         individually.  Fixes #473482.
1607
1608 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
1611
1612 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
1613
1614         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
1615         (mono_compile_assembly): Hush compile warnings about
1616         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
1617         code path.
1618
1619 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1620
1621         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
1622
1623         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
1624
1625         * aot-compiler.c: Fix arm support.
1626
1627         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
1628         img_writer_emit_unset_mode () function.
1629
1630         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
1631         (mono_unwind_get_dwarf_pc_reg): Ditto.
1632
1633         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
1634         Move almost all platform specific code to a set of arch_ functions, 
1635         and document them to ease porting.
1636         
1637         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
1638
1639         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
1640
1641         * aot-compiler.c: Extract the image writing functionality into a separate
1642         module to reduce the size of this file.
1643
1644 2009-02-09  Geoff Norton  <gnorton@novell.com>
1645
1646         * mini-s390.c: Fix the signature of emit_sig_cookie.
1647
1648 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
1651
1652         * aot-runtime.c (is_shared_got_patch): Ditto.
1653
1654         * aot-runtime.c (load_named_code): Cope with the fact that 
1655         decode_got_entry () won't decode the patch fully if its corresponding got
1656         entry is already filled.
1657         
1658         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
1659         Initialize *ji.
1660         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1661
1662         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
1663         as the moving pointer instead of 'buf' for consistency with the rest of the
1664         codebase.
1665         (mono_arch_create_monitor_exit_trampoline): Ditto.
1666
1667         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
1668         generic_class_init trampolines.
1669         (add_generic_class): Extract some code from add_generic_instances () into a
1670         separate function so it can be called from other places too.
1671         (compile_method): Call add_generic_class () for the classes of inflated methods
1672         referenced by the method.
1673         (can_encode_patch): Allow references to generic parameters.
1674
1675         * aot-runtime.c: Add support the patches required by the new trampolines.
1676         
1677         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
1678         support.
1679
1680         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
1681         full-aot support.
1682
1683         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
1684         this from get_throw_pending_exception, make the signature full aot compatible.
1685
1686         * Makefile.am (fullaotcheck): New target to run full-aot tests.
1687
1688         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
1689
1690         * exceptions.cs: Add a test.
1691
1692 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1693
1694         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
1695         use the DWARF_DATA_ALIGN constant instead.
1696
1697         * exception-<ARCH>.c: Update after the above change.
1698
1699         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
1700         dwarf unwinder.
1701
1702         * mini-arm.c: Enable the dwarf unwinder.
1703
1704         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
1705         instead of mono_class_setup_vtable ().
1706
1707 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1708
1709         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
1710         dwarf unwinder.
1711
1712         * mini-x86.h: Enable the dwarf unwinder.
1713
1714 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
1715
1716         Fix mcs/tests/test-7.cs
1717         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
1718         2009-02-03.
1719
1720 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1721
1722         * mini.c (print_jit_stats): Remove some unused statistics.
1723
1724 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
1727
1728 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1729
1730         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
1731         the method we get from mono_object_get_virtual_method() because
1732         that function does it properly, now.
1733
1734 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1735
1736         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
1737         opcodes. Fixes #472775.
1738
1739 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1740
1741         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
1742         fact that mono_find_jit_info() sometimes returns the context
1743         corresponding to the jit info in new_ctx.  Fixes #472600.
1744
1745 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1746
1747         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
1748         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
1749         klass->enum_basetype directly.
1750
1751         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
1752         enum subtypes.
1753
1754         * unwind.c: Avoid 0 sized arrays.
1755
1756 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1757
1758         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
1759         size on systems with 64k pages. Fixes #471389.
1760
1761 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1762
1763         Contributed under the terms of the MIT/X11 license by Steven
1764         Munroe <munroesj@us.ibm.com>.
1765
1766         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
1767         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
1768         necessary.
1769
1770 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1771
1772         Contributed under the terms of the MIT/X11 license by Steven
1773         Munroe <munroesj@us.ibm.com>.
1774
1775         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
1776         comparison fix.
1777
1778         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
1779         The trampoline can be longer on PPC64.
1780
1781 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1782
1783         Contributed under the terms of the MIT/X11 license by Steven
1784         Munroe <munroesj@us.ibm.com>.
1785
1786         * mini-ppc.c: Compiler warning fixes and trivial code
1787         simplifications.
1788
1789 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1790
1791         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
1792         ins->dreg which could be a hardware register, not a vreg.
1793
1794         * aot-compiler.c (emit_method_dwarf_info): Ditto.
1795         
1796         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
1797         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
1798
1799         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
1800         
1801         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
1802         ->dreg, that is not the vreg we are looking for.
1803
1804         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
1805
1806         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
1807         LIVERANGE_END.
1808
1809         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
1810         strange crashes.
1811
1812 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
1813
1814         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
1815
1816         * aot-compiler.c (emit_line_number_info): Fix line number emission when
1817         the line diff is 0.
1818
1819         * aot-compiler.c: Add xdebug support on x86.
1820
1821         * unwind.c: Add x86 support.
1822         
1823         * aot-compiler.c (emit_exception_debug_info): Control the emission of
1824         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
1825
1826         * mini.c (mini_method_compile): Ditto.
1827         
1828         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
1829         the variable index.
1830
1831         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
1832         which mimic .push_section/.pop_section in GAS.
1833         
1834         * aot-compiler.c: Emit precise live range information for variables.
1835
1836         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
1837
1838         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
1839         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
1840         them.
1841
1842         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
1843         the live ranges of variables.
1844
1845         * mini.h (struct MonoMethodVar): Add two fields containing the live range
1846         of the variable in terms of native offsets.
1847
1848 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
1849
1850         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
1851         
1852 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1853
1854         Contributed under the terms of the MIT/X11 license by Steven
1855         Munroe <munroesj@us.ibm.com>.
1856
1857         * exceptions-ppc.c (restore_regs_from_context): Correct operand
1858         order (offset then base reg) for ppc_load_multiple_regs.
1859         (emit_save_saved_regs) Correct operand order for
1860         ppc_store_multiple_regs.
1861         (mono_arch_get_call_filter): Correct operand order for
1862         ppc_load_multiple_regs.
1863
1864         * mini-ppc.c (emit_memcpy): Fix operand order for
1865         ppc_load_reg_update and ppc_store_reg_update.
1866         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
1867         (mono_arch_emit_epilog): Correct operand order for
1868         ppc_load_multiple_regs.
1869
1870         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
1871         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
1872
1873 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1874
1875         * cpu-ppc64.md: Fixed storer4_memindex length.
1876
1877 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
1878
1879         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
1880         line number info.
1881         
1882         * aot-compiler.c (emit_line_number_info): Optimize this.
1883
1884 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
1885
1886         * aot-compiler.c: Disassemble tokens in the IL disassembly.
1887         
1888         * aot-compiler.c: Add debug info for methods without debug info by
1889         emitting an IL file and having the line number info referencing that file.
1890
1891         * aot-compiler.c: Optimize the size of the generated line number info.
1892
1893         * aot-compiler.c: Emit line number info in xdebug mode.
1894
1895         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
1896         million arguments.
1897
1898 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
1899
1900         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
1901
1902         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
1903         is used.
1904
1905 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1906
1907         * basic-calls.cs: Test for the weird crash found on arm.
1908         
1909 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1910
1911         * cpu-arm.md: Increase the size of storer8_membase_reg and
1912         loadr8_membase_reg to 24 bytes to accomodate the extra add.
1913
1914         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
1915         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
1916         reg to LR otherwise we'll be loading/storing from just the offset.
1917
1918 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1919
1920         Question: if we are storing gint32's inside the "*native_offset",
1921         should we change the signature to "gint32 *native_offset" to
1922         ensure that we do not have type definition problems?
1923         
1924         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
1925         an int * as this is what the other function expects, causes
1926         problems with Freescale's compiler that defined int32_t to be a
1927         long and makes int incompatible 
1928
1929 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1930
1931         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
1932         filename conflict with bjam.
1933
1934 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1935
1936         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
1937         as it might use decomposed ops.
1938
1939 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1940
1941         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
1942
1943         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
1944         is defined.
1945
1946         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
1947
1948         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
1949         offsets.
1950
1951         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
1952         way registers are stored in MonoContext on arm.
1953
1954         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
1955         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
1956
1957         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
1958
1959         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
1960
1961         * mini.c (mini_init): Register mono_isfinite.
1962
1963         * jit-icalls.c (mono_isfinite): New jit icall.
1964
1965         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
1966         
1967         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
1968         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
1969         the parent frame.
1970
1971 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1972
1973         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
1974         separate frame and stack pointers, so we must use FP to find the register
1975         spill area.
1976         The FP reg is retrieved from the MonoContext::regs array.
1977
1978 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1979
1980         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
1981         as FPA requires it.
1982
1983 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1984
1985         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
1986         return R4 and R8 when not running under softfloat.
1987
1988         Fixes basic-calls.exe
1989
1990 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * mini-arm.c: Implement some overflow opcodes.
1993
1994 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1995
1996         * ssa.c: handle another alloca.h
1997
1998         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
1999         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
2000         MONO_ARCH_USE_SIGACTION. 
2001
2002         * aot-runtime.c, mini-exceptions.c: Replace platform define with
2003         capability defines.
2004
2005         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
2006
2007         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
2008         PPC targets as sigaction does not exist on all platforms, define
2009         this on a per-platform basis.
2010
2011         Instead of erroring out if the platform is not defined, include
2012         mini-ppc-os.h, and expect that the OS specific setting provides
2013         the required information.   
2014
2015 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2016
2017         * aot-compiler.c: Fix --enable-minimal=aot.
2018
2019 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2020
2021         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
2022         previous change.
2023
2024 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2025
2026         * exceptions-arm.c: Fix warnings.
2027
2028         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
2029         ARM.
2030
2031         * mini-x86.c: Fix --enable-minimal=jit build.
2032
2033         * mini.c: Really fix --enable-minimal=jit build.
2034         
2035         * mini.c (construct_object_context_for_method): Move this outside
2036         the DISABLE_JIT block to fix the --enable-minimal=jit build.
2037
2038         "Backported" of r124984 from 2.0 branch.
2039         
2040         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
2041
2042         "Backport" of r124977 + r124978 from 2.0 branch.
2043         
2044         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
2045         to avoid calling mono_exception_from_token () from the throw trampoline.
2046         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
2047         for throwing corlib exceptions, this fixes full-aot support for corlib
2048         exceptions.
2049
2050         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
2051
2052 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2053
2054         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
2055         part of the changes to split the code in mini into operating
2056         system specific files.
2057
2058         This patch was done by copying mini.c to the respective files to
2059         preserve SVN history.
2060
2061 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2062
2063         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
2064
2065 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2066
2067         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
2068         remoting-invoke-with-check wrappers of shared methods.
2069
2070         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
2071
2072 2009-01-27  Mark Probst  <mark.probst@gmail.com>
2073
2074         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
2075         optimization if the top of stack is the last instruction in the
2076         bblock.  Otherwise it might have been used after its definition.
2077         Fixes #469742.
2078
2079 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2080
2081         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
2082         method as well when get_vcall_slot () fails to match a code sequence.
2083
2084         * mini-arm.c: Fix the android build, which doesn't have
2085         __aeabi_read_tp.
2086
2087 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2088
2089         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
2090         the s390x build.
2091
2092 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
2093
2094         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
2095
2096 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2097
2098         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
2099         and put its id into jinfo->used_regs. This is only used on amd64,
2100         which is currently the only platform generating unwind info.
2101
2102         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
2103         the dwarf unwinder. This is required to correctly handle async exceptions
2104         like thread abort and stack overflows, which can happen while a method
2105         is in the middle of its prolog or epilog.
2106         
2107         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
2108         the unwind info belonging to an AOTed method.
2109
2110         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
2111         into cfg->unwind_ops.
2112         
2113         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
2114
2115         * mini.c (mini_init): Call mono_unwind_init ().
2116         (mini_cleanup): Call mono_unwind_cleanup ().
2117
2118         * unwind.c: Add functions for managing a set of unwind info entries, allowing
2119         unwind info to be shared between methods.
2120
2121         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
2122         saved in the LMF.
2123
2124         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
2125         get_throw_pending_exception () to avoid initialization races.
2126
2127         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
2128         mono_arch_exceptions_init () function.
2129
2130         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
2131
2132 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
2133
2134         * mini.c (mono_get_domain_intrinsic): New helper function.
2135         (mono_get_thread_intrinsic): Ditto.
2136
2137         * mini-arm.c mini-ia64.c: Use the new helper functions.
2138         
2139         * method-to-ir.c (mono_method_to_ir): Fix the comment for
2140         the last constrained_call change, since it is needed in the non-AOT
2141         case as well.
2142
2143         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
2144         
2145         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
2146         mono_get_lmf_addr () on arm eabi linux.
2147
2148 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
2149
2150         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
2151         code sequence which matches a non-virtual call.
2152
2153 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2154
2155         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
2156         stack pointer (r1).
2157
2158 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2159
2160         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
2161         runtime-invoke wrappers, since they are also shared based on signature.
2162
2163 2009-01-22  Mark Probst  <mark.probst@gmail.com>
2164
2165         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
2166         info from the (correct) context.
2167
2168 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
2169
2170         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
2171         
2172         * unwind.c (mono_unwind_frame): New function to unwind through a frame
2173         using dwarf unwinding info. Not yet used.
2174
2175         * mini.c (mini_init): When using xdebug, disable freeing of domains.
2176
2177 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2178
2179         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
2180         descriptors.
2181
2182         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
2183         special case and handle mono_arch_delegate_invoke_impl() returning
2184         function descriptors.
2185
2186         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
2187         trampolines return function descriptors, too.
2188
2189 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2190
2191         * method-to-ir.c (handle_alloc): Avoid generic instances in the
2192         out_of_line optimization.
2193
2194 2009-01-21  Martin Baulig  <martin@ximian.com>
2195
2196         * mini.h
2197         (MonoCompile): Added `disable_deadce_vars' to disable removing
2198         unused variables.
2199
2200         * mini.c
2201         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
2202         inside the debugger.
2203
2204         * liveness.c (mono_analyze_liveness): Don't remove any unused
2205         variables if `cfg->disable_deadce_vars' is set.
2206
2207 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2208
2209         * method-to-ir.c: Only apply exception constructor optimization if
2210         the the method actually belongs to an exception class.  Fixes
2211         #467456.
2212
2213 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
2216         change inside a #ifdef __mono_ppc64__.
2217
2218         * aot-compiler.c (compile_method): Remove the previous limitation.
2219
2220         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
2221         on type variables in AOTed code.
2222         
2223         * aot-compiler.c (compile_method): Skip generic methods having type 
2224         constraints on their generic parameters.
2225
2226         * aot-compiler.c (compile_method): Check for methods which cannot be
2227         encoded inside RGCTX_FETCH patches as well.
2228
2229         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
2230         build.
2231
2232 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2233
2234         * method-to-ir.c: Force the vtable variable in shared generic code
2235         for the case that they might show up on a stack trace where they
2236         are needed.
2237
2238         * mini-exceptions.c: Save and use generic sharing info as well as
2239         IP in stack traces to resolve shared generic instantiations.
2240
2241 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
2242
2243         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
2244         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
2245
2246 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2247
2248         * method-to-ir.c: Do generic sharing for array constructors.
2249
2250 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
2251
2252         * mini-exceptions.c (mono_print_thread_dump): Add information
2253         about the thread state using wapi_current_thread_desc.
2254
2255 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2256
2257         * basic-simd.cs: Tests for the new constructors. 
2258
2259 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2260
2261         * mini-ops.h: Added OP_EXPAND_*
2262
2263         * cpu-x86.md: Same.
2264
2265         * mini-x86.c (mono_arch_output_basic_block): Same.
2266         
2267         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
2268
2269 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * iltests.il.in: Add a test for #467385.
2272
2273 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2274
2275         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
2276         thread been cleaned up is not the same currently in execution.
2277
2278         Fixes appdomain-unload crashes on windows, osx and linux variants
2279         without the __thread keyword.
2280
2281 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2282
2283         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
2284         (koush@koushikdutta.com). Implement this for android.
2285
2286         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
2287         begins with a digit.
2288
2289         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
2290         mono_marshal_get_write_barrier ().
2291
2292 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2293
2294         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
2295         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
2296         that pass them on a register pair.
2297
2298         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
2299         test was crashing due to that.
2300
2301 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
2302
2303         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
2304         trampoline code. Include ucontext.h only if available.
2305
2306 2009-01-15  Mark Probst  <mark.probst@gmail.com>
2307
2308         * mini.c: mono_domain_lookup_shared_generic() takes an open method
2309         and doesn't check whether it's sharable, like it was before
2310         removing the shared generics hash.  This brings IronPython
2311         performance back to what it was before that change.
2312
2313 2009-01-14  Mark Probst  <mark.probst@gmail.com>
2314
2315         * method-to-ir.c: Handle delegate invocation optimization earlier,
2316         otherwise it would be handled (much more slowly) by the
2317         final/sealed optimization.
2318
2319 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2320
2321         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
2322         domain is not set. Fixes #465864.
2323
2324 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2325
2326         * method-to-ir.c: Don't stop sharing of generic methods with catch
2327         clauses - we already handle those.
2328
2329 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2330
2331         * mini.c, mini.h: lookup_generic_method() is now
2332         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
2333         making the shared_generics_hash obsolete.
2334
2335 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2336
2337         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
2338         use the red zone.  Make room on the stack first and then use it,
2339         not the other way around.
2340
2341 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2342
2343         * mini.c (mini_init): Call mono_xdebug_init ().
2344
2345         * aot-compiler.c (mono_xdebug_init): Make this non-static.
2346
2347 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * TestDriver.cs: Add an --iter argument to run tests multiple times.
2350
2351         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
2352         trampolines.
2353
2354         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
2355         debug+unwind info for trampolines.
2356
2357         * mini.c (mono_create_unwind_op): New helper function.
2358
2359         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
2360
2361 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * aot-compiler.c: Fix the build.
2364
2365 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2366
2367         * Makefile.am: Update dtrace-prelink.sh location.
2368
2369 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
2370
2371         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
2372         optimization. Fixes #464520.
2373
2374 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
2375
2376         * mini-amd64.c : Adding code to save/restore non-volatile registers
2377            on Winx64.
2378
2379         * exceptions-amd64.c : Adding code to save/restore non-volatile 
2380           registers on Winx64.
2381
2382         Contributed under MIT/X11 license.
2383
2384 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
2385
2386         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
2387         __GNUC_MINOR__ which can break when the major version changes.
2388
2389 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2390
2391         * basic-simd.cs: Add tests for usage of the sizeof opcode.
2392
2393 2009-01-07  Geoff Norton  <gnorton@novell.com>
2394
2395         * helpers.c:  Allow mono -v -v -v to work on darwin.
2396
2397 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
2398
2399         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
2400           pattern. 
2401
2402         Contributed under MIT/X11 license.
2403
2404 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
2405
2406         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
2407         instead of directly accessing type->data.klass. Fixes #462016.
2408         (mono_allocate_stack_slots_full): Ditto.
2409
2410         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
2411         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
2412
2413         * aot-compiler.c (emit_plt): Fix ARM build.
2414
2415 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
2416
2417         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
2418         
2419         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
2420         change.
2421
2422         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
2423         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
2424         #463357.
2425
2426         * iltests.il.in: Add a regression test.
2427
2428 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2429
2430         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
2431
2432 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2433
2434         * basic-simd.cs: Add a regression test for #462457.
2435
2436 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2437
2438         * mini-ops.h: Add a definition of XPHI.
2439
2440         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
2441
2442         * ssa.c (op_phi_to_move): Handle XPHI.
2443
2444         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
2445
2446         Fixes #462457
2447
2448 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2449
2450         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
2451
2452 2008-12-31  Geoff Norton  <gnorton@novell.com>
2453
2454         * mini-ppc.c: The prolog size allocated can be too small for darwin
2455         ppc32 under certain circumstances.  Also fix a small logic bug.
2456
2457 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
2460         while loading AOT methods.
2461
2462         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
2463         since only the former is nulled out after a successful cast. This prevents
2464         crashes with rethrown exceptions when using --debug=casts.
2465
2466 2008-12-24  Mark Probst  <mark.probst@gmail.com>
2467
2468         * mini.h: New macro for checking whether a method is final,
2469         i.e. whether the method or its class is marked final.
2470
2471         * method-to-ir.c: Use the new macro for all final-checks
2472         consistently.  Fixes the crash in the System.ServiceModel tests.
2473
2474 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2475
2476         * mini-exceptions.c (get_exception_catch_class): Corrected another
2477         overly strict assertion.
2478
2479 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2480
2481         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
2482         Clobbering it is not allowed because the caller might use it as
2483         the vtable register in the interface call.
2484
2485 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2486
2487         * mini-exceptions.c (get_exception_catch_class): Corrected an
2488         overly strict assertion.
2489
2490 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
2491         
2492         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
2493
2494         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
2495
2496         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
2497
2498         * cpu-mips.md: correct lengths for certain long_ opcodes.
2499
2500         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
2501
2502         * 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().
2503         
2504 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2505
2506         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
2507         
2508 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2509         
2510         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
2511         
2512 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2513
2514         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
2515         next basic block.
2516         
2517 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
2518
2519         * 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
2520
2521         * 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)
2522         
2523 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
2524         
2525         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
2526         
2527 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
2528
2529         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
2530         gshared code. Fixes #458947.
2531
2532         * generics.cs: Add a test.
2533
2534 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2535         
2536         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2537         
2538         * mini-mips.c: first pass n32 code generation.
2539
2540         * mini-mips.h: datatypes and defines for n32 support.
2541
2542         * exceptions-mips.c: first pass n32 code generation.
2543         
2544         * tramp-mips.c: first pass n32 code generation.
2545         
2546         * cpu-mips.md: add long_ opcodes.
2547         
2548 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2549
2550         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2551
2552         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2553         
2554         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2555         
2556         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2557
2558         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2559
2560         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2561
2562         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2563
2564         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2565
2566         * helpers.c: for mips/n32, don't pass -mips32 to objdump
2567
2568 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
2569
2570         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
2571
2572 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
2573
2574         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
2575
2576 2008-12-12  Mark Probst  <mark.probst@gmail.com>
2577
2578         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
2579         descriptors for helper functions directly in front of the code.
2580
2581 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2582
2583         * method-to-ir.c: Removed an unnecessary assertion.
2584
2585 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2586
2587         * method-to-ir.c: Merge SGEN changes from the old JIT.
2588
2589 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2590
2591         * driver.c (compile_all_methods_thread_main): Handle failure of
2592         mono_get_method ().
2593
2594 2008-12-10  Mark Probst  <mark.probst@gmail.com>
2595
2596         * mini-ppc.c: Merged with mini-ppc64.c.
2597
2598         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
2599
2600         * Makefile.am: Use the same sources for PPC and PPC64.
2601
2602         * mini-ppc64.c: Removed.
2603
2604 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2605
2606         * branch-opts.c (remove_block_if_useless): Extract fall through detection
2607         code to mono_bb_is_fall_through.
2608         
2609         * branch-opts.c (mono_remove_critical_edges): Same.
2610
2611 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2612
2613         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
2614         expect that an OP_BR_REG will be there.
2615
2616 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2617
2618         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
2619         for the many branch ops. The original check miss OP_BR_REG.
2620
2621         Fixes #457574.
2622         
2623 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2624
2625         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
2626
2627 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2628
2629         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
2630         while holding the aot lock.
2631
2632 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2633
2634         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
2635         
2636 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2637
2638         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
2639           to release all runtime callable wrappers held by the runtime.
2640
2641         Contributed under MIT/X11 license.
2642
2643 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2644
2645         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
2646           for Winx64.
2647
2648         Contributed under MIT/X11 license.
2649
2650 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2651
2652         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
2653         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
2654
2655 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2656
2657         * cpu-mips.md: fix ckfinite length
2658
2659         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
2660         (mono_arch_lowering_pass): cleanup, rearrange for clarity
2661         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
2662         
2663 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
2664
2665         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
2666         
2667 2008-12-08  Geoff Norton  <gnorton@novell.com>
2668
2669         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
2670         size by 8 bytes as well.
2671
2672 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2673
2674         * basic-simd.cs: Fix method names for Vector16b.
2675         
2676 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2677
2678         * basic-simd.cs: Fix method names for Vector16sb.
2679
2680 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2681
2682         * basic-simd.cs: Fix method names for Vector8us.
2683         
2684 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2685
2686         * basic-simd.cs: Fix method names for Vector8s.
2687         
2688 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2689
2690         * basic-simd.cs: Fix method names for Vector4ui.
2691
2692 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2693
2694         * basic-simd.cs: Fix method names for Vector2l.
2695
2696 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2697
2698         * basic-simd.cs: Fix method names for Vector2d.
2699
2700 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2701
2702         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
2703         that are extension methods.
2704
2705 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2706
2707         * basic-simd.cs: Fix method names for Vector4f.
2708
2709 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
2710
2711         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
2712         as such. Fixes #456669.
2713
2714 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2715
2716         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
2717         
2718 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2719
2720         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
2721         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
2722         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
2723         (mips_adjust_stackframe): handle FP spills
2724                 
2725         * mini-ops.h: add mips_mtc1_s2
2726         
2727         * cpu-mips.md: add mips_mtc1_s2
2728         
2729 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
2730
2731         * unwind.c: New file, move the unwind info encoding functions here from
2732         aot-compiler.c, so they could be used at runtime too.
2733
2734 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2735
2736         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
2737         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
2738         
2739 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2740
2741         * mini-mips.c: cleanup warnings
2742         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
2743         (mips_adjust_stackframe): handle case of taking the address of stack locals
2744         
2745 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2746
2747         * aot-compiler.c: Implement a few functions missing from the asm writer.
2748         (emit_method_code): Only write symbols for methods when using the bin
2749         writer, since the assembler can't deal with the characters in our method
2750         names.
2751
2752         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
2753
2754         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
2755         call.
2756
2757         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
2758         a bit to also restore %rax.
2759
2760 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2761
2762         * mini-ppc.c: Some simple merges from mini-ppc64.c.
2763
2764 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2765
2766         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
2767         arguments.
2768
2769 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2770
2771         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
2772
2773         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
2774         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
2775
2776         * exceptions-ppc64.c: Removed.
2777
2778         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
2779
2780 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2781
2782         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
2783         tramp-ppc64.c.
2784
2785         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
2786
2787         * tramp-ppc64.c: Removed.
2788
2789 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2790
2791         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
2792         the TYPESPEC table.
2793
2794 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2795
2796         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
2797
2798         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
2799         mini-ppc.h instead of mini-ppc64.h.
2800
2801         * mini-ppc64.h: Removed.
2802
2803 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2804
2805         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
2806         
2807         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
2808         
2809 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2810
2811         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
2812         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
2813         code easier.
2814
2815 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2816
2817         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
2818
2819 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2820
2821         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
2822
2823 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2824
2825         * basic-simd.cs: Tests for operator == and != on Vector4f.
2826
2827 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2828
2829         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
2830
2831         * simd-intrinsics.c: Kill useless enum.
2832
2833 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2834
2835         * cpu-mips.md: add long_conv_to_ovf_i4_2
2836         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
2837
2838 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2839
2840         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
2841         
2842         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
2843
2844 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2845
2846         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
2847         
2848 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2849
2850         * basic-simd.cs: Add tests for new methods.
2851
2852 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2853
2854         * simd-intrinsics.c: Add support for operator == and !=
2855         on Vector4(u)i.
2856
2857         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
2858
2859 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2860
2861         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
2862
2863 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2864
2865         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
2866
2867         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
2868         MONO_PATCH_INFO_ICALL_ADDR.
2869
2870         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
2871
2872         * aot-compiler.c: Resurrect full-aot support.
2873
2874 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2875
2876         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
2877         
2878 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2879
2880         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
2881         
2882 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
2883
2884         * basic-simd.cs: Fix tests to work under ppc.
2885         Remove tests for methods that will be removed.
2886
2887 2008-12-03  Mark Probst  <mark.probst@gmail.com>
2888
2889         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
2890         generic type (via a typedef or typeref) correctly.
2891
2892 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2893
2894         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
2895         diagnose an assertion failure.
2896
2897 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2898
2899         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
2900         Fix trampoline size.
2901
2902         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
2903         conversion opcodes are implemented natively instead via emulation.
2904
2905 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2906
2907         * cpu-mips.md: remove mips_xori
2908
2909         * mini-ops.h:  remove mips_xori
2910
2911         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
2912
2913         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
2914         
2915         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
2916         
2917 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2918
2919         * cpu-mips.md: fix instruction lengths.
2920
2921         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
2922
2923         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
2924
2925         * mini-ops.h: fix slti / sltiu op profiles.
2926         
2927 2008-12-02  Martin Baulig  <martin@ximian.com>
2928
2929         * method-to-ir.c (mono_method_to_ir): Disable debugging
2930         information for the init locals block to make the debugger stop
2931         after all locals have been initalized.
2932
2933 2008-12-02  Martin Baulig  <martin@ximian.com>
2934
2935         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
2936         running inside the debugger.
2937
2938 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
2939
2940         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
2941         is enabled.
2942
2943         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
2944         alu->alu imm optimization which only shows if deadce is disabled.
2945
2946         * aot-compiler.c: Rename the function names for the binary and asm writers
2947         so they can coexist in the same process. Rework the xdebug code to use the
2948         asm writer. This avoids the need to call into the runtime to dump the
2949         debugging info. Add more debugging info for types.
2950
2951         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
2952
2953         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
2954         cpu description tables, they can't occur in cpu-<ARCH>.md.
2955
2956         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
2957         the stack in CEE_LDFLDA. Fixes #450542.
2958
2959         * generics.cs: Add a new test.
2960
2961 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2962
2963         * mini-ops.h: updated MIPS opcodes
2964         * mini-mips.c: decompose long opts
2965         * mini-mips.h: decompose long opts
2966         
2967 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
2968
2969         * cpu-mips.md: fix length on int_rem_un
2970         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
2971         
2972 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
2973
2974         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
2975
2976         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
2977
2978 2008-11-29  Martin Baulig  <martin@ximian.com>
2979
2980         * mini-exceptions.c (mono_handle_native_sigsegv): Check
2981         mono_debug_using_mono_debugger() in addition to the
2982         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
2983
2984 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2985
2986         * mini-ops.h: updated more MIPS opcodes
2987         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
2988         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
2989         
2990 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2991
2992         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
2993
2994 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2995
2996         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
2997         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
2998         * mini-ops.h: correct selected mips opcode entries
2999         
3000 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3001
3002         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
3003         make them work.
3004
3005 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3006
3007         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
3008
3009 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3010
3011         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
3012         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
3013         * mini-mips.h: disable IMT
3014         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
3015         
3016 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3017
3018         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
3019
3020 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3021
3022         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
3023
3024 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
3025
3026         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
3027         consistency.
3028
3029 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3030
3031         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3032         for Set/GetVector aligned versions.
3033
3034 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3035
3036         * basic-simd.cs: Add tests for Get/SetVector.
3037
3038 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3039
3040         * mini.c: Removed g_slist_append_mempool().  Now in
3041         metadata/mempool.c.
3042
3043 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3044
3045         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
3046         size properly and make the bounds check optional.
3047
3048         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3049         for SetVector and IsAligned.
3050
3051 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
3052
3053         * mini.c: Remove unused mono_normalize_opcodes () function.
3054
3055 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3056
3057         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
3058         using the new atomic add ops now.
3059
3060         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
3061         add.
3062
3063 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3064
3065         * mini-ppc64.c: Several fixes.
3066
3067 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3068
3069         * cpu-mips.md: added jump_table
3070         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
3071
3072 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3073
3074         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
3075
3076 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3077
3078         * mini-ops.h: corrected a handful of MIPS opcodes.
3079
3080 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3081
3082         * aot-compiler.c: MIPS to use ELF writer
3083
3084 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3085
3086         * mini-codegen.c: remove MIPS specific assert.
3087
3088 2008-11-25  Mark Probst  <mark.probst@gmail.com>
3089
3090         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
3091         fixes.  PPC64 now passes most of the runtime regressions.
3092
3093 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
3094
3095         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
3096         volatile intervals a bit.
3097
3098 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3099
3100         * basic-long.cs: New test case.
3101
3102 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3103
3104         * mini.c (mini_method_compile): Disable globalra for large methods for 
3105         now.
3106
3107         * regalloc2.c (order_moves): Add fp support.
3108
3109         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
3110         source bblock ends with an OP_BR_REG.
3111
3112         * ratests.cs: Add a new test.
3113
3114 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3115
3116         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
3117         sharing.  PPC64 now passes generics.exe.
3118
3119 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3120
3121         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
3122
3123 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3124
3125         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
3126         memory when mono_jit_info_table_find () can't find the method in the
3127         LMF case.
3128
3129         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
3130         AOTed code too.
3131         
3132         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
3133         writer too.
3134
3135 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3136
3137         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
3138         Several fixes.  PPC64 now runs exceptions.exe and
3139         devirtualization.exe.
3140
3141 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3142
3143         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
3144         arrays.exe and basic-math.exe.
3145
3146 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3147
3148         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
3149         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
3150
3151 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3152
3153         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
3154
3155 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3156
3157         * method-to-ir.c: Move bounds checking macros to ir-emit.h
3158
3159         * ir-emit.h: Move macros from method-to-ir.c to here.
3160
3161 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3162
3163         * mini-ops.h: Correct the long simd ops to use LREG.
3164
3165 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
3166
3167         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
3168         
3169         * mini-ops.h: Correct the dreg type of a few long opcodes.
3170
3171         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
3172         Add netbsd support.
3173
3174 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
3175
3176         * mini-ppc.c: remove negative stack references in epilog
3177         for platforms that don't support the red zone.
3178
3179 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3180
3181         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
3182         point regs.  Now PPC64 passes basic-calls.exe.
3183
3184 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3185
3186         * basic-simd.cs: Add tests for accessors of Vector2l.
3187
3188 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3189
3190         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
3191
3192         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
3193         
3194         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
3195
3196 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3197
3198         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
3199         PPC64 passes basic-long.exe.
3200
3201 2008-11-20  Mark Probst  <mark.probst@gmail.com>
3202
3203         * decompose.c: Decompose carry and overflow add on PPC64 like on
3204         other 64 bit archs.  Don't decompose sub at all on PPC64.
3205
3206         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
3207         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
3208         basic-long.exe.
3209
3210 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3211
3212         * basic-simd.cs: Add tests for accessors of Vector2d.
3213
3214 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3215
3216         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
3217
3218         * cpu-x86.md: Same.
3219
3220         * mini-x86.c (mono_arch_output_basic_block): Same.
3221         
3222         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
3223
3224 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3225
3226         * basic-simd.cs: Add tests for accessors of Vector4f.
3227
3228 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3229
3230         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
3231
3232         * cpu-x86.md: Same.
3233
3234         * mini-x86.c (mono_arch_output_basic_block): Same.
3235         
3236         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
3237
3238 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3239
3240         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
3241
3242 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3243
3244         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
3245
3246         * cpu-x86.md: Same.
3247
3248         * mini-x86.c (mono_arch_output_basic_block): Same.
3249         
3250         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
3251
3252 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3253
3254         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
3255
3256 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3257
3258         * simd-intrinsics.c: Enable setters for Vector16sb.
3259
3260 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3261
3262         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
3263
3264         * cpu-x86.md: Same.
3265
3266         * mini-x86.c (mono_arch_output_basic_block): Same.
3267         
3268         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
3269
3270 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
3271
3272         * simd-intrinsics.c: Implement setter for Vector8us.
3273
3274 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3275
3276         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
3277         for dead variables.
3278
3279 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3280
3281         * mini-ppc.c: remove references to the red zone in the prolog
3282         (for systems that don't support it).
3283
3284 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3285
3286         * cpu-ppc64.md: Fixed a few instruction lengths.
3287
3288         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
3289         now.
3290
3291 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3292
3293         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
3294         basic.exe now.
3295
3296 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3297
3298         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
3299
3300 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
3301
3302         * mini-ops.h: Added OP_INSERT_I2.
3303
3304         * cpu-x86.md: Same.
3305
3306         * mini-x86.c (mono_arch_output_basic_block): Same.
3307         
3308         * simd-intrinsics.c: Implement setter for Vector8s.
3309
3310         * simd-methods.h: Add the names of get setters of Vector8s.
3311
3312 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3313
3314         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
3315         
3316         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
3317         parameters.
3318
3319         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3320
3321 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3322
3323         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
3324         for PPC64.  An empty program runs now.
3325
3326 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3327
3328         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3329
3330         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
3331         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
3332         info for JITted code is emitted into a shared library, loadable into gdb.
3333
3334 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3335
3336         * Makefile.am: Changes to build PPC64.
3337
3338         * mini-arch.h: Include mini-ppc64.h on PPC64.
3339
3340 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3341
3342         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
3343         in PPC code up to r119147.
3344
3345 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3346
3347         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3348         cpu-ppc64.md: Changes for PPC64.
3349
3350         Based on code submitted by andreas.faerber@web.de at
3351         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
3352         X11/MIT license.
3353
3354 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3355
3356         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3357         cpu-ppc64.md: Copied from the corresponding PPC files from
3358         r118846.
3359
3360 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
3361
3362         * mini-ops.h: Added OP_ROUND.
3363
3364         * cpu-x86.md: Added round.
3365
3366         * mini-x86.c: Added support for intrinsicing Math.Round (double).
3367
3368         * basic-math.cs: Added test_0_round to test rounding.
3369
3370         Contributed under MIT/X11 license.
3371
3372 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3373
3374         * aot-compiler.c : Fix the Winx64 build.
3375
3376         Contributed under MIT/X11 license.
3377
3378 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3379
3380         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
3381         in OP_EXTRACT_R8 to avoid possible stack corruption.
3382
3383 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3384
3385         * mini-ops.h: Added OP_EXTRACT_R8/I8.
3386
3387         * cpu-x86.md: Added extract_r8.
3388
3389         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
3390         
3391         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
3392         a couple of OP_EXTRACT_I4.
3393
3394         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
3395
3396         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
3397
3398 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3399
3400         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
3401         and not 4.1. 
3402
3403 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3404
3405         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
3406         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
3407
3408         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
3409         are not needed any more.
3410
3411         * mini.h: Remove the unused INS_LIST macros.
3412
3413         * mini.c (mini_method_compile): Remove a disable globalra case which is no
3414         longer needed.
3415
3416         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
3417         ir-emit.h.
3418
3419         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
3420         mono_alloc_ireg () instead.
3421
3422         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
3423         macros.
3424
3425         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
3426         on amd64.
3427
3428         * aot-runtime.c (load_aot_module): Disable AOT when running under
3429         CAS.
3430
3431         * mini-amd64.h: Change the monitor fastpath defines to check for
3432         !PLATFORM_WIN32 so they work on *bsd too.
3433
3434         * mini.h mini.c mini-hhpa.c: Remove more unused code.
3435
3436         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
3437
3438         * mini.h (MonoCompile): Remove new_ir flag.
3439
3440         * regalloc.h regalloc.c: Remove unused code.
3441
3442         * cpu-*.md: Remove more unused opcodes.
3443
3444         * simple-cee-ops.h simple-mini-ops.h: Removed.
3445
3446         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
3447         
3448 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3449
3450         * aliasing.h: Removed.
3451
3452         * *.c: Remove references to aliasing.h and inssel.h.
3453
3454         * mini.c: Remove additional unused functions.
3455
3456         * mini-ops.h cpu-*.md: Remove unused opcodes.
3457
3458 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3459
3460         Remove the old JIT code.
3461
3462         * inssel*.brg: Removed.
3463
3464         * ssa.c abcremoval.c aliasing.c: Removed.
3465
3466         * ssa2.c: Renamed to ssa.c.
3467
3468         * abcremoval2.c: Renamed to abcremoval.c.
3469
3470         * *.c: Removed all !cfg->new_ir code.
3471
3472         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
3473         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
3474
3475         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
3476         
3477 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3478
3479         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
3480         to simplify the code and cut back on the number of global symbols in the AOT
3481         file.
3482         
3483         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
3484
3485 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
3486
3487         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
3488         with the got/got_info tables.
3489
3490         * mini.h: Bump AOT file format version.
3491         
3492         * unwind.h: New file, contains definitions for stack unwinding.
3493
3494         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
3495         to cfg->unwind_ops.
3496         
3497         * aot-compiler.c: Generalize the emitting of unwind information to use the
3498         information in cfg->unwind_ops.
3499
3500         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
3501
3502         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
3503         AOT method frames. Enable writing symbols for methods by default.
3504
3505 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
3506
3507         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
3508         and make it work with vectors of element sizes 1, 2 and 4.
3509
3510         * simd-intrinsics.c: Enable getter for all vectors with element size
3511         1, 2 or 4.
3512
3513         * simd-methods.h: Add the names of other getters.
3514
3515         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
3516
3517         * cpu-x86.md: Same.
3518
3519         * mini-x86.c: Same.
3520
3521 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
3522
3523         * mini-ppc.h: portability fix.
3524
3525 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3526
3527         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
3528         buggy and will overwrite it.
3529
3530 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3531
3532         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
3533         Use it to emit local symbols for all methods so AOTed methods show up with
3534         their full name in gdb/valgrind output.
3535
3536 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
3537
3538         * mini-ppc.c: portability fixes.
3539
3540 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3541
3542         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
3543         entries out of the if (!generic_shared...) code so it is always done.
3544         (mono_class_init_trampoline): Do the patching when running under valgrind
3545         too, newer versions of valgrind have no problems with it.
3546
3547 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3548
3549         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
3550         further sections.
3551
3552 2008-11-13  Mark Probst  <mark.probst@gmail.com>
3553
3554         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
3555         filters.
3556
3557 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3558
3559         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
3560
3561 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3562
3563         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
3564
3565         * cpu-x86.md: Same.
3566
3567         * mini-x86.c: Same.
3568
3569         * simd-intrinsics.c: Same.
3570
3571 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3572
3573         * simd-intrinsics.c: Enable constructor intrinsics for all types.
3574
3575 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3576
3577         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
3578         to work with more Vector types.
3579
3580 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3581
3582         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
3583         store the elemens directly instead of using and intermediate.
3584
3585 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3586
3587         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
3588
3589         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
3590         to preserve %eax for aot plt trampolines.
3591
3592         * aot-compiler.c (compile_method): Don't skip synchronized methods.
3593         (encode_method_ref): Flag synchronized methods so they won't go through
3594         the AOT trampoline.
3595
3596         * aot-compiler.c: Additional work to support AOTing synchronized methods/
3597         wrappers.
3598
3599         * cpu-ia64.md (jmp): Increase max length.
3600
3601 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3602
3603         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
3604         open generic classes.
3605
3606         * aot-compiler.c: Enable the ELF writer on ELF platforms.
3607
3608         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
3609         box+brtrue optimization since it causes test failures on x86.
3610
3611 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3612
3613         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
3614
3615         * cpu-x86.md: Same.
3616
3617         * mini-x86.c: Same.
3618
3619         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
3620         for simd ctor values. 
3621
3622         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
3623         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
3624
3625 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3626
3627         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
3628         LogicalRightShift.
3629
3630         * simd-instrincs.c: Same.
3631
3632         * basic-simd.cs: Same.
3633
3634 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3635
3636         * ratests.cs: Add more tests.
3637
3638         * regalloc2.c (add_spill_code): Handle more corner cases.
3639
3640 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3641
3642         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
3643         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
3644         both the source an destination of an instruction.
3645
3646 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3647
3648         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
3649         wapihandles.c: more portability changes.
3650
3651 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
3652
3653         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
3654         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
3655         safe to execute in a signal handler and the kernel provides better
3656         the info in /proc/self/smaps. Avoid the assert on sigaction during
3657         cleanup.
3658
3659 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3660
3661         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
3662         do the bblock linking hack if it is actually needed.
3663
3664         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
3665         up linking.
3666
3667         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
3668         crash problem is fixed.
3669
3670         * branch-opts.c (mono_remove_critical_edges): Link up newly added
3671         bblocks.
3672
3673         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
3674         for catch clauses.
3675         (mini_method_compile): Set the starting value of next_vreg to 
3676         MAX_IREGS + MAX_FREGS when using globalra.
3677
3678         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
3679         filter clauses with BB_EXCEPTION_HANDLER.
3680
3681         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
3682
3683 2008-11-10  Mark Probst  <mark.probst@gmail.com>
3684
3685         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
3686         space for stdcall.  Fixes regressions on Win32.
3687
3688 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
3689
3690         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
3691         bblocks.
3692         (linear_scan): Remove an assert which doesn't seem to be needed.
3693
3694         * local-propagation.c (mono_local_deadce): Avoid a call to
3695         MONO_DELETE_INS which would screw up the instruction linking.
3696
3697         * mini.c (mono_decompose_op_imm): Make this work with globalra.
3698
3699         * regalloc2.c: Upgrade to work the current JIT code.
3700
3701 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
3702
3703         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
3704         case.
3705
3706         * aot-runtime.c: Remove some dead code.
3707
3708         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
3709         consistency.
3710         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
3711
3712         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
3713         trampolines using sscanf since atoi doesn't work on large unsigned values.
3714
3715         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
3716         Initialize code_size.
3717
3718 2008-11-08  Mark Probst  <mark.probst@gmail.com>
3719
3720         * method-to-ir.c (mini_emit_inst_for_method): Make
3721         Interlocked.CompareExchange work for Int arguments on 32 bit
3722         archs, as well.
3723
3724 2008-11-07  Mark Probst  <mark.probst@gmail.com>
3725
3726         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
3727
3728 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
3729
3730         * main.c Fix MSVC build.
3731
3732         Contributed under MIT/X11 license.
3733
3734 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3735
3736         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
3737         alignment larger than 8 bytes are aligned correctly, too.
3738
3739         * mini.c: Honor the min_align field of MonoClass when laying out
3740         the stack.
3741
3742 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
3743
3744         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
3745
3746         * aot-compiler.c (emit_plt): Fix a warning.
3747         
3748         * aot-compiler.c: Implement ARM support in the binary writer.
3749
3750 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3751
3752         * basic-simd.cs: Add test for getter with byref arg.
3753         Fix the naming of a few tests.
3754         Add missing checks to a test.
3755
3756 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3757
3758         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
3759
3760         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
3761         most of the full-aot support for monitor enter/exit trampolines.
3762
3763         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
3764         enter/exit trampoline creation functions.
3765
3766         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
3767         make dist.
3768
3769 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
3770
3771         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
3772         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
3773         implement the needed functionality without adding crap to the runtime.
3774
3775 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3776
3777         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
3778         non-x86 builds.
3779
3780         * mini.c (mono_build_date): New global version holding the build date in
3781         string format.
3782         
3783         * Makefile.am (buildver.c): Generate a file containing the build date.
3784
3785         * main.c: Set the build date from the generated file.
3786
3787         * mini.c (mono_get_runtime_build_info): New helper function returning build
3788         information in a string format.
3789         
3790         * driver.c (mono_main): Print the build date in --version.
3791
3792         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
3793         file when the bind-to-runtime-version option is used.
3794
3795 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3796
3797         * simd-intrinsics.c: Fix bug when using getters and byref args. 
3798
3799 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3800
3801         * simd-methods.h: Rename prefetch methods.
3802
3803         * simd-intrinsics.c: Same.      
3804
3805 2008-11-05  Mark Probst  <mark.probst@gmail.com>
3806
3807         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
3808         sizes.
3809
3810 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * aot-compiler.c: Use the bundled elf header files instead of depending on
3813         the system one.
3814         
3815         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
3816         mempool.
3817
3818         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
3819         on every call.
3820
3821 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3822
3823         * cpu-x86.md: Add store nta ops.
3824
3825         * mini-ops.h: Same.
3826
3827         * mini-x86.c: Same.
3828
3829         * mini.h: Add an enum for simd prefetch modes.
3830
3831         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
3832         of store. Use the changed code to support store nta.
3833
3834         * simd-intrinsics.c: Add prefetch ops for all vector types.
3835
3836 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3837
3838         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
3839         threads.
3840         
3841         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
3842         names.
3843
3844         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
3845         trampolines.
3846
3847 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3848
3849         * mini-x86.c: Fixed commit.
3850
3851 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3852
3853         * aot-compiler.c (emit_plt): Align the plt section only on x86.
3854
3855 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3856
3857         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
3858         and MONITOR_EXIT, for the ASM fastpaths.
3859
3860         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
3861         available.
3862
3863         * mini.c, patch-info.h: Signature and patch infos for
3864         Monitor.Enter/Exit trampolines.
3865
3866         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
3867
3868         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
3869         Monitor.Enter/Exit ASM fastpath for Linux.
3870
3871 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3872
3873         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
3874
3875         * objects.cs: Add a new test.
3876         
3877         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
3878
3879         * aot-runtime.c (load_method): Run class initialization in the PLT case even
3880         if MONO_LOG_LEVEL is set.
3881
3882         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
3883
3884         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
3885
3886         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
3887         
3888         * aot-compiler.c: Change the relocation code to use virtual addresses instead
3889         of file offsets. Align the sections belonging to the data segment to 
3890         PAGESIZE.
3891
3892 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3893
3894         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
3895         elf.h. Port it to amd64.
3896
3897 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3898
3899         * driver.c: Enable SIMD by default.
3900
3901 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3902
3903         * cpu-x86.md: Add prefetch op.
3904
3905         * mini-ops.h: Same.
3906
3907         * mini-x86.c: Same.
3908
3909         * mini.h: Add an enum for simd prefetch modes.
3910
3911         * simd-methods.h: Add prefetch function names.
3912
3913         * simd-intrinsics.c: Add prefetch ops for all vector types.
3914
3915 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3916
3917         * aot-compiler.c (emit_bytes): Speed this up a little.
3918
3919 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3920
3921         * aot-compiler.c: Add JIT time etc. statistics.
3922         
3923         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
3924
3925         * mini.h (MonoCompile): Add 'got_offset' field.
3926
3927         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
3928         method_got_offsets array.
3929
3930         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
3931         wrappers.
3932
3933         * aot-compiler.c (compile_method): Add generic method instances referenced
3934         by the method to the list of methods to be compiled, this is required so if
3935         A<T> references B<T>, and another assembly references A<int>, then it will
3936         also get a copy of B<int>.
3937
3938         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
3939         when checking for monitor enter/exit.
3940
3941 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3942
3943         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
3944         for Monitor.Enter and Monitor.Exit if enabled.
3945
3946         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
3947         Solaris.
3948
3949 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
3950
3951         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
3952         of an OP_MOVE. Fixes #440046.
3953
3954         * basic-long.cs: Add a new test.
3955
3956 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3957
3958         * mini.h: Add synchronization note for the managed counter-part.
3959
3960         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
3961         returns the simd caps of the current cpu.
3962
3963 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3964
3965         * basic-simd.cs: Remove Console.WriteLine.
3966
3967 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3968
3969         * basic-simd.cs: New tests for Vector2ul.
3970
3971 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3972
3973         * simd-intrinsics.c: Add new vector type Vector2ul.
3974
3975 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3976
3977         * basic-simd.cs: New tests for Vector2l.
3978
3979 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3980
3981         * cpu-x86.md: Add long version of most packed int ops.
3982
3983         * mini-ops.h: Same.
3984
3985         * mini-x86.h: Same.
3986
3987         * simd-intrinsics.c: Add new vector type Vector2l.
3988
3989 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3990
3991         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
3992
3993         * simd-methods.h: Remove SN_op_BitwiseXor.
3994
3995 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3996
3997         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
3998         alignment.
3999
4000 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4001
4002         * basic-simd.cs: Test for Vector2d.
4003
4004         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
4005         value.
4006
4007 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4008
4009         * cpu-x86.md: Add double version of all packed float ops.
4010
4011         * mini-ops.h: Same.
4012
4013         * mini-x86.h: Same.
4014
4015         * simd-intrinsics.c: Add new vector type Vector2d.
4016
4017         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
4018
4019         * simd-methods.h: Add Duplicate.
4020
4021 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4022
4023         * basic-simd.cs: Test for packing with signed saturation.
4024
4025 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4026
4027         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
4028         found in the TYPESPEC table.
4029
4030 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4031
4032         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
4033         too.
4034
4035         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4036
4037         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
4038         instead of the RVA, since the RVA can be changed by tools like the cil 
4039         stripper.
4040
4041         * method-to-ir.c (mono_method_to_ir2): Ditto.
4042
4043         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
4044         (deserialize_variable): Ditto.
4045
4046 2008-10-25  Martin Baulig  <martin@ximian.com>
4047
4048         * debug-mini.c (write_variable): Use
4049         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
4050
4051 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4052
4053         * cpu-x86.md: Add unsigned variants of packd and packw.
4054
4055         * mini-ops.h: Same.
4056
4057         * mini-x86.h: Emit the right instruction for packd and packw.
4058         Add unsigned variants of packd and packw.
4059
4060         * simd-intrinsics.c: Packd and packw were used in place of their
4061         unsigned variants. Change that.
4062         Add intrinsics for (Signed)PackWithSignedSaturation.
4063
4064         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
4065
4066 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4067
4068         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
4069
4070 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4071
4072         * mini-ops.h: Remove dword packed add/sub with saturation ops.
4073
4074         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
4075
4076         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
4077         sse instructions.
4078
4079         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
4080
4081 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4082
4083         * method-to-ir.c, mini.c: Special casing for the synchronized
4084         wrapper for the ldtoken+GetTypeFromHandle case.
4085
4086 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * mini.c (mono_replace_ins): Move this to branch-opts.c.
4089
4090         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
4091         created/split bblocks.
4092
4093 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4094
4095         * mini-ops.h: Add packed signed mul high.
4096         
4097         * cpu-x86.md: Same.
4098
4099         * mini-x86.c (mono_arch_output_basic_block): Same.
4100
4101         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
4102
4103         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
4104
4105 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4106
4107         * basic-simd.cs: Tests for Vector16sb.
4108
4109 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4110
4111         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
4112
4113 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4114
4115         * mini-ops.h: Add packed signed min, max and compare greater.
4116         
4117         * cpu-x86.md: Same.
4118
4119         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
4120         saturation.
4121
4122         * simd-methods.h: Add CompareGreaterThan.
4123
4124         * simd-methods.h: Remove CompareEquals.
4125
4126         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
4127
4128         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
4129
4130         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
4131         CompareEqual.
4132
4133 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4134
4135         * basic-simd.cs: Fix tests due to change in the API.
4136
4137 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4138
4139         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
4140
4141 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4142
4143         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
4144
4145         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
4146         inst_offset as this has invalid values for LDADDR.
4147
4148 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4149
4150         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4151
4152         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
4153
4154 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4155
4156         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
4157         for accessing field->data.
4158
4159 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4160
4161         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4162
4163 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4164
4165         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
4166
4167         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
4168
4169 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4170
4171         * dominators.c (mono_compute_natural_loops): Allocate GList enties
4172         from the cfg mempool.
4173
4174 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4175
4176         * basic-simd.cs: Tests for new methods in Vector8us.
4177
4178 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4179
4180         * mini-ops.h: Add multiply and store high.
4181         
4182         * cpu-x86.md: Same.
4183
4184         * mini-x86.c (mono_arch_output_basic_block): Same.
4185
4186         * simd-methods.h: Same.
4187
4188         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
4189         and CompareEqual.
4190
4191 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4192
4193         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
4194         mono_class_setup_vtable ().
4195
4196         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
4197         mono_class_get_vtable_entry () for accessing klass->vtable.
4198
4199         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
4200
4201         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
4202         found.
4203
4204         * method-to-ir.c (mono_save_token_info): Don't save references made from
4205         wrappers.
4206
4207         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
4208         of generic instances.
4209
4210         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
4211
4212 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4213
4214         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
4215         OP_JMP depends on the method signature.  Calculate it properly.
4216
4217 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4218         
4219         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
4220         called directly.
4221
4222         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
4223         instances.
4224         (emit_extra_methods): Add another table mapping method indexes to 
4225         offsets in the extra_method_info table.
4226
4227         * mini.h: Bump AOT file format version.
4228         
4229         * aot-runtime.c: Merge most of the code from mono_aot_get_method
4230         and mono_aot_get_method_from_token () into one function.
4231
4232 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4233
4234         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
4235         separate counter.
4236
4237 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
4238
4239         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
4240         methods.
4241
4242         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
4243         disable_aot.
4244
4245         * mini.c (mono_patch_info_equal): Compare the generic context as well.
4246
4247         * mini.h: Bump aot file format version.
4248
4249         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
4250         AOT file can contain native code for methods which are not in the METHOD
4251         table. Generate code for non-sharable generic instances of generic methods
4252         found in the METHODSPEC table.
4253         
4254         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
4255         encoding generic type handles.
4256
4257         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
4258         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
4259
4260         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
4261         macros + MONO_ADD_INS.
4262
4263         * mini.c (mono_jump_info_token_new2): New function which takes a generic
4264         context as well.
4265
4266         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
4267
4268         * mini.h: Bump aot file format version.
4269
4270         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
4271
4272 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4273
4274         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
4275         platforms, with definable stack alignment value.  Set to 16 now
4276         for all platforms.
4277
4278         * mini.c, mini.h, driver.c: Command line option for disabling
4279         stack alignment.
4280
4281 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4282
4283         * basic-simd.cs: Tests for new methods in Vector4ui.
4284
4285 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4286
4287         * mini-ops.h: Add packed int shuffle.
4288         
4289         * cpu-x86.md: Same.
4290
4291         * mini-x86.c (mono_arch_output_basic_block): Same.
4292
4293         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
4294         extract mask, max, min, shuffle.
4295
4296         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
4297
4298 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4299
4300         * basic-simd.cs: Tests for new methods in Vector8us.
4301
4302 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4303
4304         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
4305         RuntimeTypeHandle, not a TypedReference.
4306
4307 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
4308
4309         * simd-intrinsics.c: remove relocations.
4310
4311 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
4312
4313         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
4314         optimizations from the x86 backend.
4315
4316 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
4317
4318         * simd-methods.h, simd-intrinsics.c: debloat method names and
4319         prepare for no relocations.
4320
4321 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4322
4323         * mini-ops.h: Add packed min/equal and sum of absolute differences.
4324         
4325         * cpu-x86.md: Same.
4326
4327         * mini-x86.c (mono_arch_output_basic_block): Same.
4328
4329         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
4330         extract mask, max, min and sum of absolute differences.
4331
4332         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
4333         method name.
4334
4335 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4336
4337         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
4338         Renamed one test for consistency.
4339
4340 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4341
4342         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
4343         fix to the code that deal with other blocks.
4344
4345 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4346
4347         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
4348
4349 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4350
4351         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
4352         that deals with vreg interference. Explicitly check for OP_LDADDR to be
4353         able to process the source reg.
4354
4355 2008-10-16  Martin Baulig  <martin@ximian.com>
4356
4357         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
4358
4359         * inssel.brg: Add `OP_HARD_NOP'.
4360
4361         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
4362
4363         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
4364         `OP_HARD_NOP' instruction when running inside the debugger.
4365
4366         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
4367         `OP_HARD_NOP' instruction when running inside the debugger.
4368
4369 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4370
4371         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
4372         now works. The issue with the regalloc tripping up no longer
4373         happens.
4374
4375         * simd-intrinsics.c (load_simd_vreg): Same.
4376
4377 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4378         
4379         * basic-simd.cs: Tests for new Vector8ui methods.
4380
4381 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4382
4383         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
4384         only for type. This fixes crashes where MonoInst::klass is checked
4385         for ops of type != VTYPE or OBJ.
4386
4387         * simd-intrinsics.c (load_simd_vreg): Same.
4388
4389 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4390
4391         * mini-ops.h: Add ops for packed shuffle/max/avg and
4392         extract mask.
4393         
4394         * cpu-x86.md: Same.
4395
4396         * mini-x86.c (mono_arch_output_basic_block): Same.
4397
4398         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
4399         extract mask.
4400
4401         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
4402         to emit extract mask op.
4403
4404         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
4405         to emit word shuffles.
4406
4407 2008-10-15  Mark Probst  <mark.probst@gmail.com>
4408
4409         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
4410         the largest alignment needed by a variable, but at least
4411         sizeof(gpointer).
4412
4413 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4414
4415         * basic-simd.cs: Tests for the fixes in the last commit.
4416
4417 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4418
4419         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
4420         no longer handles STACK_PTR input.
4421
4422         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
4423
4424         * simd-intrinsics.c (load_simd_vreg): New function that works like 
4425         get_simd_vreg   but handles STACK_PTR input.
4426
4427         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
4428         as the input can be an arbitrary pointer.
4429
4430         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
4431         LDADDR local optimization directly otherwise use a store op.
4432
4433 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4434
4435         * basic-simd.cs: Tests for dup low and dup high.
4436
4437 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4438
4439         * mini-ops.h: Add dup low and dup high ops.
4440         
4441         * cpu-x86.md: Same.
4442
4443         * mini-x86.c (mono_arch_output_basic_block): Same.
4444
4445         * simd-intrinsics.c (vector4f_intrinsics): Same.
4446
4447 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4448
4449         * basic-simd.cs: Tests for recently added functionality.
4450
4451 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4452
4453         * mini-ops.h: Add remaining sse1 fp ops.
4454         
4455         * cpu-x86.md: Add remaining sse1 fp ops.
4456
4457         * mini-x86.c (mono_arch_output_basic_block): Same.
4458
4459         * mini.h: Add enum for simd FP compare conditions.
4460
4461         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
4462
4463         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
4464         so the backed can generate the appropriate op.
4465
4466 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4467         This patch squeese one more byte from the SimdIntrinsc struct.
4468
4469         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
4470         a a shift amount intead of simply or'ing it.
4471
4472         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
4473
4474         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
4475         byte so we can have an aditional flags field without increasing struct size.
4476
4477         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
4478         against the simd_supported_versions bitmask.
4479
4480         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
4481
4482 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
4483
4484         * mini.c: remove rawbuffer code (the only use here is unsafe because
4485         it takes locks during signal handling and the kernel now provides much
4486         better info in proc/pid/smaps these days).
4487
4488 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
4489
4490         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
4491         OP_X86_PUSH_OBJ. Fixes #434620.
4492
4493         * objects.cs: Add a test.
4494         
4495 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
4496
4497         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
4498         that the packuswb/packusdw don't work with unsigned numbers for what
4499         would be negative numbers in signed format.
4500
4501         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
4502         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
4503
4504         * mini-ops.h: Add doubleword forms of many ops and packing ones.
4505
4506         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
4507
4508         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
4509
4510         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
4511
4512         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
4513         add more ops.
4514
4515         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
4516         version as the enum in mini.h.
4517
4518         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
4519         for sse3 ops, check the simd_version field if present. This way the code
4520         works with all versions of sse.
4521
4522 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4523
4524         * simd-intrinsics.c: Fixed intrinsic name typo.
4525
4526         * mini.h: Added missing simd exported function.
4527
4528         * basic-simd.cs: Added tests for Vector4ui.
4529         Fixed broken test for Vector16b.
4530
4531 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
4532
4533         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
4534         the max length to 64.
4535
4536 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4537
4538         * method-to-ir.c: Only do the fast virtual generic method call for
4539         non-wrapper methods.
4540
4541         * mini.h, mini-trampolines.c: The new generic virtual remoting
4542         trampoline handles virtual method calls via the vtable (as done by
4543         the fast virtual generic method calls) to remoting proxies.
4544
4545         * mini.c (mono_jit_create_remoting_trampoline): For generic
4546         methods reate a generic virtual remoting trampoline.
4547
4548         * mini-amd64.h: Enable fast virtual generic method calls again.
4549
4550 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4551
4552         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
4553         restore registers when doing tail calls.
4554
4555 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4556
4557         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
4558         Vector4ui.
4559
4560 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4561
4562         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
4563
4564 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4565
4566         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
4567
4568 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4569
4570         * basic-simd.cs: Retrofit for API changes.
4571
4572 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4573
4574         * mini-ppc.c: Handle integer stack arguments for tail calls.
4575
4576 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4577
4578         * optflags-def.h: Removed sse3 optimization.
4579
4580         * driver.c: Same.
4581
4582         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
4583         sse3.
4584
4585         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
4586
4587         * mini.h: Added enumeration with simd versions.
4588
4589         * simd-intrinsics.c (emit_intrinsics): Use the new static var
4590         for detecting SSE3.
4591
4592         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
4593
4594         * mini.c (mini_init): Call mono_simd_intrinsics_init.
4595
4596 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4597
4598         * basic-simd.cs: Added tests for Vector8u and Vector16u.
4599
4600         * basic-simd.cs: Fixed test naming.
4601
4602 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4603
4604         * mini-ops.h: Added ops for packed and saturated math, shifts
4605         and packing/unpacking.
4606
4607         * cpu-x86.md: Added descriptors for the above ops.
4608
4609         * mini-x86.c: Added code to emmit the above ops.
4610
4611         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
4612
4613 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
4614
4615         * aot-compiler.c (compile_method): Enable AOT for generic code.
4616
4617         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
4618
4619 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
4620
4621         * mini.c: add a workaround for a common screwup that ends up blamed
4622         to mono (other processes blocking signal delivery).
4623
4624 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4625
4626         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
4627         in the LDFLD/STFLD opcodes. Fixes #432673.
4628
4629         * iltests.il.in: Add a new test.
4630
4631 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
4632
4633         * mini-arm.c: attach the thread in unmanaged->managed transitions
4634         using delegates (bug #433148).
4635
4636 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4637
4638        * basic-simd.cs: Use new ShuffleSel constants.
4639
4640 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4641
4642         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
4643
4644         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
4645         only disable simd intrinsics if no sse2 is detected.
4646
4647         * optflags-def.h: Added sse3.
4648
4649         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
4650         is disabled.
4651
4652 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4653
4654         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
4655         when adding delegate-invoke wrappers.
4656
4657 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4658
4659         * Makefile.am: Reenable the simd tests.
4660
4661 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4662
4663         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
4664           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
4665           other vreg is allocated to that hreg.
4666
4667         Contributed under MIT/X11 license.
4668
4669 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4670
4671         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
4672         yet checked in.
4673
4674 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4675
4676         * basic-simd.cs: New test suite for SIMD intrinsics.
4677
4678         * Makefile.am: Added new tests.
4679
4680 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4681
4682         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
4683
4684         * mini-ops.h: Same.
4685
4686         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
4687
4688         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
4689         using SSE2 aware opcodes.
4690
4691         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
4692         is enabled, this code path is only reachable if conversion ops are emmited after
4693         mono_method_to_ir.
4694
4695         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
4696
4697         This optimization saves 6 bytes per conversion against the old version.
4698
4699 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4700
4701         * aot-compiler.c (compile_method): Don't skip methods referencing 
4702         generic methods without a corresponding entry in token_info_hash, since
4703         encode_method_ref () can handle all generic methods now.
4704
4705         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
4706         generic context is set.
4707         
4708         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
4709         generic sharing of LDTOKEN.
4710
4711 2008-10-06  Mark Probst  <mark.probst@gmail.com>
4712
4713         * mini-amd64.h: Temporarily disabled fast virtual generic method
4714         calls because it breaks the System.Runtime.Remoting tests.
4715
4716 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4717
4718         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
4719
4720         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
4721         so inlining actually works.
4722         (check_inline_caller_method_name_limit): Ditto.
4723
4724 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
4725
4726         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
4727         64 bit safety (from Olaf Hering and Andreas Farber).
4728
4729 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4730         
4731         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
4732         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
4733         unused virtual call support code.
4734
4735         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
4736         
4737         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
4738         which can't use aot trampolines.
4739         (decode_patch): Don't create aot trampolines for methods which can't use
4740         them.
4741
4742         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
4743         use aot trampolines.
4744
4745         * mini.h: Bump AOT image format version.
4746         
4747 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
4748
4749         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
4750         to save_token_info () since cmethod is inflated for constrained calls.
4751
4752         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
4753
4754 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
4755
4756         * Makefile.am: Add build rules for ppc64.
4757         This avoids the build failing at pedump with unresolved symbols
4758         due to lack of arch_sources. Instead it will now fail earlier
4759         due to lack of cpu-ppc64.md.
4760
4761         Contributed under MIT/X11 license.
4762
4763 2008-10-04  Mark Probst  <mark.probst@gmail.com>
4764
4765         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
4766         tail calls.
4767
4768         * iltests.il.in: Add test case for tail call with many arguments.
4769
4770 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4771
4772         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
4773         to the fast virtual generic method code until the aot case is fixed.
4774
4775 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4776
4777         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
4778
4779 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4780
4781         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
4782         thunks.
4783
4784 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4785         
4786         * simd-intrinsics.c: Forgot to add this one.
4787
4788         * mini-codegen.c: Fix macro in case SIMD is not supported.
4789
4790 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4791         
4792         This patch land initial JIT support for simd intrinsics.
4793
4794         * mini-x86.h: Added new define to make --enable_minimal work on x86.
4795
4796         * Makefile.am: Added simd-intrinsics.c
4797
4798         * simd-intrinsics.c: New file with simd instrinsic related
4799         code.
4800
4801         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
4802
4803         * cpu-x86.md: Add simd related instructions.
4804
4805         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
4806
4807         * driver.c: Added two new --regression variants.
4808
4809         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
4810
4811         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
4812
4813         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
4814         extract some complicated logic to helper functions.
4815
4816         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
4817
4818         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
4819
4820         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
4821         the specialized simplification pass.
4822
4823         * method-to-ir.c (mono_spill_global_vars): Use new macro.
4824
4825         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
4826
4827         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
4828         table.
4829
4830         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
4831         if MONO_ARCH_NEED_SIMD_BANK is defined.
4832
4833         * mini-ops.h: Added the new simd ops.
4834
4835         * mini-x86.c: Added mono_arch_xregname.
4836
4837         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
4838
4839         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
4840
4841         * mini-x86.h: Define simd related MONO_ARCH macros.
4842
4843         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
4844
4845         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
4846
4847         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
4848         MONO_CLASS_IS_SIMD to deal with simd related IR.
4849
4850         * mini.h (MonoInst): Added spill_var to the backend union.
4851
4852         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
4853
4854         * mini.h: Added forward declarations of the new simd fuctions.
4855
4856         * optflags-def.h: Added new optimization names SIMD.
4857
4858         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
4859
4860         * regalloc.h: Added support for working with 3 register banks.
4861
4862         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
4863
4864         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
4865
4866 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
4867
4868         * mini-exceptions.c: remove 64 bit related ifdef clutter.
4869
4870 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4871
4872         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
4873         instead of one on 64 bit systems.
4874
4875         * method-to-ir.c: Remove unused includes.
4876
4877 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
4878
4879         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
4880         cfg->used_int_regs, since the two are different on arm.
4881
4882 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4883
4884         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
4885         mono_method_get_vtable_index() to get the vtable index.
4886
4887 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4888
4889         * method-to-ir.c (mono_method_to_ir2): Don't create native
4890         wrappers for array methods, because they're never called (and if
4891         they were called they wouldn't work).
4892
4893 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4894
4895         * method-to-ir.c (mono_method_to_ir2): Array methods are
4896         special-cased and must not be invoked indirectly via the (M)RGCTX
4897         when generic sharing is turned on.  Fixes #431413.
4898
4899 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4900
4901         * method-to-ir.c: When generic sharing is active, call
4902         non-interface virtual generic methods via the standard trampoline.
4903
4904         * mini-trampolines.c: Handle virtual generic shared methods.
4905
4906         * mini.h, mini-x86.c, mini-x86.h: New argument for
4907         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
4908         method thunks and which is the trampoline to call if the lookup
4909         fails.  Enable the virtual generic method thunk for x86.
4910
4911         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
4912         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
4913         argument but assert that it's NULL, because these archs don't yet
4914         implement the virtual generic method thunk.  Changes in the IMT
4915         thunk data structures.
4916
4917 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4918
4919         * aot-compiler.c (emit_globals): Avoid invalid characters in
4920         the static linking symbol.
4921
4922         * objects.cs: Add a test for the range check optimization. Fix warnings.
4923
4924         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
4925         optimization from the current JIT.
4926
4927         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
4928         later in decompose_array_access_opts () to allow more optimizations.
4929
4930         * method-to-ir.c (mono_handle_soft_float): Rename this to 
4931         mono_decompose_soft_float () for consistency.
4932
4933         * mini-ops.h: Fix arguments of OP_STRLEN.
4934
4935         * method-to-ir.c (save_cast_details): Extract the cast details saving code
4936         into a separate function.
4937         (reset_cast_details): Ditto.
4938         (handle_unbox): Save cast details. Fixes #431254.
4939
4940         * method-to-ir.c: Remove some obsolete FIXMEs.
4941
4942 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4943
4944         * ir-emit.h (alloc_dreg): Write a warning before crashing.
4945
4946 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4947
4948         * mini-codegen.c: More work on macros to make them
4949         ready for multiple regbanks.
4950
4951 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4952
4953         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
4954
4955         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
4956
4957 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4958
4959         * mini-codegen.c (mono_spillvar_offset): Proper support for
4960         multiple regbanks.
4961
4962 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4963
4964         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
4965         the stack overflow changes.
4966
4967 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4968
4969         * mini-codegen.c: Make all bank macros depend on reg_bank.
4970
4971         * mini-codegen.c (mono_local_regalloc): Make free mask
4972         initialization regbank aware.
4973
4974 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4975
4976         * mini-codegen.c (mono_local_regalloc): Extract callee
4977         mask selection to a function and make it regbank aware.
4978
4979 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4980
4981         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
4982         code to deal with many regbanks.
4983
4984 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4985
4986         * mini-codegen.c: More fp->regbank changes.
4987
4988 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4989
4990         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
4991         of a hardcoded constant.
4992
4993 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4994
4995         * method-to-ir.c (type_from_stack_type): Fix typo.
4996
4997 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4998
4999         * mini-ia64.c (emit_move_return_value): Convert float return values to
5000         double.
5001
5002         * objects.cs: Add a new test.
5003         
5004         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
5005         VARARG methods to fix an assert later.
5006
5007         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
5008         end so it at least compiles.
5009
5010 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5011
5012         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
5013
5014 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
5015
5016         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
5017         optimization to a new function (emit_optimized_ldloca_ir) and enable
5018         it for both ldloca and ldloca_s.
5019
5020 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5021
5022         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
5023         gshared CASTCLASS code.
5024
5025         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
5026         amd64, where the libc stack unwinder encounters stack frames referring to
5027         native code in unmapped memory.
5028
5029         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
5030         sharing.
5031
5032         * generics.cs: Add new test.
5033
5034 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
5035
5036         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
5037         add a check that one of the ARM_FPU_ constants is defined.
5038
5039         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
5040         
5041         * mini-exceptions.c: Fix build on non-altstack platforms.
5042
5043         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
5044         sharing of vtypes.
5045
5046         * ir-emit.h: Add a comment to NEW_PCONST.
5047
5048         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
5049
5050         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
5051
5052         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
5053         after the changes to MonoJitDomainInfo.
5054
5055 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5056
5057         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
5058
5059 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5060
5061         * mini-ppc.c: Compiler warning fixes.
5062
5063 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5064
5065         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
5066         for pinvokes.
5067
5068 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5069
5070         * exceptions-ppc.c, mini-ppc.h: Compile
5071         mono_arch_handle_altstack_exception() on Darwin, too.
5072
5073 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5074
5075         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
5076         work on archs which don't have generic sharing implemented, only
5077         without the vtable_arg.
5078
5079 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5080
5081         * mini.c: Added comment explaining why delegate ctor icall
5082         wrappers are compiled.
5083
5084 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5085
5086         * mini.c: Don't produce trampolines to delegate ctor icall
5087         wrappers but compile them upfront.
5088
5089 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
5090
5091         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
5092         runtime-set function when going back to managed code. Currently this
5093         is used to set back the protection on the soft ovf pages and/or to
5094         throw the stack overflow exception that happened in unmanaged code.
5095
5096 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
5097
5098         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
5099         runtime-set function when going back to managed code. Currently this
5100         is used to set back the protection on the soft ovf pages and/or to
5101         throw the stack overflow exception that happened in unmanaged code.
5102
5103 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5104
5105         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
5106         the support code for restoring stack protection after stack overflows
5107         that happen in unmanaged code. Don't set the exec permission on the
5108         soft overflow area.
5109
5110 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
5111
5112         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
5113         delegate->method_ptr is set. Fixes #428054.
5114
5115 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5116
5117         * tests.cs: Rename to ratests.cs.
5118
5119         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
5120         emit_get_rgctx_... functions.
5121
5122 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5123
5124         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
5125
5126 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5127
5128         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
5129         before asserting that method is sharable.
5130
5131 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5132
5133         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
5134         whether method needs a static RGCTX wrapper used instead of
5135         complex conditions.
5136
5137         * generic-sharing.c, mini.h: A few functions moved to
5138         metadata/generic-sharing.c.
5139
5140 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5141
5142         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
5143         Generic code sharing for value types, which essentially means
5144         treating value type methods like static methods.  The RGCTX is
5145         passed in the same way.
5146
5147 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5148
5149         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
5150         opcode when creating multi-dimensional arrays of open types.
5151
5152         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
5153         open generic types.
5154
5155         * generics.cs: Add a test.
5156
5157         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
5158
5159 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5160
5161         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
5162
5163         * mini.c (mini_method_compile): Set it when running under the debugger. 
5164
5165         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
5166         vreg optimization if the flag is set.
5167
5168         * driver.c (mono_main): Add --attach= option to pass options to
5169         the attach agent.
5170
5171         * mini.c (sigquit_signal_handler): Start the attach agent.
5172
5173         * ssapre.c: Disable this to save space since it is not yet ported to
5174         linear IR.
5175
5176         * regalloc2.c: Disable this to save space.
5177
5178         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
5179
5180 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
5181
5182         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
5183         the -v option useful again.
5184
5185 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5186
5187         * mini-amd64.c (mono_arch_output_basic_block): Add support for
5188         --break-at-bb.
5189
5190         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
5191         arrays of arrays. Fixes #428406.
5192
5193         * method-to-ir.c (mini_emit_castclass): Ditto.
5194
5195         * objects.cs: Add new test.
5196         
5197 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
5198
5199         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
5200         was wrong at it choked against target_type_is_incompatible for byref types.
5201
5202 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5203
5204         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
5205         places.
5206
5207 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
5208
5209         * mini-exceptions.c: update a few more exceptions-related counters.
5210
5211 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
5212
5213         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
5214         new functions to allocate from persistent mempools.
5215
5216 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
5219         multiple register banks in the future.
5220
5221         * mini-codegen.c (mono_local_regalloc): Fix a warning.
5222
5223 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
5224
5225         * mini.c (type_to_eval_stack_type): Remove duplicated function.
5226
5227         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
5228
5229         * mini.h: Export type_to_eval_stack_type.
5230
5231         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
5232         is only ins->klass of byref types.
5233
5234 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
5235
5236         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
5237         (mini_emit_memcpy2): Ditto.
5238
5239         * mini-amd64.c: Fix a warning.
5240
5241 2008-09-21  Mark Probst  <mark.probst@gmail.com>
5242
5243         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
5244         linking.
5245
5246 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
5247
5248         * method-to-ir.c: Extract stloc micro-optimization to a
5249         function and apply it to all cases.
5250
5251 2008-09-19  Mark Probst  <mark.probst@gmail.com>
5252
5253         * method-to-ir.c: Don't fail generic code sharing in cases we
5254         already support.
5255
5256 2008-09-18  Mark Probst  <mark.probst@gmail.com>
5257
5258         * mini-ppc.c: Handle structs in tailcalls on Darwin.
5259
5260 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
5261
5262         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
5263         implementation.
5264
5265 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
5266
5267         * trace.c: make tracing more useful and correct, with per-thread
5268         id and indent info.
5269
5270 2008-09-15  Mark Probst  <mark.probst@gmail.com>
5271
5272         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
5273         doing a method call and the argument is an R4.
5274
5275 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
5276
5277         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
5278         generic methods.
5279
5280 2008-09-13  Mark Probst  <mark.probst@gmail.com>
5281
5282         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
5283
5284 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
5285
5286         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
5287         (MONO_JUMP_TABLE_FROM_INS): Ditto.
5288
5289 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5290
5291         * driver.c: Add a --agent argument (not supported yet) to load managed
5292         agent assemblies before loading the main assembly, similarly to how the
5293         Java VM handles agents.
5294
5295 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5296
5297         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
5298         function to do stack layout of local variables.
5299
5300 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5301
5302         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
5303         calculation.
5304
5305 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5306
5307         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
5308         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
5309         JIT if DISABLE_JIT is defined.
5310
5311         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
5312         defined.
5313
5314 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5315
5316         * iltests.il.in: Disable the fconv test on PPC (the result is
5317         undefined according to ECMA).
5318
5319 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5320
5321         * iltests.il.in: Enable tail call tests for PPC.
5322
5323         * mini.h: Add variable for storing incoming valuetype argument
5324         addresses for tail calls.
5325
5326         * mini-ppc.c: Implement valuetype arguments and return values for
5327         tailcalls on Linux.
5328
5329 2008-09-09  Mark Probst  <mark.probst@gmail.com>
5330
5331         * mini-ppc.c: Partially implement tail calls (struct arguments and
5332         return values not supported).
5333
5334         * method-to-ir.c: Enable tail calls on PPC.
5335
5336 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
5337
5338         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
5339         runtime-invoke wrappers to work around the problem of them getting
5340         assigned to a random class.
5341
5342         * aot-runtime.c (mono_aot_get_method): Ditto.
5343         
5344 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
5345
5346         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
5347         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
5348
5349 2008-09-07  Mark Probst  <mark.probst@gmail.com>
5350
5351         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
5352         until they're implemented properly.
5353
5354         * exceptions-ppc.c: Use arch-independent exception-handling code
5355         instead of custom one.
5356
5357         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
5358         for Linear IR.
5359
5360         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
5361
5362         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
5363         applies when __powerpc__ is defined.
5364
5365 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
5366
5367         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
5368         methods to their code to avoid computing the full name of wrappers and
5369         doing a lookup in a string hash table.
5370
5371 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5372
5373         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
5374         we identify bblocks before method_to_ir () is ran.
5375
5376         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
5377         Also avoid optimizing branches pointing to themselves.
5378
5379         * mini.c (mini_method_compile): Ditto. Fixes #422947.
5380
5381 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
5382
5383         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
5384
5385 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5386
5387         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
5388         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
5389         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
5390         'buf'.
5391
5392         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
5393         jumped to the same entry in plt_jump_table.
5394
5395 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
5396
5397         * method-to-ir.c (initialize_array_data): Handle field with RVA from
5398         dynamic images.
5399
5400 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
5401
5402         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
5403         other assignment can be if converted. Saves 1.5% on corlib size and fixes
5404         #421807.
5405
5406 2008-08-29  Geoff Norton  <gnorton@novell.com>
5407
5408         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
5409         segment, and doesn't properly handle .space as .text.  Fixes
5410         AOT Mach/ARM
5411
5412 2008-08-29  Geoff Norton  <gnorton@novell.com>
5413
5414         * mini.c: Disable the mach exception handler when running on 
5415         ARM
5416
5417 2008-08-29  Geoff Norton  <gnorton@novell.com>
5418
5419         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
5420         globals on Darwin/ARM
5421
5422 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
5423
5424         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
5425         since too many things depend on it. Instead, call 
5426         mono_runtime_set_no_exec ().
5427         
5428         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
5429         the new JIT.
5430
5431         * aot-compiler.c: Add an 'asm-only' AOT option.
5432
5433         * mini.c: Avoid initializing the runtime when doing AOT compilation.
5434                 
5435         * aot-compiler.c (compile_method): Disable gshared support for now as it
5436         doesn't yet work.
5437
5438 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5439
5440         * mini-amd64.h : Fix a compiler warning.
5441
5442         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
5443           Changed to use a callback function to retrieve the unwind info.
5444           This avoids problems observed when code blocks were removed by
5445           unloading an app domain.
5446
5447         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
5448           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
5449           to work properly.
5450
5451         Contributed under MIT/X11 license.
5452
5453 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5454
5455         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
5456           case to keep the stack aligned to 8.
5457
5458         Contributed under MIT/X11 license.
5459
5460 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
5461
5462         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
5463         avoid repeated linear searches.
5464
5465 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
5466
5467         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
5468         methods it can't handle.
5469         
5470         * aot-compiler.c (add_method): Avoid adding a method twice.
5471         (add_wrappers): Add runtime invoke wrappers for all methods.
5472
5473         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
5474         function to create an aot-compatible version of this trampoline.
5475
5476         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
5477
5478 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5479
5480         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
5481
5482         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
5483         with a generic sharing failure.
5484
5485         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
5486
5487         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
5488         CEE_RETHROW. Fixes #419634.
5489
5490         * mini.c (mono_method_to_ir): Ditto.
5491
5492         * exceptions.cs: Add a new test.
5493         
5494         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
5495         to mono_type_stack_size_internal () since some callers might not pass in
5496         an rgctx.
5497
5498         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
5499         instrument_prolog. Fixes #419878.
5500
5501         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
5502         doubles in soft float mode volatile.
5503
5504 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
5505
5506         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
5507
5508         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
5509         to handle soft float correctly.
5510
5511         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
5512         the fast path.
5513
5514         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
5515
5516         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
5517         to sp, since the generics catch code requires it.
5518
5519         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
5520         copying.
5521
5522         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
5523         mono_arch_emit_imt_argument ().
5524
5525         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
5526
5527         * mini-arm.c tramp-arm.c: Generic sharing updates.
5528
5529 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
5530
5531         * mini-arm.c: Fix the arm build.
5532
5533         * generic-sharing.c (mini_type_get_underlying_type): New helper function
5534         handling enums, generic instances and generic sharing.
5535         (mini_type_stack_size_full): Ditto.
5536
5537         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
5538         
5539         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
5540
5541         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
5542
5543         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
5544         trampolines.
5545
5546         * mini-arm.c: Various small generic sharing changes.
5547
5548         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
5549         this for x86.
5550         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
5551         custom code.
5552
5553         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
5554         helper function to return a generic class init trampoline.
5555
5556         * method-to-ir.c mini.c: Use it.
5557         
5558         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
5559         arch-specfic function to return a generic class init trampoline.
5560
5561         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
5562         the GENERIC_CLASS_INIT custom code.
5563
5564         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
5565         a fatal error, not a sharing failure.
5566
5567         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
5568         needed.
5569
5570         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
5571         trampoline argument from MONO_ARCH_VTABLE_REG.
5572
5573         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5574         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5575         argument, and pass the vtable in VTABLE_REG.
5576
5577         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5578         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5579         argument, and pass the vtable in VTABLE_REG.
5580         (mono_arch_create_trampoline_code_full): Remove some special casing for
5581         the rgctx fetch trampoline.
5582
5583         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
5584         Fixes #419273.
5585
5586         * iltests.il: Add a test for it.
5587
5588 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
5589
5590         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
5591
5592         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
5593         no longer needed.
5594
5595         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
5596         use mono_jit_info_table_find () to avoid recursion.
5597         (mono_delegate_trampoline): Add a sync wrapper here.
5598
5599         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
5600         here.
5601
5602         * mini.c (mono_method_to_ir): Ditto.
5603         
5604         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
5605         add_sync_wrapper argument. Don't add a sync wrapper here.
5606         (mono_create_jump_trampoline): Don't add a sync wrapper here.
5607
5608         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
5609         
5610 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5611
5612         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
5613           of nonvolatile registers back from MonoContext to CONTEXT.
5614
5615         Contributed under MIT/X11 license.
5616
5617 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5618
5619         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
5620           arguments on Winx64 there are only 4 argument registers.  For this
5621           logic to work the last argument must be pulled from the stack.  
5622
5623         Contributed under MIT/X11 license.
5624
5625 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
5626
5627         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5628
5629         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
5630         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
5631         encode/decode_method_ref ().
5632
5633         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
5634
5635         * aot-runtime.c (decode_patch): Ditto.  
5636
5637         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
5638         MONO_PATCH_INFO_METHOD.
5639
5640         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
5641         MonoGenericJitInfo.
5642
5643         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
5644         MonoGenericJitInfo.
5645
5646         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
5647
5648         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
5649         one from the caller.
5650
5651         * aot-runtime.c (decode_generic_inst): New function to decode and
5652         return a interned generic inst.
5653         (decode_klass_ref): Use it.
5654         (decode_method_ref): Ditto.
5655
5656         * aot-compiler.c (emit_exception_debug_info): Save 
5657         jinfo->has_generic_jit_info too.
5658
5659 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5660
5661         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
5662
5663         * iltests.il.in: Add a test for fconv_to_i.
5664
5665         * liveness.c: Disable the liveness2 pass for now to save space.
5666
5667         * regalloc2.c: Include mempool-internals.h to fix warnings.
5668
5669         * aot-compiler.c (encode_method_ref): Encode the context of generic
5670         instance methods.
5671
5672         * aot-runtime.c (decode_method_ref): Inflate generic methods using
5673         the context saved in the aot file.
5674
5675         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5676
5677         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5678
5679         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
5680         volatile so they won't be optimized away.
5681
5682 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
5683
5684         * ssa.c:
5685         * ssa2.c:
5686         * mini.c:
5687         * regalloc2.c:
5688         * dominators.c: Remove duplicated functions that now are in
5689         mempool-internals.h.
5690
5691 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5692
5693         * aot-compiler.c: Fix warnings.
5694
5695         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
5696
5697         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
5698
5699         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
5700         as the patch type.
5701
5702         * mini.c (mono_resolve_patch_target): Ditto.
5703         
5704         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
5705         (encode_klass_ref): Add support for encoding VARs/MVARs.
5706
5707         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
5708
5709         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
5710         the handling of the got entries into a separate 'decode_got_entry' function.
5711         Add support for RGCTX_FETCH.
5712
5713         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
5714         clobbered by the trampoline code.
5715
5716         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
5717         not clobbered by the indirect calling code.
5718
5719 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5720
5721         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
5722         to fix the build.
5723
5724 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
5725
5726         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
5727         signature using the compilation mempool otherwise we would leak it.
5728
5729 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5730
5731         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
5732         mono_emit_abs_call ().
5733
5734         * patch-info.h: Add GENERIC_CLASS_INIT.
5735
5736         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
5737
5738         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
5739         as their target as a near call.
5740
5741         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
5742         ABS handling code.
5743         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
5744
5745         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
5746         call to a runtime function described by a patch.
5747
5748         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
5749         mono_emit_abs_call, this has the advantage that the ABS handling code in
5750         mono_codegen () can handle them both, and can handle other stuff in the
5751         future without additional code.
5752
5753         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
5754         entry.
5755         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
5756         abs addresses.
5757
5758         * mini.h: Add missing bblock related prototypes.
5759
5760         * mini.h (MonoCompile): Remove unused reverse_inst_list and
5761         reverse_inst_list_len fields.
5762
5763         * mini.c: Refactor this file a bit by moving branch optimizations to 
5764         branch-opts.c.
5765
5766         * method-to-ir.c: Merge generic sharing changes missed earlier.
5767
5768         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
5769
5770         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
5771         shared patches. Process METHODCONST as a shared patch.
5772
5773         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
5774         as it crashes on the 2.0 mscorlib.
5775
5776         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
5777         to cause crashes.
5778         
5779         * aot-compiler.c: Use is_plt_patch () in a few additional places.
5780         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
5781         by IMT.
5782
5783         * aot-compiler.c: Reorganize the got handling code to be a bit more
5784         understandable.
5785
5786 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5787
5788         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
5789         mono_patch_info_equals/hash, and use it to massively simplify
5790         get_plt_index ().
5791
5792         * mini.c (mono_patch_info_hash): Simplify this and add support for
5793         more patch types.
5794
5795         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
5796
5797         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
5798         handling code, since an offset is not enough to identify a trampoline.
5799
5800         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
5801
5802 2008-08-17  Mark Probst  <mark.probst@gmail.com>
5803
5804         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
5805
5806         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
5807
5808         * mini-ops.h: Argument and result types for OVF_CARRY ops.
5809
5810         * decompose.c: PPC decompositions for various ops.
5811
5812         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
5813
5814 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5815
5816         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
5817         call the generic trampoline code using a call, instead of a jump, to
5818         remove some special casing from the generic trampoline code.
5819
5820         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
5821         (mono_codegen): Ditto.
5822
5823         * aot-compiler.c aot-runtime.c: Ditto.
5824
5825         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
5826
5827         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
5828         helper function to find the offset corresponding to a lazy fetch trampoline.
5829
5830         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
5831         when doing generic sharing.
5832
5833         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
5834         places.
5835         
5836         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
5837         mini-trampolines.c to be with the other trampoline creation functions.
5838
5839         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
5840         as it is equal to method->signature in most cases, add a 
5841         mono_emit_method_call_full variant which takes a signature and an imt
5842         argument as well.
5843
5844 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
5845
5846         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
5847         to this function, since it could be computed easily from the method 
5848         argument.
5849         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
5850         more.
5851
5852         * method-to-ir.c mini.c: Remove references to 
5853         compile_generic_method_wo_context.
5854
5855         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
5856         generic method calls.
5857         
5858         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
5859         dimensional non-szarrays.
5860
5861         * mini.c (mini_init): Register mono_array_new_1.
5862
5863         * jit-icalls.c (mono_array_new_1): New jit icall.
5864
5865         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
5866         pointing to the method.
5867
5868         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
5869         method addresses belonging to METHOD_JUMP patches in the 
5870         jump_target_got_slot_hash.
5871         (mono_aot_load_method): Ditto.
5872
5873         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
5874         METHOD_JUMP patches.
5875
5876         * mini.c (mini_create_jit_domain_info): New helper function which 
5877         initializes/frees domain->runtime_info.
5878         (mini_free_jit_domain_info): Ditto.
5879         (mini_init): Install the domain hook functions with the runtime.
5880
5881         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
5882         information maintained by the JIT.
5883
5884         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
5885         insertion into jump_table_hash into mono_codegen (), also implement proper
5886         locking.
5887
5888         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
5889         tail calls, it is already done by the aot code.
5890         
5891         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
5892         mechanism on amd64.
5893
5894         * iltests.il.in: Make the jmp test a bit more complex.
5895
5896         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
5897         generic instances which doesn't have a token.
5898
5899         * aot-runtime.c (decode_method_ref): Ditto.
5900         
5901         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
5902         can handle this case now.
5903         (handle_box): Ditto.
5904
5905 2008-08-15  Geoff Norton  <gnorton@novell.com>
5906
5907         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
5908         debugging check.
5909
5910 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
5911
5912         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
5913         calling generic methods.
5914
5915         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
5916
5917         * aot-runtime.c (decode_patch_info): Ditto.
5918
5919         * mini.c (mono_resolve_patch_target): Ditto.
5920         
5921         * patch-info.h: Add METHOD_RGCTX.
5922
5923         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
5924
5925 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
5926
5927         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
5928         arguments in registers.
5929
5930         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
5931         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
5932
5933         * mini.c (mini_method_compile): Abort aot compilation for generic
5934         methods if generic sharing is disabled.
5935         
5936         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
5937         an mrgctx.
5938
5939         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
5940         requiring an mrgctx.
5941
5942         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
5943         store instructions when converting a vcall to a normal call.
5944
5945         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
5946         mono_arch_find_jit_info.
5947
5948 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
5949
5950         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
5951         avoid calling mono_method_full_name () for every method even if the
5952         env var is not set.
5953         (check_inline_caller_method_name_limit): Ditto.
5954
5955 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5956
5957         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
5958         assemblies in one run.
5959
5960         * aot-compiler.c (mono_compile_assembly): Only print out a count of
5961         skipped methods if it is not 0.
5962
5963         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
5964
5965 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5966
5967         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
5968           MONO_ARCH_HAVE_UNWIND_TABLE.
5969
5970         Contributed under MIT/X11 license.
5971
5972 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5973
5974         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
5975           from default optimizaton list on Winx64.
5976
5977         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
5978
5979         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
5980           the LMF from the MonoJitTlsData structure.
5981
5982         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
5983
5984         Contributed under MIT/X11 license.
5985
5986 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5987
5988         * mini.c (sigsegv_signal_handler): Fix the build.
5989
5990         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
5991         assembly->aot_module.
5992
5993         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
5994         hash table. This simplifies and speeds up a lot of code, and fixes support
5995         for .netmodules.
5996
5997         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
5998         with the runtime.
5999
6000         * mini-exceptions.c: Ditto.
6001         
6002         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
6003         'native_offset' argument, since these are computed in the 
6004         mono_find_jit_info () function.
6005
6006         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
6007         is used by exceptions-ppc.c.
6008
6009         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
6010         mono_arch_find_jit_info ().
6011         
6012         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
6013         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
6014         generic code in mini-exceptions.c.
6015
6016 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
6017
6018         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
6019
6020         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
6021         
6022         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
6023         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
6024         called while holding the loader lock. Fixes #415608.
6025         (mono_aot_get_method_from_token_inner): Ditto.
6026
6027 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6028
6029         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
6030         to reduce differences between this and the generic implementation in
6031         mini-exceptions.c.
6032         (ves_icall_get_frame_info): Ditto.
6033
6034         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
6035
6036         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
6037         longer neccesarry.
6038
6039         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
6040         mono_arch_get_call_filter () and make it non-static, for consistency with the
6041         other architectures.
6042
6043 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
6044
6045         * mini.c:
6046         * local-propagation.c:
6047         * mini-x86.c: Correct the name of arch defines.
6048
6049 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6050
6051         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
6052         NO_EMULATE_LONG_SHIFT_OPS define.
6053
6054 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6055
6056         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
6057         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
6058
6059         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
6060         MACH fixes. Merged from the 2.0 branch.
6061
6062         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
6063
6064         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
6065         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
6066
6067         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
6068
6069         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
6070         mono_marshal_get_native_wrapper () signature changes.
6071
6072 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
6073
6074         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
6075         conversion bug under arm.
6076
6077 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
6078
6079         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
6080
6081         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
6082         with overflow checking.
6083
6084 2008-08-05  Marek Habersack  <mhabersack@novell.com>
6085
6086         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
6087         to the genmdesc.pl file
6088
6089 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
6090
6091         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
6092         arg_array in the soft-float versions of the LOAD/STORE macros.
6093
6094         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
6095         implementation.
6096
6097         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
6098
6099 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6100
6101         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
6102         a float HFA. Fixes #413621.
6103
6104 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
6105
6106         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
6107         frame_size to args_size. Fixes build.
6108
6109 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6110
6111         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
6112         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
6113
6114         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
6115         the stack are not unaligned. Fixes #413247.
6116         
6117 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
6118
6119         * mini.c: update jitted methods performance counters.
6120
6121 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6122
6123         * mini-exceptions.c: increase the exceptions thrown performance
6124         counter in mono_handle_exception ().
6125
6126 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
6127
6128         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
6129         can work with netmodules.
6130
6131 2008-07-28  Geoff Norton  <gnorton@novell.com>
6132
6133         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
6134         regression tests.
6135
6136 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
6139         correct place.
6140
6141 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
6142
6143         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6144           The float param registers and other param registers must be the 
6145           same index on Windows x64.
6146
6147         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
6148           ArgValuetypeAddrInIReg argument case.  Setting the argument
6149           op to OP_VTARG_ADDR (OP_REGOFFSET)).
6150
6151         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
6152           variable computed above as the copy length for arguments of storage
6153           type ArgValuetypeAddrInIReg.
6154
6155         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
6156           ArgValuetypeAddrInIReg argument case.  This case will rely on
6157           mono_arch_emit_outarg_vt to emit the correct code later in the process.
6158
6159         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
6160           a 32 byte stack allocation for all calls.  We will omit the adjustment for
6161           jump and tail call instructoins as they do not follow the typical call behavior.
6162
6163         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
6164           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6165           local variable and pass the local variable by reference to the called method.
6166
6167         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
6168           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
6169           of a struct is passed in a register it must be saved with the other
6170           volatile argument on the stack.
6171
6172         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
6173           frame pointer the stack adjustment value must be saved to the unwind 
6174           info structure.
6175
6176         Contributed under MIT/X11 license.
6177
6178 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6179
6180         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
6181         which got lost in the merge.
6182
6183 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
6186         build.
6187
6188         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
6189         
6190         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
6191         icalls, since they won't be patched.
6192
6193         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
6194         different code sequence when running under valgrind to prevent some valgrind
6195         errors.
6196
6197         * iltests.il.in: Add new regression test.
6198
6199         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
6200         end with a throw.
6201
6202         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
6203         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
6204
6205         * iltests.il.in: Add new test.
6206
6207         * aot-compiler.c: Fix some warnings.
6208
6209         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
6210         Fixes #412494.
6211
6212 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6213
6214         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
6215         (mini_usage_jitdeveloper): Add a missing --wapi option.
6216
6217 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6218
6219         * mini-codegen.c: Simplify the is_fp macros.
6220         (free_up_ireg): Remove, use free_up_reg instead.
6221         (free_up_reg): Fix the fp case.
6222
6223 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6224
6225         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
6226         lowered earlier.
6227
6228         * exceptions-x86.c: Merge some changes which seemed to have got lost
6229         in the linear-ir merge.
6230
6231         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
6232
6233         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
6234         long vreg volatile even if the variable was already created.
6235
6236         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
6237         volatile variables.
6238
6239 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6240
6241         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
6242
6243         * mini.c (mono_jit_compile_method_inner): Add support for 
6244         MONO_EXCEPTION_BAD_IMAGE.
6245
6246         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
6247         mini_method_get_context () returns NULL. Fixes #356531.
6248
6249         * mini.c (mono_method_to_ir): Ditto.
6250         
6251         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
6252         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
6253
6254 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6255
6256         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
6257         in the LDFTN implementation.
6258
6259 2008-07-25  Mark Probst  <mark.probst@gmail.com>
6260
6261         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
6262         code, patch calls to icalls, too, even if they're not in the
6263         shared generic code hash.  Fixes #411962.
6264
6265 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6266
6267         * cpu-x86.md: Increase the length of the fcall opcodes.
6268
6269         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
6270         calls returning floats.
6271
6272         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
6273         on NEWARR.
6274         
6275         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
6276         missed earlier.
6277
6278         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
6279         into the domain->method_code_hash.
6280
6281         * aot-compiler.c: Fix win32 build.
6282
6283         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
6284         
6285         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
6286         gshared NEWARR implementation.
6287
6288         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
6289
6290         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
6291         can be used outside of method_to_ir.
6292
6293         * mini.h (MonoCompile): Add arg_types field.
6294
6295         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
6296         
6297         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
6298         the values of the local arg_array and param_types array.
6299
6300 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6301
6302         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
6303         got accesses might only get generated later when NEWOBJ is decomposed.
6304         
6305         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
6306         looking up the native code of the target method when a delegate is called
6307         for the first time.
6308
6309         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
6310         optimization.
6311
6312         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
6313
6314         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
6315         AOT work on platforms without a working dlsym implementation.
6316
6317         * mini.h: Bump AOT image format version.
6318         
6319 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6320
6321         * mini-exceptions.c: Free a MonoType with
6322         mono_metadata_free_type() instead of g_free().
6323
6324         * aot-runtime.c: Free a MonoType.
6325
6326 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6327
6328         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
6329         optimization.
6330
6331         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
6332         fp stack on x86.
6333
6334 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
6335         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
6336         profiler hook.
6337
6338 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6339
6340         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
6341         NEWOBJ calls on valuetypes.
6342
6343         * iltests.il.in: Add new test.
6344
6345         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
6346
6347 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6348
6349         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
6350         is no longer needed.
6351
6352         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
6353         non register sized integer arguments.
6354         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
6355         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
6356         emit_memcpy2 ().
6357
6358         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
6359         CEE_MONO_RETOBJ.
6360         
6361         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
6362         two a binop with different sized arguments is emitted.
6363
6364         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
6365         instruction in the ins==NULL case.
6366
6367 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6368
6369         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
6370
6371         * mini-x86.c: Fix osx build.
6372
6373         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
6374         opcodes as well.
6375
6376         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
6377         instruction for non int sized variables.
6378
6379         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
6380         implementation.
6381
6382 2008-07-23  Robert Jordan  <robertj@gmx.net>
6383
6384         * method-to-ir.c: Fix MSVC build.
6385
6386 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6387
6388         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
6389         a non int sized type, widen it to an int since newer versions of gcc seem to
6390         generate code which needs this.
6391
6392         * ssa2.c abcremoval2.c: Fix warnings.
6393
6394         * *: Merge the Linear IR branch.
6395
6396         The original branch is at trunk/branches/vargaz/mini-linear-il, and
6397         the ChangeLog file there describes all the changes done over the years. 
6398         Further documentation can be found at www.mono-project.com/Linear_IL.
6399
6400 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6401
6402         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6403           The float param registers and other param registers must be the 
6404           same index on Windows x64.
6405
6406         Contributed under MIT/X11 license.
6407
6408 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
6409
6410         * mini.c: Make the previous fix GC safe.
6411
6412 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
6413
6414         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
6415
6416 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6417
6418         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
6419           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
6420           ArgValuetypeAddrInIReg instead.
6421
6422         Contributed under MIT/X11 license.
6423
6424 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
6425
6426         * mini-codegen.c (get_register_spilling): Fix a warning.
6427
6428 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
6429
6430         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
6431         for types which the initialization fails. Raises the provided exception
6432         at the right stop after cleanup.
6433
6434 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
6435
6436         * aot-compiler.c: Free most of the memory allocated during compilation.
6437
6438         * mini.c (mini_parse_debug_options): Fix a leak.
6439         
6440         * mini.c (mini_method_compile): Don't add the method to the jit info tables
6441         during aot compilation.
6442
6443 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
6444
6445         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
6446         it has too much register pressure.
6447
6448 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
6449
6450         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
6451
6452 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6453
6454         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6455         on x86.
6456
6457         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6458         on amd64 similar to the way it is done on arm.
6459
6460         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6461
6462         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
6463         consistency, normalize error messages, avoid loading aot-only modules in
6464         normal mode.
6465
6466         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
6467         for consistency.
6468
6469         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
6470
6471 2008-07-11  Martin Baulig  <martin@ximian.com>
6472
6473         * debug-debugger.h
6474         (MonoDebuggerInfo): Add `interruption_request'.
6475
6476 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6477
6478         * aot-compiler.c (emit_plt): Remove some dead code.
6479
6480         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
6481
6482         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
6483         return the plt info offset belonging to a given plt entry.
6484
6485         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
6486         mono_aot_get_plt_info_offset.
6487         
6488         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
6489         similar to the amd64 code by makeing jumps through a separate jump table 
6490         instead of embedding the jump addresses into the code.
6491
6492 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
6493
6494         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
6495         method.
6496
6497 2008-07-10  Martin Baulig  <martin@ximian.com>
6498
6499         * mini.c (mini_method_compile): Disable generics sharing when
6500         running in the debugger.
6501
6502 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6503
6504         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
6505
6506         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
6507         the local register allocator from running out of registers on x86 when 
6508         using aot.
6509
6510 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
6511
6512         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
6513         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
6514         C4146.
6515
6516         Contributed under MIT/X11 license.
6517
6518 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6519
6520         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
6521         speed up the assembler.
6522
6523 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6524
6525         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
6526         support.
6527
6528         * mini.c: Move the soft float handling macros a bit earlier, add 
6529         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
6530         place.
6531
6532         * mini.h: Add prototype for mono_arch_fixup_jinfo.
6533
6534         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
6535         read-only to help catch code allocation requests.
6536         
6537         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
6538         and turn it off when using --aot-only or when compiling with --aot=full.
6539
6540         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
6541         jump table for switches from the normal domain mempool, not the code
6542         manager.
6543
6544         * mini-trampolines.c (get_unbox_trampoline): New function to return an
6545         unbox trampoline which handles aot-only mode too.
6546
6547         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
6548         an AOTed unbox trampoline.
6549
6550         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
6551
6552 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6553
6554         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
6555         ""
6556
6557         Contributed under MIT/X11 license.
6558
6559 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6560
6561         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
6562           the unwind information for the method at the end of the allocated block.
6563           
6564         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
6565           MonoCompileArch to hold the unwind info for SEH on Winx64
6566         
6567         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
6568           frame pointer info for the method being compiled.
6569           
6570         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
6571           the call to mono_exception_from_token.
6572           
6573         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
6574           storing the method prolog information in a format that the Winx64 SEH can understand.  This
6575           information is stored a the end of the method block because it is all 32-bit offset based.
6576
6577         Contributed under MIT/X11 license.
6578
6579 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6580
6581         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
6582
6583         * wapihandles.c: Fix warnings.
6584
6585         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
6586         mode.
6587
6588         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
6589         mono_jit_compile_method in aot-only mode since that calls the type 
6590         initializer.
6591         
6592         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
6593         get_delegate_invoke_impl in aot-only mode.
6594
6595         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
6596
6597 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
6598
6599         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
6600
6601         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
6602         is on by default.
6603
6604         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
6605
6606         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
6607         init trampoline from the AOT file as well.
6608
6609         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
6610         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
6611         code.
6612
6613         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
6614         mono_init.
6615
6616         * exceptions-amd64.c: Add _full variants for the remaining exception code
6617         creation functions as well, allow emission of relocatable code, remove
6618         caching since that is now done by the caller.
6619
6620         * mini-exceptions.c: Add _full variants for the remaining exception code
6621         creation functions as well, add aot-only support.
6622
6623         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
6624         if we can determine a proper token for them.
6625         (add_wrappers): Add a few more wrappers.
6626         (emit_method_code): Remove some dead code.
6627         (emit_trampolines): Emit exception code too.
6628
6629         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
6630
6631         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
6632         mono_array_new_va which avoids varargs.
6633
6634         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
6635
6636         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
6637         mono_arch_create_specific_trampoline () in all places.
6638
6639         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
6640         a bit so it can be used for other things as well.
6641         
6642         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
6643         on demand as well.
6644
6645         * exceptions-amd64.c: Rename the caching from the exception code creation
6646         functions, it is done by the caller instead.
6647         
6648         * exceptions-amd64.c: Change the signature of the exception code creation 
6649         functions to allow the creation of relocatable code later.
6650
6651         * mini-exceptions.c: Add a set of functions to query the various 
6652         runtime-generated exception functions.
6653
6654         * mini.c mini-exceptions.c: Use the newly added functions instead of the
6655         mono_arch_.. () functions.
6656         
6657 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6658
6659         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
6660
6661         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
6662
6663         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
6664         (mini_get_vtable_trampoline): Ditto.
6665
6666         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
6667         code in the AOT case by returning the code size and a list of relocations to
6668         the caller.
6669
6670         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
6671
6672 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
6673
6674         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
6675           clean the stack.
6676
6677         Contributed under MIT/X11 license.
6678
6679 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6680
6681         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
6682         so the buffer size can be computed correctly. Fixes #404735.
6683
6684         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
6685         normally as cfg->debug_info is already freed.
6686
6687 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
6688
6689         * mini-amd64.c: For calls returning vtypes in registers, don't store
6690         the return address on the stack, instead allocate a separate local for
6691         it. Fixes #404729.
6692
6693 2008-07-05  Mark Probst  <mark.probst@gmail.com>
6694
6695         * mini-trampolines.c, mini.h: Add an argument to
6696         mono_create_jit_trampoline_in_domain() for turning off the adding
6697         of the sync wrapper.
6698
6699         * mini.c: Use the JIT trampoline without sync instead of
6700         ldftn_nosync in static RGCTX invoke wrappers so that the call can
6701         be patched.
6702
6703 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6704
6705         * driver.c: Turn on GSHARED optimization by default.
6706
6707 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
6708
6709         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
6710         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
6711
6712         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
6713         create a variant of the generic trampoline code callable from AOTed trampolines.
6714
6715         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
6716         trampoline code callable from AOTed trampolines.
6717
6718         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
6719
6720 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6721
6722         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
6723         pass-through manner.
6724
6725         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
6726         and don't fail sharing for them anymore.
6727
6728         * mini-exceptions.c: Handle exceptions in shared generic methods.
6729
6730         * generic-sharing.c: When checking the context of a generic
6731         method, also check its class's context.  Don't treat wrappers as
6732         sharable.
6733
6734         * mini-trampolines.c: Some code factored out to
6735         metadata/generic-sharing.c.  Handle the MRGCTX case.
6736
6737         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
6738         we must deal with the method being of another instantiation of the
6739         class.  Add static rgctx invoke wrappers to generic methods.
6740
6741 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6742
6743         * mini.c: Provide all jit infos of generic shared methods with a
6744         generic jit info.
6745
6746         * mini-exceptions.c: Handle the new situation that a generic info
6747         might be available, but not info about the this/vtable/mrgctx
6748         variable.
6749
6750 2008-07-03  Mark Probst  <mark.probst@gmail.com>
6751
6752         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
6753         generic methods.
6754
6755 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
6756
6757         * dominators.c (check_dominance_frontier): Fix a warning.
6758
6759         * mini.h: Add some missing prototypes.
6760
6761         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
6762
6763         * driver.c (mono_jit_init_version): Correct the comments since the first
6764         argument should be the name of the root domain, not a filename.
6765
6766         * aot-runtime.c (make_writable): Error out if this is called while running
6767         with --aot-only.
6768         (load_aot_module): Ditto.
6769
6770         * aot-compiler.c: Really fix the computation of method indexes.
6771
6772         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
6773         optimizations as this is no longer called frequently.
6774
6775         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
6776         method and the invoke impl code and pass it to the delegate trampoline instead of
6777         just the delegate class.
6778
6779 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
6780
6781         * aot-compiler.c: Fixup the computation of method indexes.
6782         (add_wrappers): Create the base methods of the runtime invoke wrappers using
6783         the method builder infrastructure.
6784
6785         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
6786         has no header.
6787
6788         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
6789         mode, load the method right away instead of creating a trampoline.
6790
6791         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
6792
6793         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
6794         some checks a bit.
6795
6796 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
6797
6798         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
6799         (mono_aot_load_method): Use method_index instead of method->token.
6800
6801         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
6802         can handle icalls etc. properly.
6803
6804         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6805
6806         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
6807
6808         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
6809         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
6810         JIT_ICALL_ADDR patch type.
6811
6812         * patch-info.h: Add JIT_ICALL_ADDR patch type.
6813
6814         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
6815         request flag.
6816         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
6817
6818         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
6819
6820 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
6821
6822         * mini.c: Use domain->jit_code_hash_lock for controlling access to
6823         domain->jit_code_hash.
6824
6825 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
6826
6827         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
6828
6829 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
6830
6831         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
6832         get_this_arg_from_call, let it compute it when needed.
6833
6834         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
6835         gsctx from code only when needed.
6836
6837         * mini-trampolines.c (get_generic_context): Rename this to 
6838         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
6839         it can be called by the arch backends.
6840
6841         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
6842
6843 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
6844
6845         * driver.c (mono_main): Add experimental --aot-only command line option.
6846
6847         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
6848         set.
6849
6850 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
6851
6852         * driver.c (DllMain): Remove mono_module_handle.
6853
6854         Contributed under MIT/X11 license.
6855
6856 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
6857
6858         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
6859         for emitting methods which are not in the source assembly. Detect and report
6860         failure of assembling+linking.
6861         
6862         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
6863
6864         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
6865
6866 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
6867
6868         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
6869
6870 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
6871
6872         * mini.h: Remove some obsolete prototypes.
6873
6874         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
6875
6876 2008-06-24  Mark Probst  <mark.probst@gmail.com>
6877
6878         * mini.c (get_object_generic_inst): Variable-sized arrays are not
6879         supported by Visual Studio, so use alloca().
6880
6881 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
6882
6883         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
6884         Fixes #402585.
6885
6886 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6887
6888         * mini.c: Fail sharing of a generic method if it contains an open
6889         catch clause (because we don't pass MRGCTXs yet).
6890
6891 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6892
6893         * mini.c: When compiling a method with generic sharing, insert the
6894         method instantiated with an all-Object generic context into the
6895         jit info table, instead of the context of the first instantiation
6896         of the method we happen to compile.
6897
6898 2008-06-18  Martin Baulig  <martin@ximian.com>
6899
6900         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
6901         `major_version' and `minor_version'.
6902
6903 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6904
6905         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
6906         mono_method_is_generic_sharable_impl() takes an additional
6907         argument specifying whether to treat type variables as reference
6908         types.
6909
6910 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6911
6912         * mini.h: Removed obsolete prototypes.
6913
6914 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6915
6916         * mini.c: Don't fail generic sharing for initobj and sizeof - we
6917         already handle them.
6918
6919 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6920
6921         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
6922         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
6923         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
6924         tramp-x86.c: Added a MonoGenericContext* argument to
6925         mono_arch_get_unbox_trampoline() so that it can call other
6926         functions which require it.
6927
6928 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6929
6930         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
6931         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
6932         mono_arch_get_this_arg_from_call() takes a
6933         MonoGenericSharingContext* as well.
6934
6935 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6936
6937         * mini.c: Factor out code for emitting unbox into emit_unbox() and
6938         implement generic sharing of unbox.
6939
6940 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6941
6942         * mini.c: Don't compute the vtable to determine whether a field is
6943         special static, because it might not work for open types.
6944
6945 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6946
6947         * mini.c: Removed the unused token_type and token_source arguments
6948         from get_runtime_generic_context_ptr().
6949
6950 2008-06-17  Marek Habersack  <mhabersack@novell.com>
6951
6952         * mini.c (ADD_BINOP): fix the build
6953
6954 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
6955
6956         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
6957         a widening op.
6958
6959 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6960
6961         * mini.h: Removed class relations enum that's not used anymore.
6962
6963 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6964
6965         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
6966
6967         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
6968         the lazy fetch trampoline access code.
6969
6970 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
6971
6972         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
6973
6974 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
6977
6978         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
6979
6980         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
6981
6982 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6983
6984         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
6985         intrinsics.
6986
6987         * mini-ops.h: Add MIN/MAX_UN opcodes.
6988
6989         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
6990         intrinsics.
6991
6992         * basic-math.cs: Add more min/max tests.
6993
6994         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6995
6996 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6997
6998         * mini.c: Small fix in the prologue of emit_castclass.
6999
7000 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7001
7002         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7003
7004         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
7005         do not work even for unsigned types. Fixes #400014.
7006
7007         * basic-math.cs: Add regression tests for unsigned Min/Max.
7008
7009 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7010
7011         * mini.c: Added additional context_used argument to several
7012         functions, which will be needed for sharing generic methods.  Use
7013         GET_RGCTX macro wherever appropriate.  Declare only one
7014         context_used in mono_method_to_ir().
7015
7016 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7017
7018         * mini.c, generic-sharing.c: Removed generic class relations.
7019
7020         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
7021         functions due to MRGCTX changes.
7022
7023 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7024
7025         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
7026         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
7027         with calculated IMT.
7028
7029         * mini.c: Generic sharing of calls via generic interfaces.
7030
7031         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
7032         generic method with non-constant MonoGenericContext*.  Instead,
7033         the context is taken out of the method itself.
7034
7035 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7036
7037         * mini.c: Generic sharing of ldvirtftn.
7038
7039 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7040
7041         * mini.c: Generic sharing of ldftn.
7042
7043 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7044
7045         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
7046
7047 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7048
7049         * mini.c: Generic sharing of the special case of ldtoken followed
7050         by a call to GetTypeFromHandle.
7051
7052 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7053
7054         * mini.c: Generic sharing of box for nullable types.
7055
7056 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7057
7058         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
7059         are passed on the stack. Fixes #324807.
7060
7061 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
7062
7063         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
7064         for the ArgValuetypeAddrInIReg case.
7065
7066         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
7067         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
7068
7069         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
7070         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7071         local variable and pass the local variable by reference to the called method.
7072           
7073         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
7074         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
7075
7076         Contributed under MIT/X11 license.
7077
7078 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
7079
7080         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
7081
7082         * debug-mini.c (mono_debug_print_vars): Release memory after printing
7083         everything.
7084
7085 2008-06-10  Martin Baulig  <martin@ximian.com>
7086
7087         * debug-mini.c
7088         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
7089
7090 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
7091
7092         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
7093         possible error when no arguments are passed.
7094
7095         Contributed under MIT/X11 license.
7096
7097 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
7098
7099         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
7100         where the file name is NULL.
7101
7102 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7103
7104         * mini.c: Fix s390 build.
7105
7106 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
7107
7108         * trace.c (mono_trace_parse_options): Fix warnings.
7109
7110         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
7111
7112 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7113
7114         * mini.c (remove_block_if_useless): Avoid printing the method name.
7115         
7116         * mini.c: Remove needless setting of ins->cil_code which is now done by 
7117         MONO_INST_NEW.
7118
7119         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
7120         LMF. Not yet used.
7121
7122         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
7123         translated code after it has been patched.
7124
7125 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7126
7127         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
7128         avoid problems during code patching on SMP systems.
7129         (emit_call): Avoid adding a patch info which is already added by 
7130         emit_call_body.
7131         (mono_arch_emit_exceptions): Ditto.
7132
7133 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
7134
7135         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
7136         MONO_TYPE_ISSTRUCT already checks for it.
7137
7138 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
7139
7140         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
7141           structs with floats on Winx64 the float registers are not used.  
7142           The integer registers are always used..
7143         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
7144           only one register will be used and only if the size of the struct 
7145           is 1,2,4, or 8 bytes.
7146
7147         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
7148           to work for Winx64.
7149
7150         Contributed under MIT/X11 license.
7151
7152 2008-06-05  Martin Baulig  <martin@ximian.com>
7153
7154         * debug-debugger.c (debugger_lookup_class): Also call
7155         mono_class_setup_methods() here; we're only called from RTI.
7156
7157 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
7158
7159         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
7160         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
7161         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
7162         Post-process object files and add dtrace-generated object, if necessary.
7163
7164         Contributed under MIT/X11 license.
7165
7166 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7167
7168         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
7169         element class.
7170
7171         * mini.c: Generic sharing for unbox.any and castclass.
7172
7173 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7174
7175         * mini.c: Ignore tailcall prefix in shared generic code and when
7176         doing calls which require a vtable/rgctx argument.
7177
7178 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7179
7180         * mini.c: Don't free the JIT info.
7181
7182         * driver.c: Changes in the JIT info table testing code.
7183
7184 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7185
7186         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
7187         interruption. Fix some warnings.
7188
7189         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
7190         interruption_checkpoint.
7191
7192 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
7193
7194         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
7195         from embedding applications.
7196
7197 2008-06-02  William Holmes  <billholmes54@gmail.com>
7198
7199         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
7200           reserving 32 bytes on the stack when making calls. 
7201
7202         Contributed under MIT/X11 license.
7203
7204 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
7205
7206         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
7207         the linear IL branch.
7208
7209         * driver.c: Print out more information for --version on arm.
7210
7211 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
7212
7213         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
7214         bb_exit instead, since out of line bblocks might not actually be emitted
7215         out-of-line.
7216         
7217         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
7218         maximum epilog size for out of line bblocks if tracing is enabled.
7219
7220         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
7221
7222 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
7223
7224         * arrays.cs: Regression tests for allocating arrays with negative sizes.
7225
7226 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
7227
7228         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
7229         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
7230         opcodes.
7231
7232 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
7233
7234         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
7235         the 'value' to store is a constant.
7236
7237         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
7238
7239         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
7240         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
7241
7242 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
7243
7244         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
7245         for accessing method->generic_container.
7246
7247 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
7248
7249         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
7250         
7251         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
7252
7253         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
7254
7255         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
7256         fails.
7257
7258 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
7259
7260         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
7261
7262         * mini.c: Handle the case when mono_class_vtable () fails.
7263
7264 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
7265         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
7266         the stat profiler.
7267
7268 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7269
7270         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
7271         together with domain sharing.
7272
7273 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7274
7275         * mini.c: Treat callvirts to final methods like non-virtual calls
7276         when doing generic sharing, i.e. look them up in the runtime
7277         generic context.
7278
7279 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7280
7281         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
7282         with computed types (for generic sharing).
7283
7284         * mini.c: Generic sharing for mkrefany and refanyval.
7285
7286 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
7287
7288         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
7289         possible.
7290
7291         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
7292         the generic sharing code.
7293         
7294         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
7295         when needed.
7296
7297 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7298
7299         * mini.h: Remove the declaration of mono_aot_init_vtable ().
7300
7301 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
7302
7303         * driver.c: updated copyright date
7304
7305 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7306
7307         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
7308         needed.
7309
7310 2008-05-19  Martin Baulig  <martin@ximian.com>
7311
7312         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
7313         pointing to the new `_mono_debug_using_mono_debugger' variable.
7314
7315         * driver.c
7316         (mono_main): Check mono_debug_using_mono_debugger() rather than
7317         the `MONO_INSIDE_MDB' environment variable to check whether we're
7318         inside the debugger.
7319
7320 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
7321
7322         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
7323         argument.
7324
7325 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
7326
7327         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
7328
7329         * mini.c: Added mini_assembly_can_skip_verification. This
7330         function checks if the assembly requested to skip verification. 
7331         Fixes part of #387274.
7332
7333 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7334
7335         * mini.c (mini_get_method): Disable the check for open generic classes when
7336         using generic sharing.
7337
7338         * generics.cs: Add a test for #387034.
7339
7340         * mini.c (mini_get_method): Check whenever the method class is an open generic
7341         type, and return NULL in that case, causing a verification error. Fixes
7342         #384123.
7343
7344 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7345
7346         * driver.c (mono_main): Revert r102623. The right
7347         thing to do is to enable the verifier under verifiable
7348         unless a --security flag was passed.
7349
7350         We need this non-trivial behavior for --verify-all otherwise
7351         mcs-compileall won't be able to use it. As it needs everything to
7352         be verified under validil.
7353
7354 2008-05-06  Martin Baulig  <martin@ximian.com>
7355
7356         Fix #383749.
7357
7358         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
7359         (mono_debugger_thread_cleanup): Likewise.
7360         (mono_debugger_extended_notification): Likewise.
7361
7362 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7363
7364         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
7365         against both inflated and non-inflated methods. We need to check against the
7366         generic definition for cases where the instantiated method is not visible.
7367         We need to check against the inflated types for cases where the instantiation
7368         changes any super type. This fixes #382986.
7369
7370         Note that this doesn't need to be applied to other parts of mono_method_to_ir
7371         that check for visibiliy as generic params only appears as the type subject
7372         of tokens on call opcodes. Field manipulation and ldftn must always
7373         target an exact type.
7374
7375 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7376
7377         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
7378         if no related --security flag is passed.
7379
7380 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7381
7382         * mini-arch.h: Prepare support for ppc64.
7383
7384         Contributed under MIT/X11 license.
7385
7386 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7387
7388         * aot-runtime.c: Prepare support for ppc64.
7389
7390         Contributed under MIT/X11 license.
7391
7392 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7393
7394         * mini-ops.h: Prepare support for ppc64.
7395
7396         Contributed under MIT/X11 license.
7397
7398 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
7399
7400         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
7401
7402         Contributed under MIT/X11 license.
7403
7404 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
7405
7406         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
7407         assemblies, since aot_name is not a full path, causing us to load MS.NET 
7408         assemblies on windows.
7409
7410 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
7411
7412         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
7413         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
7414         * main.c: Use UTF-8 encoded command line instead of Windows default code
7415         page on Windows to support Unicode.
7416         * driver.c (DllMain): New function for mixed-mode assembly support.
7417         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
7418         export __stdcall functions without decoration.
7419
7420         Contributed under MIT/X11 license.
7421
7422 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7423
7424         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
7425         saving it very early.
7426
7427 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7428
7429         * mini.h, mini.c: Lots of code for accessing the old RGCTX
7430         deleted.  The only way to access the new RGCTX is via the
7431         trampline.
7432
7433         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
7434         vtable instead of the RGCTX to static methods.
7435
7436         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
7437         accessing the new RGCTX.
7438
7439         * generic-sharing.c: There is no separation between self, type
7440         arguments and other types in the RGCTX anymore.
7441
7442 2008-04-25  Jonathan Chambers <joncham@gmail.com>
7443
7444         * mini-amd64.c (add_general): Remove previous stack adjustment.
7445         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
7446         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
7447         for 32 bytes of stack space reserved for all calls.
7448         
7449         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
7450         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
7451         adjustment.
7452         
7453         Code contributed under MIT/X11 license.
7454
7455 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
7456
7457         * mini.c (mini_method_verify): Only verify non-inflated methods, check
7458         against the root definition, peeling out method and type instantiations.
7459         Cache verify success results, code that fails verification is still
7460         checked multiple times.
7461
7462 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
7463
7464         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
7465
7466 2008-04-23  Jonathan Chambers <joncham@gmail.com>
7467
7468         * mini-amd64.c (add_general): Always increment stack on Win64.
7469         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
7470         on Win64.
7471         
7472         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
7473         stack based argument handling on Win64.
7474         
7475         Code contributed under MIT/X11 license.
7476
7477 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
7478
7479         * Makefile.am (version.h): Add support for git-svn.
7480
7481 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
7482
7483         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
7484         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
7485         avoiding allocations and libc functions which might deadlock.
7486         
7487         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
7488         'no-gdb-backtrace' option is set.
7489
7490         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
7491
7492         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
7493
7494 2008-04-21  Martin Baulig  <martin@ximian.com>
7495
7496         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
7497         and `get_lmf_addr'; `notification_address' is no longer a pointer.
7498
7499 2008-04-21  Martin Baulig  <martin@ximian.com>
7500
7501         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
7502         `thread_vtable', `event_handler_ptr' and `event_handler'.
7503
7504 2008-04-21  Martin Baulig  <martin@ximian.com>
7505
7506         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
7507         allows delayed initialization of the `executable_code_buffer' when
7508         attaching.
7509
7510 2008-04-21  Martin Baulig  <martin@ximian.com>
7511
7512         * mini.h (mono_debugger_create_notification_function): Removed.
7513         * tramp-*.c (mono_debugger_create_notification_function): Removed.
7514
7515         * mdb-debug-info64.s
7516         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7517
7518         * mdb-debug-info32.s
7519         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7520
7521         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
7522         currently only works on x86 and x86_64, so don't create it on ppc.
7523
7524 2008-04-21  Martin Baulig  <martin@ximian.com>
7525
7526         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
7527
7528         * mini.c
7529         (mini_method_compile): In the fp elimination check, check
7530         `debug_options.mdb_optimizations' in addition to
7531         mono_debug_using_mono_debugger().       
7532
7533         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
7534         disable some JIT optimizations which are only disabled when
7535         running inside the debugger.
7536         Added `--help-debug' option to describe the debugging options.
7537         (parse_debug_options): New static function to parse the `--debug'
7538         options, so we can easily add more stuff in future.
7539
7540 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
7541
7542         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
7543         the method has no body.
7544
7545 2008-04-19  Jonathan Chambers <joncham@gmail.com>
7546
7547         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
7548         assembly is not allowed in MSVC 64-bit compiler. 
7549         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
7550         as we get floating point exceptions everywhere.
7551         
7552         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
7553         correctly align arguments for call to throw_exception.
7554         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
7555         
7556         Code contributed under MIT/X11 license.
7557
7558 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
7559
7560         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
7561
7562 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
7563
7564         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
7565
7566         * mini-amd64.c (NEW_INS): Set cil_code.
7567
7568         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
7569         from mini-amd64.c so all debugger related logic is in one place.
7570
7571         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
7572         later won't have a random ip assigned to them.
7573
7574 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
7575
7576         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
7577         the arch specific function initializes code_size.
7578         (mono_create_delegate_trampoline): Ditto.
7579
7580         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
7581         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
7582         platforms.
7583
7584         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
7585         running under the debugger.
7586
7587         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
7588         debugger.
7589
7590         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
7591         debugger. Also move the disabling of optimizations here from driver.c.
7592         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
7593         debugger.
7594
7595         * mini.h (MonoCompile): Add a few new flags.
7596
7597 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
7598
7599         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
7600         so the cil_code field of created MonoInst's is properly set.
7601         (mini_select_instructions): Ditto.
7602
7603         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
7604         (MONO_INST_NEW_CALL): Ditto.
7605
7606         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
7607         in many places so the ins->cil_code field is properly initialized.
7608
7609         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
7610         place.
7611
7612 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
7613
7614         * mini.c (mini_method_compile): Print a different message when compiling a 
7615         shared method.
7616         
7617         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
7618         > 1.
7619
7620 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7621
7622         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
7623         SSE2 instructions.
7624
7625         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
7626         
7627 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7628
7629         * mini.c (handle_stack_args): Make this return void since its return value was
7630         never used. Also set cfg->unverifiable for invalid IL instead of calling
7631         G_BREAKPOINT ().
7632
7633 2008-04-10  Mark Probst  <mark.probst@gmail.com>
7634
7635         * mini.c: Make sure "this" is live in catch clauses with type
7636         variables in shared generic code.
7637
7638 2008-04-08  Mark Probst  <mark.probst@gmail.com>
7639
7640         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
7641         generic_class_is_reference_type() to ensure the proper behaviour
7642         when sharing generic code and the type in question is a type
7643         argument.
7644
7645 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7646
7647         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
7648         race conditions when printing thread dumps. Fixes #377738.
7649
7650 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
7651         
7652         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
7653         shows up when both MonoInst arguments can cause aliasig.
7654         There is likely no way in the current JIT to trigger this problem, but
7655         it showed up in the development of generics sharing, when in a new
7656         opcode both args of an OP_GROUP can be aliases (addresses of a local).
7657         When the generics sharing code will be committed, its tests will be
7658         valid also for this bug.
7659
7660 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7661
7662         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
7663         PATCH_INFO_METHOD.
7664
7665         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
7666         NULL.
7667
7668 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
7669
7670         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
7671         use a more detailed exception message for InvalidCastException.
7672
7673         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
7674
7675         * driver.c (mono_main): Add --debug=casts option to turn on better 
7676         InvalidCastException message details.
7677
7678         * mini.c (mini_get_debug_options): New helper function to return the address of
7679         the debug_options variable.
7680
7681         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
7682         the jit_tls TLS variable.
7683
7684         * mini.c (mono_jit_tls): New TLS variable.
7685
7686         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
7687         option is used.
7688
7689 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
7690
7691         * mini.h: Removed verifer related stuff. This code was moved to verify.c
7692
7693         * mini.c: Removed verifer related stuff, code moved to verify.c.
7694
7695         * driver.c: Using code from verify.c instead of mini.c.
7696
7697 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
7698
7699         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
7700         longer valid.
7701
7702 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
7703
7704         * mini.c (check_for_method_verify): Enabling verification of
7705         corlib if mono_verify_all is set. Bugs in the verifier preventing that
7706         have been fixed.
7707
7708 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
7709
7710         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
7711         caller saved registers as well.
7712         
7713         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
7714         saved registers as well.
7715
7716 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
7717
7718         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
7719
7720         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
7721         code.
7722
7723 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
7724
7725         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
7726         to get_call_info.
7727         (get_call_info): Take a gsctx argument instead of 'cfg'.
7728
7729 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
7730
7731         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
7732         mono_verify_all is set.
7733
7734         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
7735
7736         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
7737
7738 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
7739
7740         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
7741         an exception.
7742
7743         * driver.c mini.c mini.h: Add a --verify-all development option to test the
7744         verifier and the code generated by the compiler.
7745
7746 2008-03-25  Mark Probst  <mark.probst@gmail.com>
7747
7748         * mini.c: Generic sharing of the non-nullable case of the box
7749         instruction.
7750
7751 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
7752
7753         * inssel.brg: Fix the build.
7754
7755         * iltests.il.in: Add a test for lconv.ovf.u8.un.
7756
7757 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
7758
7759         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
7760         Array:Address. Fixes #372410.
7761
7762         * iltests.il.in: New tests for readonly prefix.
7763
7764 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
7765
7766         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
7767         mini-trampolines.c.
7768
7769         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
7770         mini-exceptions.c.
7771
7772         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
7773         
7774         * mini.c (mono_decompose_op_imm): New helper function.
7775
7776         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
7777         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7778         return value.
7779
7780         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7781         mono_arch_output_basic_block. Fix warnings.
7782
7783         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
7784         for now.
7785
7786 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
7787
7788         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
7789         since the extra frame is now detected automatically inside the loop.
7790
7791         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
7792         opts which are now in mono_peephole_ins ().
7793         
7794         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
7795
7796         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
7797         frames and skip duplicate managed-to-native frames. Fixes #367665.
7798
7799         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7800         opts which are now in mono_peephole_ins ().
7801         (mono_arch_peephole_pass_2): Ditto.
7802
7803         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
7804
7805         * mini-codegen.c (mono_peephole_ins): New helper function containing the
7806         arch independent peephole optimizations.
7807
7808         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7809         opts which are now in mono_peephole_ins ().
7810
7811         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
7812         
7813         * mini-s390.c (mono_arch_output_basic_block): Fix build.
7814
7815         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
7816         pattern.
7817
7818         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
7819         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
7820         opcode. 
7821
7822 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
7823
7824         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
7825         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7826         return value.
7827
7828         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7829         mono_arch_output_basic_block. Fix warnings.
7830
7831 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7832
7833         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7834         conv.ovf.u.un.
7835
7836 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7837
7838         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7839         conv.ovf.u.un.
7840
7841         * iltests.il: Add new tests.
7842
7843 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
7844
7845         * mini.c: Removed Windows version macros.
7846
7847 2008-03-20  Mark Probst  <mark.probst@gmail.com>
7848
7849         * generic-sharing.c: Put reflection types in the extensible part
7850         of the runtime generic context.
7851
7852         * mini.c: Generic sharing of the GetTypeHandle special case of the
7853         ldtoken instruction.
7854
7855 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7856
7857         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
7858
7859         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
7860         
7861         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
7862         consistency with the other version on the linear IR branch.
7863
7864         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
7865
7866         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
7867
7868         * iltests.il.in: Add new tests.
7869
7870 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
7871
7872         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
7873
7874         * iltests.il.in: Add new tests.
7875
7876 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7877
7878         * mini.c: Two variables with the same name were declared in
7879         nesting contexts and one wasn't initialized.  Fixed.
7880
7881 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7882
7883         * mini.c: Generic sharing of the initobj instruction.
7884
7885 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7886
7887         * mini.c: make the test to optimize ldtoken from typeof() more
7888         precise.
7889
7890 2008-03-18  Mark Probst  <mark.probst@gmail.com>
7891
7892         * mini.c: Generic sharing of the initobj instruction for reference
7893         types.
7894
7895 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7896
7897         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
7898         the mono_breakpoint_clean_code() code to perform bound checks.
7899
7900 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
7901
7902         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
7903         mono_arch_patch_callsite() to include the start of the managed method
7904         to be able to perform bound checks.
7905
7906 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7907
7908         * mini.c: Generic sharing for the isinst instruction.
7909
7910 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7911
7912         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7913         inssel-long32-mips.brg: Added opcodes for doing indirect calls
7914         with the runtime generic context argument.
7915
7916         * mini.c: Share calls to several types of unsharable methods by
7917         putting the address of the method code in the runtime generic
7918         context and doing an indirect call.
7919
7920         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7921         to switches.
7922
7923 2008-03-16  Mark Probst  <mark.probst@gmail.com>
7924
7925         * generic-sharing.c: Change due to a change in the runtime genric
7926         context API.
7927
7928 2008-03-15  Martin Baulig  <martin@ximian.com>
7929
7930         * tramp-x86.c
7931         (mono_arch_nullify_class_init_trampoline): Add call to
7932         mono_breakpoint_clean_code() to make things work when running
7933         inside the debugger.
7934
7935         * tramp-amd64.c
7936         (mono_arch_nullify_class_init_trampoline): Add call to
7937         mono_breakpoint_clean_code() to make things work when running
7938         inside the debugger.
7939
7940 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7941
7942         * inssel-long.brg (reg): Fix 64 bit build.
7943
7944 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7945
7946         * mini.c, mini.h: Share static generic code by passing it an
7947         implicit argument pointing to the runtime generic context.
7948
7949         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7950         inssel-long32-mips.brg: New opcodes for calling shared static,
7951         which need to be passed the runtime generic context.
7952
7953         * mini-amd64.c, mini-x86.c: Save the runtime generic context
7954         argument on the stack in the prologue if needed.  New function for
7955         finding the runtime generic context argument from the registers
7956         saved by the trampoline.
7957
7958         * mini-amd64.h, mini-x86.h: Specify which register to use for the
7959         runtime generic context argument.
7960
7961         * tramp-amd64.c: Also restore the register used for the runtime
7962         generic context argument.
7963
7964         * mini-trampoline.c: Resolve shared static calls by consulting the
7965         runtime generic context via the new argument.
7966
7967         * generic-sharing.c: Add an argument to sharability-checking
7968         functions that specifies whether type variables should be treated
7969         as sharable type arguments.
7970
7971         * inssel-x86.brg: Removed a superfluous, buggy rule.
7972
7973         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7974         to switches.
7975
7976 2008-03-14  Martin Baulig  <martin@ximian.com>
7977
7978         * debug-debugger.c (main_thread_handler): Call
7979         mono_runtime_run_main() without sending any notifications.
7980
7981         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
7982
7983 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7984
7985         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
7986
7987 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7988
7989         * tramp-x86.c: Fixed register restore offsets in the trampoline
7990         code for ECX and EDX.
7991
7992 2008-03-12  Geoff Norton  <gnorton@novell.com>
7993
7994         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
7995         different ucontext_t implementations.
7996         * exceptions-arm.c: Use the above defines to get exceptions working on 
7997         iPhone (based on a patch by Luke Howard lukeh@padl.com)
7998         * mini-arm.c: Implement iPhone icache support (based on a patch by
7999         Luke Howard lukeh@padl.com)
8000
8001 2008-03-12  Mark Probst  <mark.probst@gmail.com>
8002
8003         * mini.c: Enable generic sharing of calls to non-static
8004         non-interface non-generic non-value-type methods.
8005
8006         * mini-trampolines.c: Resolve calls from shared generic code.
8007
8008 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
8009
8010         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
8011
8012         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
8013
8014 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
8015
8016         * mini.c: some fixes for the AOT compiler.
8017
8018 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8019
8020         * cpu-amd64.md: Add clob:1 to some float opcodes.
8021
8022 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
8023
8024         * mini.h: Added MiniVerifierMode enumeration.
8025
8026         * mini.c: Added mini_verifier_set_mode to control
8027         the usage of the new verifier.
8028
8029         * mini.c (mono_method): Integrated the new verifier.
8030
8031         * driver.c: Extended --security option with validil and
8032         verifiable options to activate the new verifier.
8033
8034 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8035
8036         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
8037         optimization to ctors taking 0 or 2 arguments too.
8038
8039         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
8040         a bit.
8041
8042         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
8043
8044         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
8045
8046 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8047
8048         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
8049         non-aot case as well.
8050
8051         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
8052
8053         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
8054         changes.
8055
8056         * aot-compiler.c (encode_patch): Ditto.
8057
8058         * mini.h (G_MININT32): Fix the definition of this.
8059
8060 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
8061
8062         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
8063
8064         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
8065
8066 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8067
8068         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
8069         methods returning vtypes in registers.
8070         (mono_arch_allocate_vars): Ditto.
8071
8072         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
8073
8074         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
8075
8076         * generics.cs: Add a test from the linear IR branch.
8077
8078         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
8079
8080         * mini.c (inline_method): Cache failed inline attempts.
8081
8082 2008-03-04  Mark Probst  <mark.probst@gmail.com>
8083
8084         * mini.c: For shared methods of generic classes put the location
8085         of "this" into the MonoGenericJitInfo.
8086
8087         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
8088         register out of a MonoContext by register number.  Add the generic
8089         sharing context as an argument to mono_arch_find_this_argument().
8090
8091         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
8092         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
8093         for new arch function.
8094
8095         * mini-exception.c: Handle open exception clauses in shared
8096         generic code.
8097
8098         * mini-trampolines.c: Supply additional argument to
8099         mono_arch_find_this_argument().
8100
8101 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8102
8103         * Makefile.am (regtests): Run the bench.exe tests last.
8104
8105 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
8106
8107         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
8108         a bit.
8109
8110 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
8111
8112         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
8113         with MS.
8114
8115         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
8116         
8117         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
8118
8119         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
8120         whose class has no cctor.
8121
8122         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
8123
8124 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
8125
8126         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
8127         unverified.
8128
8129 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
8130
8131         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
8132         to be in sync with the code on the linear IR branch.
8133
8134         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
8135
8136         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
8137
8138 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
8139
8140         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
8141
8142         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
8143
8144         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
8145
8146         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
8147
8148         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
8149         
8150         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
8151         body.
8152
8153 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
8154
8155         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
8156         OP_LOADR4_MEMBASE emission.
8157
8158         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
8159         (mono_spillvar_offset_float): Ditto.
8160
8161         * mini-mips.c (mono_arch_emit_prolog): Ditto.
8162
8163         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
8164         emission.
8165
8166         * basic-long.cs: Add regression tests for them.
8167
8168         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
8169         use.
8170         (mono_arch_allocate_vars): Fix representation of single-precision float
8171         argument.
8172         (mono_arch_output_basic_block): Ditto.
8173
8174         * inssel-mips.brg: Ditto, remove duplicate items.
8175
8176         * mini-mips.c (emit_load_volatile_arguments): New function to handle
8177         arguments of tail calls as on other platforms.
8178         (mono_arch_output_basic_block): Handle tail calls.
8179
8180         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
8181         register.
8182
8183         * objects.cs (test_5_pass_static_struct): Add test for it.
8184
8185         Contributed under MIT/X11 license.
8186
8187 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
8188
8189         * Makefile.am: Use gmcs for compiling the regression tests.
8190
8191         * *.2.cs *.2.il: Rename to *.cs and *.il.
8192
8193 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
8194
8195         * regalloc.h: Make the vassign array smaller.
8196
8197         * mini.c (mini_method_compile): Remove an unused field in cfg.
8198
8199         * mini-codegen.c: Add a bunch of micro optimizations.
8200
8201 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
8202
8203         * regalloc.h: Remove some unused fields.
8204
8205 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
8206
8207         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
8208
8209         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
8210
8211 2008-02-22  Mark Probst  <mark.probst@gmail.com>
8212
8213         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
8214
8215         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
8216         trampoline: Fetch an entry from the runtime generic context.  If
8217         it's NULL, jump to the actual trampoline to fill the runtime
8218         generic context.  Otherwise, return it.
8219
8220         * mini.c: Call the lazy fetch trampoline to get entries out of the
8221         runtime generic context.
8222
8223         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
8224         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
8225         tramp-sparc.c: Stubs for the lazy fetch trampoline.
8226
8227 2008-02-21  Mark Probst  <mark.probst@gmail.com>
8228
8229         * mini.c: Fetch data out of the extensible part of the runtime
8230         generic context instead of calling a helper function.
8231
8232         * generic-sharing.c: Some functions moved into
8233         metadata/generic-sharing.c.  Helper function for fetching other
8234         types now checks and asserts against extensible rgctx (just for
8235         debugging purposes - the helper function isn't called anymore
8236         unless for debugging).
8237
8238 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8239
8240         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
8241         for tail calls up to the point that the tests in iltests.exe run. Also add a
8242         dummy CKFINITE implementation.
8243         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
8244         needed for trampoline LMF frames.
8245
8246         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
8247         trampoline LMF frames.
8248
8249 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
8250
8251         * mini.c (inline_method): clean any pending loader error when inlining fail.
8252         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
8253
8254 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8255
8256         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
8257
8258         * aot-runtime.c (decode_patch_info): Ditto.
8259
8260         * mini.c (mono_resolve_patch_target): Ditto.
8261         
8262         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
8263         icall wrappers.
8264
8265         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
8266         
8267         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
8268         if it references an icall address.
8269
8270 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * cpu-s390x.md: Remove some more unused opcodes.
8273         
8274         * cpu-s390x.md: Remove some unused opcodes.
8275
8276         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
8277         mono_op_imm_to_op ().
8278
8279         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
8280         instead of a switch statement.
8281         
8282         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
8283         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
8284
8285         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
8286         
8287         * mini-codegen.c: Remove unused mono_regstate2_... functions.
8288
8289         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
8290         -1.
8291
8292 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
8293
8294         * driver.c (mono_main): Improve error reporting when an assembly cannot be
8295         opened. Fixes #362607.
8296
8297         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
8298
8299         * iltests.il.in: Add a test for static methods in interfaces.
8300
8301 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
8302
8303         * genmdesc.c (build_table): Fix a crash on older glib versions.
8304
8305         * cpu-sparc.md: Remove some unused opcodes.
8306         
8307         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
8308         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
8309
8310         * cpu-amd64.md: Remove some unused opcodes.
8311
8312         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
8313         like the other opcodes.
8314
8315 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
8316
8317         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
8318
8319         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
8320
8321         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
8322         variables 'cfg' instead of 'm' for consistency.
8323
8324         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
8325
8326         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
8327         argument holding the vtype return address, to avoid the ambigious use of
8328         cfg->ret for this purpose.
8329
8330         * mini.c (NEW_RETLOADA): Use vret_addr if set.
8331
8332         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
8333         
8334         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
8335         new mono_print_ins () function which only takes one argument.
8336
8337 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
8338
8339         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
8340         macro arguments.
8341
8342 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
8343
8344         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
8345
8346         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
8347
8348         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
8349         opcodes and other small changes.
8350
8351         * mini-ops.h: Add some new opcodes from the linear IR branch.
8352
8353         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
8354
8355         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
8356         opcodes, use the REG_MEMBASE opcodes instead.
8357         
8358         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
8359         opcodes, use the REG_MEMBASE opcodes instead.
8360         
8361         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
8362         linear IR branch.
8363
8364         * mini.c (mono_op_imm_to_op): New helper function.
8365
8366         * mini-ops.h: Add some opcodes from linear IR branch.
8367
8368 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
8369
8370         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
8371         <tsv@solvo.ru>.
8372
8373 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
8374
8375         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
8376         OP_ICONV_TO_R4/R8.
8377
8378         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
8379
8380 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
8381
8382         * aot-compiler.c (emit_method_code): Add an assert.
8383
8384         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
8385         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
8386         methods.
8387
8388 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
8389
8390         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
8391         some load/store opcodes so they are consistent. 
8392         (mono_arch_emit_prolog): Simplify some code.
8393
8394         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
8395
8396         * objects.cs: Add tests for large argument offsets on ARM.
8397
8398         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
8399         stack offsets. Fixes #359651.
8400
8401         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
8402
8403         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
8404
8405         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
8406
8407         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
8408
8409         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
8410
8411         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
8412         rid of CEE_CONV_R_UN.
8413
8414         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
8415
8416 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
8417
8418         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
8419
8420         * mini.c (mono_normalize_opcodes): Add some more opcodes.
8421
8422         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
8423
8424         * cpu-amd64.md: Remove some unused opcodes.
8425
8426         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
8427
8428         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
8429
8430         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
8431         arch specific functions for its parts. Call the peephole pass after local
8432         regalloc so the prolog can compute a more accurate max_offset.
8433         
8434         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
8435         the corresponding OP_I/OP_L opcodes.
8436
8437         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
8438
8439         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
8440
8441 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8442
8443         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
8444         as they are handled in mini.c.
8445
8446         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
8447         
8448         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
8449         case since it is handled in mini.c.
8450
8451         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
8452
8453         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
8454
8455         * *.c: Use the new opcodes in the IR and back end code.
8456
8457         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
8458
8459         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
8460
8461 2008-02-06  Mark Probst  <mark.probst@gmail.com>
8462
8463         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
8464         an assert because it has a race condition.
8465
8466 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8467
8468         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
8469
8470         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
8471
8472         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
8473
8474         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
8475         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
8476
8477 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
8478
8479         * cpu-amd64.md (move): Correct the maximum size of move.
8480
8481 2008-02-05  Mark Probst  <mark.probst@gmail.com>
8482
8483         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
8484         the generic class init trampoline to return quickly if the class
8485         is already inited.
8486
8487 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
8488
8489         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
8490         issues where an 32 bit callsite cannot be patched by a 64 bit address.
8491
8492 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
8493
8494         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
8495         branch.
8496
8497 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
8498
8499         * objects.cs: Add some soft-float tests.
8500
8501         * mini.c: Fix a couple more soft-float issues.
8502
8503         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
8504
8505         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
8506         avoid a REX prefix.
8507
8508 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
8509
8510         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
8511         exception happens while compiling a virtual method.
8512
8513 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
8514
8515         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
8516         
8517         * mini-sparc.c: Fix build.
8518
8519         * mini-sparc.c (get_call_info): Add support for generic sharing.
8520
8521         * mini-exceptions.c: Add a FIXME.
8522
8523 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
8524
8525         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
8526         altstack handling code.
8527
8528         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
8529         
8530         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
8531
8532         * mini-s390.c: Add support for generic sharing.
8533
8534         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8535         Fix CAS on s390.
8536         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8537
8538         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
8539
8540         * mini-s390x.c: Add support for generic sharing.
8541         
8542         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8543         Fix CAS on ia64.
8544         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8545
8546         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
8547         can be used since it takes a 16 bit signed immediate.
8548
8549         * inssel-s390x.brg: Fix OP_SETRET.
8550
8551         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
8552
8553         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
8554
8555         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
8556
8557         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
8558
8559         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
8560         in one place.
8561
8562         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
8563         stuff.
8564
8565         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
8566         of the unused mono_arch_patch_delegate_trampoline stuff.
8567
8568 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
8569
8570         * basic-long.cs: Move the fp related tests to basic-float.cs.
8571
8572         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
8573
8574         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
8575
8576         * basic-calls.cs: Add a test for proper float argument passing.
8577
8578         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
8579         if the context corresponds to an exception received through a signal.
8580
8581         * exceptions.cs: Add a test for nullref handling at the start of a try
8582         clause.
8583
8584         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
8585
8586         * jit-icalls.c (mono_break): New JIT icall.
8587
8588         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
8589
8590         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
8591
8592 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
8593
8594         * cpu-*.md: Get rid of unused opcodes.
8595
8596         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
8597
8598         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
8599         by all platforms.
8600
8601         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
8602         define.
8603
8604         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
8605         the arch independent trampoline code in mini-trampolines.c.
8606
8607         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
8608
8609         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
8610
8611         * mini-s390.h: Remove an unused define.
8612         
8613         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
8614         the arch independent trampoline code in mini-trampolines.c.
8615
8616         * mini-arm.c (mono_arch_emit_prolog): Fix build.
8617
8618 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
8619
8620         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
8621
8622         * mini-s390.c (mono_arch_emit_prolog): Fix build.
8623
8624         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
8625
8626         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
8627
8628         * cpu-amd64.md: Use smaller sizes for int opcodes.
8629
8630         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
8631
8632         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
8633         objects.cs.
8634
8635         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
8636         debugging.
8637
8638         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
8639         instead of though a pointer to save an indirection when accessing elements of
8640         the array.
8641
8642         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
8643         some typos.
8644         (NOT_IMPLEMENTED): New helper macro.
8645         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
8646         of a bb.
8647
8648         * *.c: Use the new helper macro.
8649
8650 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
8651
8652         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
8653
8654 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
8655
8656         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
8657         stack slots.
8658
8659 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
8660
8661         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
8662         profiling is enabled.
8663         
8664         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
8665         the end.
8666         (mono_arch_emit_prolog): Add more first bblock optimizations.
8667
8668         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
8669         in order if possible.
8670         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
8671         bblock, since the arguments are still in their original registers.
8672
8673         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
8674
8675 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
8676
8677         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
8678         as well.
8679
8680         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
8681         offset 0.
8682
8683         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
8684
8685         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
8686         process async exceptions received while in unmanaged code.
8687
8688         * mini.c (mini_init): Install a callback with the runtime which will be called
8689         when a thread receives an async exception while in unmanaged code.
8690
8691         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
8692
8693         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
8694
8695 2008-01-16  Wade Berrier  <wberrier@novell.com>
8696
8697         * cpu-g4.md:
8698         * cpu-arm.md:
8699         * cpu-s390x.md:
8700         fix build
8701
8702 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8703
8704         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
8705         compilation with sun cc.
8706
8707         * cpu-*.md: Fix the build.
8708
8709         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
8710
8711         * mini-amd64.h: Add some comments to the MonoLMF structure.
8712
8713         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
8714         
8715         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
8716         in the LMF structure if possible. This saves two instructions in the
8717         managed->native wrappers.
8718
8719         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
8720
8721 2008-01-16  Mark Probst  <mark.probst@gmail.com>
8722
8723         * generic-sharing.c: New type argument lookup code which uses the
8724         runtime generic context template.
8725
8726 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
8727
8728         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
8729
8730         * mini-arm.c (add_general): Fix arm eabi parameter passing.
8731         (mono_arch_output_basic_block): Fix localloc implementation.
8732
8733         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
8734
8735         * mini-ia64.c (peephole_pass): Fix ia64 build.
8736
8737         * mini-amd64.c (peephole_pass): Fix a warning.
8738         
8739         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
8740         at a constant offset from sp/fp.
8741
8742         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
8743         instead of obtaining it from *lmf in the managed method case.
8744
8745 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
8746
8747         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
8748
8749 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
8750
8751         * mini.h (MonoInstList): New type.
8752         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
8753         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
8754         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
8755         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
8756         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
8757         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
8758         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
8759         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
8760         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
8761         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
8762         MONO_INST_LIST_FOR_EACH_ENTRY,
8763         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
8764         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
8765         mono_inst_list_first, mono_inst_list_last,
8766         mono_inst_list_next, mono_inst_list_prev): New instruction
8767         list handling interfaces.
8768         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
8769         list head 'ins_list'.
8770         (MonoInst): Replace next pointer with list head 'node'.
8771         (MonoCallInst): Make 'out_args' a MonoInstList.
8772         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
8773         (MonoCompile): Delete reverse_inst_list and
8774         reverse_inst_list_len.
8775         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
8776         mono_arch_lowering_pass, mono_arch_local_regalloc,
8777         mono_arch_output_basic_block, mono_arch_emit_prolog):
8778         Convert to new instruction lists.
8779         (insert_after_ins): Delete.
8780         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
8781         instruction lists.
8782         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
8783         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
8784         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
8785         mono_emulate_opcode, mono_emit_load_got_addr,
8786         inline_method, mono_method_to_ir, mono_print_bb_code,
8787         print_dfn, decompose_pass, nullify_basic_block,
8788         replace_out_block_in_code, remove_block_if_useless,
8789         merge_basic_blocks, move_basic_block_to_end,
8790         try_unsigned_compare, optimize_branches, mono_print_code,
8791         mini_select_instructions, remove_critical_edges): Likewise.
8792         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
8793         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
8794         mono_arch_output_basic_block, mono_arch_emit_prolog):
8795         Likewise.
8796         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
8797         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8798         mono_arch_output_basic_block): Likewise.
8799         (inst_list_prepend, insert_after_ins): Delete.
8800         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
8801         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
8802         instruction lists.
8803         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
8804         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
8805         mono_arch_emit_prolog): Likewise.
8806         * cfold.c (mono_constant_fold): Likewise.
8807         * liveness.c (visit_bb, mono_analyze_liveness,
8808         optimize_initlocals): Likewise.
8809         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
8810         * graph.c (mono_draw_code_cfg): Likewise.
8811         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
8812         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
8813         mono_ssa_cprop): Likewise.
8814         * abcremoval (get_relations_from_previous_bb, process_block):
8815         Likewise.
8816         * local-propagation (mono_cprop_invalidate_values,
8817         mono_local_cprop_bb): Likewise.
8818         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
8819         peephole_pass, mono_arch_output_basic_block,
8820         mono_arch_emit_prolog): Likewise.
8821         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
8822         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8823         mono_arch_emit_prolog): Likewise.
8824         (insert_after_ins): Delete.
8825         * aliasing.c (print_code_with_aliasing_information,
8826         mono_build_aliasing_information, mono_aliasing_deadce):
8827         Convert to new instruction lists.
8828         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
8829         peephole_pass, NEW_INS, mono_arch_lowering_pass,
8830         mono_arch_local_regalloc, mono_arch_output_basic_block):
8831         Likewise.
8832         (insert_after_ins): Delete.
8833         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
8834         peephole_pass, mono_arch_output_basic_block): Convert to
8835         new instruction lists.
8836         * mini-codegen (InstList, inst_list_prepend,
8837         insert_after_ins): Delete.
8838         (insert_before_ins, get_register_force_spilling,
8839         get_register_spilling, free_up_ireg, free_up_reg,
8840         create_copy_ins, create_spilled_store, alloc_int_reg,
8841         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
8842         to new instruction lists.
8843         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
8844         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8845         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
8846         (insert_after_ins): Delete.
8847         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
8848         mono_arch_local_regalloc, mono_arch_output_basic_block,
8849         mono_arch_call_opcode): Convert to new instruction lists.
8850         (insert_after_ins): Delete.
8851         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
8852         peephole_pass, mono_arch_output_basic_block,
8853         mono_arch_emit_prolog): Convert to new instruction lists.
8854
8855 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
8856
8857         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
8858
8859         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
8860         Fixes #353182.
8861
8862         * Makefile.am (version.h): Make this work with non-bash shells.
8863
8864 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
8865
8866         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
8867
8868 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
8869
8870         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
8871         the InitializeArray optimization.
8872
8873 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
8874
8875         * mini.c driver.c: Don't include os/gc_wrapper.h.
8876
8877 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8878
8879         * mini.c (print_jit_stats): Print GC statistics if available.
8880
8881 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
8882
8883         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
8884
8885 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
8886
8887         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
8888
8889 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8890
8891         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
8892         
8893         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8894
8895         * driver.c (mono_main): Ditto.
8896
8897 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8898
8899         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
8900
8901         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
8902         in the vtable can't be encoded.
8903         (compile_method): Ditto.
8904
8905 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8906
8907         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
8908         defined.
8909
8910         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
8911         lmf->rbp.
8912
8913         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
8914         the top LMF entry belongs to the current method.
8915
8916         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
8917
8918 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8919
8920         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
8921         
8922         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
8923
8924         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
8925
8926         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
8927
8928         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
8929
8930         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
8931         implementation.
8932
8933         * basic-float.cs: Add an ulong->double cast test.
8934
8935 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
8936
8937         * mini.c (mono_method_to_ir): Fix a warning.
8938
8939 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
8940
8941         * mini-ops.h: Add OP_SWITCH.
8942
8943         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
8944         CEE_SWITCH in back-end code, use OP_SWITCH instead.
8945
8946 2007-12-11  Geoff Norton  <gnorton@novell.com>
8947
8948         * mini-s390x.c: Minor change to the MAX() define to allow
8949         it to compile with other gcc versions.
8950
8951 2007-12-11  Geoff Norton  <gnorton@novell.com>
8952
8953         * cpu-s390x.md:
8954         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
8955
8956 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8957
8958         exceptions-arm.c (mono_arch_get_restore_context): Restore
8959         the frame pointer.
8960
8961         exceptions-arm.c (throw_exception): Save the frame pointer.
8962         This is a partial fix for #323747. Only the client side is
8963         fixed.
8964
8965 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8966
8967         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
8968         was using an unrelated variable to log the class which
8969         needed the cctor to be called. This was crashing on arm.
8970
8971 2007-12-09  Robert Jordan  <robertj@gmx.net>
8972
8973         * mini-x86.c (mono_arch_emit_epilog):
8974         Consider all kinds of 64-bit types. Fixes #323114.
8975
8976 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
8977
8978         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
8979
8980 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8981
8982         * mini-amd64.c (peephole_pass): Add a missing instruction check.
8983
8984 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8985
8986         * mini.c: run type ctor before allocating an object, not only
8987         when running it's constructor method (fixes at least part of bug #342507).
8988
8989 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8990         
8991         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
8992         
8993         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
8994         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
8995         function.
8996
8997         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
8998         mono_generic_class_init_trampoline () the same as it is done with the other
8999         trampolines.
9000
9001         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
9002         aot-runtime.c aot-compiler.c: Implement AOT support.    
9003
9004 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9005
9006         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
9007         build for archs which don't have the vtable trampoline defined
9008         yet.
9009
9010 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
9013
9014         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
9015
9016         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
9017
9018         * tramp-<ARCH>.c: Use the new helper function.
9019
9020 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9021
9022         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
9023         trampoline call, which takes a vtable argument.
9024
9025         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
9026         OP_TRAMPCALL_VTABLEs like other calls.
9027
9028         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
9029         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
9030         call.  Implemented a support function which fetches the vtable
9031         from a register set.
9032
9033         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
9034         Implemented a generic class init trampoline, using the
9035         OP_TRAMPCALL_VTABLE opcode.
9036
9037         * mini.c: Implemented static field access when sharing generic
9038         code.  This implies initing the class using the new
9039         OP_TRAMPCALL_VTABLE call.
9040
9041 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9042
9043         * mini.c: Don't compile methods with sharing enabled if their
9044         classes are disabled for sharing.
9045
9046 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * inssel.brg: Add a missing sign extension to the GETCHR and array access
9049         opcodes. Fixes #346563.
9050
9051         * objects.cs: Add a new test.
9052
9053         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
9054
9055         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
9056         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
9057
9058 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9059
9060         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
9061
9062 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
9063
9064         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
9065         code stream.
9066
9067 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
9068
9069         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
9070
9071         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
9072         optimization in the AOT case.
9073         
9074 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
9075
9076         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
9077         
9078         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
9079
9080         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
9081
9082         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
9083
9084         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
9085         is created by the inlined delegate ctor.
9086
9087         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
9088
9089         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
9090
9091 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
9092
9093         * cpu-x86.md: Fix the length of ckfinite.
9094
9095 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
9096
9097         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
9098         
9099         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
9100         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
9101
9102         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
9103
9104         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
9105         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
9106
9107 2007-11-28  Martin Baulig  <martin@ximian.com>
9108
9109         * mini-x86.c
9110         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
9111         after creating the trampoline.
9112
9113 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
9114
9115         * aot-runtime.c (load_aot_module): Check runtime version if needed.
9116
9117         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
9118         the same version.
9119
9120         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
9121         instead of the calling method to help AOT.
9122
9123         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
9124
9125 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
9126
9127         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
9128         is defined.
9129
9130 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9131
9132         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
9133         
9134         * aot-compiler.c (compile_method): Correct check for generic method definitions.
9135         (encode_method_ref): No need to handle generic method definitions specially.
9136
9137         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
9138
9139         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
9140         decode_klass_info.
9141
9142         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
9143         encode_klass_info.
9144         (compile_method): Enable generic sharing.
9145
9146 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
9147
9148         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
9149         (mini_method_compile): Add preliminary support for AOTing shared generic code.
9150
9151         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
9152         generic code.
9153
9154         * mini-trampolines.c: Fix a warning.
9155
9156         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
9157         NEW_PCONST.
9158         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
9159         (generic_class_is_reference_type): Remove unused function.
9160
9161         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
9162         in the generic vtable trampoline case.
9163
9164         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
9165         
9166         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
9167         return an AOT method based on a vtable slot.
9168
9169         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
9170
9171         * mini.c (mini_get_vtable_trampoline): Export this.
9172
9173 2007-11-22  Martin Baulig  <martin@ximian.com>
9174
9175         * debug-debugger.h
9176         (MonoDebuggerInfo): Move `debugger_version' up.
9177
9178 2007-11-22  Martin Baulig  <martin@ximian.com>
9179
9180         * mini-amd64.c
9181         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
9182
9183         * mini-trampolines.c
9184         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
9185         after compiling the method.
9186
9187 2007-11-20  Martin Baulig  <martin@ximian.com>
9188
9189         * debug-mini.c
9190         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
9191         (mono_debugger_remove_breakpoint): Likewise.
9192         (mono_debugger_check_breakpoints): Likewise.
9193
9194         * debug-debugger.c: Implement the new breakpoint interface here.
9195
9196 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
9197
9198         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
9199         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
9200
9201         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
9202
9203 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
9204
9205         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
9206
9207         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
9208         mini.c.
9209
9210         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
9211         mini.c.
9212
9213         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
9214         returning a vtype in a register.
9215
9216         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
9217         here from the arch specific code.
9218
9219         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
9220         mini.c.
9221
9222         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
9223         (mono_arch_emit_prolog): Increment maximum prolog size.
9224
9225         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
9226         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
9227
9228         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
9229         MonoGenericSharingContext.
9230
9231         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
9232         MonoGenericSharingContext. Allocate memory from the cfg mempool.
9233
9234 2007-11-15  Mark Probst  <mark.probst@gmail.com>
9235
9236         * mini.c, mini.h, generic-sharing.c: Functions for producing code
9237         which extract fields out of the runtime generic context.  Full
9238         sharing of the NEWARR opcode.
9239
9240 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9241
9242         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
9243         --enable-minimal=ssa.
9244
9245 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
9246
9247         * mini-trampolines.c (mono_delegate_trampoline): Update after 
9248         mono_marshal_get_delegate_invoke () signature change.
9249
9250 2007-11-13  Mark Probst  <mark.probst@gmail.com>
9251
9252         * mini.c: Removed the shared context in favor of the generic
9253         sharing context.  Allocate the MonoJitInfo structure with room for
9254         the generic sharing context if it's needed.
9255
9256         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
9257         domain-internals.h now.
9258
9259         * mini-x86.c: Pass the generic sharing context to get_call_info ().
9260
9261         * generic-sharing.c: Several changes for working without a shared
9262         context and instead operating on open types instead.
9263
9264 2007-11-12  David S. Miller  <davem@davemloft.net>
9265
9266        * inssel-sparc.brg: Fix double instruction emit.
9267
9268 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9269
9270         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
9271         Get/Set/Address methods.
9272         
9273         * mini.c debug-debugger.c mini-trampolines.c: Update after 
9274         mono_marshal_get_delegate_invoke signature change.
9275
9276 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9277
9278         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
9279         This can happens with dynamic methods. Fixes the other bug in #322722.
9280
9281 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9282
9283         * tramp-arm.c (mono_arch_patch_callsite): Support patching
9284         BX call sequence.
9285
9286         * mini-arm.c (arm_patch): Implement patching of BX call
9287         sequence. Fixes one of the bugs in #322722.
9288
9289 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
9290
9291        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
9292        under Linux.  We only need to flush every 32-byte cache line.    
9293
9294 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9295
9296         * mini.c:
9297         move_basic_block_to_end: Add branches when needed, eventually creating
9298         a new BB.
9299         optimize_branches: added a parameter that tells if it's ok to create
9300         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
9301         and avoid calling move_basic_block_to_end when it's not ok.
9302         Fixes bug 318677.
9303
9304 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9305
9306         * mini.c: Abort inlining call to InitializeArray if something
9307         looks wrong.  Let the icall handle it, which now has proper safety
9308         checks.
9309
9310 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9311
9312         * mini.c (mono_spill_call): add support for soft-float.
9313
9314         * mini.c (mono_method_to_ir): add support for soft-float
9315         to inlined functions that return float.
9316
9317         * mini.c (mono_method_to_ir): add support for soft-float
9318         to cee_stsfld opcode on float fields.
9319
9320 2007-11-05  Geoff Norton  <gnorton@novell.com>
9321
9322         * mini-x86.h: Fix the structure access for X86 Leopard.
9323
9324
9325 2007-11-05  Martin Baulig  <martin@ximian.com>
9326
9327         * mini-trampolines.c
9328         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
9329         after compiling the method to notify the debugger.
9330
9331 2007-11-05  Martin Baulig  <martin@ximian.com>
9332
9333         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
9334
9335 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
9336
9337         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
9338         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
9339
9340 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
9341
9342         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
9343         native-to-managed wrappers.
9344         
9345 2007-11-01  Geoff Norton  <gnorton@novell.com>
9346
9347         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
9348         members.
9349
9350 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
9351
9352         * mini.c, mini-x86.c: when getting back from unmanaged code
9353         to managed via a marshaled delegate we also need to set the
9354         right domain.
9355
9356 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9357
9358         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
9359         for amd64.
9360
9361 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9362
9363         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
9364         let the debugger or other external agents to tell the JIT when
9365         a sw breakpoint has been inserted in the code that the JIT needs
9366         to be able to inspect.
9367
9368 2007-10-31  Martin Baulig  <martin@ximian.com>
9369
9370         * debug-debugger.h
9371         (MonoDebuggerInfo): Remove `runtime_class_init'.
9372
9373 2007-10-30  Martin Baulig  <martin@ximian.com>
9374
9375         * debug-mini.h
9376         (mono_debugger_thread_created): Added `MonoThread *' argument.
9377         (mono_debugger_extended_notification): New public method.
9378         (mono_debugger_trampoline_compiled): New public method.
9379
9380         * debug-mini.c
9381         (MonoDebuggerThreadInfo): Added `thread' and
9382         `extended_notifications' fields.
9383
9384         * debug-debugger.c
9385         (debugger_executable_code_buffer): New static variable.
9386
9387         * debug-debugger.h
9388         (MonoDebuggerInfo): Added `executable_code_buffer',
9389         `executable_code_buffer_size', `breakpoint_info_area',
9390         `breakpoint_table' and `breakpoint_table_size'.
9391
9392 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
9393
9394         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
9395         that IP  either is an unused value or the vtable pointer. IMT 
9396         calls use vtable + offset now. Reduced by almost half the size
9397         of IMT entries.
9398
9399 2007-10-26  Jonathan Chambers <joncham@gmail.com>
9400
9401         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
9402         defines to access param registers. Replace long usage with
9403         gsize as sizeof(long) != sizeof(void*) on Win64.
9404
9405         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
9406         on Win64. Fix intrinsic, use _AddressOfReturnAddress
9407         instead of non-existant _GetAddressOfReturnAddress.
9408
9409         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
9410         param registers. Save/restore %rdi and %rsi in MonoLMF.
9411
9412         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
9413         param registers. Modify (throw_exception) signature to take 
9414         %rdi and %rsi on Win64. 
9415
9416         Code is contributed under MIT/X11 license.
9417
9418 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9419
9420         * helpers.c: unlink debugging output files.
9421
9422 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
9423
9424         * mini.c: Move mono_create_ftnptr () to object.c.
9425
9426 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9427
9428         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
9429         optional. This function can now be used to disassemble code generated
9430         outside the JIT such as trampolines and IMT thunks.
9431
9432         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
9433
9434         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
9435         vtable pointer from a ldr instruction.
9436
9437         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
9438         new IMT call sequence.
9439
9440         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
9441         call sequence for interface invocations.
9442
9443         * mini-arm.c (mono_arch_emit_imt_argument): added, required
9444         for imt support. This function is empty since IMT on ARM requires no
9445         special handling on the IR side.
9446
9447         * mini-arm.c (mono_arch_find_imt_method): added, required for
9448         imt support.
9449
9450         * mini-arm.c (mono_arch_find_this_argument): added, required
9451         for imt support.
9452
9453         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
9454         a ldr instruction to load a value stored in the code stream.
9455
9456         * mini-arm.c (mono_arch_build_imt_thunk):added, required
9457         for imt support.
9458
9459
9460 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
9461
9462         * mini.c (mini_init): Install the jump trampoline callback.
9463
9464 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9465
9466         * mini-trampolines.c: handle synchronized methods with the common
9467         vtable trampoline (bug #335601).
9468
9469 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
9470
9471         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
9472
9473         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
9474         64 bit platforms.
9475
9476         * mini-ia64.h mini-ia64.c: Add support for IMT.
9477
9478         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
9479         prolog. Fixes #331958.
9480
9481 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
9482
9483         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
9484
9485 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9486
9487         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
9488         trampoline.
9489
9490 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9491
9492         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
9493         trampoline.
9494
9495 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
9496
9497         * mini-x86.c, mini-x86.h: x86 support for the common vtable
9498         trampoline.
9499
9500 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
9501
9502         * mini-trampolines.c: changed the magic rampoline to understand
9503         the common vtable trampoline method: the method to invoke is
9504         determined by the vtable displacement of the call.
9505
9506 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9507
9508         * mini.c, mini.h: register the common vtable trampoline if the
9509         architecture supports it.
9510
9511 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9512
9513         * cpu-amd64.md: use the correct max length for tls_get.
9514
9515 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
9516
9517         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
9518         CEE_STELEM_ANY. Fixes #333696.
9519
9520 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9521
9522         * exceptions-x86.c: provide more graceful handling of the case where
9523         we followed a bogus function pointer from managed code (bug #332866).
9524
9525 2007-10-11  Mark Probst  <mark.probst@gmail.com>
9526
9527         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
9528         replaces the generic_shared flag and will carry more information
9529         in the future.
9530
9531         * generic-sharing.c: Added mini_type_stack_size() which allows
9532         allows open types if given a generic sharing context.
9533         mini_get_basic_type_from_generic() takes a
9534         MonoGenericSharingContext* instead of a MonoCompile* now.
9535
9536         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
9537         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
9538         mini-sparc.c, mini-x86.c: Trivial changes required by the two
9539         changes above.  Just passing arguments through to the right
9540         places.
9541
9542 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9543
9544         * mini-arm.c: unify the call emission to emit_code_seq().
9545
9546 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
9547
9548         * tramp-arm.c: reduced the trampoline size.
9549
9550 2007-10-10  Mark Probst  <mark.probst@gmail.com>
9551
9552         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
9553         variable handling out of arch-specific code.
9554
9555 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
9556
9557         * mini-arm.c: implemented fast delegate dispatch.
9558
9559 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9560
9561         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
9562         that fp elimination is turned off if the space required by locals is too
9563         big. Fixes #331958.
9564
9565 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9566
9567         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
9568         ARM to the new style trampoline.
9569
9570 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9571
9572         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
9573
9574         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
9575
9576 2007-10-09  Martin Baulig  <martin@ximian.com>
9577
9578         * debug-debugger.h
9579         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
9580         `field_info_offset_offset'.     
9581
9582 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9583
9584         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
9585         removed more internal usage of the r11 register and made it available
9586         to the register allocator.
9587
9588 2007-10-08  Mark Probst  <mark.probst@gmail.com>
9589
9590         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
9591         when sharing generics and treat type variables as references.
9592
9593 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9594
9595         * mini-ppc.c: started removing the internal uses of register r11
9596         to eventually allow the register allocator to manage it as an
9597         additional available register.
9598
9599 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9600
9601         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
9602
9603 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9604
9605         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
9606         specific trampolines as they are not performance critical as a jump
9607         target (maybe align as before only for AOT code?). This saves about
9608         200 KB of native code on x86 for monodevelop startup.
9609
9610 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9611
9612         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
9613         monodevelop startup.
9614
9615 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
9616
9617         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
9618
9619         * mini-sparc.h mini-sparc.c: Implement IMT support.
9620
9621         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
9622         its smaller and doesn't clobber sparc_g1.
9623
9624         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
9625
9626 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9627
9628         * mini-ppc.c: optimized the size of the IMT thunks a bit.
9629
9630 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9631
9632         * mini-ppc.c: implemented fast delegate invocation.
9633
9634 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
9635
9636         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
9637
9638 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9639
9640         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
9641         code to the new style trampoline in preparation for IMT support.
9642
9643 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
9644
9645         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
9646         systems already. This also reduces the specific trampiline sizes and
9647         prepares for the use of r12 as the IMT identifier register.
9648
9649 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9650
9651         * mini-mips.h: endianess fix (simplified from a patch by
9652         Thomas Kunze <thommy@tabao.de>, bug #323737).
9653
9654 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9655
9656         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
9657         to access ucontext fields and enable netbsd support
9658         (partially from Magnus Henoch <mange@freemail.hu>).
9659
9660 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9661
9662         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
9663         use the preprocessor from the CPP env var if it is set.
9664
9665 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9666
9667         * mini-trampolines.c: fixed an assertion and moved it earlier in the
9668         code, before interface_offset gets used.
9669
9670 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
9671
9672         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
9673         mono_class_setup_vtable () before accessing klass->vtable.
9674
9675 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
9676
9677         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
9678         hackish.
9679
9680 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9681
9682         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
9683         IMT slots (this saves hundreds of KB of memory in programs like
9684         IronPython and Monodevelop).
9685
9686 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9687
9688         * mini.c: print the delegate counter.
9689
9690 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
9691
9692         * mini-x86.c: make it easier to enable the debugging code for IMT
9693         slots.
9694
9695 2007-09-28  Martin Baulig  <martin@ximian.com>
9696
9697         * debug-debugger.h
9698         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
9699         `mono_method_klass_offset' and `mono_method_token_offset'.
9700
9701 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9702
9703         * mini.c: First generics sharing implementation.  Can only share
9704         in very simple cases.  If sharing doesn't work it falls back to
9705         dedicated compilation.
9706
9707         * mini.h: Flag in MonoCompile to specify whether generic
9708         compilation is shared.  Flags enum for marking which generic inst
9709         of a context is used.  Prototypes for helper functions.
9710
9711         * generic-sharing.c: Helper functions for generic method sharing.
9712
9713         * optflags-def.h: Optimization flag (gshared) for enabling generic
9714         method sharing added.
9715
9716         * Makefile.am: generic-sharing.c added.
9717
9718 2007-09-19 Daniel Nauck <dna@mono-project.de>
9719
9720         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
9721
9722 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
9723         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
9724         fixes bug 325507.
9725
9726 2007-09-19  Martin Baulig  <martin@ximian.com>
9727
9728         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
9729         mono_debug_cleanup() is now part of mono_cleanup().
9730
9731 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9732
9733         * driver.c (mono_main): Fix a warning.
9734
9735 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9736
9737         * aot-compiler.c: Optimize various parts when processing large assemblies.
9738         Fixes ##325568.
9739
9740         * mini.c (mono_patch_info_hash): Improve hash function.
9741
9742 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9743
9744         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
9745         
9746         Code is contributed under MIT/X11 license.
9747
9748 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9749
9750         * mini.c (mini_init): Fix a leak.
9751
9752         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
9753
9754 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9755
9756         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
9757
9758 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9759
9760         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
9761
9762 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9763
9764         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
9765         variance tests.
9766
9767         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
9768
9769         * mini.c (handle_alloc): Enable managed allocators in AOT code.
9770
9771         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
9772
9773         * aot-runtime.c (decode_patch_info): Ditto.
9774
9775 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9776
9777         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
9778         static case. Cache delegates in architecture specific code, 
9779         based on number of parameters.
9780         
9781         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
9782         in architecture specific code, based on number of parameters.
9783         
9784         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
9785         caching happen in architecture specific code now.
9786         
9787         Code is contributed under MIT/X11 license.
9788
9789 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9790
9791         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
9792         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
9793         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
9794
9795         Code is contributed under MIT/X11 license.
9796
9797 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9798         * mini.c: (mono_thread_abort) Fixed bug #82416.
9799
9800 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9801
9802         * mini.: hook the new managed GC allocation feature into the JIT.
9803
9804 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9805
9806         * mini.c: implementation for the new runtime tls opcode.
9807
9808 2007-09-11  Martin Baulig  <martin@ximian.com>
9809
9810         * debug-debugger.h
9811         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
9812         `mono_method_inflated_offset'.
9813
9814 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
9815
9816         * driver.c mini.h mini.c: Add a new devel command line option for injecting
9817         async exceptions into a method.
9818
9819         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
9820         purpose of testing whenever the unwinder works at every instruction.
9821
9822 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9823
9824         * mini.c: check accessibility of method used in ldftn (fixes
9825         bug #82635).
9826
9827 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
9828
9829         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
9830
9831         * inssel.brg: Fix a warning.
9832
9833 2007-09-03  Martin Baulig  <martin@ximian.com>
9834
9835         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
9836         now takes the `main_method' as argument.
9837
9838 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
9839
9840         * cpu-sparc.md (endfilter): Add missing src1:i argument.
9841
9842 2007-08-30  Jonathan Chambers <joncham@gmail.com>
9843
9844         * driver.c: include the cil-coff.h header on Windows.
9845         
9846         Code is contributed under MIT/X11 license.
9847
9848 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9849
9850         * mini.c, driver.c: don't include the cil-coff.h header.
9851
9852 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9853
9854         * mini.c: flag places that needs fixes fo soft-float support.
9855
9856 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
9857
9858         * mini.h, inssel-float.brg: fix soft-float constant loads on big
9859         endian systems (partially from Dean Jenkins, bug #81924).
9860
9861 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9862
9863         * mini.c (check_linkdemand): Remove embedded reference object in
9864         call to LinkDemandSecurityException.
9865         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
9866         with an IntPtr instead of a reference object.
9867
9868 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9869
9870         * mini.c (handle_initobj): Handle alignment properly.
9871
9872         * inssel.brg (mini_emit_memset): Ditto. 
9873
9874         * inssel.brg (mini_emit_memcpy): Ditto. 
9875
9876         * inssel-sparc.brg: Ditto.              
9877
9878         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
9879
9880 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
9881
9882         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
9883         exceptions raised in unmanaged code. Fixes part of #82594.
9884
9885 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9886
9887         * mini.c (mono_method_to_ir), declsec.c
9888         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
9889
9890 2007-08-22  Martin Baulig  <martin@ximian.com>
9891
9892         * debug-mini.h
9893         (MonoDebuggerThreadInfo): New typedef.
9894         (mono_debugger_thread_table): New global variable.
9895         (mono_debugger_thread_created): New public function.
9896         (mono_debugger_thread_cleanup): New public function.
9897
9898         * debug-debugger.h
9899         (MonoDebuggerInfo):
9900         - removed `get_current_thread' and `lookup_assembly'.
9901         - removed `data_table'.
9902         - added `thread_table'.
9903
9904         * mini.c
9905         (mono_thread_start_cb): Call mono_debugger_thread_created().
9906         (mono_thread_attach_cb): Likewise.
9907         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
9908         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
9909         initial domain.
9910
9911         * driver.c (mono_main): Move mono_debug_init() up, before calling
9912         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
9913
9914 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9915
9916         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
9917         together when passing several arguments of type double (gives a small
9918         speedup and saves a few bytes of generated code).
9919
9920 2007-08-20  Jb Evain  <jbevain@novell.com>
9921
9922         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
9923
9924 2007-08-20  Jb Evain  <jbevain@novell.com>
9925
9926         * mini.c (mono_method_to_ir): throw MethodAccessException
9927         and FieldAccessException instead of InvalidProgramException.
9928
9929 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9930
9931         * mini.c: CoreCLR security checks.
9932
9933         * mini.h: Removed MonoSecurityMode (moved to
9934         metadata/security-manager.h) and mono_security_mode global var
9935         (replaced by set/get functions in security-manager.h).
9936
9937         * driver.c: Added "core-clr-test" security mode for testing.  Used
9938         set-function for setting security mode.
9939
9940 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9941
9942         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
9943         the new jit_info_table.
9944
9945         * driver.c: Test code for the new jit_info_table (enabled by the
9946         define MONO_JIT_INFO_TABLE_TEST).
9947
9948 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
9949
9950         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
9951         detection of call <REG> instruction sequence. Fixes build on freebsd.
9952
9953 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
9954
9955         * mini-exceptions.c: Fix a warning.
9956
9957 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9958
9959         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
9960         stack overflow handling code on amd64 too.
9961
9962         * mini-exceptions.c (mono_setup_altstack): Make this use 
9963         mono_thread_get_stack_bounds ().
9964
9965         * mini-x86.h: Disable sigaltstack on solaris x86.
9966
9967 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
9968
9969         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
9970
9971 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
9972
9973         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
9974
9975 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9976
9977         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
9978
9979         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
9980
9981 2007-08-03  Neale Ferguson <neale@sinenomine.net>
9982
9983         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
9984         due to alignment.
9985
9986 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9987
9988         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
9989         to be emitted (bug #82281).
9990
9991 2007-08-01  Martin Baulig  <martin@ximian.com>
9992
9993         Merged the `debugger-dublin' branch.
9994
9995         * debug-debugger.h (MonoDebuggerInfo):
9996         Removed the `old_*' compatibility entries.
9997         Added `debugger_version' and `data_table'.
9998         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
9999         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
10000
10001         * debug-mini.c
10002         (MiniDebugMethodBreakpointInfo): Add `address_list'.
10003         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
10004         instead of a `gconstpointer'.
10005         (mono_debugger_insert_method_breakpoint): Return a
10006         `MonoDebugMethodAddressList *'.
10007
10008 2007-06-28  Martin Baulig  <martin@ximian.com>
10009
10010         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10011
10012 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10013
10014         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
10015         __builtin_frame_address () since it is broken on older gcc versions.
10016
10017 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10018
10019         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
10020         on the stack overflow handling and made the managed stack overflows
10021         catchable in most cases using soft guard pages.
10022         * exceptions-x86.c: added code to restore the protection in the soft
10023         guard pages at the end of exception handling.
10024
10025 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10026
10027         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
10028
10029 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10030
10031         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
10032         exception handling.
10033
10034 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10035
10036         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
10037         signal handling support until it has been ported to the new mechanism.
10038         * mini.c: fixed stack overflow detection and use the new
10039         architecture code  to handle signals on the altstack.
10040
10041 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
10042
10043         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
10044         stack overflows on the alt stack.
10045
10046 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
10047
10048         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
10049         stack overflows on the alt stack.
10050
10051 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
10052
10053         * exceptions-ppc.c: cleanup preparing for altstack support.
10054
10055 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10056
10057         * exceptions-arm.c: cleanup preparing for altstack support.
10058
10059 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10060
10061         * mini.c (print_jit_stats): Output hazard pointer stats.
10062
10063 2007-07-26  Mark Probst  <mark.probst@gmail.com>
10064
10065         * driver.c, mini.c: Replaced security mode flags with a single
10066         enum variable.
10067
10068 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10069
10070         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
10071
10072 2007-07-25  Mark Probst  <mark.probst@gmail.com>
10073
10074         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
10075         (which doesn't do anything yet) for activating Core CLR
10076         (Silverlight) security.
10077
10078 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10079
10080         * mini-codegen.c: work around a possible gcc bug on arm.
10081
10082 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10083
10084         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
10085         message for platforms that don't support AOT compilation.
10086
10087 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10088
10089         * mini.h, mini.c, driver.c: temporary smcs hack.
10090
10091 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
10092
10093         * mini-arm.h, mini-arm.c: arm EABI fixes.
10094
10095 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10096
10097         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
10098         case.
10099
10100         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
10101         trampolines taking a method argument.
10102
10103         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
10104
10105         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
10106         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
10107
10108         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
10109         JIT compilation throws an exception. Fixes #82050.
10110
10111 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10112
10113         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
10114         with the MONO_EXCEPTION_ defines.
10115
10116 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
10117
10118         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
10119         #82117.
10120         
10121         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
10122         the cause of an assertion.
10123
10124 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
10125
10126         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
10127         removed.
10128
10129 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10130
10131         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
10132         assert. Should fix #82103.
10133
10134 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10135
10136         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
10137         here too. Fixes #82095.
10138
10139         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
10140         addresses.
10141
10142         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
10143
10144         * mini-amd64.h: Enable IMT for amd64.
10145         
10146         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
10147
10148 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
10149
10150         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
10151
10152 2007-07-12  Mark Probst  <mark.probst@gmail.com>
10153
10154         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
10155         as soon as check_linkdemand sets an exception_type.
10156
10157 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10158
10159         * mini-x86.c: fixed offsets for IMT call sequence.
10160         * mini-x86.h: enable IMT again.
10161
10162 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10163
10164         * trace.c (mono_trace_enter_method): Decode MonoType too.
10165
10166         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
10167
10168         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
10169
10170         * mini-amd64.c: Add preliminary IMT implementation.
10171         
10172 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10173
10174         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
10175         understand the new IMT-base interface invocation (thanks to
10176         Daniel Nauck for the report and the remote debugging session).
10177
10178 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10179
10180         * mini-x86.c: size and speed optimizations for the IMT bsearch.
10181
10182 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10183
10184         * Makefile.am (aotcheck): Make this actually use the AOTed code.
10185
10186 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
10187
10188         * mini-trampolines.c: implement AOT IMT support.
10189         * mini-x86.h: enable IMT support for wider testing.
10190
10191 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10192
10193         * inssel.brg (emit_imt_argument): Add aot support here.
10194
10195         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
10196
10197 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10198
10199         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
10200         of the IMT implementation, partially from massi, with my
10201         implementation of the bsearch sequence. Disabled by default until
10202         the AOT code is implemented.
10203
10204 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10205
10206         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
10207
10208         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
10209
10210 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10211
10212         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
10213         arch-independent IMT JIT code from Massimiliano
10214         Mantione (massi@ximian.com) with small cleanups from me.
10215
10216 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10217
10218         * Makefile.am: fix svn invocation to get the svn revision to be
10219         independent of the local language (build fix).
10220
10221 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10222
10223         * mini.c (inline_method): Reset cfg->exception_type if the
10224         inlining is aborted.  Fixes: 82049.
10225
10226 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
10227
10228         * mini.c: remove assert from exception handling code when exception_ptr
10229         is not set.
10230
10231 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10232
10233         * mini.c (mono_codegen): Add an assert.
10234
10235         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
10236         enter and leave code.
10237         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
10238
10239 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10240
10241         * mini-ppc.c: fixed memory corruption for localloc(0)
10242         (bug #81852).
10243
10244 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10245         
10246         * mini.c: Fix warnings.
10247
10248 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
10249
10250         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
10251         to emit better double->int conversions.
10252
10253 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10254
10255         * mini.c: the provided Min/Max optimizations are valid for unisgned
10256         ints.
10257
10258 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10259
10260         * 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
10261
10262 2007-06-28  Miguel de Icaza  <miguel@novell.com>
10263
10264         * mini.c (mono_running_on_valgrind): Add support for reporting the
10265         method and  its boundaries to valgrind.
10266
10267 2007-06-28  Martin Baulig  <martin@ximian.com>
10268
10269         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10270
10271 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
10272
10273         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
10274
10275         * generic.2.cs: Add new test case.
10276
10277 2007-06-25  Martin Baulig  <martin@ximian.com>
10278
10279         Merged the `debugger-dublin' branch.
10280
10281         * debug-mini.c
10282         (mono_debugger_insert_method_breakpoint): New public method.
10283         (mono_debugger_remove_method_breakpoint): Likewise.
10284         (mono_debugger_check_breakpoints): New static method.
10285         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
10286
10287         * debug-debugger.h (MonoDebuggerInfo):
10288         Renamed (to keep backward compatibility in the vtable):
10289         `insert_breakpoint' -> `old_insert_breakpoint'.
10290         `remove_breakpoint' -> `old_remove_breakpoint'.
10291         `create_string' -> `old_create_string'.
10292         `lookup_class' -> `old_lookup_class'.
10293         `lookup_type' -> removed; changed into a dummy field.
10294         `lookup_assembly' -> `old_lookup_assembly'.
10295         Added (same functionality, but different signature):
10296         `create_string', `lookup_class', `lookup_assembly'
10297         Added new:
10298         `get_method_addr_or_bpt', `remove_method_breakpoint',
10299         `runtime_class_init'.
10300
10301         * debug-debugger.c: Merged the `debugger-dublin' branch.
10302
10303 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
10306         well.
10307         (peephole_pass): Likewise.
10308
10309 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10310
10311         * driver.c: hopefully make setaffinity work also for ancient
10312         versions of linux.
10313
10314 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
10315
10316         * driver.c : win32 build fix.
10317
10318 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10319
10320         * driver.c: check for the MONO_NO_SMP env var and bind to a single
10321         processor if it is set.
10322
10323 2007-06-21  Martin Baulig  <martin@ximian.com>
10324
10325         * debug-mini.h: New file.
10326
10327         * debug-mini.c
10328         (mono_debugger_insert_breakpoint_full): Moved here from
10329         ../metadata/mono-debug-debugger.c.
10330         (mono_debugger_remove_breakpoint): Likewise.
10331         (mono_debugger_breakpoint_callback): Likewise.
10332
10333 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10334
10335         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10336         changes in MonoGenericClass.
10337
10338 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
10339
10340         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
10341
10342 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10343
10344         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10345         removal of MonoGenericMethod.
10346
10347 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10348
10349         * mini-exceptions.c: hooks for the exception events profiling API.
10350
10351 2007-06-14  Randolph Chung  <tausq@debian.org>
10352
10353         * Makefile.ma: Add hppa target.
10354         * mini-arch.h: Include mini-hppa.h
10355         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
10356         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
10357         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10358
10359 2007-06-14  Randolph Chung  <tausq@debian.org>
10360
10361         * inssel.brg: Add rules for "chained" compare-branch operations so that
10362         a single compare op can affect multiple branches.  Adjust cost for
10363         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
10364         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
10365         cost for some rules so that they can more easily be overridden by
10366         per-arch rules (with fixes from lupus).
10367         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10368
10369 2007-06-13  Randolph Chung  <tausq@debian.org>
10370
10371         * mini-ops.h: Reorder branch ops so that they match the order of the
10372         corresponding CEE_* ops.  The code expects them this way.
10373         Add new ops for HPPA target.
10374         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10375
10376 2007-06-13  Randolph Chung  <tausq@debian.org>
10377
10378         * mini-exceptions.c: Handle cases where the stack grows towards
10379         larger addresses.
10380         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10381
10382 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10383
10384         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
10385         counter.
10386         * driver.c: explain where a non-matching corlib is found.
10387
10388 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10389
10390         * mini.c (print_jit_stats): Output dynamic code allocation stats.
10391
10392 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
10393
10394         * mini-exceptions.c: Generate a method profile leave event during
10395         an exception to ensure that the profiler gets notified.
10396
10397 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
10398
10399         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
10400         branch.
10401
10402         * cpu-amd64.md: Add long_and/or/xor opcodes.
10403
10404 2007-06-06  Wade Berrier  <wberrier@novell.com>
10405
10406         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
10407         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
10408         length of instruction shr_imm (expected 8, got 10)
10409
10410 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
10411
10412         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
10413
10414 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10415
10416         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10417         MonoInternalHashTable again (fixed bug in the internal hash table
10418         code).
10419
10420 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10421
10422         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
10423         Have to figure out what makes it crash the SWF regression.
10424
10425 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
10426
10427         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
10428
10429 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10430
10431         * mini.c: optimize out the type check when storing null in a
10432         reference array.
10433
10434 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10435
10436         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10437         MonoInternalHashTable.
10438
10439 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10440
10441         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
10442         signed integer methods.
10443
10444 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10445
10446         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
10447         permanently since the current approach doesn't work.
10448
10449 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10450
10451         * inssel.brg (stmt): Only call delegate->invoke_impl if 
10452         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
10453
10454 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10455
10456         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
10457         the sreg2==rdx case.
10458         
10459         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
10460         account if it contains a rex prefix.
10461         (peephole_pass): Handle OP_FMOVE as well.
10462
10463 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10464
10465         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
10466         as it causes regressions.
10467
10468 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10469
10470         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
10471         static case as well.
10472
10473         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
10474
10475         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10476         (mono_arch_get_this_arg_from_call): Ditto.
10477
10478         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
10479
10480         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
10481         invoke_impl field.
10482
10483         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10484         (mono_arch_get_this_arg_from_call): Ditto.
10485
10486         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
10487         
10488         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
10489         try to create optimized invoke code and use that for further invocations. 
10490         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
10491
10492         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
10493
10494 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
10495
10496         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
10497         sealed classes or methods.
10498         *devirtualization.cs: tests for the new optimization
10499
10500 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
10501
10502         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
10503         by the update_volatile () function.
10504
10505 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
10506
10507         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
10508         require it.
10509
10510         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
10511
10512 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10513
10514         * mini.c: Add configure checks for header files.
10515         * mini-x86.c: Add configure checks for header files.
10516         * trace.c: Add configure checks for header files.
10517         * aot-runtime.c: Add configure checks for header files.
10518         * aot-compiler.c: Add configure checks for header files.
10519         * driver.c: Add configure checks for header files.
10520         * mini-codegen.c: Add configure checks for header files.
10521         
10522         Code is contributed under MIT/X11 license.
10523
10524 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10525
10526         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
10527         icompare_imm -128 + op_iclt. Fixes #81703.
10528
10529 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
10530
10531         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
10532
10533 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10534
10535         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
10536         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
10537         so that all isinst checks now use "interface_bitmap".
10538
10539 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
10540
10541         * cpu-amd64.md (jmp): Fix a warning.
10542
10543         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
10544
10545         * basic.cs: Add new regression test.
10546
10547         * basic.cs: Remove test which is now in basic-long.cs.
10548
10549         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
10550
10551         * basic-long.cs: Add new test.
10552         
10553 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
10554
10555         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
10556
10557 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10558
10559         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
10560
10561         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
10562         places.
10563         
10564         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
10565         throwing code a bit.
10566
10567         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
10568         the exception throwing code a bit.
10569
10570         * mini-x86.c (get_call_info): Allocate result from a mempool.
10571
10572 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
10573
10574         * aot-compiler.c (find_typespec_for_class): Fix the assert.
10575
10576         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
10577
10578         * mini.h (MonoCompile): Add 'token_info_hash' field.
10579
10580         * mini.c: Save token->method associations during compilation so the AOT 
10581         compiler can use it.
10582         
10583         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
10584         which reference generic classes and methods.
10585
10586 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
10587
10588         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
10589
10590         * aot-compiler.c (compile_method): Fix a typo in a comment.
10591
10592         * aot-runtime.c (decode_cached_class_info): Skip generic types.
10593
10594         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
10595         everything generic.
10596
10597         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
10598
10599 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * mini.h (MonoCompile): Add 'args' field.
10602
10603         * mini.c (mono_compile_create_vars): Store variables representing the arguments
10604         into cfg->args.
10605
10606         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
10607
10608 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
10609
10610         * mini.c (mono_compile_get_interface_var): Remove this unused function.
10611
10612         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
10613
10614         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
10615         opcodes for some opcodes.
10616
10617         * mini.h *.brg *.c: Use the new opcodes.
10618
10619 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10620
10621         * mini.h: Bumped aot revision.
10622
10623         * inssel.brg: modified code generation of type checks for interfaces
10624         to use the new "MonoClass.interface_bitmap" instead of the old
10625         "MonoClass.interface_offsets".
10626
10627 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10628
10629         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
10630
10631 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
10632
10633         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
10634         64 bit platforms.
10635
10636 2007-04-27  Neale Ferguson <neale@sinenomine.net>
10637
10638         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
10639
10640 2007-04-27  Wade Berrier  <wberrier@novell.com>
10641
10642         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
10643         mini.h) to fix build.
10644
10645 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10646
10647         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
10648         
10649         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
10650         causes the corlib unit tests to fail.
10651
10652 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10653
10654         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
10655
10656         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
10657
10658         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
10659         opcodes to the comparison relations.
10660
10661         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
10662         opcodes to their types.
10663         
10664         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
10665
10666         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
10667         it in cfg->arch.cinfo.
10668
10669         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
10670
10671         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
10672         cfg->cil_offset_to_bb.
10673
10674 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10675
10676         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
10677         created becase of initlocals.
10678
10679 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
10680
10681         * mini-alpha.c cpu-alpha.md: More alpha port work from 
10682         Sergey Tikhonov <tsv@solvo.ru>.
10683
10684 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
10685
10686         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
10687
10688 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
10689
10690         * cpu-s390.md (break): Correct the length of break instruction.
10691
10692 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10693
10694         * mini.c: fix a couple of soft-float issues and comments.
10695
10696 2007-04-15  Miguel de Icaza  <miguel@novell.com>
10697
10698         * trace.c (is_filenamechar): - is also a filename char.
10699
10700 2007-04-15  Neale Ferguson <neale@sinenomine.net>
10701
10702         * mini-s390.c: Correct checking for enum type in return value processing.
10703
10704 2007-04-14  Raja R Harinath  <rharinath@novell.com>
10705
10706         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
10707         (version.h): Makefile is in the build directory.
10708
10709 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
10710
10711         * mini-amd64.h: fix for assertion failure on Solaris/amd64
10712
10713 2007-04-11  Martin Baulig  <martin@ximian.com>
10714
10715         * mini.c (can_access_member): Fix handling of generic classes;
10716         fixes #81259.
10717
10718 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
10719
10720         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
10721
10722 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
10723
10724         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
10725
10726 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10727
10728         * mini-codegen.c: make sure the right spill amount is
10729         used for fp or integer registers (fixes the float_sub_spill() on ppc).
10730
10731 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
10732
10733         * mini-ppc.c: fixes for the fp_branch_nan test.
10734
10735 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
10736
10737         * basic.cs: Comment out new test which still fails on ia64.
10738
10739 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10740
10741         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
10742
10743 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10744
10745         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
10746
10747 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
10748
10749         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
10750         on 64 bit machines. Fixes part of #80738.
10751
10752         * basic.cs: Add regression test.
10753
10754 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10755
10756         * inssel.brg basic.cs: Revert previous change to fix build.
10757
10758         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
10759         platforms.
10760         
10761         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
10762
10763         * basic.cs: Add new regression test.
10764
10765 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10766
10767         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
10768         many arguments.
10769
10770 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10771
10772         * cpu-s390x.md: Correct length of break instruction.
10773
10774 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10775
10776         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
10777         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
10778
10779 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
10780
10781         * *.c: Begin WIN64 port.
10782         * mini.c:  Use correct register in profiler.
10783         * mini-amd64.c: No inline assembly on Win64.
10784         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
10785         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
10786         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
10787         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
10788         mono_arch_ip_from_context for Win64.
10789         
10790         Contributed under MIT/X11 license.
10791
10792 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
10793
10794         * exceptions-amd64.c (seh_handler): Ditto.
10795
10796         * exceptions-x86.c (seh_handler): Fix a memory leak.
10797
10798 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
10799
10800         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
10801         mini-s390x.c: fixed peephole optimizations to deal
10802         correctly with 1 and 2 byte reload avoidance.
10803
10804 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
10805
10806         * cpu-s390.md, cpu-s390x.md: update localloc length.
10807
10808 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10809
10810         * cpu-g4.md: added missing descriptions.
10811
10812 2007-03-14  Miguel de Icaza  <miguel@novell.com>
10813
10814         *  Makefile.am: Add support so the tail tests are not executed on
10815         PowerPC as that is a known limitation of the PowerPC port.
10816
10817 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10818
10819         * runmdesc.bat:  Move to msvc directory.
10820         
10821 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10822
10823         * runmdesc.bat:  Run executable that was produced by the current
10824         target and sent via an argument.
10825         
10826 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
10827
10828         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
10829         #81102.
10830
10831         * generics.2.cs: Add regression test.
10832
10833 2007-03-09  Wade berrier  <wberrier@novell.com>
10834
10835         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
10836
10837 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
10838
10839         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
10840         AOT code depends on this.
10841
10842 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10843
10844         * mini.c: more precise tracking of types in the eval stack
10845         (part of fix for bug #81044).
10846
10847 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
10848
10849         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
10850
10851         * aot-compiler.c (encode_patch): Remove an obsolete comment.
10852
10853 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10854
10855         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
10856
10857         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
10858
10859 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
10860
10861         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
10862         a pointer on 64 bit systems. Fixes #80190.
10863
10864         * iltests.il: Add new regression test.
10865
10866 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10867
10868         * mini.c: inline a constant for Environment.IsRunningOnWindows.
10869
10870 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
10871
10872         * trace.c: Remove an erroneous alignemnt check when tracing.
10873           Fixes --trace on OSX86.
10874
10875 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10876
10877         * mini-$(arch).h: initialize SP in context for all the archs.
10878
10879 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
10880
10881         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
10882         regressions in the thread tests.
10883
10884 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
10885
10886         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
10887         - fixed implementation of LOCALLOC opcode
10888         - implemented non-un compare for floats
10889         - code cleanup
10890         - implementation of FDIV and CKFINITE opcodes
10891         - fixes for latest mono updates
10892         - additional arch opcodes
10893
10894 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10895
10896         * Makefile.am: simplify and merge rules for cross-compilation.
10897
10898 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
10899
10900         * local-propagation.c: Actually *apply* the fix for bug 80591...
10901
10902 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10903
10904         * mini-exceptions.c: backuot part of the last change
10905         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
10906
10907 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
10908         * inssel.brg: Fix bug 59286.
10909
10910
10911 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
10912
10913         * mini-exceptions.c: patch from Zoltan to correctly check for
10914         stack boundaries (using the stack register, not the frame register),
10915         fixes bugs #80724, #79717.
10916
10917 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
10918
10919         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
10920         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
10921
10922         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
10923         presence of frame pointer elimination.
10924
10925 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
10926         
10927         * mini-x86.h: NetBSD UCONTEX_REG defines.
10928
10929 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
10930
10931         * inssel-amd64.brg: Fix amd64 build.
10932
10933 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
10934
10935         * mini.h: remove extern to workaround what looks likes gcc bug 26905
10936         on amd64.
10937
10938 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
10939
10940         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
10941         ends.
10942
10943         * mini-<ARCH>.c: Use mono_is_regsize_var ().
10944
10945 2007-01-30 Mark Mason <mason@broadcom.com>
10946
10947            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
10948            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
10949            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
10950            beginning support for CEE_JMP [not quite working yet]
10951            * tramp-mips.c: LMF handling now works
10952         
10953 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
10954
10955         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
10956
10957         * mini.h (NULLIFY_INS): New macro.
10958
10959 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10960
10961         * mini.c: statistical profiler fix for windows, patch
10962         from Tor Lillqvist (tml@novell.com).
10963
10964 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
10965         * local-propagation.c: Fix bug 80591.
10966
10967 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10968
10969         * Makefile.am: put back the --export-dynamic option as with
10970         the previous gmodule flags (thanks to Robert Jordan).
10971
10972 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
10973
10974         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
10975
10976         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
10977         simplify and speed up the local register allocator. Also rename some fields
10978         like iassign->vassign.
10979         
10980         * regalloc.c: Remove some functions which are no longer used since their
10981         inlined version is in mini-codegen.c.
10982         
10983         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
10984
10985         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
10986
10987 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
10988
10989         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
10990         narrowing. Fixes #80622.
10991
10992         * iltests.il: Add new regresssion test. 
10993
10994 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10995
10996         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
10997         debug-debugger.c, debug-debugger.h: warning fixes.
10998         * driver.c: updated copyright year and made it fit in one line.
10999
11000 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
11001
11002         * aot-runtime.c: updated to use mono-dl instead of gmodule.
11003
11004 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
11005
11006         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
11007
11008         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
11009
11010         * iltests.il: Add new test for bug #80507.
11011
11012 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11013
11014         * mini-arm.h: use soft-float also on vfp for now.
11015
11016 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11017
11018         * mini.c: fix some more soft-float issues.
11019
11020 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11021
11022         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
11023
11024 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
11025         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
11026         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
11027         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
11028
11029 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
11030
11031         * mini-arm.c: typo fix.
11032
11033 2007-01-23  Neale Ferguson <neale@sinenomine.net>
11034
11035         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
11036
11037 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
11038
11039         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
11040         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
11041
11042         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
11043
11044         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
11045
11046         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
11047         
11048         * inssel.brg: Fix a warning.
11049
11050         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
11051
11052         * abcremoval.c ssa.c ssapre.c: Update after this change.
11053         
11054         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
11055
11056         * dominators.c (df_set): Use mono_bitset_union_fast.    
11057
11058 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11059
11060         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
11061         mini-codegen.c: reduce relocations and memory usage for the cpu
11062         description.
11063
11064 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
11065
11066         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
11067
11068         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
11069         to reduce their size.
11070
11071 2007-01-19 Mark Mason <mason@broadcom.com>
11072
11073         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
11074         * mini-mips.c: more configuration macros, support long conditional branches, additional
11075         asserts, fix epilog instrumentation.
11076         * mini-mips.h: use standard stack walk
11077         * cpu-mips.md: increase size of div, rem and conditional branches
11078         
11079 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
11080
11081         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
11082         to cpu spec data.
11083
11084 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
11085
11086         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
11087         (compile_method): Ditto.
11088
11089         * aot-runtime.c (decode_klass_info): Ditto.
11090
11091         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
11092         needed by the code generated by inssel.brg. Also fix a warning.
11093
11094 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
11095
11096         * mini.c: deal with enums that become genericinsts by
11097         being nested in a generic class (bug #79956).
11098
11099 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11100
11101         * mini.c: match the generic definition to check for
11102         private access with generic types (bug #78431).
11103
11104 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11105
11106         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
11107         to make life easier for people cross-compiling that insist on not
11108         using scratchbox.
11109
11110 2007-01-17 Mark Mason <mason@broadcom.com>
11111
11112         * inssel-long.brg: patch to deal with mips missing flags
11113         * inssel-long32-mips.brg: implement overflow checks
11114         * insset-mips.brg: implement overflow checks
11115         * mini-mips.h: implement conditional exception handling
11116         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
11117           Remove unused code, minor cleanups.
11118         * exceptions-mips.c: minor cleanups
11119         * mini-ops.h: add mips conditional exception ops
11120         * cpu-mips.md: add mips conditional exception ops
11121
11122         
11123 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11124
11125         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
11126         to deal with mips missing of flags.
11127
11128 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11129
11130         * exceptions-ppc.c: execute fault handlers.
11131
11132 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
11133
11134         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
11135
11136 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11137
11138         * mini.c: handle also floating point values in initialize_array.
11139
11140 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11141
11142         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
11143         array initialization and make it conditional on the intrins option.
11144
11145 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11146
11147         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
11148         relocations and put the patch info names close to the enum definition.
11149
11150 2007-01-15 Mark Mason <mason@broadcom.com>
11151
11152         * basic.cs, exceptions.cs: break up large tests to increase debugability.
11153
11154 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11155
11156         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
11157
11158 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11159
11160         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
11161
11162 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11163
11164         * Makefile.am: distribute the mips sources.
11165
11166 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11167
11168         * mini-codegen.h: handle bug #80489 here, by excluding ecx
11169         directly.
11170
11171 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
11172
11173         * cpu-x86.md: back out for now as this triggers other regressions.
11174
11175 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11176
11177         * cpu-x86.md: force src1 and dest regpair for long shift instructions
11178         to eax:edx, so ecx can't get allocated to them (bug #80489).
11179
11180 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
11181
11182         * mini.c, mini-exceptions.c: enabled running fault handlers
11183         (bug #80469).
11184
11185 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11186
11187         * driver.c: If nothing fail, do not use the string "failed",
11188         because it makes it very annoying to view test result logs on the
11189         web. 
11190
11191 2006-12-30  Miguel de Icaza  <miguel@novell.com>
11192
11193         * debug-debugger.c (mono_debugger_main): Rename "main" to
11194         "main_method" to prevent a warning.
11195
11196         Remove a warning for unused field.
11197
11198 2006-12-28  Martin Baulig  <martin@ximian.com>
11199
11200         * debug-debugger.c
11201         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
11202
11203 2006-12-22  Martin Baulig  <martin@ximian.com>
11204
11205         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
11206         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
11207         seperate `.mdb_debug_info' section, so we can access it from the
11208         debugger even if the binary is stripped.
11209
11210         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
11211         from the `.mdb_debug_info' here to prevent the linker from
11212         removing that section.
11213
11214         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
11215         mdb-debug-info64.s.
11216
11217 2006-12-19  Robert Jordan  <robertj@gmx.net>
11218
11219         * mini-x86: enable the code to return small structures in
11220         registers for FreeBSD as well. Fixes bug #80278.
11221         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
11222
11223 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11224
11225         * mini-x86.c: align the stack when calling the profiler
11226         function instrumenting the prolog (on OSX).
11227
11228 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11229
11230         * mini.c: emit a break opcode where Debugger.Break () is called.
11231
11232 2006-12-13  Miguel de Icaza  <miguel@novell.com>
11233
11234         * mini.c (mono_method_to_ir): Provide useful information on this
11235         assert, to prevent others from debugging like I did.
11236
11237 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11238
11239         * mini.c: enable code which was incorrectly commented
11240         (bug #80235).
11241
11242 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11243
11244         * mini-x86.c: enable on OSX, too, the code to return small
11245         structures in registers.
11246
11247 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11248
11249         * mini-x86.c: remove the use of the dynamic code manager here, too.
11250
11251 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11252
11253         * mini.h, debug-debugger.c, tramp-*.c: fixed 
11254         mono_debugger_create_notification_function() to use
11255         mono_global_codeman_reserve () instead of a dynamic code manager.
11256
11257 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11258
11259         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
11260         ves_array_element_address() jit icall and use a generated
11261         managed method instead (which is about 4 times faster for a rank 3
11262         array access).
11263
11264 2006-11-29  Mark Mason  <mason@broadcom.com>
11265
11266         * basic-calls.cs: additional tests for passing
11267         structures as function arguments.
11268
11269 2006-11-29  Mark Mason  <mason@broadcom.com>
11270
11271         * mini-mips.h: disable custom exception handling
11272         * mini-mips.c: throw/rethrow should use jalr to call
11273         exception stubs.  Fixed bug with passing structures
11274         by value. More support for tracing floating point
11275         functions.
11276
11277 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11278
11279         * mini.c: fixed typo in the soft-float ldind.r4 handling
11280         (bug #80086).
11281
11282 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11283
11284         * mini.c, mini.h, driver.c: added --runtime command line
11285         option to select a different runtime than the autodetected one.
11286         * jit.h: added API for embedders to initialize with a specific
11287         runtime version.
11288
11289 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11290
11291         * mini.c: handle also boxing of r4 values (bug #80024).
11292
11293 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11294
11295         * mini-ppc.c: force indirect calls until we reserve
11296         enough address space for all the generated code.
11297
11298 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
11299
11300         * exceptions-arm.c: workaround bugs in the libc definition
11301         of struct ucontext.
11302
11303 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11304
11305         * inssel.brg: fixes from me and Mark Mason.
11306
11307 2006-11-23  Dick Porter  <dick@ximian.com>
11308
11309         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
11310         semaphore display now we've fixed the initial value
11311
11312 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11313
11314         * inssel.brg: partially revert the last change to fix the build.
11315
11316 2006-11-21  Mark Mason  <mason@broadcom.com>
11317
11318         * inssel.brg: Add and use compare-and-branch macros to support
11319         architectures that do not have condition code registers (ie. MIPS).
11320         * *-mips.{c,brg,md}: Fix copyright statements
11321
11322 2006-11-20  Mark Mason  <mason@broadcom.com>
11323
11324         * Makefile.am: remove mini-codegen.c from list of MIPS sources
11325         * mini.c: Allow GET_CONTEXT to be specified by the arch port
11326         * mini.h: Added declaration for mono_print_ins()
11327         * mini-codegen.c: added ins_spec initializer for MIPS
11328         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
11329         vreg to be virtual and hreg to be non-virtual.
11330         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
11331         is not yet working/implemented correctly.
11332         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
11333         non-static, fixup calls to print_ins() from other parts in the file.
11334
11335 2006-11-20  Mark Mason  <mason@broadcom.com>
11336
11337         * basic-calls.cs: added tests for passing structures as arguments
11338         to calls.
11339
11340 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11341
11342         * inssel-long32.brg: optimize signed division by power of two.
11343
11344 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11345
11346         * mini-arm.c: added support for interworking with thumb code
11347         (mono must be still be built using the ARM instruction encoding).
11348
11349 2006-11-19  Miguel de Icaza  <miguel@novell.com>
11350
11351         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
11352         verifier has different rules for it.   Fixes a few verifier issues
11353         in the test suite.
11354
11355         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
11356         at the end, so people know what happened.
11357
11358 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11359
11360         * brach-opts.c: in optimize_exception_target() make sure we
11361         are in a catch clause (fixes bug #79871).
11362
11363 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11364
11365         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
11366         more soft-float support fixes.
11367
11368 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
11369
11370         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
11371         that are passed half on the stack and half in registers.
11372
11373 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
11374
11375         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
11376         more mips integration work from Mark E Mason 
11377         <mark.e.mason@broadcom.com>.
11378
11379 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11380
11381         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
11382         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
11383         tramp-mips.c: added sources for the mips port, not
11384         integrated in the build yet. Contributed by
11385         Mark E Mason <mark.e.mason@broadcom.com>.
11386
11387 2006-11-14  Neale Ferguson <neale@sinenomine.net>
11388
11389         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
11390
11391 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11392
11393         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
11394         put the soft-float rules in its own file since it seems to
11395         break s390 compilation.
11396
11397 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11398
11399         * mini-arm.c: fixed wrnings.
11400
11401 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
11402
11403         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
11404         inssel-arm.brg: ARM support for soft-float.
11405
11406 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11407
11408         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
11409         loads and stores of 32 bit fp values.
11410
11411 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
11412
11413         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
11414
11415         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
11416         works. Fixes #79852 and #79463.
11417
11418 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11419
11420         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
11421         more soft-float support WIP and fixes.
11422
11423 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
11424
11425         * mini-arm.c: some VFP updates.
11426
11427 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11428
11429         * mini-exceptions.c: 0 is a valid local var offset in some
11430         architectures, don't assert (bug #78508).
11431
11432 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
11433
11434         * exceptions-arm.c: fixed off by one error in stack walk code.
11435
11436 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
11437
11438         * mini.h, mini.c: more precise tracking of type load exceptions.
11439
11440 2006-11-03  Robert Jordan  <robertj@gmx.net>
11441
11442         * Makefile.am: [WIN32] Add monow.exe target.
11443         * driver.c: [WIN32] Don't detach the console when debugging.
11444         Fixes bug #79797.
11445         
11446 2006-10-30  Miguel de Icaza  <miguel@novell.com>
11447
11448         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
11449
11450 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11451
11452         * aot-compiler.c (emit_method_info): Add a case missed earlier.
11453
11454         * driver.c (mini_regression): Fix --regression with AOT.
11455
11456         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
11457
11458 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
11459
11460         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
11461
11462         * mini-sparc.h: Don't use sigaction on sparc/linux.
11463
11464         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
11465
11466         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
11467
11468         * mini-exceptions.c: Add proper include files for getpid ().
11469
11470 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
11471
11472         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
11473         address instead of a MonoJitInfo* to avoid decoding the exception info for the
11474         method.
11475
11476         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
11477         name cache to reduce its size.
11478
11479         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
11480
11481 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11482
11483         * mini-x86.c: Save/restore the current LMF structure more efficiently using
11484         the mono_lmf TLS variable.
11485
11486         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
11487         trampoline lmf frames.  
11488
11489         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
11490
11491 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
11492
11493         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
11494         the mono_lmf TLS variable.
11495
11496         * mini-exceptions.c: Access the LMF structure through accessors.
11497
11498         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
11499         variable instead of in jit_tls->lmf.
11500
11501         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
11502         
11503         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
11504         trampoline lmf frames.
11505
11506         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
11507
11508 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
11509
11510        * mini.c trace.c mini-x86.c: Revert these too.
11511         
11512        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
11513        signature change.
11514
11515 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
11516
11517         * genmdesc.c: removed now dead code.
11518
11519 2006-10-09  Robert Jordan <robertj@gmx.net>
11520
11521         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
11522
11523 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11524
11525         * mini.h: do not leave gaps in the opcode values.
11526
11527 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
11528
11529         * jit-icalls.h: flag functions as internal here, too.
11530
11531 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
11532
11533         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
11534         functions with the internal attribute.
11535
11536 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
11537
11538         * aot-compiler.c: fclose the file descriptor in the profile read loop.
11539
11540 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
11541
11542         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
11543         for soft-float.
11544
11545 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
11546
11547         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
11548         tail calls as on other platforms.
11549
11550         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
11551
11552         * iltests.il: Add a few tailcall tests.
11553
11554 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11555
11556         * driver.c: fix loop for old compilers (bug #79521).
11557
11558 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
11559
11560         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
11561
11562         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
11563
11564         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
11565         metadata without any code.
11566
11567         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
11568         more precise debugging information using gdb.
11569
11570 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
11571
11572         * inssel-ia64.brg: Make the helper methods static.
11573
11574 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11575
11576         * inssel-x86.brg: make the helper methods static.
11577
11578 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
11579
11580         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
11581
11582 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11583
11584         * mini.c: updates for monoburg changes.
11585         * inssel.brg: make a few helper functions static as they should.
11586
11587 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
11588
11589         * Makefile.am: Move mini-codegen.c to common_sources.
11590
11591 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11592
11593         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
11594         instructions.
11595         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
11596         mini-ppc.h: port to use the common local register allocator.
11597
11598 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11599
11600         * mini.h: Remove the comment too then.
11601
11602 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
11603
11604         * mini.h: put back backend.data which is to be used shortly and
11605         doesn't increase the size of MonoInst. If any 64 bit arch aligned
11606         pointers on 4 byte boundaries it'd have much bigger issues running
11607         and you can ifdef it out anyway.
11608
11609 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11610
11611         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
11612         MonoInst size by 4 bytes on 64 bit machines.
11613
11614 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11615
11616         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
11617         replacement with more meaningful field names. Arch maintainers, please
11618         check the assigned names are good enough for your arch.
11619
11620 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11621
11622         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
11623         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
11624
11625 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
11626
11627         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
11628         relocations and memory requirements, put the optimization flags
11629         definitions in their own file.
11630
11631 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
11632
11633         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
11634
11635         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
11636
11637 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
11638
11639         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
11640
11641 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
11642
11643         * inssel.brg: use the correct function to get the size of an item
11644         in an array, given an element class.
11645         * aot-compiler.c: do not access class->class_size directly.
11646
11647 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11648
11649         * mini.h, debug-mini.c: added a debugging function to print
11650         info about local variables and arguments in a jitted method.
11651
11652 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
11653
11654         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11655
11656         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
11657
11658 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11659
11660         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
11661         inner and outer loops when passing vtypes.
11662
11663 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
11664
11665         * mini-ppc.c: take into account the cpu errata for cache flushing
11666         which caused some random errors (bug #79381).
11667
11668 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11669
11670         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
11671         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
11672
11673 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
11674
11675         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
11676         loaded.
11677
11678         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
11679         freebsd ports tree.
11680
11681         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
11682         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
11683
11684         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
11685         displacement.
11686
11687 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
11688
11689         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
11690
11691 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
11692
11693         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
11694         macro does not have to be changed during debugging.
11695
11696         * 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>.
11697
11698         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
11699
11700         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
11701         
11702         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
11703         MONO_ARCH_NO_EMULATE_MUL is defined.
11704
11705         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
11706
11707         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
11708
11709         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
11710
11711         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
11712         
11713 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
11714
11715         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
11716         stuff to mini-exceptions.c where it is used.
11717
11718         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
11719         setup code, the real one is in mini-exceptions.c.
11720
11721         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
11722         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
11723         some changes from the freebsd ports tree.
11724
11725         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
11726         constants.
11727         
11728         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
11729
11730 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
11731
11732         * mini.c: on Linux, check for /proc to be mounted
11733         (bug# 79351, novell bug#201204).
11734
11735 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11736
11737         * mini.c: handle cases where pthread_attr_getstack() behaves
11738         incorrectly (bug #78096).
11739
11740 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
11741
11742         * mini-arm.c: support larger stack frames (bug #79272).
11743
11744 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
11745
11746         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
11747
11748         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
11749         tokens.
11750
11751         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
11752         mono_class_from_name () to find a class from its name.
11753
11754         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
11755
11756 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
11757
11758         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
11759
11760 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
11761
11762         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
11763
11764 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
11765
11766         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
11767         callinfo->trampoline.
11768
11769         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
11770         fixes #79271.
11771         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
11772         future.
11773
11774 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
11775
11776         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
11777
11778 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
11779
11780         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
11781         stats.method_trampolines, it is already done by the generic trampoline code.
11782
11783         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
11784         
11785 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
11786
11787         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
11788
11789         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
11790
11791         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
11792
11793         * mini.c (print_jit_stats): Print mscorlib mempool size too.
11794         
11795         * mini.c (print_jit_stats): Print new stats.
11796
11797         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11798
11799 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
11800
11801         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
11802         Address on two dimensional arrays. Fixes #78729.
11803
11804         * mini.h (MonoCompile): Add a 'skip_visibility' field.
11805
11806         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
11807         a method.
11808
11809         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
11810
11811         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
11812         #79130.
11813         
11814         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
11815         a race condition.
11816         (mini_get_ldelema_ins): Ditto.
11817
11818 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
11819
11820         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
11821         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
11822         Fixes #79213.
11823
11824 2006-08-29 Neale Ferguson <neale@sinenomine.net>
11825
11826         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
11827         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
11828
11829         * exceptions-s390x.c: Cosmetic change.
11830
11831         * tramp-s390.c: Fix warning.
11832
11833         * cpu-s390.md: Correct length of mul_imm.
11834
11835 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
11836
11837         * aot-compiler.c: added binary writer with ELF backend
11838         implementation (only on Linux/x86 for now).
11839
11840 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11841
11842         * Makefile.am: Don't run net 2.0 AOT tests.
11843
11844         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
11845         (mono_compile_assembly): Skip net 2.0 assemblies as well.
11846
11847         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
11848
11849 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11850
11851         * aot-compiler.c: simplified and refactored the asm-writing code
11852         to allow different backends.
11853
11854 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11855
11856         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11857
11858         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
11859         little. Share patches of type TYPE_FROM_HANDLE as well.
11860
11861         * mini.c (mono_patch_info_equal): New helper function.
11862         (mono_patch_info_hash): Ditto.
11863
11864         * aot-compiler.c (emit_method_code): Fix s390 build.
11865
11866         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
11867         is not handled because it is stored as a flag and not as a type ctor. Fixes
11868         #79016.
11869
11870 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
11871
11872         * aot-compiler.c: Fix computation of GOT slot statistics.
11873         
11874         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
11875         Also remove support for not PIC AOT.
11876
11877         * mini.h: Bump AOT file format version.
11878
11879         * objects.cs: Add a test for #78990.
11880
11881         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
11882         (peter.dettman@iinet.net.au). Fixes #79087.
11883
11884         * basic-long.cs: Add a test for the above.
11885
11886 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
11887
11888         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
11889         
11890         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
11891         code somewhat.
11892
11893 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
11894
11895         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
11896         exceptions.
11897
11898 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
11899
11900         * mini.c: Don't verify COM proxy invoke calls
11901         
11902
11903 2006-08-10  Dick Porter  <dick@ximian.com>
11904
11905         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
11906         which process is holding semaphores locked.
11907
11908 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
11909
11910         * mini-ia64.c mini-amd64.c: Fix #79027.
11911
11912         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
11913
11914         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
11915
11916         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
11917         implicit arguments in a vararg call. Fixes #79027.
11918
11919 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
11920
11921         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
11922         (mono_get_array_new_va_signature): Ditto.
11923
11924 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
11925
11926         * aot-runtime.c: Call init_plt lazily.
11927
11928         * inssel-long.brg: Fix unsigned long->int conversion.
11929
11930         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
11931
11932         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
11933         that most data is now in the .rss/.data section.
11934
11935 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
11936
11937         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
11938
11939         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
11940
11941         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
11942
11943         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
11944
11945         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
11946         virtual call. Fixes #79010.
11947
11948         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
11949         and use the result as the this argument in the real call.
11950
11951         * generics.2.cs: Add a new test for #79010.
11952         
11953 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
11954
11955         * mini-x86.c: Fix a warning.
11956
11957         * aot-compiler.c: Add a bunch of statistics.
11958
11959         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
11960
11961 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
11962
11963         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
11964
11965 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
11966
11967         * 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>.
11968
11969 2006-07-13  Miguel de Icaza  <miguel@novell.com>
11970
11971         * mini.c (mono_method_to_ir): Obtain the original method in the
11972         CIL stream and use this to perform validation.
11973
11974         Fixed: #78816
11975
11976 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
11977
11978         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
11979         (mono_arch_call_opcode): Ditto.
11980
11981         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
11982         #78826.
11983
11984         * mini.c (mono_patch_info_dup_mp): New helper function.
11985         
11986         * aot-compiler.c (compile_method): Fix some of the memory allocated during
11987         compilation. Fixes #78827.
11988
11989 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
11990
11991         * declsec.c: Use original security informations for
11992           MONO_WRAPPER_MANAGED_TO_MANAGED.
11993
11994 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
11995
11996         * mini.c: Allow Com Interop methods/classes and
11997         don't verify COM wrapper calls
11998         
11999
12000 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
12001
12002         * inssel-long32.brg: Fix long->i4 checked conversion.
12003
12004         * exceptions.cs: Add a test for the above.
12005
12006 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12007
12008         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
12009
12010         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
12011         leaks.
12012
12013         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
12014         #78775.
12015
12016 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
12017
12018         * mini.c: Fix solaris/x86 exception handling.
12019
12020         * Makefile.am: Get rid of $(ICU_LIBS).
12021
12022 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
12023
12024         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
12025         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
12026         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
12027
12028         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
12029
12030         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
12031         this function causes a SIGSEGV.
12032
12033 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
12034
12035         * mini.c: Remove unused solaris/x86 includes.
12036
12037 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12038
12039         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
12040
12041 2006-06-20  Jb Evain  <jbevain@gmail.com>
12042
12043         * cpu-g4.md: fix max length of start_handler instruction.
12044
12045 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
12046         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
12047
12048 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
12049         * ssa.c: Fixed bug 78653 for SSA based deadce.
12050         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
12051         MonoInst.flags, used in SSA based deadce.
12052         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
12053         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
12054
12055 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12056
12057         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
12058         it can end up using non executable memory on ppc64 systems
12059         running ppc32 userspace (fix from Johannes Berg).
12060
12061 2006-06-14  Dick Porter  <dick@ximian.com>
12062
12063         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
12064         4.1.1
12065
12066 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
12067         * mini.c: Made so that inline is locally disabled if it would
12068         trigger a .cctor, because too many apps depend on this behavior
12069         (which seems to be also the one of the MS CLR).
12070
12071 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
12072
12073         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
12074         No idea why this worked before.
12075
12076         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
12077         which branch to outer exception clauses since they could skip the
12078         inner finally clauses. Fixes #78633.
12079
12080         * exceptions.cs: Add a test for the above.
12081
12082         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
12083         Fixes #78629.
12084
12085         * iltests.il: Add a test for the above.
12086
12087 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
12088
12089         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
12090         after the end of a try bblock, to prevent asserts in mini_method_compile ().
12091
12092         * iltests.il: Add a test for the above.
12093
12094 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
12095
12096         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
12097         
12098         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
12099         methods as instrinsics.
12100
12101 2006-06-09  Wade Berrier <wberrier@novell.com>
12102
12103         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
12104         (simple-cee-ops.h ssapre-mini-ops.h)
12105
12106 2006-06-09  Neale Ferguson <neale@sinenomine.net>
12107
12108         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
12109         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
12110         instruction).
12111         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
12112         * cpu-s390x.md: Fix max. length values for a couple of instructions.
12113
12114 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12115
12116         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
12117
12118 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
12119
12120         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
12121         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
12122         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
12123         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
12124         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
12125         of opcodes, so that bug 78549 should not happen again.
12126         * ssapre.c: Updated to use the renamed files.
12127
12128 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12129
12130         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
12131         in OP_ATOMIC_EXCHANGE_I4.
12132
12133 2006-06-07  Wade Berrier <wberrier@novell.com>
12134
12135         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
12136         in mono_debugger_create_notification_function)
12137
12138 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
12139
12140         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
12141         
12142         * mini.c (type_from_stack_type): Disable some changes which do not
12143         seem to work.
12144
12145         * driver.c: Reenable opts.
12146
12147         * mini.h (MonoStackSlot): New structure to keep track of the verification state
12148         of the evaluation stack.
12149         
12150         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
12151         evaluation stack trace at entry to the bblock.
12152
12153         * mini.c (merge_stacks): New function to perform verification of stack merges.
12154         Turned off by default.
12155
12156         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
12157         STACK_MP.
12158         
12159 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
12160
12161         * local-propagation.c: Fixed bug 78549.
12162
12163 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
12164
12165         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
12166
12167 2006-06-02  Miguel de Icaza  <miguel@novell.com>
12168
12169         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
12170         tramp-arm.c, tramp-ia64.c
12171         (mono_debugger_create_notification_function): Update signature to
12172         new signature and use new protocol for creating the notification
12173         function.  
12174
12175         Should fix the build.
12176
12177 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
12178
12179         * exceptions-ppc.c (mono_jit_walk_stack)
12180         (ves_icall_get_frame_info): Fix the build
12181
12182 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12183
12184         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
12185
12186 2006-05-31  Raja R Harinath  <rharinath@novell.com>
12187
12188         * il2tests.2.il: New file for generics CIL tests.  Add test for
12189         #78019.
12190         * Makefile.am: Update.
12191
12192         Fix #78019
12193         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
12194         to nullable types.
12195
12196 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
12197
12198         * aliasing.c: Fixed bug 78311.
12199
12200 2006-05-29  Martin Baulig  <martin@ximian.com>
12201
12202         * mini-exceptions.c (mono_find_jit_info): When computing the
12203         native offset, check whether we're actually inside the method's
12204         code; call mono_debug_print_stack_frame() to format the frame.
12205         (ves_icall_System_Exception_get_trace): Call
12206         mono_debug_print_stack_frame() to format the stack frame.
12207         (ves_icall_get_trace): Update to the new debugging API.
12208         (mono_jit_walk_stack_from_ctx): Likewise.
12209         (ves_icall_get_frame_info): Likewise.
12210
12211         * mini.c (get_method_from_ip): Use the new debugging API.
12212         (mono_print_method_from_ip): Likewise.
12213
12214         * exceptions-ppc.c
12215         (mono_jit_walk_stack): Use the new debugging API.
12216         (ves_icall_get_frame_info): Likewise.   
12217
12218 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12219
12220         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
12221
12222 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
12223
12224         * mini.c: Added "limitator" to inline for debugging.
12225
12226 2006-05-24  Martin Baulig  <martin@ximian.com>
12227
12228         * debug-debugger.c (mono_debugger_init): Create a private,
12229         malloc()-based code manager for the notification function and
12230         intentionally leak it on exit.  This fixes the crash-on-exit race
12231         condition.
12232
12233         * tramp-amd64.c
12234         (mono_debugger_create_notification_function): Added
12235         `MonoCodeManager *' argument.
12236
12237         * tramp-x86.c
12238         (mono_debugger_create_notification_function): Added
12239         `MonoCodeManager *' argument.
12240
12241 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
12242
12243         * aliasing.c: Fixed 64 bit issue.
12244         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12245         default since all known bugs are fixed (one more time!).
12246
12247 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12248
12249         * mini.c: write barrier support.
12250
12251 2006-05-23  Martin Baulig  <martin@ximian.com>
12252
12253         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
12254         check at the top of the file.
12255
12256 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12257
12258         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
12259         reverting changes without reason and without changelog entries.
12260
12261 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12262
12263         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
12264         to a few opcodes. Fixes #78439.
12265
12266         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
12267         consistency with other archs.
12268
12269         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
12270
12271 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12272
12273         * debug-debugger.c: fix the build.
12274
12275 2006-05-17  Martin Baulig  <martin@ximian.com>
12276
12277         * debug-debugger.c
12278         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
12279         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
12280         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
12281         (debugger_attach): Call GC_mono_debugger_add_all_threads().
12282
12283 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
12284
12285         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
12286
12287 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
12288
12289         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
12290         MONO_TYPE_GENERICINST.
12291         
12292         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
12293         MONO_TYPE_GENERICINST.
12294
12295 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
12296
12297         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
12298         #78325.
12299
12300 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
12301
12302         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
12303         mempool.
12304         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
12305
12306 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
12307
12308         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
12309         mono_trace_cleanup ().
12310
12311         * iltests.il: Fix problem with the newly added test.
12312
12313         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
12314         due to register constraints, free up the previous hreg. Fixes #78314.
12315
12316         * iltests.il: Add new test for #78314.  
12317
12318         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
12319         Interlocked.Add. Fixes #78312.
12320
12321         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
12322         
12323 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
12324
12325         * inssel.brg (mini_emit_virtual_call): Fix a warning.
12326
12327 2006-05-05  Martin Baulig  <martin@ximian.com>
12328
12329         * debug-mini.c (mono_debug_open_block): New method.
12330
12331         * mini-amd64.c
12332         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12333         the beginning of each basic block.
12334
12335         * mini-x86.c
12336         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12337         the beginning of each basic block.
12338
12339 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12340
12341         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12342         default until I understand why they break the build on amd64.
12343
12344 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
12345
12346         * mini.c (mini_cleanup): Call mono_cleanup ().
12347
12348         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
12349         errors.
12350
12351 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12352
12353         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
12354         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12355         default since all known bugs are fixed, and I cannot reproduce bug
12356         77944... I'm asking Matt Hargett to test again after this commit.
12357
12358 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
12359
12360         * mini-codegen.c: Fixed typo that thrashed inline.
12361
12362 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
12363
12364         * dominators.c (compute_dominators): Avoid using a worklist since
12365         it is not correct in some cases. Instead, iterate over all bblocks as
12366         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
12367
12368 2006-04-28  Miguel de Icaza  <miguel@novell.com>
12369
12370         * mini.c (mono_jit_compile_method_inner): Use
12371         mono_prepare_exception_from_error that resets the value
12372         internally.
12373
12374 2006-04-27  Miguel de Icaza  <miguel@novell.com>
12375
12376         * mini.c: Move the mini_loader_error_to_exception to metadata. 
12377         
12378 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12379
12380         * aliasing.c: Fixed bug 78210.
12381
12382 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12383
12384         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12385         default until all their problems (or the ones they trigger) are fixed.
12386
12387 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
12388
12389         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
12390         
12391         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
12392         as loaded only after resolving patches since that could invoke the same method.
12393
12394         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
12395
12396         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
12397         functions.
12398
12399         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
12400         AOT loader.
12401
12402         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
12403         stack.
12404
12405         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
12406         made from AOT code through the PLT table.
12407
12408         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
12409         holding the plt offset when a call is made to the aot plt trampoline.
12410         
12411 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12412
12413         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
12414         amd64 AOT support.
12415
12416         * Makefile.am (common_sources): Fix build breakage.
12417
12418         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
12419         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
12420         intra-assembly calls if possible.
12421         
12422         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
12423
12424         * mini-trampolines.c: Handle PLT entries.
12425
12426         * mini.c: Avoid creating a GOT var for calls.
12427
12428         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
12429         from mscorlib code.
12430
12431         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
12432         from mscorlib code.
12433
12434         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
12435         AOT code.       
12436
12437         * mini.h: Bump AOT file format version.
12438         
12439         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
12440         covers more cases.
12441
12442 2006-04-25  Martin Baulig  <martin@ximian.com>
12443
12444         * driver.c: Disable copyprop, consprop and inline when running
12445         inside the debugger.
12446
12447 2006-04-25  Martin Baulig  <martin@ximian.com>
12448
12449         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
12450         with `get_current_thread' and added `detach'.
12451         (MonoDebuggerMetadataInfo): Added `thread_size',
12452         `thread_tid_offset', `thread_stack_ptr_offset' and
12453         `thread_end_stack_offset'.
12454
12455 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12456
12457         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
12458         aot-runtime.c.
12459
12460         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
12461         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
12462
12463         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
12464
12465         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
12466
12467         * aot.c: Add support for ADJUSTED_IID.  
12468
12469 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
12470
12471         * aot.c (emit_method_order): Don't align method_order_end.
12472
12473         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
12474         the interface ID changes.
12475
12476 2006-04-21  Dick Porter  <dick@ximian.com>
12477
12478         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
12479         cleaning up a thread.  Fixes the new part of bug 77470.
12480
12481 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
12482
12483         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
12484         to managed wrapper.
12485                      
12486 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
12487
12488         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
12489         
12490         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
12491         SIGSEGV. Fixes #78072.
12492
12493         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
12494         unregister our SIGABRT handler.
12495
12496 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
12497
12498         * mini.c: Disabled inline where it can alter the call stack in a
12499         way visible from managed code.
12500         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
12501         default.
12502
12503 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
12504
12505         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
12506         on other platforms. Fixes #78089.
12507
12508 2006-04-13  Martin Baulig  <martin@ximian.com>
12509
12510         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
12511         determine whether we're inside the debugger.
12512
12513         * debug-debugger.h
12514         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
12515
12516 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
12517
12518         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
12519         handler clauses. Fixes #78024.
12520
12521         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
12522         in the CALL_MEMBASE opcodes. Fixes #78088.
12523         (mono_arch_get_vcall_slot_addr): Ditto.
12524
12525 2006-04-10  Martin Baulig  <martin@ximian.com>
12526
12527         * debug-debugger.c: The thread handling code has now been moved
12528         into ../metadata/threads.c.
12529
12530 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12531
12532         * driver.c (mono_main): Fix --with-gc=none build.
12533
12534         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
12535         (mono_spillvar_offset_float): Ditto.
12536         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
12537         hreg, not when its !global, since on ia64, there is a third category: stacked
12538         registers.      
12539
12540 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
12541
12542         * mini.c: set MonoInst->klass for load field address and a few other
12543         places.
12544
12545 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12546
12547         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
12548
12549 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
12550
12551         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
12552         the branch opt changes.
12553
12554 2006-04-06  Dick Porter  <dick@ximian.com>
12555
12556         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
12557         
12558         * wapihandles.c (mini_wapi_seminfo): 
12559         * driver.c (mono_main): Add semaphore info option
12560
12561 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
12562
12563         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
12564         branch optimization changes. Fixes #78009.
12565
12566 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12567
12568         * mini.c: ignore accessibility of methods in managed->native wrappers.
12569
12570 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
12571
12572         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
12573         
12574         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
12575
12576 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
12577
12578         * mini.c: Modify the branch optimizations to preserve the invariant that
12579         the entries inside the in_bb and out_bb arrays are unique.
12580         (mono_unlink_bblock): Avoid creation of new arrays.
12581
12582 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
12583
12584         * mini.c (mono_unlink_bblock): Fix regression caused by previous
12585         change (#77992).
12586
12587 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
12588
12589         * mini.c (optimize_branches): Remove the "optimizations" in
12590         the cbranch1/cbranch2 -> branch cases which were causing several
12591         problems in the past. Fixes #77986.
12592
12593 2006-03-31  Chris Toshok  <toshok@ximian.com>
12594
12595         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
12596         default optimizations :(
12597
12598 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
12599
12600         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
12601         branch.
12602
12603 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
12604
12605         * local-propagation.c: Added comments to structs and removed
12606         "Mono" prefixes from local tree mover types.
12607
12608 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
12609
12610         * Makefile.am (arch_sources): Define this for each architecture so 
12611         libmono_la_SOURCES is defined in one place.
12612
12613 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
12614
12615         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
12616         from handles/.
12617
12618 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
12619
12620         * driver.c: print the GC name supplied by configure.
12621
12622 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
12623
12624         * local-propagation.c: Added tree mover, and moved here all the
12625         local propagation code from mini.c
12626         * mini.c: Added support for treeprop, and moved all the local
12627         propagation code to local-propagation.c
12628         * mini.h: Added support for treeprop
12629         * driver.c: Added support for treeprop, enabled consprop, copyprop,
12630         treeprop, inline and deadce by default
12631         * Makefile.am: Added local-propagation.c
12632
12633 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
12634
12635         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
12636
12637 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
12638
12639         * debug-debugger.c: make it compile without the Boehm GC.
12640
12641 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12642
12643         * mini.c: fixed issue with mismatch when an icall is registered
12644         with multiple names but same address.
12645
12646 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12647
12648         * declsec.c, mini-exceptions.c: use write barrier to set reference
12649         fields of managed objects.
12650
12651 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12652
12653         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
12654         (can_access_internals): Fix a warning.
12655
12656         * mini.c (print_method_from_ip): Rename this to 
12657         mono_print_method_from_ip so it gets exported.
12658
12659         * trace.c: Deal with strings inside StringBuilder's containing garbage
12660         and fix memory leaks. Fixes #77848.
12661
12662 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12663
12664         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
12665         fixes #77787.
12666
12667 2006-03-16 Neale Ferguson <neale@sinenomine.net>
12668         
12669         * mini-s390.c: Remove OP_X86_TEST_NULL.
12670
12671 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12672
12673         * mini.c: use the correct GetHashCode() for the moving collector.
12674
12675 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
12676
12677         * liveness.c: Regalloc spill cost tuning.
12678
12679 2006-03-15 Neale Ferguson <neale@sinenomine.net>
12680         
12681         * mini-s390x.h: Correct S390_LONG macro.
12682
12683         * mini-s390x.c: Cleanup unused code.
12684
12685 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
12686
12687         * jit-icalls.h: New file.
12688
12689         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
12690         icalls and include that instead of including jit-icalls.c.
12691
12692         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
12693         OP_X86 opcodes.
12694
12695 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
12696
12697         * mini.c: when checking for member accessibility, also check for
12698         friend assemblies and for explicit interface implementations.
12699
12700 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
12701
12702         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
12703
12704         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
12705
12706         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12707         common cases are done first.    
12708
12709         * mini-ops.h: Only define platform specific opcodes on the given platform.
12710
12711         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
12712         branch.
12713         
12714 2006-03-14  Martin Baulig  <martin@ximian.com>
12715
12716         Revert Paolo's change from r57348:
12717
12718         * mini.h: don't use gboolean for bitfields.
12719         * mini.c: verifier changes for fields and methods accessibility.
12720
12721 2006-03-13  Neale Ferguson <neale@sinenomine.net>
12722
12723         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
12724
12725         * mini-s390x.c: Fix conv_r_un.
12726
12727         * cpu-s390, cpu-s390x.md: Fix lengths.
12728
12729 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
12730
12731         * mini.c: nested types have access to all the nesting
12732         levels, not just the enclosing types.
12733
12734 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12735
12736         * mini.c: added a few more verification checks.
12737
12738 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
12739
12740         * liveness.c: Merge optimizations from the linear-il branch.
12741
12742 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12743
12744         * mini-ia64.c (emit_call): Add a comment.
12745
12746         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
12747
12748         * tramp-ia64.c: Fix some warnings.
12749
12750 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
12751
12752         * mini.h: don't use gboolean for bitfields.
12753         * mini.c: verifier changes for fields and methods accessibility.
12754
12755 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
12758         lazy icall wrapper changes.
12759
12760         * dominators.c: Replace all the dominator algorithms with faster
12761         ones from the linear-il branch.
12762
12763         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
12764         the mempool.
12765
12766         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12767         common cases are done first.
12768
12769         * mini-amd64.c: Fix some warnings.
12770
12771         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
12772         from the mempool.
12773
12774         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
12775         added code.
12776
12777         * mini.h: Add a missing prototype.
12778
12779 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
12780
12781         * mini.c: Compile icall wrappers lazily.
12782
12783         * mini-codegen.c: Use printf instead of g_print since its much faster.
12784
12785         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
12786         function.
12787
12788         * mini.c (optimize_branches): Cache the negative result from 
12789         remove_block_if_useless ().
12790
12791         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
12792         Also fix some bblock linking issues.
12793
12794         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
12795         assembly files.
12796
12797         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
12798
12799         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
12800         accessed fields first, for better cache behavior.
12801         
12802 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12803
12804         * mini.c: speedup IList<T> array accesses.
12805
12806 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
12807
12808         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
12809         inline_costs counter. Fixes #77190.
12810
12811 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
12812
12813         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
12814         trace messages. Fixes #77706.
12815
12816 2006-03-04  Martin Baulig  <martin@ximian.com>
12817
12818         * tramp-amd64.c, tramp-x86.c
12819         (mono_debugger_create_notification_function): Use
12820         mono_global_codeman_reserve() to allocate a buffer at runtime and
12821         return it.
12822
12823         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
12824
12825         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
12826         notification function at runtime and then call `initialize' in the
12827         `MONO_DEBUGGER__debugger_info' vtable.
12828
12829 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
12830
12831         * iltests.il: Fix a visibility problem.
12832
12833 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12834
12835         * driver.c, mini.c: add hooks for the counters API.
12836
12837 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12838
12839         * driver.c: show disabled options.
12840
12841 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12842
12843         * linear-scan.c: always use cost-driven selection.
12844
12845 2006-02-28  Raja R Harinath  <rharinath@novell.com>
12846
12847         * jit-icalls.c (helper_compile_generic_method): Revert change from
12848         2006-02-24.
12849
12850 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
12851
12852         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
12853
12854 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
12855
12856         * inssel.brg: style fixes, mostly to force the updated monoburg
12857         to run for people using svn.
12858
12859 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12860
12861         * mini.c: match monoburg changes.
12862
12863 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12864
12865         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
12866         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
12867         declaration in the header file.
12868
12869 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12870
12871         * helpers.c: reduce relocations and mem usage.
12872
12873 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12874
12875         * mini.h, mini-codegen.c: disable logging features if
12876         requested by configure.
12877
12878 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
12879
12880         * mini.c: tiny verifier changes.
12881
12882 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12883
12884         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
12885         cpu-pentium.md: stack alignment changes for osx/x86,
12886         partially from Geoff Norton <gnorton@customerdna.com>.
12887
12888 2006-02-24  Raja R Harinath  <harinath@gmail.com>
12889
12890         * jit-icalls.c (helper_compile_generic_method): Update to changes
12891         in metadata/class.c.
12892
12893 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
12894         
12895         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
12896         
12897         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
12898         interface calls with large offsets.
12899
12900 2006-02-23  Raja R Harinath  <rharinath@novell.com>
12901
12902         * jit-icalls.c (helper_compile_generic_method): Document the
12903         special-case we depend on so that we can inflate the method twice
12904         with the same context with no bad side-effects.
12905
12906 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12907
12908         * mini-x86.c, mini-amd64.c: fix for case when xen support
12909         is disabled.
12910
12911 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
12912
12913         * mini-x86.c, mini-amd64.c: generate code to access tls items
12914         in a faster way for Xen systems.
12915
12916 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12917
12918         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
12919         updates and compilation fixes for the OSX/x86 port, mostly from
12920         Geoff Norton <gnorton@customerdna.com>.
12921
12922 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12923
12924         * inssel.brg: faster interface call implementation
12925         to sync with the interface_offsets MonoVTable changes.
12926
12927 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12928
12929         * mini.c: more verification checks.
12930
12931 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
12932
12933         * mini.c: added a few more verification checks.
12934
12935 2006-02-17      Neale Ferguson <neale@sinenomine.net>
12936
12937         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
12938         facility on the processor and use it if available.
12939
12940 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12941
12942         * driver.c, aot.c, mini.c: throw exception if the IL code is
12943         invalid or unverifiable.
12944
12945 2006-02-17  Raja R Harinath  <rharinath@novell.com>
12946
12947         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
12948         m.StructField.
12949
12950 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
12951
12952         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
12953
12954 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12955
12956         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
12957         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
12958         handling of instantiated generic valuetypes.
12959
12960 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
12961
12962         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
12963         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
12964         instead.
12965
12966         * generics.2.cs: Revert the nullable reftypes tests.
12967
12968 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
12969
12970         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
12971         using __builtin_frame_address (1) as it doesn't work in the presence
12972         of optimizations. Hopefully fixes #77273.
12973
12974         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
12975         -> generics.cs change as it doesn't work with some automake versions.
12976
12977 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12978
12979         * mini.c: handle systems that sue a different way to
12980         retrieve the stack address of the current thread.
12981
12982 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
12983
12984         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
12985         it specially in the makefile.
12986
12987         * generics.2.cs: Add tests for nullable reference types.
12988
12989 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12990
12991         * mini.c: always handle the case when mono_jit_init()
12992         is called in a thread different from the main thread,
12993         confusing libgc (bug #77309).
12994
12995 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
12996
12997         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
12998
12999 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13000
13001         * mini.c: change optimize_branches () to use a single loop
13002         and introduce a new optimization to simplify some range checks.
13003
13004 2006-02-03  Martin Baulig  <martin@ximian.com>
13005
13006         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
13007         and merged with debugger_thread_manager_add_thread().
13008         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
13009         inform the debugger about the main thread.
13010
13011 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13012
13013         * basic.cs: Add test for div.un/rem.un constant folding.
13014
13015 2006-02-03  Neale Ferguson <neale@sinenomine.net>
13016
13017         * cpu-s390x.md: correct int_xor_imm length
13018
13019 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13020
13021         * generics.2.cs: New test for #77442.
13022
13023         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
13024         #77442.
13025
13026 2006-02-02  Martin Baulig  <martin@ximian.com>
13027
13028         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
13029         <mono/metadata/mono-debug-debugger.h>   
13030
13031         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
13032
13033 2006-02-02  Martin Baulig  <martin@ximian.com>
13034
13035         * debug-debugger.h: New header file for debug-debugger.c.
13036
13037         * debug-debugger.c: Big API cleanup; don't run the managed Main()
13038         function is a separate thread anymore; add support for attaching.
13039
13040 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
13041
13042         * tramp-x86.c: Fix a warning.
13043
13044 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
13045
13046         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
13047         on very large methods.
13048
13049         * aot.c (load_patch_info): Fix a warning.
13050
13051 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13052
13053         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
13054         mini-ops.h: alu membase optimizations.
13055
13056 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
13057
13058         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
13059         to speedup StringBuilder.
13060
13061 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
13062
13063         * dominators.c (mono_compute_natural_loops): Fix detection of
13064         loop body start blocks.
13065
13066         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
13067
13068 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
13069
13070         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
13071         #75145.
13072
13073 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
13074
13075         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13076
13077 2006-01-25  Martin Baulig  <martin@ximian.com>
13078
13079         * debug-debugger.c: Moved the `MonoDebuggerManager' and
13080         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
13081         started to cleanup this file a little bit.
13082
13083 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
13084
13085         * mini.c: optimize a codepath frequently happening in generics code.
13086
13087 2006-01-23  Martin Baulig  <martin@ximian.com>
13088
13089         * Makefile.am: Only compile debug-debugger.c on supported platforms.
13090
13091         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
13092         functions directly.
13093
13094         * driver.c: debug-debugger.c is only available if
13095         `MONO_DEBUGGER_SUPPORTED' is defined.   
13096
13097 2006-01-23  Martin Baulig  <martin@ximian.com>
13098
13099         * debug-debugger.c: Only enable this on platforms where the Mono
13100         Debugger is working (x86 and x86_64).
13101
13102 2006-01-21  Martin Baulig  <martin@ximian.com>
13103
13104         The Mono Debugger is now using the normal `mono' instead of the
13105         `mono-debugger-mini-wrapper' when executing managed code.
13106
13107         * debug-debugger.c: New file; previously known as
13108         debugger/wrapper/wrapper.c.
13109
13110         * debug-mini.c (mono_init_debugger): Removed.
13111
13112         * driver.c (mono_main): Added new `--inside-mdb' command line
13113         argument which is used when running inside the debugger.
13114
13115 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
13116
13117         * liveness.c (mono_analyze_liveness): Remove some unused data
13118         structures.
13119
13120 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
13121
13122         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
13123
13124 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
13125
13126         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
13127         depends on implementation details of monobitset.
13128
13129         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
13130         Fixes #77271.
13131
13132 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
13133
13134         * liveness.c: Update after monobitset changes.
13135
13136 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
13137
13138         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
13139
13140 2006-01-11 Neale Ferguson <neale@sinenomine.net>
13141
13142         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
13143
13144         * mini-s390x.c: Remove warning messages.
13145
13146 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
13147
13148         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
13149
13150 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
13151
13152         * generics.2.cs: Add ldelem/stelem_any test.
13153
13154 2006-01-10 Neale Ferguson <neale@sinenomine.net>
13155
13156         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
13157
13158 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
13159
13160         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
13161         
13162 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
13163
13164         * generics.2.cs: Reenable vtype tests.
13165
13166         * inssel-x86.brg: Remove an icorrect valuetype rule.
13167
13168 2006-01-06 Neale Ferguson <neale@sinenomine.net>
13169
13170         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
13171         initial support for OP_ABS.
13172
13173 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13174
13175         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
13176
13177 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13178
13179         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
13180         conversion and implement LADD/LSUB.
13181
13182         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
13183         architectures.
13184
13185 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13186
13187         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
13188
13189         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
13190         architectures.
13191
13192 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13193
13194         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
13195         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
13196         (stack walk problem).
13197
13198 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
13199
13200         * aot.c (mono_aot_load_method): Fix a warning.
13201
13202 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13203
13204         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
13205
13206 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13207
13208         * iltests.il: Add test for #77148.
13209
13210         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
13211         #77148.
13212
13213 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13214
13215         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
13216
13217 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13218
13219         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
13220         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
13221
13222         * basic-long.cs: Add lconv-to-r4/r8 tests.
13223
13224 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13225
13226         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
13227
13228         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
13229         here as on other archs.
13230
13231 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13232
13233         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
13234
13235 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13236
13237         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
13238         
13239         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
13240
13241         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
13242         instrument_prolog; Add memory_barrier instruction.
13243
13244 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
13245
13246         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
13247
13248 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
13249
13250         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
13251
13252         * aliasing.c inssel.brg: Fix warnings.
13253
13254         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
13255         could skip initialization of some parts of memory.
13256
13257         * mini.c mini-ia64.c: Fix warnings.
13258
13259         * inssel-sparc.brg: Add an implementation of lneg which actually works.
13260
13261 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
13262
13263         * aliasing.c (mono_build_aliasing_information): Add a workaround for
13264         a crash seen on sparc.
13265
13266         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
13267         
13268         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
13269
13270 2005-12-21 Neale Ferguson <neale@sinenomine.net>
13271
13272         * mini-ops.h: Add s390_backchain instruction
13273
13274         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
13275
13276         * cpu-s390.md: Add s390_backchain instruction
13277
13278         * mini-s390.c: Significant ABI changes
13279
13280         * mini-s390.h: Cater for zero length structures
13281
13282 2005-12-20 Neale Ferguson <neale@sinenomine.net>
13283
13284         * mini-s390.c: ABI fixes
13285
13286         * inssel-s390.brg: Remove debug statements
13287
13288         * cpu-s390.md: Fix length of ATOMIC_xx operations
13289
13290 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
13291
13292         * basic-float.cs: Add float<->long conversion tests.
13293
13294 2005-12-16 Neale Ferguson <neale@sinenomine.net>
13295
13296         * mini-s390.c: Fix LOCALLOC processing.
13297
13298         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
13299
13300 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
13301
13302         * iltests.il: Add tests for some opcodes not covered by the other
13303         tests.
13304
13305 2005-12-15 Neale Ferguson <neale@sinenomine.net>
13306
13307         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
13308         register loading for Tail processing; Correct trace output.
13309
13310         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
13311
13312         * cpu-s390.md: Correct size of jmp instruction. 
13313
13314 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13315
13316         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
13317
13318 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13319
13320         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
13321           Bring s390 up to current level.
13322
13323 2005-12-12  Zltan Varga  <vargaz@gmail.com>
13324
13325         * generics.2.cs: Disable the newly added tests as they do not work yet.
13326         
13327         * generics.2.cs: Add valuetype tests.
13328
13329 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
13330
13331         * basic-long.cs: Add i4->u8 test.
13332
13333         * objects.cs: Add tests for JIT intrinsic.
13334
13335         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
13336         optimizations lost by a mistake.
13337
13338 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
13339
13340         * basic-long.cs: Remove a test moved to objects.cs.
13341
13342         * arrays.cs: Add more array tests.
13343
13344 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
13345
13346         * arrays.cs: Add new tests for multi-dimensional arrays.
13347
13348 2005-12-06  Raja R Harinath  <rharinath@novell.com>
13349
13350         * Makefile.am (test_sources2): Add generics.2.cs.
13351         (EXTRA_DIST): Add test_sources2.
13352
13353 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
13354
13355         Support for boxing and unboxing nullable types as well as the
13356         isinst operation on nullables, per the CLI ammendment.
13357
13358         * inssel.brg (CEE_ISINST): Special case for nullable
13359
13360         * mini.c (handle_unbox_nullable): new method
13361         (handle_box): Special case for nullable types
13362         (mono_method_to_ir): Call handle_unbox_nullable in correct
13363         places.
13364
13365         * generics.2.cs: New test suite
13366
13367         * Makefile.am: Support for regression tests with generics.
13368
13369 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
13370
13371         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
13372         allocated to registers. Fixes #76800.
13373
13374 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
13375
13376         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
13377
13378 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
13379
13380         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
13381         of platforms.
13382
13383 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
13384
13385         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
13386         objects.cs.
13387
13388         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
13389         
13390         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
13391 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
13392
13393         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
13394         single precision before storing to a single precision location.
13395
13396 2005-11-28  Raja R Harinath  <rharinath@novell.com>
13397
13398         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
13399
13400 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
13401
13402         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
13403         correct files.
13404
13405         * basic.cs: Remove test_0_byte_compares test which was moved to
13406         objects.cs a long time ago.
13407
13408 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
13409
13410         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13411
13412 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
13413
13414         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
13415         handlers are called.
13416
13417         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
13418         throwing code.
13419
13420          * mini-ia64.c: Add support for the throw->branch exception 
13421         optimization.   
13422
13423         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
13424
13425 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13426
13427         * mini.c: Enabled "fastpath" deadce :-)
13428         
13429 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13430
13431         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
13432         alias analysis pass to support it.
13433         * mini.h: Likewise.
13434         * ssa.c: Likewise.
13435         * liveness.c: Likewise (liveness computation can use aliasing
13436         information to be more accurate).
13437         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
13438         moreover made so that "--compile-all" uses the given optimization
13439         flags and not the default ones.
13440         * aliasing.c: Alias analysis (new file).
13441         * aliasing.h: Likewise.
13442         * Makefile.am: added "aliasing.c" and "aliasing.h".
13443         
13444 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
13445
13446         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
13447         OP_L opcodes.
13448
13449 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
13450
13451         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
13452         fp >= end_of_stack exit condition, as it is not needed, and it might
13453         become true for fp eliminated frames.
13454
13455 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
13456
13457         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
13458         coded offsets.
13459
13460 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
13461
13462         * mini-arm.c: fixed alignment of doubles/longs to match
13463         the C ABI (bug #76635).
13464
13465 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
13466
13467         * aot.c: fix compilation with --enable-minimal=aot.
13468
13469 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
13470
13471         * mini-arm.c: fixed compatibility with the new
13472         floating point emulator package for compares.
13473
13474 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
13475
13476         * mini.c : reverted sig->pinvoke changes (r51396-51397).
13477
13478 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
13479
13480         * mini-exceptions.c (print_stack_frame): Output to stderr.
13481         (mono_handle_native_sigsegv): Ditto.
13482
13483 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13484
13485         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
13486         OP_LCONV_TO_OVF_I implementation.
13487
13488         * mini-amd64.c: Add support for the throw->branch exception 
13489         optimization.
13490
13491         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
13492         when the catch clause catches a more general exception, i.e. Object.
13493
13494 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
13495
13496         * cpu-ia64.md: Remove unused opcodes.
13497
13498         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
13499         specific defines for architectures defining USE_SIGACTION.
13500
13501         * mini-ia64.c: Fix some warnings.
13502
13503         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
13504         version seemed to skip a frame.
13505
13506 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13507
13508         * mini.c: Clean up the usage of sig->pinvoke flag. Now
13509         only calls which are made to native code use this flag.
13510
13511 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
13512
13513         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
13514         varargs methods as well.
13515         
13516         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
13517         which have save_lmf set. Reorganize methods prologs a bit.
13518
13519         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
13520         debugger to the proper place.
13521
13522 2005-10-29  Martin Baulig  <martin@ximian.com>
13523
13524         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
13525         when running inside the debugger until the debugger has support
13526         for it.
13527
13528 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
13529
13530         * mini.h: Fix a warning.
13531
13532 2005-10-24  Miguel de Icaza  <miguel@novell.com>
13533
13534         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
13535         we expose publicly, this returns the string.
13536
13537 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
13538
13539         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
13540         with fp elimination.
13541
13542 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
13543
13544         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
13545         native stacktrace using the glibc 'backtrace' function if available.
13546
13547 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
13548
13549         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
13550
13551         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
13552         handle SIGSEGVs received while in native code.
13553
13554         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
13555         code, call mono_handle_native_sigsegv which will abort the runtime
13556         after printing some diagnostics, instead of converting it into a
13557         confusing NullReferenceException.
13558
13559 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
13560
13561         * cpu-pentium.md: Remove unused opcodes.
13562
13563 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
13564
13565         * mini-amd64.h (MonoLMF): Add rsp field.
13566
13567         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
13568         the lmf too.
13569
13570 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
13571
13572         * mini-codegen.c (get_register_spilling): Fix some warnings.
13573
13574 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
13575
13576         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
13577         elimination during exception handling. Enable fp elimination by
13578         default.
13579
13580         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
13581         elimination.
13582
13583 2005-10-16  Martin Baulig  <martin@ximian.com>
13584
13585         * mini-exceptions.c
13586         (mono_debugger_run_finally): New public method for the debugger.
13587
13588 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
13589
13590         * debug-mini.c (mono_debug_init_method): Fix warning.
13591
13592         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
13593         the 'exname' parameter const to fix some warnings.
13594
13595 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
13596
13597         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
13598         introduced by the previous patch.
13599
13600 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
13601
13602         * basic-float.cs: Add test for precision of float arithmetic.
13603
13604         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
13605         when loading/storing single values from/to memory.
13606
13607         * mini.c (mono_jit_compile_method_with_opt): Create the function
13608         pointers in the correct domain.
13609
13610 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
13611
13612         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
13613         introduced by previous patch.
13614         
13615         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
13616         when out_filter_idx is NULL.
13617
13618         * mini-exceptions.c: Don't run filter clauses twice during exception
13619         handling. Fixes #75755.
13620
13621 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
13622
13623         * aot.c: Add support for ldflda wrappers.
13624
13625         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
13626         #75902.
13627
13628 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
13629
13630         * mini.c, mini.h: do not consider exception handlers blocks when
13631         setting up interface variables.
13632
13633 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
13634
13635         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
13636
13637 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
13638
13639         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
13640         causes a regression.
13641
13642         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
13643
13644 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
13645
13646         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
13647         of the OP_P definitions.
13648
13649         * TODO: Add a proposal for dealing with the CEE/OP mess.
13650
13651         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
13652         optimizations from the x86 port.
13653
13654         * cpu-amd64.md: Ditto.
13655
13656         * basic.cs basic-long.cs: Add tests.
13657
13658 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
13659
13660         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
13661         Patrik Torstensson's implementation of my exception-handling
13662         optimization idea, when the exception object is not used
13663         (bug #62150).
13664
13665 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
13666
13667         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
13668         of the mul_imm optimizations from the old jit.
13669
13670 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
13671
13672         * mini.c, liveness.c: patch by Patrik Torstensson and
13673         Zoltan Varga to improve performance in methods with
13674         exception clauses.
13675
13676 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
13677
13678         * driver.c: Remove 'Globalization' entry from --version.
13679
13680 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
13681
13682         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
13683         there is a profiler interested in JIT events.
13684
13685         * aot.c: Load profile files produced by the AOT profiling module, and
13686         reorder methods based on the profiling info. Add a 'method_order' table
13687         to the AOT file to make mono_aot_find_jit_info work with the reordered
13688         methods.
13689
13690         * mini.h: Bump AOT file version info.
13691
13692 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
13693
13694         * mini-arm.h: work around what looks like a gcc bug when optimizations
13695         are enabled.
13696
13697 2005-09-28  Raja R Harinath  <rharinath@novell.com>
13698
13699         * Makefile.am (AM_CFLAGS): Don't use += to append inside
13700         conditionals.  Use ...
13701         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
13702
13703 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
13704
13705         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
13706         to determine the amount of memory to copy when passing valuetypes.
13707
13708         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
13709         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
13710
13711 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
13712
13713         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
13714         information about aot.
13715
13716 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
13717
13718         * *.c: Replace the use of {Enter,Leave}CriticalSection with
13719         macros. This will allow a deadlock debugger to easily be plugged
13720         in.
13721
13722 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
13723
13724         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
13725
13726 2005-09-27  Raja R Harinath  <rharinath@novell.com>
13727
13728         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
13729         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
13730         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
13731         ($(arch_built)) [CROSS_COMPILING]: Error out.
13732
13733 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
13734
13735         * aot.c: Add support for the no_special_static flag for classes.
13736
13737 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13738
13739         * Reapply reverted patches.
13740
13741         * *: Revert r50174 as well.
13742
13743         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
13744
13745 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13746
13747         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
13748
13749 2005-09-23  Miguel de Icaza  <miguel@novell.com>
13750
13751         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
13752         part of the SIG_HANDLER_SIGNATURE.  
13753
13754 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13755
13756         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
13757         statistics.
13758
13759         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
13760         introduced by previous patch.
13761
13762 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
13763
13764         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
13765         saved registers too.
13766
13767         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
13768         upon the information returned by get_call_info ().
13769         
13770         * mini-x86.c (add_float): Fix stack size calculation.
13771         (mono_arch_call_opcode): Rewrite this so it works based up the
13772         information returned by get_call_info ().
13773         (mono_arch_get_this_vret_args): Ditto.
13774
13775 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
13776
13777         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
13778         in cinfo to determine the registers which need to be used.
13779
13780 2005-09-20  Miguel de Icaza  <miguel@novell.com>
13781
13782         * driver.c (mono_main): Add --server and --desktop flags. 
13783
13784 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
13785
13786         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
13787         registers as global registers.
13788
13789         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
13790         longer needed with the new register allocator.
13791
13792         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
13793
13794         * cpu-ia64.md: Remove unused opcodes.
13795         
13796         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
13797         
13798 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
13799
13800         * cpu-amd64.md: Remove unused opcodes.
13801
13802         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
13803         needed with the new register allocator.
13804
13805         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
13806         reg-reg moves.
13807
13808 2005-09-16  Raja R Harinath  <rharinath@novell.com>
13809
13810         * Makefile.am (check-local): Don't invoke semdel-wrapper.
13811
13812 2005-09-16  Martin Baulig  <martin@ximian.com>
13813
13814         * exceptions-amd64.c
13815         (throw_exception): Don't call mono_debugger_throw_exception() if
13816         we're a rethrow - see the FIXME in the code.
13817
13818 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
13819
13820         * mini.c (mono_init_exceptions): This only works on some architectures.
13821         
13822 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13823
13824         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
13825         on ia64.
13826
13827         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
13828
13829         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
13830         now in mini-exceptions.c.
13831
13832 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
13833
13834         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
13835         now in mini-exceptions.c.
13836
13837 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13838
13839         * exceptions-x86.c: Applied patch from Patrik Torstensson 
13840         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
13841
13842         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
13843         code into mini-exceptions.c. Add some assertions to it.
13844
13845 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
13846
13847         * aot.c (emit_section_change): Applied patch from "The Software Team" 
13848         (<software@solmersa.com>). Fix as errors on windows.
13849
13850 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13851
13852         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
13853         method info into the LMF.
13854
13855 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13856         
13857         * mini-ia64.c: Add proper unwind info for method epilogs.
13858
13859         * exceptions-ia64.c: Add some code to help debugging.
13860         
13861         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
13862
13863         * mini-exceptions.c: Fix warning.
13864
13865 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13866
13867         * mini.c: Really fix build.
13868
13869         * mini-x86.c mini-amd64.c: Fix build.
13870
13871 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13872
13873         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
13874
13875         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
13876         some Interlocked methods as intrinsics.
13877
13878         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
13879         for Thread methods as well.
13880
13881         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
13882
13883         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
13884
13885         * mini-ia64.c mini-x86.c mini-amd64.c 
13886         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
13887         OP_MEMORY_BARRIER.
13888         
13889         * mini.c (mono_init_exceptions): Fix build breakage.
13890
13891 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
13892
13893         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
13894         of instructions. Use the new ia64_unw_op macros for emitting unwind
13895         info.
13896
13897         * mini.c (mono_init_exceptions): Initialize exception handling
13898         related trampolines at startup.
13899
13900 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
13901
13902         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
13903
13904 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
13905
13906         * mini.c: Handle type loading errors gracefully during compilation and
13907         throw the appropriate exception.
13908
13909 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
13910
13911         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
13912         for the mono binary.
13913
13914 2005-09-09  Martin Baulig  <martin@ximian.com>
13915
13916         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
13917         the release.
13918
13919 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13920
13921         * mini-arm.h: use emulation for conv.r.un for the release.
13922
13923 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13924
13925         * mini-arm.c, objects.cs: more fixes and tests for them.
13926
13927 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13928
13929         * mini-arm.c: align structures to at least 4 bytes to be able
13930         to keep our current optimized memcpy.
13931
13932 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
13933
13934         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
13935
13936 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13937
13938         * mini.c: ignore SIGPIPE.
13939
13940 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
13941
13942         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
13943
13944         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
13945
13946 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
13947
13948         * mini.h: Add prototype for mono_allocate_stack_slots_full.
13949
13950 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13951
13952         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
13953         exception handling support.
13954         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
13955         patch by Brian Koropoff <briank@marakicorp.com>).
13956
13957 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
13958
13959         * mini.c: revert another 'optimization' which breaks when
13960         items on the eval stack need to be saved at a basic block end
13961         (bug #75940).
13962
13963 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13964
13965         * jit-icalls.c: for arrays, ensure we always provide
13966         lower bounds.
13967
13968 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
13969
13970         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
13971         
13972         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
13973
13974 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
13975
13976         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
13977         arguments in their original register.
13978
13979 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
13980
13981         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
13982         memset/memcpy.
13983
13984         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
13985         when ssapre is enabled.
13986
13987         * inssel-long.brg: Fix bug in previous patch.
13988
13989         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
13990         multiplication by a constant.
13991
13992 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
13993
13994         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
13995         icc.
13996
13997         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
13998         saving registers.
13999
14000 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
14001
14002         * inssel-arm.brg: apply changes tested by Brian Koropoff
14003         <briank@marakicorp.com>.
14004
14005 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
14006
14007         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
14008         
14009 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
14010
14011         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
14012         to the same register if dreg is just a base register.
14013         (print_ins): Improve printing of membase opcodes.
14014
14015         * inssel-x86.brg: Add optimized ldind(reg) rules.
14016
14017         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
14018
14019 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
14020
14021         * mini.c: when running under valgrind, set the stack bottom for
14022         the GC at the actual approximate stack for the app (fixes running
14023         mono with valgrind).
14024
14025 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
14026
14027         * mini.c: do no break at the first valuetype to init found
14028         (fixes bug #75791).
14029
14030 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
14031
14032         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
14033
14034 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
14035
14036         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
14037
14038 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
14039
14040         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
14041
14042 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14043
14044         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
14045
14046         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
14047         code.
14048
14049         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
14050         code.
14051
14052         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
14053         methods.
14054
14055 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
14056
14057         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
14058
14059 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14060
14061         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
14062         in the tail recursion optimization.
14063
14064         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
14065         debug info into the assembly file.
14066
14067         * iltests.il: Add test for filter regions.
14068
14069         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
14070         initial stack of filter regions. Fixes #75755.
14071
14072 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
14073
14074         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
14075         stack requirements.
14076
14077 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14078
14079         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
14080         the check for an already compiled method on non-ia64 platforms.
14081         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
14082         proper domain.
14083
14084         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
14085
14086         * inssel-x86.brg: Add some optimized call rules.
14087
14088 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
14089
14090         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
14091         method here.
14092
14093         * mini.h mini-trampolines.c: Pass the trampoline argument to 
14094         mono_arch_patch_delegate_trampoline.
14095
14096         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
14097
14098         * mini-trampolines.c: Fix build.
14099
14100         * mini-amd64.h: Add delegate trampolines.
14101
14102         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
14103
14104         * inssel-amd64.brg: Add optimized call rules.
14105         
14106         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
14107
14108         * inssel-ia64.brg: Add optimized ldind(reg) rules.
14109
14110 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
14111
14112         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
14113         change.
14114
14115         * mini-ia64.c: Remove LMF fixmes.
14116
14117         * mini-ia64.h: Remove most fields from LMF.
14118
14119         * inssel-ia64.brg (stmt): Fix unaligned access errors.
14120
14121         * mini-trampolines.c: Add support for IA64 function descriptors.
14122
14123         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
14124         for IA64 function descriptors.
14125
14126 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
14127
14128         * tramp-arm.c: patch the vtable for virtual calls. Added
14129         support code to register/unregister the LMF.
14130         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
14131         more LMF work.
14132
14133 2005-08-19  Dick Porter  <dick@ximian.com>
14134
14135         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
14136         bit value if needed.
14137
14138 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
14139
14140         * mini.c (mini_get_method): Move handling of wrapper data here.
14141
14142         * mini.c (mono_method_to_ir): Add support for dynamic methods.
14143
14144         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
14145         virtual.
14146
14147         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
14148         bblock->code does not remain empty.
14149
14150 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
14151
14152         * arrays.cs: Add regression test for #75832.
14153
14154         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
14155         rules. Fixes #75832.
14156
14157         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
14158         instruction scheduling.
14159
14160 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
14161
14162         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
14163
14164 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
14165
14166         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
14167
14168         * mini-codegen.c: Fix VC build.
14169
14170         * cpu-pentium.md: Increase length of atomic_exhange_i4.
14171
14172 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14173
14174         * mini.h: fix signature for mono_register_opcode_emulation.
14175
14176 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
14177
14178         * mini.c: Get rid of most of the helper_sig_... constants using
14179         mono_create_icall_signature ().
14180
14181 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
14182
14183         * jit-icalls.c (helper_ldstr): New helper function.
14184
14185         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
14186
14187         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
14188         throw, load the string using a helper call instead of creating a string object.
14189
14190         * aot.c: Update after LDSTR changes.
14191
14192         * mini.h: Bump AOT file version.
14193         
14194         * aot.c: Save class size info into the AOT file. Print more statistics during
14195         compilation.
14196
14197         * mini.h: Bump AOT file version.
14198
14199         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14200         ordering of disasm cases. Fixes #74957.
14201
14202 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
14203
14204         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
14205         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
14206         the generic code needed for the ARM port.
14207
14208 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
14209
14210         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
14211         inssel-arm.brg: more ARM features and fixes.
14212
14213 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
14214
14215         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
14216         ARM port work in progress.
14217
14218 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
14219
14220         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
14221
14222         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
14223
14224         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
14225
14226         * inssel.brg (mini_emit_memset): Add support for unaligned access.
14227
14228         * *-ia64.*: Ongoing IA64 work.
14229         
14230         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
14231
14232 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
14233
14234         * TODO: Remove out-of-data todo stuff.
14235
14236         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
14237         dead code.
14238
14239         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
14240
14241         * mini.h: Bump corlib version.
14242
14243 2005-07-27  Martin Baulig  <martin@ximian.com>
14244
14245         * mini-codegen.c
14246         (create_copy_ins): Added `const unsigned char *ip' argument; set
14247         `copy->cil_code' from it.
14248
14249 2005-07-27  Martin Baulig  <martin@ximian.com>
14250
14251         * mini-exceptions.c (mono_handle_exception): Don't call
14252         mono_debugger_handle_exception() for filters.
14253
14254 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
14255
14256         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
14257         as well.
14258
14259 2005-07-26  Martin Baulig  <martin@ximian.com>
14260
14261         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
14262
14263         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
14264         helper_compile_generic_method() if the method is actually virtual
14265         and non-final.
14266
14267 2005-07-26  Martin Baulig  <martin@ximian.com>
14268
14269         * mini.c
14270         (trampoline_code): Renamed to `mono_trampoline_code' and made it
14271         public; this is now accessed directly by the debugger.
14272         (mono_generic_trampoline_code): Removed.
14273
14274         * debug-mini.c
14275         (mono_debug_init_method): Also add interncalls and wrappers.
14276
14277 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
14278
14279         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
14280
14281 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
14282
14283         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
14284
14285 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
14286
14287         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
14288
14289 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14290
14291         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
14292         getting TLS offsets on AMD64 too.
14293
14294 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
14295
14296         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
14297
14298 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
14299
14300         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
14301         inssel-arm.brg, mini-arm.h: ARM port work in progress.
14302
14303 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14304
14305         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
14306
14307         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
14308         to mini.c.
14309
14310         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
14311         mono_sparc_is_virtual_call ().
14312         
14313         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
14314
14315         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
14316         trampoline parameters.
14317
14318         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
14319         
14320         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
14321         to mono_arch_get_vcall_slot_addr.
14322
14323         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
14324         trampoline code.
14325
14326         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
14327
14328 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14329
14330         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
14331
14332 2005-07-19  Martin Baulig  <martin@ximian.com>
14333
14334         * exceptions-amd64.c (throw_exception): Call
14335         mono_debugger_throw_exception() here like we're doing it on i386.
14336
14337 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14338
14339         * mini-ia64.c: Add optimized TLS access support.
14340
14341 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
14342
14343         * mini-exceptions.c: Ongoing IA64 work.
14344
14345         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
14346
14347         * mini.c: Use the default optimization set when embedding. Fixes
14348         #75194.
14349
14350 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
14351
14352         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
14353         of trampolines to a separate file.
14354
14355         * mini-trampolines.c: New file.
14356
14357         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
14358         separate file.
14359         
14360         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
14361         amd64/ia64 code.
14362
14363         * mini-codegen.c: Fix cygwin build.
14364
14365 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
14366
14367         * mini.c: Add some minor changes needed by the IA64 port.
14368
14369         * *-ia64.*: Ongoing IA64 work.
14370
14371 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
14372
14373         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
14374         trampolines into arch-independent and arch-dependent parts.
14375
14376         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
14377
14378 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
14379
14380         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
14381
14382         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
14383         the xp-regalloc-branch for amd64.
14384
14385         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
14386         xp-regalloc-branch for x86.
14387
14388 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14389
14390         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
14391
14392 2005-07-06  Martin Baulig  <martin@ximian.com>
14393
14394         * mini.c
14395         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
14396         (mono_jit_runtime_invoke): Likewise.
14397
14398 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
14399
14400         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
14401         on x86 too.
14402         
14403         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
14404         without loading their metadata. Reorganize the file format so exception handling+
14405         debug info is kept separate from normal method info. Create MonoJitInfo 
14406         structures for methods lazily.
14407
14408         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
14409         loading metadata.
14410         (x86_class_init_trampoline): Patch AOT class init trampolines too.
14411
14412         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
14413
14414         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
14415         in AOT code.
14416
14417         * mini.h: Bump AOT file version.
14418
14419 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
14420
14421         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14422
14423 2005-07-01  Raja R Harinath  <rharinath@novell.com>
14424
14425         * Makefile.am (check-local): Call semdel-wrapper.
14426
14427 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
14428
14429         * mini-x86.c: Revert the last change as it seems to break the build..
14430
14431 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
14432
14433         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14434         
14435         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
14436
14437 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
14438
14439         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
14440         outside of the macro, so strange stuff doesn't happen with gcc4
14441         (NEW_AOTCONST_TOKEN): Likewise.
14442
14443 2005-06-28  Martin Baulig  <martin@ximian.com>
14444
14445         * mini.c (mini_class_is_system_array): New static method; use this
14446         instead of `klass->parent == mono_defaults.array_class' everywhere
14447         since this also works for the new generic array class.
14448
14449 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
14450
14451         * inssel.brg: Remove warnings.
14452
14453 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
14454
14455         * mini-ia64.c: Ongoing IA64 work.
14456
14457         * basic-float.cs: Add float->i1 conversion test.
14458
14459         * iltests.il: Add conv.u4 test.
14460
14461 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
14462
14463         * inssel-long.brg: Fix bug caused by last change.
14464
14465 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
14466
14467         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
14468         BSDs.  Allows the x86 JIT to work on OSX86
14469
14470 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
14471
14472         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
14473         u4->i8 conversion.
14474
14475         * mini-ia64.c: Ongoing IA64 work.
14476
14477 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
14478
14479         * mini-ia64.c: Ongoing IA64 work.
14480
14481         * driver.c: Clean up jit_code_hash as well when using --regression.
14482
14483         * inssel-long.brg: Fix long->i4/u4 conversion rules.
14484
14485         * basic-long.cs: Add tests for long->u4 conversion.
14486
14487 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
14488
14489         * mini.c: Take mono_get_domainvar out of macros. This makes sure
14490         that we do not depend on undefined C behavior: the order stuff
14491         gets evaluated within an expression. Fixes mono when compiled on
14492         GCC 4.
14493
14494 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
14495
14496         * *-ia64.*: Ongoing IA64 work.
14497
14498         * aot.c: Lower memory usage while loading AOT methods.
14499
14500         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
14501
14502         * mini.h: Bump AOT file format version.
14503
14504 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
14505
14506         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
14507
14508 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
14509
14510         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
14511         not on callee assembly). Fixed some comments.
14512
14513 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
14514
14515         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
14516         it gets proper disassembly.
14517         (emit_method_info): Remove some dead code.
14518
14519         * mini.c (mini_method_compile): Allways allocate the GOT var in
14520         mono_method_to_ir for emulating opcodes.
14521
14522 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
14523
14524         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
14525         before freeing the code memory. Fixes #74990.
14526
14527         * objects.cs: Add regression test for #74992.
14528
14529         * liveness.c: Extend live ranges of arguments to the beginning of the
14530         method. Fixes #74992.
14531
14532         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
14533         so it points into the faulting instruction.
14534
14535 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
14536
14537         * jit-icalls.c (mono_imul_ovf): Add exception handling.
14538
14539         * *-ia64.*: Ongoing IA64 work.
14540
14541         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
14542
14543 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
14544
14545         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
14546
14547         * *-ia64.*: Ongoing IA64 work.
14548
14549 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
14550
14551         * basic-long.cs: Add tests for add/sub.ovf.
14552
14553         * basic.cs: Add tests for sub.ovf.
14554
14555         * *-ia64.*: Ongoing IA64 work.
14556
14557 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
14558
14559         * *-ia64.*: Ongoing IA64 work.
14560
14561         * basic.cs: Add conv.ovf.i4.un test.
14562
14563 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
14564
14565         * mini.c: (remove_block_if_useless) Fixed bug 75061.
14566         
14567 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14568
14569         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
14570
14571 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
14572
14573         * *-ia64.*: Ongoing IA64 work.
14574
14575 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14576
14577         * trace.[ch]:
14578         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
14579
14580 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
14581
14582         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
14583
14584 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
14585
14586         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
14587
14588         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
14589         of a call is callable by a near call.
14590
14591 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
14592
14593         * mini-ia64.c: Ongoing IA64 work.
14594
14595 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
14596
14597         * genmdesc.c: Make the generated array non-static.
14598
14599         * inssel-long.brg: Fix LSHR_IMM rule.
14600
14601         * *-ia64.*: Ongoing IA64 work.
14602
14603         * *-ia64.*: Ongoing IA64 work.
14604
14605 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14606
14607         * *-ia64.*: Ongoing IA64 work.
14608
14609         * *-ia64.*: Ongoing IA64 work.
14610         
14611         * mini-ia64.c: Ongoing IA64 work.
14612
14613         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
14614
14615 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14616
14617         * objects.cs basic-calls.cs: Move some tests to objects.cs.
14618         
14619         * objects.cs basic-long.cs: Move some tests to objects.cs.
14620
14621 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
14622
14623         * *-ia64.*: Ongoing IA64 work.
14624
14625         * iltests.il: Add a new test.
14626
14627         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
14628         newobj. Fixes #75042.
14629
14630 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
14631
14632         * *-ia64.*: Ongoing IA64 work.
14633         
14634         * *-ia64.*: Ongoing IA64 work.
14635         
14636         * *-ia64.*: Ongoing IA64 work.
14637
14638         * basic.cs objects.cs: Move tests accessing static variables as well.
14639
14640         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
14641
14642 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
14643
14644         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
14645
14646         * driver.c: Always print failed tests.
14647
14648         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
14649         frame pointer.
14650
14651         * *ia64*: Ongoing IA64 work.
14652
14653 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
14654
14655         * basic.cs: Add tests for add.ovf. Fix warnings.
14656
14657 2005-05-18  Miguel de Icaza  <miguel@novell.com>
14658
14659         * driver.c (mono_main): Avoid crash if no argument is passed to
14660         --break;  Do not use g_error, but f_printf.   And fix all other
14661         ocurrences of the same crash.
14662
14663 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
14664
14665         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
14666         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
14667         Fixes #74742.
14668
14669 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
14670
14671         * *-ia64.*: Add beginnings of IA64 backend.
14672
14673         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
14674
14675 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
14676
14677         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
14678         Fixes #74925.
14679
14680         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
14681
14682         * mini-amd64.c: Fix a warning.
14683
14684 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
14685
14686         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
14687         in float_neg. Fixes #74897.
14688
14689         * mini-amd64.c (emit_call): Fix another near call bug.
14690
14691 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
14692
14693         * declsec.c: Keep the appdomain information in the structure. Added a 
14694         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
14695         value gets overwritten).
14696         * declsec.h: Set the default MonoArray for the the stack to 6. Added
14697         an MonoAppDomain member to MonoSecurityFrame.
14698         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
14699         used in the stack walk. Now use a MonoArray which grow (double) when
14700         it gets full.
14701
14702 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
14703
14704         * mini.c: Re-enabled runtime cleanup, since running threads should
14705         now properly stop when exiting.
14706
14707 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
14708
14709         * mini-codegen.c: New file contaning the arch-independent local
14710         register allocator. Not used by any architectures yet.
14711
14712         * mini.h linear-scan.c: Merge some changes from the 
14713         mini-xp-local-regalloc branch.
14714
14715 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
14716
14717         * mini-amd64.c (emit_call): Fix calls to native functions when the
14718         runtime is compiled as a shared library. Fixes #74756.
14719
14720         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
14721         on a literal field. Fixes #74751.
14722
14723 2005-04-25  Raja R Harinath  <rharinath@novell.com>
14724
14725         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
14726
14727 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
14728
14729         * objects.cs: Add missing null casting test.
14730
14731 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
14732
14733         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
14734         in wrapper methods. Also rename 'address' variable to 'offset'.
14735
14736 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
14737
14738         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
14739         warnings.
14740         
14741         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
14742
14743         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
14744         work on windows.
14745
14746 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14747
14748         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
14749
14750 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14751
14752         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
14753         just the last bytes.
14754
14755 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14756
14757         * aot.c (mono_compile_assembly): Fix warning.
14758
14759         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
14760         by the _MSC_VER stuff.
14761
14762 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
14763
14764         * inssel-long.brg: Fix #74588.
14765
14766         * cpu-amd64.md: Fix #74591.
14767
14768         * iltests.il: Add new regression tests.
14769
14770 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
14771
14772         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
14773         valuetype.
14774
14775 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
14776
14777         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
14778
14779         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
14780         from Bill Middleton <flashdict@gmail.com>.
14781
14782 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
14783
14784         * arrays.cs: Add new regression test. Fix warnings.
14785
14786 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
14787
14788         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
14789         and leakage in CKFINITE.
14790
14791         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
14792         this to a null op since it is called on amd64 too.
14793
14794         * exceptions-amd64.c (get_throw_trampoline): Align stack.
14795
14796         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
14797         body since this is not used on amd64.
14798         
14799         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
14800
14801         * mini-amd64.c: Remove obsolete fixmes.
14802
14803         * mini.c (print_method_from_ip): Fix debugging support.
14804
14805 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14806
14807         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
14808         so that expressions that don't give much gain are not reduced.
14809         * ssapre.h: Likewise.
14810
14811 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
14812
14813         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
14814
14815         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
14816
14817         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
14818
14819 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
14820
14821         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
14822
14823         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
14824
14825 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
14826
14827         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
14828         stack touching.
14829
14830         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
14831
14832         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
14833
14834         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
14835
14836         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
14837         MONO_ARCH_USE_SIGACTION. Fixes #74252.
14838
14839         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
14840
14841         * mini-x86.c: Fix up stack overflow handling.   
14842
14843         * exceptions.cs: Add new regression test.
14844
14845 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
14846
14847         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
14848         mono_jit_thread_attach.
14849
14850         * mini.c (mono_method_to_ir): Verify called method is not abstract.
14851
14852 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14853
14854         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
14855         avoid calling constructors using callvirt.
14856
14857         * inssel.brg: Fix #74073.
14858
14859 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
14860
14861         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
14862         compilation with non-GCC compilers.
14863         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
14864         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
14865
14866 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
14867
14868         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
14869         klass->interface_offsets (will likely fix bug#74073).
14870
14871 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14872
14873         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
14874
14875 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
14876
14877         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
14878         to amd64_div_reg_size ().
14879         
14880         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
14881
14882 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
14883
14884         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
14885
14886 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14887
14888         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
14889
14890 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14891
14892         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
14893         
14894         * mini.c (mono_precompile_assembly): Load and precompile referenced
14895         assemblies as well. Fixes #74015.
14896
14897 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14898
14899         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
14900
14901 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
14902
14903         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
14904         a lot of checks and (anyway) permissions cannot work until corlib is 
14905         loaded.
14906
14907 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
14908
14909         * mini-ppc.c: fixed ABI issue on sysv/ppc.
14910
14911 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
14912
14913         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
14914         calls (fixes bug#72824).
14915
14916 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14917
14918         * mini.c: fix tail recursion elimination (see test in bug#73936).
14919
14920 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
14921
14922         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
14923         some fp functions in sse2 mode.
14924
14925 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
14926
14927         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
14928
14929 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
14930
14931         * mini.h mini.c: Add mono_get_jit_tls_key ().
14932
14933         * mini-x86.c: Enable fast TLS support on windows.
14934
14935 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
14936
14937         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
14938         * mini.c: Check for p/invoke method when generating code. If a
14939         p/invoke method, or it's class, isn't decorated with [Suppress
14940         UnmanagedCodeSecurity] then generate code to call System.Security.
14941         UnmanagedDemand (only if the security manager is active).
14942
14943 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14944
14945         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
14946         last change as it seems to cause strange crashes.
14947         
14948 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14949
14950         * *.c: handle unsafe function pointers where needed.
14951
14952 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14953
14954         * mini.c (mono_jit_free_method): Remove the fixme too.
14955
14956 2005-03-15  Miguel de Icaza  <miguel@novell.com>
14957
14958         * mini.c: As discussed, make the code actually free the delegate
14959         thunk now, to enable the debugging of delegate problems, use
14960         MONO_DEBUG=1 when running Mono. 
14961
14962         This takes also care of parts of the leaks as seen by Joe.
14963
14964 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
14965
14966         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
14967         thread_tls_offset calculation.
14968
14969 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
14970
14971         * declsec.c: Reworked linkdemand checks for icall. The previous code
14972         was using the declaration code (untrusted) and didn't work as expected
14973         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
14974         specific case.
14975
14976 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14977
14978         * iltests.il: Add new localloc test.
14979
14980         * mini-amd64.c: Handle large stack allocations the same way as on
14981         windows if stack overflow handling is working.
14982         
14983         * mini-amd64.c: Allocate the signal stack using mmap.
14984
14985         * mini.c (sigsegv_signal_handler): Fix reading of context.
14986
14987         * mini-exceptions.c: Fix up stack overflow handling.
14988
14989         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
14990
14991         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
14992
14993         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
14994
14995         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
14996
14997         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
14998         tramp_init functions as they are no longer needed.
14999
15000 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
15001
15002         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
15003         
15004         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
15005
15006         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
15007         
15008         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
15009         support that now.
15010
15011         * mini-ops.h: Add OP_LMUL_IMM.
15012
15013         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
15014         long mul/div opcodes as intrinsic.
15015
15016         * mini-amd64.c (emit_call): Handle the case when the callee might be
15017         an AOT method.
15018
15019 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
15020
15021         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
15022         extra safe.
15023         
15024         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
15025
15026         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
15027
15028 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
15029
15030         * mini.c (mono_codegen): Don't leak here, to help people running
15031         monogrind.
15032
15033 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
15034
15035         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
15036         conversions in sse2 mode.
15037
15038         * basic-float.cs: Add regression test.
15039         
15040         * mini-amd64.c: Reenable sse2.
15041
15042 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15043
15044         * mini-amd64.c: Disable sse2 until some regressions are fixed.
15045
15046 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
15047
15048         * driver.c: Copyright text should include 2005.
15049         
15050 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15051
15052         * cpu-amd64.md (load_membase): Fix more max lengths.
15053
15054 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
15055
15056         * cpu-amd64.md (load_membase): Fix max length.
15057
15058         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
15059
15060         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
15061
15062         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
15063         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
15064
15065         * basic-float.cs: Add rounding regression test.
15066
15067         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
15068
15069 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
15070
15071         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
15072         structures in registers for pinvoke wrappers.
15073
15074 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
15075
15076         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
15077
15078 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
15079
15080         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
15081         wrapper to mono_jit_thread_attach.
15082
15083         * mini.c (mini_jit_thread_attach): New jit icall.
15084
15085         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
15086         native->managed wrappers.
15087
15088         * exceptions.cs: Add new regression test.
15089
15090         * mini.c (optimize_branches): Check regions in the cbranch to throw
15091         block case as well. Fixes #73242.
15092
15093 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15094
15095         * mini.c: thread safety fixes.
15096
15097 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
15098
15099         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
15100         patching stuff, since delegates use jump trampolines so there is
15101         no caller.
15102
15103         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
15104         jump trampolines.
15105         
15106         * tramp-amd64.c: Fix build.
15107
15108         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
15109         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
15110
15111         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
15112         Rename this to mono_arch....
15113         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
15114
15115         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
15116
15117         * mini-amd64.c (emit_call): If both the caller and the callee is
15118         guaranteed to have 32 bit addresses, emit a normal call.
15119
15120         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
15121
15122         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
15123         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
15124         method_ptr inside delegates.
15125
15126 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
15127
15128         * mini.c (mono_jit_free_method): Free the method info even if the native code is
15129         invalidated. Fixes #73001.
15130
15131         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
15132
15133         * mini-x86.c: Only use stdcall for pinvokes on windows.
15134
15135 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
15136
15137         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
15138         * mini-x86.c: remove unreliable __thread var offset detection,
15139         use the correct accessors and enable by default.
15140
15141 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15142
15143         * mini.c (mono_jit_free_method): Fix memory leak.
15144
15145 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
15146
15147         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
15148
15149 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
15150
15151         * cpu-amd64.md: Fix lengths of atomic opcodes.
15152
15153 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15154
15155         * driver.c: try to not imply using ICU is any good.
15156
15157 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
15158
15159         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
15160         functions as inline ops.
15161
15162         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
15163         some Interlocked functions as inline ops.
15164
15165         * mini.c (move_basic_block_to_end): Fix bug in last patch.
15166
15167         * mini.h (MonoBasicBlock): Reorganize fields a bit.
15168
15169         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
15170
15171         * mini.c: Add support for OP_NOT_TAKEN.
15172
15173         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
15174         structures in registers for pinvoke wrappers.
15175
15176         * mini-amd64.c: Fix warnings.
15177
15178 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
15179
15180         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
15181
15182         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
15183
15184         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
15185         address instead of loading the address from it.
15186
15187         * mini-x86.c: Add support for returning small structs in registers
15188         on Win32. Fixes part of #70864.
15189         
15190 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
15191
15192         * trace.c (get_token): Improve error checking.
15193
15194 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
15195
15196         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
15197
15198 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
15199  
15200         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
15201         it can be reused for MonoClass.
15202         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
15203         _LINKDEMAND.
15204
15205 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
15206
15207         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
15208         instead of a MonoReflectionMethod. The method information wasn't used
15209         when displaying SecurityException details (but will be now).
15210
15211 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
15212
15213         * Makefile.am : windows build fix.
15214
15215 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
15216
15217         * iltests.il: Add new regression test.
15218
15219         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
15220         #72522.
15221
15222 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
15223  
15224         * mini.c: Moved linkdemand check into helper function check_linkdemand
15225         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
15226         LDFTN, LDVIRTFTN).
15227
15228 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
15229
15230         * declsec.c: Added statistics counter for different kinds of 
15231         LinkDemands.
15232         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
15233         (and commented) declaration.
15234         * mini.c: Added statistics counter for security Demand code 
15235         generation. Added display of security statistics.
15236
15237 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
15238
15239         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
15240         Fix compilation errors under gcc-2.95.
15241
15242 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
15243
15244         * mini.c, driver.c: Use the new jit trampoline hashtable
15245
15246 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15247
15248         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
15249
15250 2005-02-11  Martin Baulig  <martin@ximian.com>
15251
15252         * debug-mini.c (mono_debug_close_method): Free the line number array.
15253
15254 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15255
15256         * aot.c: Break up large methods into smaller ones. Share GOT slots for
15257         icalls.
15258
15259         * mini.h: Bump AOT file format version. 
15260
15261 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
15262
15263         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
15264         APTC and P/Invoke.
15265         * declsec.h: Added macros to get/set lazyly initialized security 
15266         informations about assemblies. Added new enum for different type of
15267         possible LinkDemand violation. Added function to check LinkDemands.
15268         * mini.h: Added a field to MonoCompile to hold any security violation
15269         detected when JITting a method (so it can be thrown later).
15270         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
15271         and CEE_CALLVIRT. Added code to throw exception at the end of
15272         mini_method_compile (note: the exception is unhandled right now).
15273
15274 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15275
15276         * mini.c, jit-icalls.c: use the managed implementation of
15277         memset for initobj and memset, to avoid managed <-> unmanaged
15278         transitions.
15279
15280 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15281
15282         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
15283         optimization if it would need a GOT var.
15284
15285         * basic.cs: Add tests for constant propagation and switch statements.
15286
15287         * ssa.c: Fix out-of-range constant propagation and switch statements.
15288
15289 2005-02-09    <vargaz@freemail.hu>
15290
15291         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
15292
15293 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
15294
15295         * cpu-amd64.md (load_membase): Fix max length of load_membase.
15296
15297 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15298
15299         * mini.c: update to new signature of mono_class_get_allocation_ftn().
15300
15301 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
15302
15303         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
15304         arithmetic operations.
15305
15306 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
15307
15308         * mini-ppc.c: add a workaround for broken user code that
15309         DllImports vararg functions with non-vararg signatures.
15310
15311 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15312
15313         * mini.c (mono_jit_compile_method_inner): Add detection and a 
15314         meaningfull error message for assemblies written in Managed C++.
15315
15316         * tramp-amd64.c mini-amd64.h: Add support for 
15317         create_trampoline_from_token ().
15318
15319         * aot.c mini-x86.c abcremoval.c: Applied patch from
15320         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
15321
15322 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15323
15324         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
15325         which takes a MonoImage/token as parameter instead of a MonoMethod.
15326
15327         * aot.c: Use the new trampoline for initializing vtables.
15328
15329         * aot.c: Add support for ldfld/stfld_remote wrappers.
15330
15331         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
15332         rules for compare <MEM>, IMM.
15333
15334         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
15335
15336         * aot.c: Handle inherited finalizers correctly.
15337
15338 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15339
15340         * inssel.brg (stmt): Add a missing _setup_... ().
15341
15342         * aot.c: Save some parts of the class state to the AOT file and use it
15343         to recompute that state when a class is initialized.
15344
15345         * mini.c: Install AOT hooks into the runtime.
15346
15347         * mini.h: Bump AOT file format version.
15348         
15349         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
15350         Fixes #72148.
15351
15352         * iltests.il: Add new test.
15353
15354 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15355
15356         * mini.c: fix typo.
15357
15358 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
15359
15360         * mini.c: setup the statistical profiler in the thread attach
15361         callback to cope with the new single thread code.
15362
15363 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
15364
15365         * mini-ppc.c: ensure we have enough room for the profiler
15366         calls (fixed bug#72084).
15367
15368 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
15369
15370         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
15371         it.
15372
15373 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15374
15375         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
15376
15377 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15378
15379         * ssapre.c: Fixed an issue with down safety (this allows IronPython
15380         to succesfully execute parrotbench).
15381         * ssapre.h: Likewise.
15382
15383 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15384
15385         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
15386         variable for stores to method arguments (fixes a SSAPRE issue).
15387
15388 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15389
15390         * mini.c: handle value types in dup, fixes gen-112.cs.
15391
15392 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
15393
15394         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
15395         sequence for calls in dynamic methods to avoid thunks.
15396
15397 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15398
15399         * mini.c: correctly remove dynamic methods from the hashtable.
15400
15401 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15402
15403         * driver.c: Disabled SSAPRE until fix the bug that appears
15404         in IronPython's parrotbench.
15405
15406 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15407
15408         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
15409
15410         * mini.c (mono_method_to_ir): Revert the previous change.
15411         
15412         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
15413         when AOT compiling.
15414
15415         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
15416         mono_jit_info_table_find () etc. when running under valgrind.
15417
15418         * inssel.brg: Fix warnings.
15419
15420         * mini-exceptions.c: Fix warnings.
15421
15422 2005-01-31  Martin Baulig  <martin@ximian.com>
15423
15424         * driver.c (compile_all_methods_thread_main): Don't try to compile
15425         generic methods or anything which has type parameters.
15426
15427 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
15428
15429         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
15430
15431         * TestDriver.cs: Add --verbose flags.
15432
15433         * graph.c ssa.c: Fix 64 bit warnings.
15434         
15435         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
15436         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
15437         Fix 64 bit warnings.
15438
15439         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
15440         variable not spotted by gcc.
15441         
15442         * mini-amd64.c inssel-amd64.brg: Applied patch from  
15443         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
15444         X86_COMPARE_MEMBASE opcodes.
15445
15446         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
15447
15448 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
15449
15450         * *: MonoMethod->signature might be NULL now. You *MUST* use
15451         mono_method_signature.
15452
15453 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15454
15455         * driver.c (compile_all_methods_thread_main): Compile the methods
15456         without invoking cctors.
15457
15458 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15459
15460         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
15461         * basic-calls.cs: test for the above.
15462
15463 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15464
15465         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
15466         MonoJitInfo changes.
15467
15468 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
15469
15470         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
15471         eagerly if it contains dynamic methods.
15472         
15473         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
15474
15475         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
15476         trace, it is now computed by an icall from trace_ips.
15477         
15478         * mini-exceptions.c: Fix a warning.
15479
15480 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
15481
15482         * mini-exceptions.c: don't bother getting stack trace info if
15483         it's not going to be used.
15484
15485 2005-01-27  Raja R Harinath  <rharinath@novell.com>
15486
15487         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
15488         ssapre-mini-ops.h.
15489
15490 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
15491
15492         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
15493
15494         * aot.c: Avoid calling mono_method_get_header () if not needed.
15495
15496         * mini.h: Bump AOT file format version.
15497         
15498         * mini.c (mono_emit_native_call): Allocate a GOT var here.
15499
15500         * mini.c (mono_print_tree): Print more info for calls.
15501
15502 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
15503
15504         * declsec.h: Remove warning by adding missing include for marshal.h
15505
15506 2005-01-26  Martin Baulig  <martin@ximian.com>
15507
15508         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
15509         `ip' twice.
15510
15511 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
15512
15513         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
15514         flags.
15515
15516         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
15517
15518         * aot.c (mono_compile_assembly): Fix a warning.
15519
15520 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
15521
15522         * declsec.c: Look for security attributes on the original MonoMethod 
15523         (and not the wrapped one). This fix permissions on icalls.
15524
15525 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15526
15527         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15528
15529         * mini.c (mono_allocate_stack_slots): Add a fixme.
15530
15531         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15532
15533 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15534
15535         * inssel.brg: optimize casts of sealed types (more
15536         optimizations waiting for fixes in remoting).
15537
15538 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15539
15540         * inssel.brg (stmt): Add another dummy rule.
15541
15542         * driver.c: Fix warnings.
15543
15544         * driver.c (mono_main): If running under valgrind, instruct glib to use
15545         the system allocation functions so valgrind can track the memory
15546         allocated by the g_... functions.
15547
15548         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
15549
15550         * mini-ops.h: Add OP_DUMMY_STORE opcode.
15551
15552         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
15553
15554         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
15555         variables in try regions.
15556
15557         * mini.c (mini_method_compile): Don't disable optimizations on large
15558         methods when AOT compiling.
15559
15560         * mini.c (mono_allocate_stack_slots): New arch independent method to 
15561         allocate stack slots. Not yet used.
15562
15563 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
15564
15565         * debug-mini.c (mono_debug_close_method): Plug some leaks.
15566
15567 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
15568
15569         * mini-ppc.c: make the branch info relative as the code
15570         buffer can be reallocated.
15571
15572 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
15573
15574         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
15575         * driver.c: Removed the AOT/security restriction. Now initialize the
15576         security manager (in metadata) if --security is used.
15577         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
15578         rather than the pointer to declarative security, when AOT is used.
15579
15580 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
15581
15582         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
15583         basic blocks, reduced intrinsic exception throwing code size.
15584
15585 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
15586
15587         * driver.c (mini_usage): Reorder the usage screen.
15588
15589 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
15590
15591         * mini.c (mono_resolve_patch_target): Fix warning.
15592
15593 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
15594
15595         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
15596         previous patch.
15597
15598         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15599
15600         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
15601         breaks the amd64 build.
15602
15603         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
15604         register allocation. Fixes #71454.
15605
15606         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15607
15608         * arrays.cs: Add new regression test.   
15609
15610 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15611
15612         * ssapre.c: Turned usage of snprintf to GString.
15613         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
15614         (I left it on by mistake in my previous commit).
15615
15616 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
15617
15618         * mini.c, cfold.c, basic-calls.cs: preserve side effects
15619         on cond branch optimization (fixes bug# 71515).
15620
15621 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15622
15623         * abcremoval.c: Fixed bug 71062.
15624         * abcremoval.h: Likewise.
15625
15626 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15627
15628         * mini.c: Added a new functionality to optimize_branches, the removal
15629         of useless basic blocks, and fixed some problem in the removal of
15630         critical edges; some utility functions added for both purposes.
15631         * ssapre.c: Added complex expression support, and fixed bug 70637.
15632         * ssapre.h: Likewise.
15633         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
15634         enabled in SSAPRE.
15635         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
15636         * driver.c: Re-enabled SSAPRE.
15637
15638 2005-01-19  Martin Baulig  <martin@ximian.com>
15639
15640         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
15641         the result of mono_get_method_constrained().
15642
15643 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
15644
15645         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
15646         manager.
15647
15648 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
15649
15650         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
15651         be detected.  Fixes #59296.
15652
15653 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15654
15655         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
15656         which can happen. Fixes #71361.
15657
15658 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15659
15660         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
15661         manager.
15662
15663 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15664
15665         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
15666         appdomain-unload.exe to fail.
15667         
15668         * mini.c: Fix some memory leaks.
15669
15670 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
15671
15672         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
15673         Fixed bug and sped up some codepaths.
15674
15675 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15676
15677         * mini.c: Fix some memory leaks.
15678
15679         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
15680         conversion.
15681
15682         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
15683
15684         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
15685         #71320.
15686
15687         * iltests.il: Add regression test for #71320.
15688
15689 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
15690
15691         * mini.c (mono_codegen): Fix installation of profiler hooks.
15692
15693         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
15694
15695 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15696
15697         * mini.h, mini.c, cfold.c: optimize access to enum
15698         readonly fields, too. Eval conditional branches if possible
15699         to perform unreachable code removal in more cases.
15700
15701 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
15702
15703         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
15704
15705         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
15706         code manager.
15707
15708         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
15709         WinXP DEP. Fixes #71244.
15710
15711 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
15712
15713         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
15714
15715 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
15716
15717         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
15718
15719 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
15720
15721         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
15722         changes.
15723
15724         * mini.h: Bump AOT version.
15725
15726         * mini.h (MonoCompile): Change exvar to a hash table.
15727
15728         * mini.c: Allocate a separate exvar for each handler block.
15729
15730         * mini.c: Get rid of the computation of filter_lengths, its not needed.
15731
15732         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
15733         ex var with the pending exception and only throw if the two are equal.
15734         Fixes #68552.
15735         
15736         * exceptions.cs: Add tests for rethrow and nested catch clauses.
15737
15738         * mini-x86.c: Fix warnings.
15739
15740         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
15741         used by all the ports now.
15742
15743         * aot.c: Add write-symbols and save-temps options.
15744
15745 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15746
15747         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
15748
15749 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
15750
15751         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
15752         operations.
15753
15754         * tramp-s390.c: Check vtable slot belongs to the domain.
15755
15756         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
15757         as per other platforms.
15758
15759         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
15760
15761 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
15762
15763         * driver.c: we don't run the Main() code in a subthread anymore.
15764
15765 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
15766
15767         * mini.c: added experimental rtc support in the statistical
15768         profiler: if the user has the permission, more accurate statistics
15769         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
15770         The MONO_RTC value must be restricted to what the linux rtc allows:
15771         power of two from 64 to 8192 Hz.
15772
15773 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15774
15775         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
15776
15777 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
15778
15779         * mini-ppc.c: better icache flush for smp.
15780
15781 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
15782
15783         * mini-amd64.c (emit_move_return_value): Fix memory leak.
15784
15785         * mini-x86.c (get_call_info): Add the get_call_info () code from the
15786         amd64 port, not yet used.
15787
15788 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15789
15790         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
15791         a struct type.
15792
15793 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15794
15795         * driver.c: Added --security option to activate the security manager.
15796         Right now this will allow code generation for declarative demands and
15797         is disabled when AOT is specified.
15798         * mini.c: Add code generation for declarative security demands.
15799         * mini.h: Add mono_use_security_manager as an extern gboolean.
15800
15801 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15802
15803         * aot.c (mono_compile_assembly): Speed up compilation a bit by
15804         emitting more dense assembly code.
15805
15806         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
15807         exception throwing stuff.
15808
15809 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
15810
15811         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
15812         dead code.
15813
15814         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
15815         left in by mistake.
15816
15817         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
15818         fixed.
15819
15820         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
15821
15822         * tramp-*.c: Only patch vtable slots if the object is in the current
15823         domain. Fixes appdomain-unload.exe.
15824
15825         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
15826         
15827         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
15828         x86 branch.
15829
15830 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15831
15832         * mini.c (reverse_branch_op): New helper function.
15833
15834         * mini.c (optimize_branches): Run the new optimization only on 
15835         platforms which support it. Also reverse all kinds of branches.
15836
15837         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
15838
15839         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
15840         a throw statement.
15841
15842         * mini.c (optimize_branches): Reverse not-equals branches if the false
15843         bblock is a throw. This happens a lot of time with argument checking in
15844         corlib.
15845
15846         * mini.c (mono_codegen): Add support for placing basic blocks after
15847         the function epilogue.
15848
15849         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
15850         function epilogue.
15851         
15852 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
15853
15854         * mini.c (setup_stat_profiler): Only set this up if the platform
15855         supports ITIMER_PROF.
15856
15857 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15858
15859         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
15860         previous patch.
15861
15862         * inssel.brg: Fix a warning.
15863
15864 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
15865
15866         * mini.c: added support for statistical profiler 
15867         (run with: --profile=default:stat).
15868
15869 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
15870
15871         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
15872
15873         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
15874
15875         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
15876         related to global registers from the amd64 port.
15877
15878 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
15879
15880         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
15881
15882         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
15883         with global registers.
15884         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
15885
15886         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
15887
15888 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
15889
15890         * debug-mini.c (encode_value): Fix off-by-one.
15891
15892         * aot.c (encode_value): Likewise.
15893
15894         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
15895
15896 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
15897
15898         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
15899         AOT.
15900
15901         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
15902         
15903         * aot.c (emit_method_info): Increase size of temp buffer.
15904
15905         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
15906         the AOT case.
15907
15908 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
15909
15910         * aot.c (emit_method_info): Fix build.
15911         
15912         * aot.c: Further rework of the AOT file format to reduce the size of
15913         the method info data.
15914
15915         * mini.h: Bump AOT file format version.
15916
15917 2004-12-27  Martin Baulig  <martin@ximian.com>
15918
15919         * mini.c (mini_get_method): New static method; call
15920         mono_get_method_full() and mono_get_inflated_method().
15921         (mono_method_to_ir): Use mini_get_method() instead of
15922         mono_get_method_full(). 
15923
15924 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
15925
15926         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
15927
15928 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
15929
15930         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
15931
15932         * inssel-amd64.brg: Add some optimization rules.
15933
15934 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
15935
15936         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
15937         standard not GC'd stuff is fine.
15938
15939 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
15940
15941         * aot.c: Rework the AOT file format to get rid of most of the global
15942         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
15943
15944         * mini.h: Bump AOT file format version.
15945         
15946 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
15947
15948         * mini.h: Bump AOT file format version.
15949
15950         * aot.c (mono_aot_is_got_entry): New function to determine if an 
15951         address is inside a GOT.
15952
15953         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
15954
15955         * cpu-pentium.md: Increase the maximum size of some instructions which
15956         might involve a got access.
15957         
15958         * mini.c (get_method_from_ip): Another debug helper function.
15959
15960         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
15961         when got var accesses are created during the decompose phase.
15962
15963         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
15964
15965         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
15966         argument mini_compile_method and to MonoCompile, and use this to
15967         determine whenever a given method is compiled for AOT. This allows the
15968         other methods compiled during AOT compilation to be free of AOT stuff,
15969         so the backends does not need to add special support for them by
15970         creating a fake GOT etc.
15971
15972         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
15973         longer needed.
15974
15975 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15976
15977         * mini.c (mono_method_to_ir): It turns out that some of the
15978         x-appdomain wrappers are lax with types, so just ignore this for
15979         all wrappers.
15980
15981         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
15982         at the vtable->klass. If it is non-shared code we can just use the
15983         vtable.
15984
15985 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
15986
15987         * mini-ppc.c: access MonoDomain from tls, too.
15988
15989 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
15990
15991         * declsec.c: Removed unused variable (and related warning ;-)
15992
15993 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15994
15995         * iltests.il: New test for LDELEMA on an array of ref types.
15996
15997         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
15998         all ldelema's on reftypes.
15999         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
16000         it was the wrong place to put it.
16001
16002         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
16003         register to pop to make this cleaner, at the request of Paolo.
16004
16005 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16006
16007         * mini-ops.h (OP_GETHASHCODE): New op.
16008
16009         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
16010
16011         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
16012         operation.
16013
16014         For a microbenchmark, this reduces the cost of Hashtable.get_Item
16015         by 25%.
16016         
16017         * mini-x86.c (mono_arch_output_basic_block): Rather than
16018
16019         add ebp, 4
16020
16021         Emit
16022
16023         pop edx
16024
16025         The first is 3 bytes while the second is 1. This saves 36 kb on
16026         mscorlib, quite a big saving. When bootstraping mcs, I was able to
16027         see a small boost because of icache locality.
16028
16029         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
16030
16031 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
16032
16033         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
16034         started code sharing with the generic code.
16035
16036 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
16037
16038         * mini-ppc.c, cpu-g4.md: added code for direct access to
16039         tls data slots.
16040
16041 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
16042
16043         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
16044          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
16045         to OP_TLS_GET.
16046
16047 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
16048
16049         * declsec.c|h: Added functions to cache the declarative stack modifiers
16050         in MonoJitInfo and to create a security frame from a MonoJitInfo 
16051         structure.
16052         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
16053         created. Register internal calls for System.Security.SecurityFrame::
16054         _GetSecurityFrame and _GetSecurityStack.
16055         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
16056         the definitions for the new stack walk/callback mechanism.
16057         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
16058         first security frame for LinkDemands and InheritanceDemands) and
16059         GetSecurityStack for Demands. Both use the new mono_walk_stack code
16060         from lupus.
16061         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
16062         walk initialization (lupus).
16063
16064 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16065
16066         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
16067         idiom.
16068         (handle_loaded_temps): Do not create a temporary variable for
16069         things that we know are temps. They will never be modified.
16070         (mono_spill_call): Set MONO_INST_IS_TEMP
16071         (mono_emulate_opcode): ditto
16072         (emit_tree): ditto
16073         (mono_method_to_ir.CEE_DUP): ditto
16074
16075 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
16076
16077         * mini.c (type_to_eval_stack_type): Make this handle the void type
16078         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
16079         (emit_tree): use ip_in_bb to special case some common idioms
16080         Update all callers to pass in the IP.
16081         (mono_method_to_ir): Make CEE_CALL* do the above as well.
16082
16083         This gives us a nice 2% speedup in mcs bootstrap.
16084
16085         * mini-x86.c (peephole_pass): Peephole pass to make
16086         mov  [foo], eax
16087         push [foo]
16088
16089         into
16090
16091         mov [foo], eax
16092         push eax
16093
16094         * mini.c (ip_in_bb): new method.
16095         (mono_method_to_ir): use this method rather than doing the hash
16096         lookup ourselves.
16097
16098         * linear-scan.c (mono_linear_scan): When expiring actives, you
16099         don't need to keep around variables that expire on this
16100         instruction. This makes it so that:
16101              a = b + 1
16102         will turn into:
16103              store (ebx add (ebx, 1))
16104         which will become
16105              add ebx, 1
16106
16107 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
16108
16109         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
16110         combination to avoid doing two copies. Fix up problems with previous
16111         patch.
16112
16113         * mini.c: Fix 64 bit warnings.
16114
16115         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
16116
16117 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
16118
16119         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
16120         changes from the x86 code.
16121
16122         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
16123
16124 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
16125
16126         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
16127         throwing code to reduce its size, unify the AOT and non-aot code and 
16128         get rid of relocations in the AOT case.
16129
16130         * mini-x86.h mini.c exceptions-x86.c 
16131         (mono_arch_get_throw_corlib_exception): New arch specific function to 
16132         raise corlib exceptions which doesn't require relocations in the 
16133         caller.
16134
16135         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
16136
16137 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
16138
16139         * mini.c (mono_emit_method_call): Only allocate the got var when it is
16140         needed.
16141
16142         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
16143         in the AOT case.
16144
16145 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16146
16147         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
16148         with add function when used from Inc/dec atomic 
16149         functions. Re-enabled optimization on x86.
16150         * mini-ops.h: renamed atomic_add functions to
16151         allow _add to match the Interlocked::Add and
16152         _add_next to match Interlocked::Inc/Dec.
16153
16154 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
16155
16156         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
16157         linking of BBs to the end BB, and enabled SSAPRE also with
16158         consprop and copyprop (which was prevented by that bug).
16159
16160 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16161
16162         * mini-x86.c: disabling the Interlocked optimizing code. 
16163
16164 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16165
16166         * aot.c (load_aot_module): Move reading of got_addr after the AOT
16167         file version check.
16168         
16169 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16170
16171         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
16172         interlocked optimization due lack of support on x86, rewrote 
16173         exchange to take into account that base may be in eax.
16174         
16175         xsp works again; activated Interlocked optimizing code.
16176         
16177 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16178
16179         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
16180
16181 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
16182
16183         * mini-ops.h: Add new opcodes.
16184
16185         * mini.h: Add new patch types. Add got_var to MonoCompile.
16186
16187         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
16188         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
16189         make it work with all kinds of patchable code.
16190
16191         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
16192         address of the GOT, and referencing entries in the GOT.
16193
16194         * mini.c: Add code to load the GOT address if needed by an opcode.
16195
16196         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
16197         independent AOT code on the x86 using an elf-style Global Offset Table.
16198
16199 2004-12-14  Raja R Harinath  <rharinath@novell.com>
16200
16201         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
16202
16203 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16204
16205         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
16206         when running xsp.
16207
16208 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
16209
16210         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
16211         of Interlocked:Increment/Decrement/Add as inline ops.
16212         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
16213
16214 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
16215
16216         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
16217         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
16218
16219 2004-12-12  Duncan Mak  <duncan@ximian.com>
16220
16221         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
16222         again. `patch_info->table_size' is no longer valid after Zoltan's
16223         commit #37636.
16224
16225 2004-12-12  Martin Baulig  <martin@ximian.com>
16226
16227         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
16228         if we are the "real" method, ie. not an inlined method inside it.
16229
16230 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
16231
16232         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
16233         before we look in the special fields table. This fixes
16234         ../tests/thread-static-init.cs.
16235
16236 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16237
16238         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
16239         for Array get_Rank and get_Length. Fixes bug #70465.
16240
16241 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
16242
16243         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
16244         separate structure to reduce the size of MonoJumpInfo.
16245
16246 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
16247
16248         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
16249
16250 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
16251
16252         * mini.c (mini_get_inst_for_method): Changed to allow ports
16253         to return a MonoInst instead of opcode 
16254         (renamed mini_get_opcode_for_method to better reflect the new functionality)
16255         
16256         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
16257         Allow ports to return a created MonoInst instead of op-code, will enable
16258         new optimizations.
16259         (renamed mini_get_opcode_for_method to better reflected the functionality)
16260
16261 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
16262
16263         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
16264
16265 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16266
16267         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
16268         Fixes #69985.
16269
16270 2004-12-08  Martin Baulig  <martin@ximian.com>
16271
16272         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
16273         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
16274
16275 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16276
16277         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
16278         correctly.
16279
16280         * exceptions.cs: Disable some tests which depend on properties of x86 fp
16281         arithmetic.
16282
16283 2004-12-08  Raja R Harinath  <rharinath@novell.com>
16284
16285         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
16286
16287 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
16288
16289         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
16290         bug introduced by the previous patch.
16291
16292 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16293
16294         * mini-ppc.c, objectc.cs: handle large structs passed by value
16295         (fixes bug #69972).
16296
16297 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
16298
16299         * mini-ppc.c: OP_ARGLIST implementation from
16300         Geoff Norton  <gnorton@customerdna.com>.
16301
16302 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16303
16304         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
16305         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
16306
16307 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16308
16309         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
16310
16311 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16312
16313         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
16314         support.
16315
16316 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
16317
16318         * mini-sparc.c: Zero out localled-ed memory.
16319
16320         * iltests.il: Add tests for zeroing out localloc-ed memory.
16321
16322 2004-12-04  Martin Baulig  <martin@ximian.com>
16323
16324         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
16325         mono_method_get_signature_full().       
16326
16327 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
16328
16329         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
16330         and some utility functions (always for SSAPRE), integrated SSAPRE.
16331         * mini.h: Likewise.
16332         * driver.c: Added ssapre option.
16333         * ssa.c: Small fix on OP_ARG handling.
16334         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
16335         * Makefile.am: Likewise.
16336
16337 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16338
16339         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
16340         now in the xp code.
16341
16342         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
16343         icall.
16344
16345 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16346
16347         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
16348         
16349         * cpu-s390.md : Increase instruction length of oparglist.
16350
16351         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
16352
16353 2004-11-30  Martin Baulig  <martin@ximian.com>
16354
16355         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
16356         virtual generic methods.  We call a special helper_compile_generic_method()
16357         icall to retrieve the method from the vtable, inflate and compile
16358         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
16359
16360         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
16361
16362 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
16363
16364         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
16365
16366 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
16367
16368         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
16369         Fixes #69929.
16370
16371 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
16372
16373         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
16374         platforms with PIC aot.
16375
16376 2004-11-28  Martin Baulig  <martin@ximian.com>
16377
16378         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
16379         Fixes gen-112.cs.
16380
16381 2004-11-28  Martin Baulig  <martin@ximian.com>
16382
16383         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
16384         the result of mono_type_get_underlying_type() to check whether
16385         we're byref.
16386
16387 2004-11-26  Martin Baulig  <martin@ximian.com>
16388
16389         * mini.c
16390         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
16391         in the g_assert().
16392
16393 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
16394
16395         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
16396         the same way as the other arguments so they won't get clobbered.
16397
16398         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
16399         calls through R11 since it is clobbered by the trampoline code.
16400
16401 2004-11-26  Raja R Harinath  <rharinath@novell.com>
16402
16403         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
16404         pick up in-tree mscorlib.dll.
16405
16406 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16407
16408         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
16409
16410         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
16411         runtime data/code are now stored in a table similar to the GOT in ELF. 
16412         This allows the code itself to be position independent.
16413
16414         * aot.c: Fix loading of referenced assemblies after the lazy assembly
16415         loading changes.
16416
16417         * aot.c: Attach ELF type (object/function) directives to all global
16418         symbols.
16419
16420         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
16421
16422         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
16423
16424         * mini-amd64.h: Turn on PIC AOT code.
16425
16426         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
16427         returning the offset within an OP_AOTCONST instruction where the GOT
16428         offset needs to be added.
16429
16430         * mini.h: Bump AOT file format version.
16431
16432 2004-11-25  Martin Baulig  <martin@ximian.com>
16433
16434         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
16435         uninflated generic methods.
16436
16437 2004-11-25  Martin Baulig  <martin@ximian.com>
16438
16439         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
16440
16441 2004-11-24  Martin Baulig  <martin@ximian.com>
16442
16443         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
16444         original klass (this only applies for generic instances).
16445
16446 2004-11-24  Martin Baulig  <martin@ximian.com>
16447
16448         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
16449         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
16450         that array).
16451
16452 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
16453
16454         * mini.c (mono_method_to_ir): Disable inlining for methods containing
16455         localloc. Fixes #69678.
16456
16457         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
16458         
16459 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
16460
16461         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
16462         used SSE registers on pinvoke calls. Fixes #69774.
16463
16464 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
16465
16466         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
16467         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
16468
16469 2004-11-23  Raja R Harinath  <rharinath@novell.com>
16470
16471         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
16472         Refer directly to the mcs/ tree.
16473
16474 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16475
16476         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
16477         Check if a trampoline for a synchronized method is required. 
16478
16479 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
16480
16481         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
16482         with localloc if needed. Throe arithmetric exception in
16483         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
16484         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
16485
16486 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
16487
16488         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
16489         types before switching on type.  Fixes #69622.
16490
16491 2004-11-19  Raja R Harinath  <rharinath@novell.com>
16492
16493         * Makefile.am (check-local): New.  Integrate into 'make check'.
16494         (MCS,RUNTIME): Define using in-tree mono and mcs.
16495         (ILASM): New.
16496         (%.exe): Use $(ILASM).
16497
16498 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
16499
16500         * mini-ppc.c: adjust initial prolog size (bug #69691).
16501
16502 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
16503
16504         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
16505         #69664.
16506
16507 2004-11-17  Raja R Harinath  <rharinath@novell.com>
16508
16509         * Makefile.am (clean-local): Rename from 'clean'.
16510
16511 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16512
16513         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
16514         to mono_arch_is_int_overflow. 
16515         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
16516         SIGFPE events.
16517
16518 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
16519
16520         * declsec.c|h: New files to support declarative security attributes.
16521         Added function to check if a method has (applicable) security.
16522         * mini.c|h: Add check for declarative security attributes in
16523         mono_method_check_inlining.
16524         * Makefile.am: Added declsec.c and declsec.h to the build.
16525
16526 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
16527
16528         * mini.c, mini.h: update to keep dynamic code info per-domain.
16529
16530 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
16531
16532         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
16533         (mini_init): Get rid of it from here too.
16534
16535 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
16536
16537         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
16538         implemented OP_RETHROW (patch by Geoff Norton
16539         <gnorton@customerdna.com>).
16540
16541 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
16542
16543         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
16544         between appdomains.  Fixes appdomain-unload on PPC.
16545
16546 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
16547
16548         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16549         mini-exceptions.c: handle the new wrapper types.
16550         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
16551         token value as a MonoClass* when compiling a wrapper.
16552         mono_jit_create_remoting_trampoline now takes an additional
16553         MonoRemotingTarget parameter.
16554         
16555 2004-11-10  Martin Baulig  <martin@localhost>
16556
16557         * mini.c (mono_method_to_ir): Use `generic_container->context'
16558         rather than creating a new one.
16559
16560 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16561
16562         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
16563
16564         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
16565
16566 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
16567
16568         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
16569         the experimental aot cache stuff.
16570
16571 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16572
16573         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16574         mini-exceptions.c: update to exception clause structure changes.
16575
16576 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16577
16578         * exceptions-x86.c (throw_exception): Fix warnings.
16579
16580         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
16581         for OP_RETHROW.
16582
16583 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16584
16585         * exceptions-sparc.c (get_throw_exception): Really fix this.
16586
16587 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
16588
16589         * tramp-*.c: we no longer support icalls without wrappers, so
16590         a bit of code can be removed here
16591
16592 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
16593
16594         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
16595         patch.
16596
16597         * cpu-sparc.md: Add op_rethrow.
16598
16599         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
16600
16601         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
16602
16603         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
16604         * mini-ops.h: Add OP_RETHROW.
16605
16606         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
16607
16608         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
16609
16610 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
16611         
16612         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
16613         Makes the output much easier to read
16614
16615 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
16616
16617         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
16618         prevents another huge leak when compiling with ssa. Secondly, the
16619         performance of doing this rather than freeing the lists is much
16620         better. GList does a lock every time you allocate a list link,
16621         so that it can use a memory pool. So, it is better to just use
16622         a memory pool of our own.
16623         
16624         * ssa.c, linear-scan.c: replace g_list_remove_link with
16625         g_list_delete.  The remove one does not free the GList, so we were
16626         leaking memory. On -O=all --compile-all with corlib, this cut down
16627         3 MB of allocations.
16628
16629 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
16630
16631         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
16632
16633         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
16634
16635         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
16636         into a new function mono_create_jit_trampoline ().
16637
16638 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
16639
16640         * trace.c (get_spec): Allow tracing of classes without a namespace.
16641
16642 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
16643
16644         * mini.c: Fix pointer overwrite in mini_method_compile.
16645
16646 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
16647
16648         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
16649         The darwin ABI needs some special handling for 1 and 2 byte structs
16650         Lets use lbz/lhz instead of lwz everywhere.
16651         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
16652         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
16653         Use stb/sth for the former, and put the latter always on stack instead of in
16654         argument registers.
16655
16656 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
16657
16658         * trace.c (is_filenamechar): Add '_'.
16659
16660 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
16661
16662         * mini-s390.c: Fix prolog length to allow for large trace requirements.
16663
16664         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
16665
16666 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
16667
16668         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
16669         depends on libmonogc. Fixes #68805.
16670
16671 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
16672
16673         * mini.c (mono_jit_free_method): Provide extra information for
16674         this error.  Currently this leaks, but will be turned into a
16675         developer option in the future.
16676
16677 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
16678
16679         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
16680
16681 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
16682
16683         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
16684         boundary. Fixes reading of PATCH_INFO_R4 and R8.
16685         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
16686
16687 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
16688
16689         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
16690         trampolines for AOT code.
16691
16692 2004-10-22    <vargaz@freemail.hu>
16693
16694         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
16695         constructed types. Fixes #68136.
16696
16697 2004-10-21  Martin Baulig  <martin@ximian.com>
16698
16699         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
16700         if it returns true, unwind the stack to the call instruction.
16701
16702 2004-10-21    <vargaz@freemail.hu>
16703
16704         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
16705
16706         * mini.h: Bump AOT version number.
16707
16708         * objects.cs: Add another test for unbox trampolines.
16709
16710         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
16711         valuetype methods.
16712
16713 2004-10-20    <vargaz@freemail.hu>
16714
16715         * driver.c: Add SHARED to the set of optimizations tested.
16716
16717         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
16718
16719         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
16720         used by CEE_NEWARR.
16721
16722         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
16723
16724 2004-10-20  Martin Baulig  <martin@ximian.com>
16725
16726         * mini-exceptions.c (mono_handle_exception): Call
16727         mono_debugger_handle_exception() to tell the debugger about
16728         catch/finally clauses.
16729
16730 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
16731
16732         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
16733
16734         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
16735         #68447.
16736
16737 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
16738
16739         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
16740         methods as their native size, fixed bug #57543, #57545.
16741         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
16742         This saves a temporary register and mullw call down into 1 (minor perf
16743         increase for cases like sum = sum * 5;  This use to translate into:
16744             li r11,5
16745             mullw r28,r28,r11
16746         It now translates to
16747             mulli r28,r28,5
16748
16749 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
16750
16751         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
16752         #68388.
16753
16754 2004-10-11  Martin Baulig  <martin@ximian.com>
16755
16756         * mini.c (mono_method_to_ir): If we're a generic method, get the
16757         MonoGenericContainer from our MonoMethodNormal and create a
16758         MonoGenericContext from it.
16759
16760 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
16761
16762         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
16763
16764         * basic-long.cs: Add test for checked i8->i2 cast.
16765
16766 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16767
16768         * inssel-ppc.brg: added a couple of speedup rules.
16769
16770 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
16771
16772         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
16773         to speed up rebuilds.
16774
16775 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16776
16777         * mini-s390.c: Minor fix to OP_OR_IMM.
16778
16779 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
16780
16781         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
16782         better. Fixes appdomain-unload.exe on sparc.
16783
16784 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
16785
16786         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
16787         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
16788         see bug 67324.
16789
16790 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
16791
16792         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
16793
16794 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
16795
16796         * mini.c: Always generate a field read/write wrapper for members
16797         of the class MarshalByRefObject since the actual instance could
16798         be a CBO.
16799
16800 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
16801
16802         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
16803
16804 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
16805
16806         * driver.c mini.h trace.c: Move the setting of the main assembly into
16807         a separate function called mono_trace_set_assembly () and call it after
16808         actually loading the main assembly. Fixes #66872.
16809
16810 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
16811
16812         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
16813         using the code manager.
16814
16815 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
16816
16817         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
16818
16819 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
16820
16821         * cpu-amd64.md: Fix bug in previous patch.
16822         
16823         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
16824         #66650.
16825
16826 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
16827
16828         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16829         mini-exceptions.c: updates for changed stack walk interface.
16830
16831 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16832
16833         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
16834
16835 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
16836
16837         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
16838
16839 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
16840
16841         * driver.c (mini_regression_list): Do not call mono_assembly_close 
16842         since assemblies can't be unloaded.
16843         
16844 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16845
16846         * cpu-amd64.md: Fix more instruction lengths.
16847
16848         * cpu-amd64.md: Fix lengths of some instructions.
16849
16850 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
16851
16852         * inssel.brg: Make the array ldelema check aot friendly.
16853
16854 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16855
16856         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
16857
16858         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
16859
16860 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
16861
16862         * mini-x86.c: Fix build.
16863
16864         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
16865         mono_type_get_underlying_type () helper function to simplify code.
16866         
16867 2004-09-09  Martin Baulig  <martin@ximian.com>
16868
16869         * mini-amd64.c: Don't access `type->data.klass' directly, call
16870         mono_class_from_mono_type() instead since the type may be a
16871         generic instance.
16872
16873 2004-09-09  Martin Baulig  <martin@ximian.com>
16874
16875         * mini-amd64.c (get_call_info): Fix support for generic instances.
16876         (add_valuetype): Use mono_class_from_mono_type() to get the class
16877         since we can be a generic instance.
16878
16879 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
16880
16881         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
16882
16883 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
16884
16885         * liveness.c: reset spill costs on each scan: bug 62107
16886
16887 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
16888
16889         * exceptions-sparc.c (mono_arch_find_jit_info): remove
16890         unnecessary line that doesn't compile
16891
16892 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16893
16894         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
16895         trampolines, make them call an error function so people can fix their
16896         code.
16897
16898 2004-09-06  Martin Baulig  <martin@ximian.com>
16899
16900         * mini.c (mono_method_to_ir): When initializing locals, handle a
16901         generic instances like a valuetype if it's a valuetype and like a
16902         class if it's a class.
16903
16904 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16905
16906         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
16907         stack. Fixes #64674.
16908
16909         * exceptions.cs: Add test for unwinding of call arguments.
16910
16911 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
16912
16913         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
16914         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
16915         set the carry/borrow flag). The sparc and s390 implementations
16916         can now use optimized versions (and simplify the code). ppc bugfixes.
16917
16918 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16919
16920         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
16921
16922 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
16923
16924         * inssel-amd64.brg: Remove leftover 32 bit rule.
16925
16926         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
16927
16928 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
16929
16930         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
16931         mono_arch_find_jit_info functions into a new function. Fix a memory
16932         leak.
16933
16934         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
16935         refactored code.
16936         
16937 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16938
16939         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
16940         as well.
16941         
16942         * exceptions.cs: Add array size tests.
16943
16944         * mini.c: Allocate a separate icall wrapper for each arity of 
16945         mono_array_new_va. Fixes #59509.
16946
16947         * exceptions.cs: Add testcase for 64578.
16948
16949         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
16950
16951         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
16952         
16953 2004-09-02  Martin Baulig  <martin@ximian.com>
16954
16955         * mini.c (mono_method_to_ir): When initializing the locals, call
16956         handle_initobj() on the generic instance itself, not its
16957         underlying type.
16958
16959 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16960
16961         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
16962         MonoJitInfo for dynamic methods.
16963
16964         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
16965
16966         * mini.c: Add support for freeing JIT data for dynamic methods.
16967         
16968 2004-09-01  Martin Baulig  <martin@ximian.com>
16969
16970         * mini-x86.c (is_regsize_var): Added support for generic
16971         instances.
16972         (mono_arch_emit_prolog): Make this compile again, use
16973         `x86_push_imm_template (code)'.
16974
16975 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
16976
16977         * mini-x86.c: make all push_imm instructions that get
16978         patched always emit the long form
16979
16980 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16981
16982         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
16983         in a per-domain hash.
16984
16985         * mini-amd64.c (merge_argument_class_from_type): Handle generic
16986         types.
16987
16988 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16989
16990         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
16991         work.
16992         
16993         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
16994         work.
16995
16996         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
16997         Beginnings of SSE2 support.
16998
16999         * exceptions.cs: Add more tests for checked int<->uint casts.
17000
17001 2004-08-28  Martin Baulig  <martin@ximian.com>
17002
17003         * mini-x86.c (mono_arch_instrument_epilog): Added support for
17004         generic instances.
17005
17006         * mini.c
17007         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
17008         Handle generic instances recursively.
17009
17010 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17011
17012         * iltests.il: test for conv.u8 on a constant
17013
17014 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17015
17016         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
17017         LCONV_x4 (shrun_32 (membase)).
17018
17019 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17020
17021         * inssel-x86.brg: c&p rules for push/setret of long
17022
17023 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17024
17025         * inssel-x86.brg: c&p rules for compare (base, regvar) and
17026         compare (regvar, base)
17027
17028         * inssel-x86.brg: more burg love
17029
17030         * inssel.brg: more cleanup
17031
17032         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
17033
17034 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17035
17036         * basic-long.cs, basic-calls.cs: new tests for optimization.
17037
17038 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
17039
17040         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
17041         patch.
17042
17043 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17044
17045         * mini-amd64.c (read_tls_offset_from_method): Add another case.
17046         
17047 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
17048
17049         * inssel.brg (mini_emit_memcpy): use 
17050         NO_UNALIGNED_ACCESS to disable memcpy optimization
17051
17052 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17053
17054         * mini-amd64.c: Handle generic types in various places.
17055
17056         * mini.c (mono_method_to_ir): Handle generic types in init locals.
17057
17058 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
17059
17060         * mini.c (handle_box): Fix warning.
17061
17062         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
17063
17064         * mini-amd64.h: Enable the emit_state optimization.
17065
17066         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
17067
17068         * mini-amd64.c: Add some new 64 bit peephole opts.
17069
17070         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
17071
17072         * cpu-amd64.md: sreg1 of div instructions must be %rax.
17073
17074         * mini-amd64.c: Register allocator fixes.
17075
17076         * mini.c: Add an optimization to emit_state to avoid allocation of new
17077         registers on some platforms.
17078
17079 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
17080
17081         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
17082
17083         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
17084         allocation. Fixes #63085.
17085
17086         * basic-long.cs: Add new regression test.
17087
17088         * mini-amd64.c: Register allocator improvements.
17089
17090 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
17091
17092         * mini-amd64.c (read_tls_offset_from_method): Add another code
17093         sequence.
17094
17095         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
17096         instruction sequence for nullifying class init trampolines.
17097
17098         * objects.cs: Add new regalloc test.
17099
17100         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
17101
17102 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17103
17104         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
17105         
17106         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
17107         arguments.
17108
17109         * driver.c: Fix profiling after TLS changes.
17110         
17111         * driver.c (mono_main): Set mono_stats.enabled if needed.
17112
17113         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
17114         CEE_BOX.
17115
17116 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
17117
17118         * mini-x86.c: use a 1 op rather than a 2 op tls access
17119         instruction -> faster.
17120
17121 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17122
17123         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
17124         x86 backend.
17125
17126 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
17127
17128         * exceptions-sparc.c (throw_exception): fix typo
17129
17130 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17131
17132         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
17133         set tree->dreg correctly with tls. Allow any
17134         register to be used.
17135
17136         * mini-x86.c (read_tls_offset_from_method): add new code
17137         generation pattern seen with GCC.
17138
17139
17140 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17141
17142         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
17143         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17144         exceptions-sparc.c: fix some performance issues in exception
17145         handling and setting of the stack trace for exceptions that were
17146         already thrown.
17147
17148 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17149
17150         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
17151         x86 backend.
17152         
17153         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
17154         registers.
17155
17156 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17157
17158         This patch inlines tls access, when possible.
17159         
17160         * mini.h: new arch functions for TLS intrinsics.
17161         All platforms updated with a stub.
17162
17163         * mini.c: use the new intrinsics
17164
17165         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
17166         arch specific intrinsic for tls variables
17167
17168 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17169
17170         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
17171         under windows.
17172
17173 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17174
17175         * mini.c: thread local allocation
17176
17177 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
17178
17179         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
17180
17181         * Makefile.am: Link against the static version of libmonogc.
17182         
17183         * Makefile.am: Link the static versions of the convenience libraries
17184         into the mono executable.
17185
17186         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
17187
17188 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
17189
17190         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
17191         on integer overflow.
17192
17193         * mini-amd64.c: Reorganize function call code.
17194
17195         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
17196
17197 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17198
17199         * inssel-x86.brg: use xor eax,eax.
17200         
17201         * basic.cs: new tests
17202
17203 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17204
17205         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
17206         in exception throwing code.
17207         
17208 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17209
17210         * inssel-x86.brg: use xor esi,esi.
17211
17212 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17213
17214         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
17215         can trace methods compiled during mini_init () too.
17216
17217         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
17218         CEE_CONV_U4.
17219
17220 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17221
17222         * Makefile.am: static link on x86 (r=zoltan)
17223
17224 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17225
17226         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
17227         code since it causes some programs to fail.
17228
17229 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
17230
17231         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
17232
17233 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17234
17235         * mini.c: ovfops_op_map - add STACK_OBJ case for
17236         CONV_I 
17237         * basic.cs: add test_0_pin_string as test
17238         case for above.
17239
17240 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17241
17242         * Makefile.am: build C# if srcdir != builddir
17243
17244 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17245
17246         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
17247         fall-through blocks.
17248
17249 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17250
17251         * driver.c: enable loop by default again and include abcrem in -O=all.
17252
17253 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
17254
17255         * iltests.il: Add some localloc tests.
17256
17257         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
17258
17259         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
17260         Fixes #62574.
17261
17262         * inssel-amd64.brg: Add some optimizations.
17263
17264         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
17265         for gcc-3.4.
17266
17267         * Makefile.am: Statically link mono against libmono on AMD64.
17268         
17269         * mini-amd64.c inssel-amd64.brg: Optimizations.
17270
17271 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
17272
17273         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
17274
17275         * tramp-amd64.c: Patch calling code in trampolines.
17276
17277 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
17278
17279         * mini-amd64.c: pinvoke struct passing fixes.
17280
17281 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
17282
17283         * mini-sparc.c: redo change, make mono_arch_cpu_init call
17284         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
17285
17286 2004-08-05  Duncan Mak  <duncan@ximian.com>
17287
17288         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
17289         CEE_LDELEM_ANY.
17290
17291 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17292
17293         * mini-amd64.c (emit_move_return_value): Move return value for normal
17294         calls too.
17295
17296 2004-08-05  Martin Baulig  <martin@ximian.com>
17297
17298         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
17299         `type->type'; just modify `type' itself when dealing with enums
17300         and generic instances.
17301         (check_call_signature): Make `simple_type' a `MonoType *'.
17302
17303 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17304
17305         * mini.c: Use OP_PADD to add offsets to addresses.
17306
17307         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
17308
17309 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
17310
17311         * mini-sparc.c (mono_arch_emit_epilog): fix check
17312         for folding last op into restore instruction
17313
17314 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17315
17316         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
17317         helper methods using the code manager.
17318         
17319         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
17320
17321         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
17322
17323 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17324         
17325         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
17326           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
17327
17328         * mini-s390.c: fix tail processing
17329
17330 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
17331
17332         * mini-ppc.c: mul.ovf.un exception name fix.
17333
17334 2004-08-03  Martin Baulig  <martin@ximian.com>
17335
17336         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
17337         instances; before jumping to `handle_enum', also modify `ptype'.
17338
17339 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
17340
17341         * cpu-sparc.md: fcall maximal length too small.
17342
17343 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
17344
17345         * mini-amd64.c mini.h: Add initial support for passing/returning 
17346         structures to/from pinvoked methods.
17347
17348 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
17349
17350         * mini-ppc.c: reg allocator fix.
17351
17352 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
17353
17354         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
17355
17356         * inssel.brg: Optimize memset on 64 bit machines.
17357
17358         * mini-amd64.c: Fix some vararg cases.
17359
17360 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17361
17362         * mini-s390.c: Corrected macro in emit_float_to_int
17363
17364         * s390-abi.cs: Tests to exercise the s390 ABI
17365
17366 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17367
17368         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
17369         caller saved regs.
17370
17371         * basic.cs: Add a test for add.ovf.un.
17372
17373 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
17374
17375         * mini-sparc.c: add case for OP_IDIV_UN
17376
17377 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17378
17379         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
17380         
17381         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
17382
17383 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
17384
17385         * basic.cs: regression tests.
17386
17387         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
17388         regressions.
17389
17390 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17391
17392         * basic.cs: Add a new test.
17393
17394         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
17395         and AOT. Various fixes and optimizations.
17396
17397         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
17398
17399 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17400
17401         * mini-ppc.c: make sure temp regs are not used for global reg
17402         allocation.
17403
17404 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
17405
17406         * cpu-sparc.md: conv_i8 fix for 64bits
17407
17408         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
17409
17410 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
17411         
17412         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
17413         add opcode for cmp BYTE PTR [eax], imm.
17414
17415         * inssel.brg: Make memcpy and memset takes bases.
17416
17417 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17418
17419         * *-amd64.*: More AMD64 work.
17420         
17421 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17422
17423         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
17424         add a compare-not-equal opcode.
17425         
17426 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
17427
17428         * mini.c: Use mono_init_from_assembly instead of mono_init.
17429         
17430 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17431
17432         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
17433
17434         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
17435
17436         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
17437
17438         * inssel.brg: 64 bit fixes.
17439
17440         * mini.h (MonoCallInst): Add some AMD64 specific data.
17441
17442         * mini.h: Add some OP_P opcodes.
17443
17444 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17445
17446         * basic.cs: tests for 61797 and 61740
17447
17448 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
17449
17450         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
17451         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
17452
17453 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
17454
17455         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
17456
17457         * *-amd64*.*: Ongoing AMD64 work.
17458
17459 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
17460
17461         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
17462
17463         * *-amd64*: Ongoing AMD64 work.
17464
17465         * mini-arch.h: Add AMD64 support.
17466
17467         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
17468
17469         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
17470
17471         * mini-ops.h: Add new opcodes.
17472
17473         * Makefile.am: Add AMD64 support.
17474
17475         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
17476         rules into the inssel-long*.brg files.
17477
17478         * *-amd64.*: Add beginnings of AMD64 backend.
17479
17480 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
17481
17482         * mini.c (print_dfn): commenting out the code that prints
17483         the cil. With -O=deadce, this makes -v -v crash.
17484         
17485         * cpu-pentium.md: make checkthis have a length of 2
17486
17487 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
17488
17489         * mini-sparc.h: fix implementations of __builtin
17490         functions for Sun compiler for V9.
17491
17492 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
17493
17494         * mini.c: use the new stelem.ref wrapper
17495         * exceptions.cs, arrays.cs: new stelem.ref tests
17496
17497 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17498
17499         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
17500         new XSP should work with these changes).
17501
17502 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
17503         
17504         * inssel-{long32,x86,}.brg: trivial optimizations.
17505         
17506 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
17507
17508         * mini.c: load value when emitting box operation in
17509         constrained calls.
17510
17511 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
17512
17513         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
17514         is one byte shorter than cmp DWORD PTR [eax], 0.
17515
17516 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17517
17518         * inssel-ppc.brg: arguments on the stack are always
17519         relative to the stack pointer (spotted by Neale Ferguson).
17520
17521 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17522
17523         * exceptions-x86.c: delay appending the method name to the trace until
17524         after mono_jit_info_table_find is called, as this gets the real
17525         MonoMethod.
17526
17527 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
17528
17529         * aot.c: register roots
17530
17531 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17532
17533         * aot.c : I could just use PLATFORM_WIN32 flag.
17534
17535 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17536
17537         * aot.c : Reverting the previous fix. This time it broke linux build.
17538
17539 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17540
17541         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
17542
17543 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
17544
17545         * mini.c (handle_stack_args): Remove some more debugging code.
17546         
17547         * mini.c (handle_stack_args): Remove debug output left in by mistake.
17548
17549         * driver.c mini.h aot.c: Allow additional options to be specified with
17550         --aot and pass them to mono_compile_assembly.
17551
17552         * aot.c: Add experimental code to AOT compile all loaded assemblies
17553         on demand and save the code into a cache in the filesystem.
17554
17555         * aot.c: Add support for more wrapper methods.
17556         
17557         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
17558         58863.
17559
17560         * cpu-*.md: Remove removed opcodes.
17561
17562         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
17563         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
17564         related icalls to marshal.c.
17565
17566 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
17567
17568         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
17569
17570         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
17571
17572         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
17573
17574 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
17575         * liveness.c: If liveness is recomputated we need to reset the information
17576         for each variable. This way, if the liveness range has been narrowed
17577         by optimizations that happened after the last computation, we can return
17578         a smaller range.
17579         
17580         For example, if you have
17581         
17582         {
17583                 int i = 0;
17584                 
17585                 // Tons of code that does not affect i
17586                 
17587                 i = foo ();
17588                 ...
17589         }
17590         
17591         i = 0 is dead code and will be removed by SSA. However, when
17592         linear scan gets to the code, i will still appear to be live
17593         throughout the entire block. This prevents good register allocation.
17594
17595 2004-07-06  Martin Baulig  <martin@ximian.com>
17596
17597         * debug-mini.c (mono_debug_init_method): Allow
17598         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
17599         (mono_debug_add_icall_wrapper): New method.
17600
17601         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
17602
17603 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
17604
17605         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
17606         optimization.
17607
17608 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
17609
17610         * aot.c (mono_aot_load_method): Fix loading of debug info.
17611
17612 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17613
17614         * aot.c: Add logging support.
17615
17616 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17617
17618         * mini.h: Add prototype for mono_print_method_from_ip.
17619
17620         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
17621
17622         * inssel.brg: 64 bit fixes.
17623
17624         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
17625         inssel-long32.brg.
17626
17627         * Makefile.am: Add SPARC64 support.
17628
17629 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17630
17631         * aot.c: Fix alignment problems on 32 bit platforms.
17632
17633 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17634
17635         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
17636         SPARC64.
17637
17638         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
17639         problems.
17640
17641         * mini.h: Bump AOT file version. Some 64 bit fixes.
17642
17643 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17644
17645         * inssel-sparc.brg: Add new rule to avoid register moves.
17646
17647         * inssel.brg: Add ldind_to_load_membase helper function.
17648
17649 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
17650
17651         * mini.c: OffsetToStringData intrinsic.
17652         
17653 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17654
17655         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
17656
17657         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
17658         regression tests.
17659
17660         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
17661 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17662
17663         * mini.c: reinstated mono_compile_get_interface_var()
17664         on x86, too, since the change breaks the Gtk# build there as well.
17665
17666 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17667
17668         * driver.c: remove loop from the default optimizations: it seems to
17669         interact badly with some of the other options (see bug #60613).
17670
17671 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
17672
17673         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
17674         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
17675
17676 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
17677
17678         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
17679         vararg-using methods.
17680
17681 2004-06-21  Martin Baulig  <martin@ximian.com>
17682
17683         * mini/mini-exceptions.c
17684         (mono_handle_exception): Added `gpointer original_ip' argument.
17685         After calling mono_unhandled_exception(), call
17686         mono_debugger_unhandled_exception() and if that returns true,
17687         restore the context and return.
17688
17689 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17690
17691         * mini-ppc.c: prefer the use of relative branches so
17692         they won't need to be patched in aot code (patch from Patrick Beard).
17693
17694 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17695
17696         * aot.c: patch from Patrick Beard to make the output assembly
17697         more correct for the MacOSX assembler. Small tweak to
17698         generate sane images on Linux/PPC, too.
17699
17700 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17701
17702         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
17703         case until bug #59509 is fixed (shows up in #60332).
17704
17705 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17706
17707         * mini.c: make sure the needed wrappers are compiled, too, with
17708         precomp.
17709
17710 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
17711
17712         * driver.c: remove NPTL reference in --version output.
17713
17714 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17715
17716         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
17717         generate valid assembly for the Mach-O assembler.
17718
17719 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17720
17721         * driver.c: don't include abcrem in the all optimization specifier
17722         since it slows down jit compilation too much for now.
17723
17724 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
17725
17726         * mini.c: use BIGMUL only if both operands have the same signage.
17727         * iltests.il: Test for bug 60056. (errors related to signage in
17728         BIGMUL).
17729
17730         r=lupus.
17731
17732 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
17733
17734         * mini.c, aot.c: memory leak fixes.
17735
17736 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17737
17738         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
17739
17740 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
17741
17742         * Makefile.am: remove the -static hack completely, it links in
17743         statically glib as well.
17744
17745 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
17746
17747         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
17748         * exceptions.cs: make it compile with new mcs/csc.
17749
17750 2004-06-03 Massimiliano Mantione <massi@ximian.com>
17751         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
17752         and added relevant test case.
17753
17754 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17755
17756         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
17757         regressions in gtk-sharp.
17758
17759 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
17760
17761         * exceptions.cs: New regression tests.
17762
17763         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
17764
17765 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
17766
17767         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
17768
17769 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
17770
17771         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
17772
17773         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
17774
17775 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
17776
17777         * mini.c (mono_jit_runtime_invoke): Init class in this
17778         method instead of trusting mono_jit_compile_method to
17779         do the work (because wrappers can be in object class)
17780
17781 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
17782
17783         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
17784
17785         * basic-long.cs: New regression test.
17786
17787 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
17788
17789         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
17790         and div/rem checks.
17791
17792 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
17793
17794         * Makefile.am: fix miguel's change to build mono statically against
17795         libmono (track build dependencies).
17796
17797 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17798
17799         * cfold.c: Some glib versions do not have G_MININT32.
17800
17801 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
17802
17803         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
17804         with precision of tan, atan, sin and cos, and implemented related
17805         regressions tests (fixes bug 54467, but one new problem appeared and
17806         is not fixed yet).
17807
17808 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17809
17810         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
17811
17812         * exceptions.cs: Add test for constant folding && division by zero.
17813
17814         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
17815         since driver.c is in libmono too, so the optimization was useless.
17816
17817         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
17818         variable to driver.c so the compiler can emit more efficient code to
17819         access them.
17820
17821 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17822
17823         * Makefile.am: don't distribute generated inssel.[ch] files.
17824
17825 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17826
17827         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
17828         into the default appdomain. Fixes #58707.
17829
17830         * jit-icalls.c: Remove the broken approximation for truncl, doing
17831         no conversion is better.
17832
17833         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
17834         Fixes #58863.
17835
17836 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17837
17838         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
17839         of the mcrxr instruction which is not available on some processors
17840         even if it's documented to be. Implement add and sub overflow correctly
17841         (still not complete for long unsigned). Speed up icalls a bit.
17842
17843 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
17844
17845         * mini.c (mono_jit_compile_method_with_opt): Make sure that
17846         we run .cctor in the current domain instead of target_domain.
17847         
17848         Fixes bug #58558, .cctor not being called in -O=shared.
17849
17850 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17851
17852         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
17853
17854 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
17855
17856         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
17857         which can be done with an imm8, do it that way.
17858         (mono_arch_output_basic_block): ditto for a jmp
17859         (mono_arch_emit_prolog): Computate maximum offset of a label.
17860
17861 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
17862
17863         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
17864         now tries to allocate prefered physical reg's for virtual
17865         regs. This reduces the number of emited spills/loads with
17866         20-30% on our core assemblies.
17867
17868 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17869
17870         * jit-icalls.c: truncl() is not needed and trunc() is
17871         the correct thing to do anyway (bug #58287).
17872
17873 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
17874
17875         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
17876         if available.
17877
17878 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
17879
17880         * driver.c: enable loop optimizations by default.
17881
17882 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17883
17884         * mini-x86.c: fix calc of max loop size when aligning loops start.
17885
17886 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
17887
17888         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
17889         the stack.
17890
17891 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17892
17893         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
17894         should set carry.
17895
17896         * basic-long.cs: Add tests for add/subtract of immediates with carry.
17897
17898         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
17899         
17900         * mini.c (inline_method): Allways inline some wrappers even if the cost
17901         is too large. Fixes #58785.
17902
17903         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
17904         
17905 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17906
17907         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
17908         (crichton@gimp.org). Beginning of support for sparc/linux.
17909
17910         * mini-sparc.c: Optimize retrieval of LMF address.
17911
17912 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
17913
17914         * exceptions-ppc.c:  handle alloca in methods with clauses.
17915
17916 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
17917
17918         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
17919
17920 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17921
17922         * mini.c: Delegate most of the abort signal work to 
17923           mono_thread_request_interruption, which also handles Stop and Suspend
17924           states.
17925
17926 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17927
17928         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
17929         supports the save/restore lmf opcodes.
17930
17931 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
17932
17933         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
17934         by gcc-3.4 as well.
17935
17936         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
17937
17938 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17939
17940         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
17941         methods which contain array accesses.
17942
17943         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
17944         boundaries. Fixes #58537.
17945
17946         * iltests.il: Add regression test for #58537.
17947
17948 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17949
17950         * mini-x86.c (mono_arch_local_regalloc): Last part of
17951         fix for bug #58633 (releasing register to early).
17952
17953 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
17954
17955         * basic-long.cs: Add new regression test.
17956
17957 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17958
17959         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
17960         register too early on the chain.
17961
17962 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17963
17964         * mini.c (create_helper_signature): Use a helper function to reduce
17965         the code which needs to be written. Also set the calling convention of
17966         icalls on windows. Fixes #57840.
17967
17968 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17969
17970         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
17971         exceptions-ppc.c: added helper function to get the instruction address
17972         from a signal handler context.
17973
17974 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17975
17976         * helpers.c: use g_get_tmp_dir. Invokes happyness 
17977         from gonzalo.
17978
17979 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17980
17981         * helpers.c: Add new env variable to pass args to objdump.
17982         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
17983
17984 2004-05-17  Radek Doulik  <rodo@ximian.com>
17985
17986         * Makefile.am (common_sources): added abcremoval.h so it get
17987         disted and daily mono packages on go-mono.com will build again
17988
17989 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
17990
17991         * abcremoval.c: Fixed coding style, added copyright header.
17992
17993         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
17994
17995         * mini.h: Added prototype for abc removal main function.
17996
17997         * build_relations_propagation_table.pl: Added copyright header.
17998
17999 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18000
18001         * basic-long.cs: reg test for complex ceq_long bug.
18002
18003 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18004
18005         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
18006         reg in long and clob case (bug #58343). Fixed/added comments.
18007
18008 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
18009
18010         * mini.c (mono_jit_runtime_invoke): Follow new convention
18011         of calling the invoke method with an function pointer.
18012
18013 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
18014
18015         * ChangeLog: Fix author of memory leak patch.
18016
18017 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
18018
18019         * Makefile.am: fix make dist as well...
18020
18021
18022 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
18023
18024         * cfold.c: Made so that conversions from pointer to int4 are no-ops
18025         on archs where pointers are 4 bytes long.
18026
18027         * Makefile.am: Added abcremoval.c source file.
18028
18029         * abcremoval.c: Added abcremoval.c.
18030
18031         * abcremoval.h: Added abcremoval.h.
18032
18033         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
18034
18035         * inssel.brg: Enabled bounds check removal.
18036
18037         * mini.c: Added support for abcrem optimization.
18038
18039         * mini.h: Added abcrem optimization label.
18040
18041         * driver.c: Added support for abcrem optimization.
18042
18043         * propagated_relations_table.def: Added propagated_relations_table.def.
18044
18045 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
18046
18047         * mini.c, cfold.c: fix style.
18048
18049 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18050
18051         * mini.c: handle issue with the low-level implementation of
18052         some long opcodes (bug #54209).
18053
18054 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
18055
18056         * basic.cs: test for my new cmov stuff.
18057
18058 2004-05-13      Patrik Torstensson
18059
18060         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
18061         opt and added peephole documentation.
18062
18063 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
18064
18065         * tramp-ppc.c: rewrote the generic trampoline code.
18066
18067 2004-05-11      Patrik Torstensson
18068
18069         * mini-x86.c: optimize long shl/shr asm code (one less branch)
18070
18071 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
18072
18073         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
18074
18075         * mini.h mini.c dominators.c: Applied patch from Derek Woo
18076         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
18077
18078         * mini.c: Add new icalls for AsAny marshalling.
18079
18080 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18081
18082         * tramp-ppc.c, mini-ppc.c: more cleanups.
18083
18084 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18085
18086         * mini.c: no warnings.
18087
18088 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18089
18090         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
18091
18092 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
18093
18094         * mini.c: In the thread abort signal handler, if the thread is in the
18095         process of being stoped, don't throw the Abort exception, just stop the
18096         thread.
18097
18098 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
18099
18100         * tramp-ppc.c: removed old code.
18101
18102 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18103
18104         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
18105         do some simple speed optimizations on ppc.
18106
18107 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18108
18109         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
18110         and large offsets in load/store.
18111
18112 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18113
18114         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
18115         it causes regressions.
18116
18117 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18118
18119         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
18120         support.
18121
18122 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18123
18124         * jit-icalls.c: remove warnings.
18125         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
18126         speedups for unsafe code.
18127
18128 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18129
18130         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
18131
18132 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
18133
18134         * basic-calls.cs: Add new regression test.
18135
18136         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
18137         more portable.
18138
18139         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
18140
18141         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
18142         is no longer used.
18143
18144 2004-05-06      Patrik Torstensson
18145
18146         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
18147         long reg allocation in any reg (not only eax:edx) and implemented 
18148         long shl/shr ops in asm instead of helpers.
18149
18150 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
18151
18152         * mini-sparc.h: Fix warnings.
18153
18154         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
18155         stack.
18156
18157         * mini-exceptions.c (mono_handle_exception): Call the filter in a
18158         separate statement for clarity.
18159
18160         * mini-sparc.c: Update status.
18161
18162 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
18163
18164         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
18165         here.
18166
18167 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18168
18169         * inssel-ppc.brg: another small pre-release workaround:
18170         we don't do overflow detection for long_sub_un.
18171
18172 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18173
18174         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
18175         (also works around a weird ppc bug: 57957).
18176
18177 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
18178
18179         * tramp-ppc.c: trampoline fixes.
18180
18181 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
18182
18183         * mini-ppc.c: fixed typos.
18184
18185 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18186
18187         * mini-ppc.c, exceptions-ppc.c: more code saves registers
18188         at the top of the stack. Fixed typos. Use a frame registers
18189         for all the methods with exception clauses.
18190
18191 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18192
18193         * exceptions-ppc.c: restore fp registers.
18194
18195 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18196
18197         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
18198         order from the stack top (moved the stack room to save the
18199         return value for trace after the param area). Fixed corruption
18200         in restoring registers on unwind.
18201
18202 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18203
18204         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
18205
18206 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18207
18208         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
18209         and prolog/epilog for methods that use it. Allow
18210         enough param area room for varargs methods. Fix miguel's
18211         breakage in exception handling.
18212
18213 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18214
18215         * Makefile.am: run genmdesc only on current arch.
18216
18217 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18218
18219         * exceptions-x86.c:
18220         * mini-x86.h: fix the build on windows.
18221
18222 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
18223
18224         * 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.
18225
18226         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
18227
18228         * mini-exceptions.c: New file.
18229         
18230         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
18231         Move some parts of the x86 exception handling code to an 
18232         arch-independent file so it can be shared with other ports.
18233
18234 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
18235
18236         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
18237
18238 2004-04-26  David Waite  <mass@akuma.org>
18239
18240         * driver.c: remove comma from end of enumeration declaration
18241
18242 2004-04-26  Jackson Harper  <jackson@ximian.com>
18243
18244         * driver.c: parse config file before loading first assembly. This
18245         allows the user gac to be enabled/disabled. 
18246         
18247 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
18248
18249         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
18250         simpler mechanism: we do not care what is encoded initially
18251         (branch absolute or relative), we care about the code and its
18252         target.  I kept the old code for reference for now.
18253
18254         The new code tries first to determine if the jump is anywhere in
18255         the -/+32 absolute meg range, if it succeeds, it encodes using the
18256         absolute branch;  If not, it tried to find something in the
18257         relative range, if not, it uses the handle_thunk code. 
18258
18259 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
18260
18261         * exceptions-ppc.c: use the correct ip register on macosx.
18262
18263 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
18264
18265         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
18266
18267 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
18268
18269         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
18270         Raise exception on integer divide by zero by hand since the hw
18271         doesn't support it. Handle NaNs in FP compares.
18272
18273 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
18274
18275         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
18276         code reducing duplication between the platforms and enabled
18277         signal exception handling (on linux for now).
18278
18279 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
18280
18281         * exceptions-ppc.c: more macosx support.
18282
18283 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18284
18285         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
18286
18287 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
18288
18289         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
18290
18291 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18292
18293         * iltests.il: more tests.
18294
18295 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18296
18297         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
18298         vars as well.
18299
18300 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18301
18302         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
18303
18304 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18305
18306         * liveness.c: Mark variables as volatile in all basic blocks reachable
18307         from exception clauses.
18308
18309 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18310
18311         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
18312         inlining.
18313
18314 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18315
18316         * iltests.il, basic.cs: more tests for regalloc.
18317
18318 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18319
18320         * iltests.il: Some tests for register allocation modifications
18321         I have locally.
18322
18323 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
18324
18325         * exceptions.cs: Add regression test for bug #56782.
18326
18327         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
18328         original stack trace if an exception is rethrown. Fixes #56782. Oh,
18329         the beauty of fixing the same thing in 5 different files...
18330
18331 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
18332
18333         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
18334         methods.
18335
18336 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
18337
18338         * mini.c: Add support for STRWLPARRAY marshalling convention.
18339
18340 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18341
18342         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
18343         to init the context to setup the regs pointer).
18344
18345 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18346
18347         * exceptions-ppc.c: more exceptions work.
18348
18349 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18350
18351         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
18352         not allowed.
18353
18354 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18355
18356         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
18357         can use the memory directly.
18358
18359         * cpu-pentium.md: Update documentation from a post from Zoltan. 
18360
18361         add x86_add_membase, x86_sub_membase, x86_mul_membase
18362
18363 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18364
18365         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
18366         GENERAL_REGS they were also hardcoded for all PPC ports.
18367
18368         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
18369
18370         Remove hard-coded limit for floating point registers, use
18371         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
18372
18373         Notice that in MacOS X calling conventions you can fit a lot more
18374         floating point values in registers, so I should update the PInvoke
18375         test to excercise the passing of floating point values on the
18376         stack (currently broken).
18377         
18378 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
18379
18380         * tramp-ppc.c (create_trampoline_code): Added
18381         JUMP_TRAMPOLINE_SIZE. 
18382         (ppc_magic_trampoline): Follow the pattern from
18383         x86_magic_trampoline: if code is set to zero, return. 
18384         (create_trampoline_code): Always pass MonoMethod to the jump
18385         trampoline, before it was passing a null.
18386         (mono_arch_create_jump_trampoline): Implement the jump stub, could
18387         share the code with mono_arch_create_jit_trampoline. 
18388
18389         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
18390         implemented.
18391         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
18392         implemented.  
18393
18394         * cpu-g4.md: Added length for jmp instruction, the worst case
18395         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
18396         for save_lmf).
18397
18398 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
18399
18400         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
18401
18402 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
18403
18404         * mini.c: Only set bblock->real_offset when adding a new bblock, and
18405         before each IL instruction.
18406
18407         * mini.c (CEE_BOX): Fix warnings.
18408
18409 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18410
18411         * mini.c: removed a few unused vars and extra whitespace.
18412
18413 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
18414
18415         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
18416         checks.
18417         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
18418         index.
18419         (OP_GETCHR): use the above
18420         (CEE_LDELEMA): use the above.
18421
18422         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
18423         version of the generic impl.
18424         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
18425         (CEE_LDELEMA): use the above.
18426
18427 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18428
18429         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
18430         Fixes #56317.
18431
18432         * iltests.il: Added new regression test for #56317.
18433
18434 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18435
18436         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
18437         under NetBSD. Fixes #56450.
18438
18439         * liveness.c (update_gen_kill_set): Fix previous patch.
18440
18441 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18442
18443         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
18444
18445 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
18446
18447         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
18448         ldsfld and ldsflda.
18449
18450         * inssel-sparc.brg: Add more optimizations.
18451
18452         * mini-sparc.c: Replace multiply/divide with shifts if possible.
18453
18454 2004-04-01  Martin Baulig  <martin@ximian.com>
18455
18456         * mini.c (handle_box): New static function; moved the
18457         implementation of CEE_BOX here.
18458         (mono_method_to_ir): Added `constrained_call' variable.
18459         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
18460         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
18461         mono_method_get_constrained() to get the method.
18462
18463 2004-04-01  Martin Baulig  <martin@ximian.com>
18464
18465         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
18466         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
18467         (mono_method_to_ir): We don't need these macros anymore since
18468         mono_class_get_full() already takes care of it. 
18469
18470 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18471
18472         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
18473         use @function (as doesn't accept #function here) and check the return
18474         value of system and stop if fails.
18475
18476 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18477
18478         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
18479
18480 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
18481
18482         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
18483
18484         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
18485
18486         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
18487         #56223.
18488
18489         * basic-long.cs: Add test for negation of Int64.MinValue.
18490
18491 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
18492
18493         * mini-sparc.c: Update status.
18494
18495         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
18496
18497         * exceptions-sparc.c: Fix return value in filters.
18498
18499         * inssel-sparc.brg: Fix register allocation in some rules.
18500
18501 2004-03-28  Martin Baulig  <martin@ximian.com>
18502
18503         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
18504         if neccessary.  
18505
18506 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
18507
18508         * mini-x86.c (mono_arch_patch_code): Fix warnings.
18509         
18510         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
18511         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
18512         remove unused conv_u4 opcode.
18513
18514         * mini-x86.c: Remove valgrind workaround since it slows down things
18515         even when mono is not run under valgrind.
18516
18517 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
18518
18519         * mini-sparc.c: Update status.
18520
18521         * inssel-sparc.brg: Add some optimizations.
18522
18523         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
18524         future delay slot filling. Add support for varargs, tail calls and JMP.
18525
18526         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
18527         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
18528
18529         * inssel.brg: Fix register allocation in OP_ARGLIST.
18530
18531         * inssel.brg: Fix warnings.
18532
18533 2004-03-25  Martin Baulig  <martin@ximian.com>
18534
18535         * mini.c (inflate_generic_field): Removed.
18536         (mini_get_method): Removed, use mono_get_method_full(),
18537         (mini_get_class): Removed, use mono_class_get_full().
18538         (mono_method_to_ir): Pass our generic context to
18539         mono_field_from_token().        
18540
18541 2004-03-25  Martin Baulig  <martin@ximian.com>
18542
18543         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
18544         of a `MonoMethod *'.
18545         (mini_get_method): Take a `MonoGenericContext *' instead
18546         of a `MonoMethod *'.
18547         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
18548         a new local variable called `generic_context' which holds the
18549         current `MonoGenericContext *'; use it to lookup things.
18550
18551 2004-03-24  Martin Baulig  <martin@ximian.com>
18552
18553         * mini.c (mini_get_class): New static method; if we're inside a
18554         generic instance, inflate the class if neccessary.
18555         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
18556
18557 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
18558
18559         * iltests.il: New regression test for #55976.
18560
18561         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
18562         #55976.
18563
18564 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18565
18566         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
18567         output.
18568
18569 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18570
18571         * liveness.c: Consider SSA stores as well as loads when making vars
18572         volatile.
18573
18574         * exceptions.cs: New regression tests for register allocation.
18575         
18576 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
18577
18578         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
18579         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
18580           domain lock only to protect puntual access to data structures.
18581           Added access lock for sighash, jit_icall_hash_name, 
18582           jit_icall_hash_addr and domain->code_mp.
18583
18584 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
18585
18586         * driver.c: Print SIGSEGV handling method.
18587
18588         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
18589
18590         * mini.c (setup_jit_tls_data): Handle case when this is called
18591         multiple times for a thread.
18592
18593         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
18594         is different from fbxx_un. Fixes #54303. Also use constants instead of
18595         magic numbers in a lot of places.
18596
18597 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
18598
18599         * exceptions.cs: Fix cctor test when --regression is used.
18600
18601 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
18602
18603         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
18604         for Linux/ppc.
18605
18606 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18607
18608         * inssel-ppc.brg: fixed register assignments for some rules.
18609
18610 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18611
18612         * exceptions.cs: Add test for exceptions in static constructors.
18613
18614         * mini.c (mono_jit_compile_method_with_out): Move the calling of
18615         static constructors outside the domain lock. Fixes #55720.
18616
18617 2004-03-17  Martin Baulig  <martin@ximian.com>
18618
18619         * mini.c (get_generic_field_inst): Removed, this'll never happen.
18620         (inflate_generic_field): Take the `MonoMethod *' instead of the
18621         `MonoClass *' and added support for generic method.
18622         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
18623         have a `field->parent->gen_params', only inflate the field if it's
18624         an open constructed type.
18625
18626 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18627
18628         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
18629         exception object instead of the preconstructed ones.
18630
18631 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18632
18633         * mini.c: reverted changed to sigsegv_signal_handler commited
18634         accidentally in the previous patch.
18635
18636 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18637
18638         * mini.c:
18639         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
18640         running --aot with an old assembly.
18641
18642 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
18643
18644         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
18645         point values.
18646
18647         * mini-sparc.c: Add support for v9 branches with prediction.
18648
18649 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
18650
18651         * mini.c (mini_init): #warning is GNUC only
18652
18653         * mini-sparc.h: implement __builtin_frame_address
18654         and __builtin_return_address for Sun C compiler
18655
18656 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
18657
18658         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
18659
18660 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
18661
18662         * basic-calls.cs: Add test for unaligned byref long argument passing.
18663
18664         * mini-ops.h: Add sparcv9 compare and branch instructions.
18665
18666         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
18667         v9 instructions if we have a v9 cpu.
18668
18669         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
18670         registers for global allocation.
18671
18672         * exceptions-sparc.c: Fixes.
18673         
18674 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
18675
18676         * liveness.c (mono_analyze_liveness): Optimized version.
18677
18678         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
18679
18680         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
18681         sparc work.
18682
18683         * basic-float.cs basic-calls.cs: New regression tests.
18684
18685 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
18686
18687         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
18688         sigaltstack implementation.
18689
18690         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
18691         
18692         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
18693         stuff if SIGSEGV_ON_ALTSTACK is not defined.
18694
18695 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18696
18697         * mini.c: Fix warnings.
18698         
18699         * mini.c (mono_resolve_patch_target): New function which contains the
18700         arch independent part of the patching process.
18701
18702         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
18703         patching code to a separate function.
18704
18705 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
18706
18707         * mini.c (add_signal_handler): ifdef out on Windows
18708
18709 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
18710
18711         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
18712         cpu-sparc.md: Add exception handling support + other fixes.
18713
18714         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
18715         typed GC detection in --version.
18716
18717         * basic.cs exceptions.cs: New regression tests.
18718
18719         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
18720         the arch specific code can store data during a compilation.
18721
18722         * mini-ops.h: Add OP_SETFRET.
18723
18724         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
18725         function, register a separate icall for each arity, so the icalls can
18726         get a wrapper.
18727         
18728         * mini.c (mono_print_tree): Print negative offsets in a more readable
18729         form.
18730         
18731         * mini.c: Make signal handling work on sparc.
18732         
18733         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
18734
18735         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
18736
18737         * jit-icalls.c: Emulate truncl by aintl on solaris.
18738
18739         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
18740
18741 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
18744
18745 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
18746
18747         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
18748         a MarshalByRef type, inline a method that performs the check, taking into
18749         account that the object can be a proxy. Also implemented tow new opcodes:
18750         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18751         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
18752         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18753
18754 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
18755
18756         * mini-ppc.c: if a relative branch displacement is too big
18757         but it points to and area reachable with an absolute branch, 
18758         avoid the thunks.
18759
18760 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18761
18762         * mini.c: optimize small copies in cpblk.
18763
18764 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
18765
18766         * basic-calls.cs basic-float.cs: New regression tests.
18767
18768         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
18769         negative offsets from %fp. Implement localloc. Fix local register 
18770         allocation. Fix the case when the this argument needs to be saved to
18771         the stack. Implement some missing opcodes.
18772
18773 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18774
18775         * mini.c (mini_method_compile): Reenable global regalloc in methods
18776         with exception handlers.
18777
18778         * linear-scan.c (mono_varlist_sort): Fix warning.
18779
18780         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
18781
18782         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
18783         regalloc costs.
18784
18785         * liveness.c: Make all variables uses in exception clauses volatile, to
18786         prevent them from being allocated to registers. Fixes #42136.
18787
18788 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
18789
18790         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
18791         causes regressions.
18792
18793         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
18794         argument to mono_arch_regalloc_cost.
18795
18796         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
18797         precisely.
18798
18799 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
18800
18801         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
18802         Make the cost of allocating a variable to a register arch dependent.
18803
18804         * basic-calls.cs: Fix compilation of tests.
18805         
18806         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
18807         helper function to cut back on the number of #ifdefs needed.
18808
18809         * mini-ppc.c: Fix compilation.
18810
18811         * basic-calls.cs: New regression tests.
18812
18813         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
18814
18815         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
18816         of l0 since that is callee saved.
18817
18818         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
18819         to virtual calls.
18820
18821         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
18822         of delay instruction.
18823
18824         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
18825
18826         * mini.h (MonoCallInst): Add 'virtual' flag.
18827
18828         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
18829
18830 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18831
18832         * *.cs: New regression tests.
18833
18834         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
18835         work.
18836
18837         * mini.c (mono_runtime_install_handlers): Fix build.
18838
18839         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
18840         'signal_stack_size' members.
18841
18842         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
18843         alternate signal stack.
18844
18845         * exceptions-x86.c: Add stack overflow handling.
18846
18847         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
18848         functions to arch independent code.
18849
18850         * mini.c (mono_print_tree): Print more detailed info for load_membase
18851         opcodes.
18852         
18853 2004-02-23  Martin Baulig  <martin@ximian.com>
18854
18855         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
18856
18857 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18858
18859         * mini-x86.c: fixed reg allocation for div/rem.
18860
18861 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
18862
18863         * driver.c (mono_main): Report some configuratio options on --version.
18864
18865 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
18866
18867         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
18868         low in the address space. Correctly flush memory in thunks where we
18869         output native code.
18870
18871 2004-02-20  Martin Baulig  <martin@ximian.com>
18872
18873         * mini.c (mini_get_method): New static method; inflate all generic
18874         methods and methods in open generic instances.
18875         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
18876         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
18877
18878 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18879
18880         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
18881
18882         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
18883
18884 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
18885
18886         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
18887
18888         * mini-sparc.c (flushi mono_arch_output_basic_block): make
18889         it compile using Sun's compiler.
18890
18891 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18892
18893         * 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.
18894
18895         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
18896
18897 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18898
18899         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
18900         code.
18901         * mini-ppc.c: handle calls outside of the allowed range with thunks
18902         allocated using the code manager.
18903         * tramp-ppc.c: use the code manager to hold generated native code.
18904         Fixed the magic trampoline to just patch vtable entries.
18905
18906 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
18907
18908         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
18909         independent file.
18910
18911 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
18912
18913         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
18914         PPC.
18915
18916         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
18917         if we have a working __thread implementation.
18918
18919         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
18920         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
18921
18922 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
18923
18924         * mini-x86.c: Fix compilation under gcc 2.
18925         
18926 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18927
18928         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
18929         contains a call to the wrapped function.
18930
18931         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
18932         OP_<CALL>_IMM opcodes, and use them under X86.
18933         
18934         * mini.c (mono_jit_find_compiled_method): Fix warning.
18935
18936         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
18937
18938         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
18939
18940         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
18941         functionality to mini.c.
18942
18943         * mini.c (mono_create_jump_trampoline): New function to create a jump
18944         trampoline. Return a compiled method instead of a trampoline if it
18945         exists. Add a cache for jump trampolines.
18946
18947         * mini.c (mono_jit_find_compiled_method): New function to return a
18948         compiled method if it exists.
18949
18950         * mini-x86.c: Call mono_create_jump_trampoline instead of 
18951         mono_arch_create_jit_trampoline.
18952
18953         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
18954         a jump trampoline. Fixes #52092.
18955         
18956 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18957
18958         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
18959         which is not up-to-date. Add check_corlib_version () instead.
18960
18961         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
18962         have to call it.
18963         
18964         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
18965         since newer valgrind versions do not need it.
18966
18967         * mini.c (mono_jit_compile_method_with_opt): New helper function to
18968         compile a method with a given set of optimizations.
18969
18970         * mini.c: Compile icall wrappers on-demand instead of at startup.
18971
18972         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
18973         wrapper for an icall.
18974
18975 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18976
18977         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
18978         #54063.
18979
18980         * iltests.il: Add test for non-empty stack before switch instruction.
18981
18982 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18983
18984         * mini.c: Add support for new stringbuilder marshalling conventions.
18985
18986         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
18987
18988 2004-02-01  Martin Baulig  <martin@ximian.com>
18989
18990         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
18991         in `ginst->mtype_argv'.
18992
18993 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
18994
18995         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
18996         facilitate grepping.
18997
18998 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
18999
19000         * mini.c: fixed buglet in initobj generic implementation for references.
19001
19002 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
19003
19004         * Makefile.am: make the version script conditional.
19005         * jit-icalls.c: handle missing truncl().
19006
19007 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19008
19009         * exceptions.cs: Add more tests for double->int conversion.
19010
19011         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
19012         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
19013
19014 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
19015
19016         * driver.c: make --verbose --version emit an error
19017         if the loaded corlib doesn't match the runtime version.
19018
19019 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19020
19021         * mini-ppc.h: export ppc_patch().
19022         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
19023         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
19024         on par or better than on MacOSX.
19025
19026 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19027
19028         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
19029         mono_lookup_pinvoke_call.
19030
19031         * mini-x86.c: Under windows, the default pinvoke calling convention is
19032         stdcall. Fixes #52834.
19033
19034         * mini.c (optimize_branches): Add an upper bound to the number of
19035         iterations to prevent infinite loops on strange loops. Fixes #53003.
19036
19037 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19038
19039         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
19040         and ISINST. Fixes #52093.
19041
19042         * objects.cs (test_0_vector_array_cast): New tests.
19043         
19044 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
19045
19046         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
19047         checking in Array.Set ().
19048
19049         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
19050         #52590.
19051
19052         * object.cs (test_0_multi_array_cast): New regression test.
19053
19054 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
19055
19056         * exceptions-ppc.c: fix build on Linux/PPC.
19057
19058 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
19059
19060         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
19061         running under valgrind.
19062         (x86_magic_trampoline): Fix build bustage.
19063
19064         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
19065         negative values as well. This is needed for the encoding of the line number
19066         info, since sometimes the line numbers are not in increasing order.
19067
19068 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19069
19070         * cpu-pentium.md (localloc): Increase the size of the localloc 
19071         instruction since it is a loop under Win32.
19072
19073         * debug-mini.c (record_line_number): Get rid of unneccesary memory
19074         allocation.
19075
19076 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19077
19078         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
19079         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
19080         Max Horn (max@quendi.de). Fix file names in comments.
19081
19082 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
19083
19084         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
19085         avoid stack overflow.
19086         (replace_usage): Avoid uninitialized variable warnings.
19087
19088         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
19089         and taking the address of valuetype variables.
19090
19091 2004-01-03  Patrik Torstensson
19092
19093         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
19094         for other purposes than FP later on.
19095
19096 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
19097
19098         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
19099         of tail calls.
19100
19101 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19102
19103         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
19104
19105 2003-12-30  Patrik Torstensson <p@rxc.se>
19106
19107         * mini-x86.h: Decreased number of availiable fp regs.
19108         Solves corner cases with FP spilling.
19109
19110 2003-12-23  Patrik Torstensson <p@rxc.se>
19111
19112         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
19113         for floating point stack tracking / spilling on x86. 
19114         Fixes bug #49012.
19115         
19116         * basic-float.cs: added float mul overflow test.
19117
19118 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
19119
19120         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
19121
19122 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19123
19124         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
19125         supports for cond branches that overflow the immediate
19126         overflow offset. mcs can compile simple programs.
19127
19128 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19129
19130         * exceptions-ppc.c: exception handling support wip:
19131         finally handlers get run on exception.
19132
19133 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19134
19135         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
19136         profiling.
19137
19138 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19139
19140         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
19141         initial support for stack walking and unwinding.
19142
19143 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
19144
19145         * driver.c (mono_main): Make corlib-out-of-sync message more 
19146         descriptive. Also remove verify_corlib call.
19147
19148 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19149
19150         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
19151         not overlap with other call's arguments, too.
19152
19153 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
19154
19155         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
19156         move to arch-specific code the choice of arch-specific
19157         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
19158         * mini.c: ensure emulation calls will not interleave
19159         with other calls.
19160
19161 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
19162
19163         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
19164         the magic trampoline stack frame is dropped before executing
19165         the new method.
19166
19167 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
19168
19169         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
19170         and integer to fp conversions. Added support for overflowing
19171         arguments on the stack. Reserve a couple more registers as temps.
19172         Added support for aot compilation (as output still needs to be
19173         tweaked, though).
19174
19175 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19176
19177         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
19178         Don't overwrite return register in some corner cases.
19179
19180 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
19183         static constructors when AOT compiling.
19184
19185         * driver.c (mono_main): Call mono_check_corlib_version.
19186
19187 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19188
19189         * cpu-g4.md, basic.cs: fixed div target register.
19190
19191 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
19192
19193         * mini-ppc.c, basic.cs: shl_imm fix with test.
19194
19195 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19196
19197         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
19198         structures by value. Misc fixes.
19199         * objects.cs: more tests.
19200
19201 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
19202
19203         * mini-ppc.c: lconv.ovf.i implemented.
19204
19205 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19206
19207         * mini.c:
19208         (mini_init): don't error out if someone already called g_thread_init.
19209
19210 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19211
19212         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
19213         to be any type per the spec. Fix abnormal memory usage when
19214         the same object is repeatedly thrown.
19215
19216 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
19217
19218         * mini.c: check for overruns in IL code.
19219
19220 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19221
19222         * TODO: Add/remove some todo entries.
19223
19224 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19225
19226         * driver.c (mono_main): Call mono_verify_corlib.
19227
19228 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19229
19230         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
19231         This has been moved to mini.c
19232         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
19233         type being casted is marshalbyref it could be a proxy, so instead of
19234         emitting the type check code, emit a call to a runtime method that will
19235         perform the check by calling CanCastTo if needed.
19236
19237 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
19238
19239         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
19240         methods with large stack frames under Win32.
19241
19242 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19243
19244         * Makefile.am: Distribute regression tests.
19245
19246         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
19247         at the end instead of inserting each variable into the sorted list.
19248
19249         * linear-scan.c (mono_varlist_sort): New helper function.
19250         
19251 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19252
19253         * mini.c: ensure arguments and locals are within bounds.
19254
19255 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19256
19257         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
19258         related fixes.
19259
19260 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19261
19262         * mini.c (mono_cprop_copy_values): Fix crash.
19263
19264         * aot.c: Set verbosity back to 0.
19265         
19266 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19267
19268         * regalloc.c: complete memory leak fix by Laurent Morichetti
19269         (l_m@pacbell.net).
19270
19271 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19272
19273         * driver.c (main_thread_handler): Revert the previous patch.
19274
19275         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
19276         under valgrind.
19277
19278         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
19279         memory from the memory pool.
19280
19281         * driver.c (main_thread_handler): Turn on all optimizations when
19282         --aot is used.
19283
19284         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
19285         an array for better performance.
19286
19287         * regalloc.c (mono_regstate_assign): Fix memory leak.
19288
19289         * debug-mini.c (mono_debug_serialize_debug_info): New function to
19290         serialize the debug info.
19291
19292         * debug-mini.c (mono_debug_add_aot_method): New function to load the
19293         debug info from the serialized representation.
19294
19295         * aot.c: Save debug info into the generated file and load it when 
19296         loading a method.
19297
19298         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19299
19300 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19301
19302         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
19303         More FP-related fixes.
19304
19305 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
19306
19307         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
19308         and register allocation buglet. Hello world now runs.
19309
19310 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19311
19312         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
19313         * tramp-ppc.c: fixed class init trampoline.
19314         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
19315
19316 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19317
19318         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
19319         mini.c: more ppc changes/fixes.
19320
19321 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19322
19323         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
19324         Also optimize the case when the arguments are the same in the caller 
19325         and in the callee.
19326
19327         * iltests.il: Add tests for tail calls with valuetype arguments.
19328
19329 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19330
19331         * mini-ppc.c: fixes for struct return type.
19332
19333 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
19334
19335         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
19336         mono_spillvar_offset() to arch-specific code.
19337
19338 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
19339
19340         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
19341
19342 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19343
19344         * exceptions-x86.c: Fix stack space leaks.
19345         
19346         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
19347         registers from the lmf if the method has save_lmf set.
19348
19349 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19350
19351         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
19352         of icall wrappers into InvokeInDomain, since these are now per-domain.
19353
19354 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
19355
19356         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
19357         make some opcode emulation and intrinsic ops enabled/disabled 
19358         according to the architecture. More fixes.
19359
19360 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
19361
19362         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
19363
19364 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19365
19366         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
19367         arch-specific handling for 'this' and struct return type to
19368         arch-specific code.
19369
19370 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19371
19372         * aot.c: prevent divide by zero error when reporting (it happened with
19373         Accessibility.dll).
19374
19375 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
19376
19377         * mini.h (inst_switch): Remove unused macro.
19378
19379 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19380
19381         * aot.c:
19382         (load_aot_module): free 'info->methods' and 'info' properly. No more
19383         "free(): invalid pointer blah" messages when you have an old aot
19384         compiled assembly.
19385
19386 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
19387
19388         * jit-icalls.c, mini.c: Added support for context static fields.
19389
19390 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19391
19392         * mini.c (mono_method_blittable): Methods which set LastError are not 
19393         blittable either. Fixes #51108.
19394         
19395 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19396
19397         * mini.c: flush icache.
19398         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
19399
19400 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19401
19402         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
19403
19404 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
19407         safe on IA32.
19408
19409         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
19410         vararg calls.
19411
19412         * inssel.brg (CEE_MKREFANY): Fix AOT case.
19413
19414 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19415
19416         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
19417         instruction when the result is discarded.
19418
19419         * iltests.il (test_0_div_regalloc): New regression test.
19420
19421         * arrays.cs: Fix compilation error.
19422
19423 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
19424
19425         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
19426         float rules to inssel-x86.brg: sane architectures with FP registers
19427         don't need to implement these rules.
19428
19429 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19430
19431         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
19432
19433 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19434
19435         * mini.h, inssel-long32.brg: fixed endianess issues in int64
19436         implementation of 32 bit systems.
19437
19438 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19439
19440         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
19441         (Jeroen Zwartepoorte).
19442
19443 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19444
19445         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
19446         the caller and the callee matches.
19447         
19448         * mini.c (mono_method_to_ir): Add comment.
19449
19450         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
19451         signbit is missing on some platforms.
19452
19453 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19454
19455         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
19456
19457         * mini.c (setup_jit_tls_data): Call the new function.
19458         
19459         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
19460
19461         * mini-x86.c: Add experimental support for fast access to the lmf
19462         structure under NPTL/Linux 2.6.x.
19463
19464 2003-11-06  Martin Baulig  <martin@ximian.com>
19465
19466         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
19467         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
19468         the debugger.
19469
19470 2003-11-02  Martin Baulig  <martin@ximian.com>
19471
19472         * mini.c (inflate_generic_field): New static method.
19473         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
19474         generic instance and the field is declared in a generic type, call
19475         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
19476
19477 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
19478
19479         * mini.h mini.c (mono_method_same_domain): New function to return
19480         whenever the caller and the callee are in the same domain.
19481
19482         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
19483
19484 2003-10-30  Martin Baulig  <martin@ximian.com>
19485
19486         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
19487         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
19488         method parameters.
19489         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
19490         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
19491
19492 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
19493
19494         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
19495         propagation.
19496
19497         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
19498         object here, so it is in the correct appdomain etc.
19499
19500 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
19501
19502         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
19503         already done.
19504         (mono_method_to_ir): Avoid freeing the type created returned from
19505         mono_type_create_from_typespec, since it is put into an internal cache
19506         by the function. Fixes pointer.exe.
19507
19508         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
19509         trampolines for icalls and pinvokes as well. Fixes #33569.
19510
19511 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
19512
19513         * mini.c: Update after appdomain changes.
19514
19515         * mini.c (mono_jit_compile_method_inner): Allways compile native
19516         method wrappers in the root domain, since there can only be one
19517         instance of them, whose address is stored in method->info.
19518
19519 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
19520
19521         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
19522         environment variable. Instead detect automatically whenever running
19523         under valgrind using the magic macro RUNNING_ON_VALGRIND from
19524         valgrind.h.
19525
19526 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
19527
19528         * trace.c, trace.h: New files that implement the new trace option
19529         parsing. 
19530
19531         * driver.c: Document new --trace options.
19532
19533         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
19534         mini-x86.c: Apply:
19535
19536         -       if (mono_jit_trace_calls)
19537         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
19538
19539         * mini.h: prototypes.
19540         
19541 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
19542
19543         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
19544
19545         * mini.c inssel.brg: Implement typedefbyref opcodes.
19546
19547         * mini.c (mono_jit_compile_method): Remove unused local variable.
19548
19549         * mini.c (mono_jit_compile_method_inner): Ditto.
19550         
19551 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
19552
19553         * tramp-x86.c (x86_class_init_trampoline): Fix build.
19554         
19555         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
19556
19557 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
19558
19559         * mini.c (mono_no_aot): Remove unused global variable.
19560
19561         * mini.c: Thread safety fixes.
19562
19563 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
19564
19565         * mini.c (mono_create_class_init_trampoline): Add a lock around
19566         class_init_hash_addr.
19567
19568         * arrays.cs (test_0_newarr_emulation): Add new regression test for
19569         #30073.
19570
19571         * mini.c: Decompose the NEWARR instruction before decomposing its
19572         arguments. Fixes #30073.
19573
19574 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
19575
19576         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
19577         convention.
19578
19579 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
19580
19581         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
19582
19583         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
19584
19585         * driver.c: Add support for compiling icall wrappers to --compile.
19586
19587 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
19588
19589         * inssel.brg: The empty value in class->interface_offsets is -1, not
19590         0. Fixes #49287.
19591
19592 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * objects.cs: New test for 'is' operator on an array of interfaces.
19595
19596 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19597
19598         * tramp-ppc.c: update trampoline code to support jumps
19599         and class initialization.
19600
19601 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
19602
19603         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
19604
19605         * inssel.brg (OP_UNBOXCAST): Fix #46027.
19606
19607         * inssel.brg (OP_UNBOX): Remove unused rule.
19608
19609         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
19610         region instead of one for each method. Fixes #47813.
19611
19612 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         * exceptions.cs (test_0_nested_finally): New regression test for
19615         nested exception handlers.
19616
19617         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
19618
19619         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
19620
19621         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
19622         inlining.
19623
19624         * mini.c (mono_method_check_inlining): Make the inlining limit 
19625         configurable by an environment variable.
19626         
19627         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
19628
19629         * mini.h: Bump AOT file version.
19630
19631         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
19632         token, store the image along with the token, since the token might not 
19633         refer to the same image as the method containing the relocation, 
19634         because of inlining.
19635
19636 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
19637
19638         * mini.c (mono_precompile_assemblies): New function to compile
19639         all methods in all loaded assemblies.
19640
19641         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
19642
19643         * regalloc.h regalloc.c (MonoRegState): Change the type of 
19644         iassign and fassign to int*, since they can contain large negative
19645         values if the register is spilled. Also added some comments. Fixes
19646         #45817.
19647
19648         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
19649         under Win32. Fixes #42964.
19650
19651 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
19652
19653         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
19654
19655         * aot.c: Added support for AOT compiling methods which contain calls
19656         to wrappers. Currently, only remoting-invoke-with-check wrappers are
19657         handled.
19658         
19659         * driver.c (compile_all_methods): Run the compilation in a thread
19660         managed by mono. Fixes #44023.
19661
19662         * mini.c (mono_codegen): Print full method name in verbose output.
19663
19664         * mini-x86.c (mono_arch_patch_code): Fix warning.
19665         
19666         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
19667         jumps, since the method we are jumping to might be domain-specific.
19668
19669         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
19670
19671 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19672
19673         * inssel.brg: string chars are unsigned.
19674
19675 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
19676
19677         * TODO: New todo item.
19678
19679         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
19680         which calls mono_runtime_class_init and patches the call site to
19681         avoid further calls.
19682         (mono_arch_create_class_init_trampoline): New arch specific function 
19683         to create a class init trampoline.
19684         (create_trampoline_code): Generalized so it can create
19685         class init trampolines as well.
19686
19687         * mini.c (helper_sig_class_init_trampoline): New helper variable.
19688         (mono_create_class_init_trampoline): New function to create and cache
19689         class init trampolines.
19690         (mono_find_class_init_trampoline_by_addr): New function to lookup the
19691         vtable given the address of a class init trampoline. Used by the
19692         patching process.
19693         (mono_codegen): Generate a call to a trampoline instead of
19694         mono_runtime_class_init in LDSFLD[A].
19695         (mono_codegen): Add relocations for the new trampoline.
19696         
19697         * mini.h mini-x86.c aot.c: Added a new relocation type: 
19698         MONO_PATCH_INFO_CLASS_INIT.
19699
19700         * mini.h: Bump AOT version number.
19701
19702         * aot.c: Create a copy of the loaded code instead of using the original
19703         so methods which call each other will be close in memory, improving
19704         cache behaviour.
19705         
19706         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
19707         patch since it breaks the regression tests.
19708         
19709         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
19710         for the register saving instruction sequence since the 
19711         frame_state_for function in glibc 2.3.2 don't seem to detect it.
19712
19713 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
19714
19715         * TODO: Fix todo item && remove another.
19716
19717 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
19718
19719         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
19720         previous checkin.
19721
19722         * aot.c: Moved the check for MONO_LASTAOT into the initialization
19723         function of the module.
19724
19725         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
19726         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
19727         --no-aot command line option.
19728
19729 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
19730
19731         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
19732         by Bernie Solomon (bernard@ugsolutions.com).
19733
19734         * inssel.brg: Refactor the interface offset table related code into
19735         its separate functions and add support for the AOT case.
19736
19737 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
19738
19739         * aot.c (mono_aot_get_method_inner): Fix memory leak.
19740         
19741         * aot.c: Added mono_aot_verbose variable and made all debugging
19742         output depend on the value of this variable.
19743
19744         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
19745         method_label and info_label.
19746
19747         * mini.h mini-x86.c aot.c: Added a new relocation type 
19748         MONO_PATCH_INFO_IID for klass->interface_id.
19749
19750         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
19751         the MonoJitInfo structure.
19752
19753         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
19754         a non-root appdomain in shared mode.
19755
19756 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19757
19758         * aot.c: make aot loader less verbose. Remove free of unused variable.
19759
19760 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
19761
19762         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
19763
19764         * .cvsignore: Added *.dll.
19765
19766         * mini.c (mono_print_tree_nl): New function callable while debugging.
19767
19768         * mini.c (mono_print_code): Export this.
19769
19770         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
19771         patched code.
19772
19773 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
19774
19775         * mini.h (MonoCompile): Added 'jit_info' field.
19776
19777         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
19778         the cfg structure, since it is needed by the AOT compiler.
19779
19780         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19781
19782         * aot.c: A major rewrite. Changes include:
19783         - save exception tables for methods which have them.
19784         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
19785         to g_module_symbol.
19786         - reworked the file format so it is now much smaller and needs
19787         fewer relocation entries.
19788         
19789 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19790
19791         * aot.c (load_aot_module): Fix build bustage on platforms without
19792         Boehm GC.
19793
19794 2003-09-04  Martin Baulig  <martin@ximian.com>
19795
19796         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
19797
19798 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19799
19800         * TODO: Some new optimization ideas.
19801
19802         * aot.c: Move AOT module loading logic here from mono_assembly_open.
19803
19804         * aot.c: Save the optimization flags used to compile the code into
19805         the AOT module.
19806
19807         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
19808         support emitting domain specific code.
19809         
19810         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
19811         no longer domain neutral. It can be made domain neutral by compiling 
19812         with --optimize=shared.
19813
19814         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
19815         between appdomains.
19816
19817         * driver.c mini.h mini.c: New --no-aot debugging option which disables
19818         loading of AOT code.
19819
19820         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
19821         
19822         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
19823         if there is no domain neutrality information.
19824
19825 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
19826
19827         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
19828         format version into the generated library.
19829
19830         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
19831         callee method into the caller since one of them could be shared.
19832
19833         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
19834         system exceptions from AOT code now works.
19835
19836         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
19837         method if it is domain neutral and the callee is not.
19838
19839         * graph.c (cfg_emit_one_loop_level): Fix warning.
19840
19841 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
19842
19843         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
19844         last checkin.
19845
19846 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
19847
19848         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
19849         is needed  by code which is executed before mono_runtime_init ().
19850         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
19851         
19852         * mini.c (mono_thread_abort): Fix warning.
19853         (mono_jit_compile_method): Call static constructor in the AOT case too.
19854
19855         * aot.c (mono_compile_assembly): Fix warning.
19856
19857 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19858
19859         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
19860
19861 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
19864
19865         * cpu-pentium.md: Fix the length of call opcodes so they include the
19866         ESP restoring instruction. Fixes #47968.
19867
19868 2003-08-28  Martin Baulig  <martin@ximian.com>
19869
19870         * mini-x86.c (mono_arch_call_opcode): Added support for
19871         MONO_TYPE_GENERICINST.
19872
19873         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
19874
19875 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
19876
19877         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
19878         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
19879
19880         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
19881         metadata_section.
19882
19883 2003-08-26  Martin Baulig  <martin@ximian.com>
19884
19885         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
19886         when reporting an error, set this to the actual error location.
19887         (mono_method_to_ir): Report the correct error location if
19888         get_basic_blocks() returned an error.
19889
19890 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
19891
19892         * mini.c (mono_type_blittable): OBJECT is not blittable.
19893         (mono_method_blittable): Methods which have marshalling descriptors
19894         are not blittable either. Fixes #47842.
19895
19896 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
19897
19898         * driver.c mini.c: Use an environment variable instead of a global 
19899         variable. Also fix the build.
19900
19901         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
19902         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
19903         reporting this. 
19904
19905         * driver.c mini.c: Added --with-valgrind option to turn off some
19906         code which prevents mono from running under valgrind.
19907
19908         * mini.c (mono_emit_call_args): Fixed warning.
19909
19910         * mini.c (mono_emulate_opcode): Fixed warning.
19911
19912 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19913
19914         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
19915         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
19916         regalloc.c, regalloc.h: specify available registers in arch-specific
19917         code and support floats in the regallocator (patch by Laurent Morichetti 
19918         <l_m@pacbell.net>)
19919
19920 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19921
19922         * mini.c: mono_thread_current() can be called only after
19923         mono_runtime_init(): rearrange code to not call it early on.
19924
19925 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19926
19927         * mini.c: allocate jump tables in the code mempools.
19928
19929 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19930
19931         * mini.c, mini.h: make sure per-thread data allocated by the jit is
19932         freed.
19933
19934 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
19935
19936         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
19937         12 to 16.  This fixes bug #47453.
19938
19939
19940 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
19941
19942         * mini-ppc.c: fixed indexed load and unsigned compares.
19943
19944 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
19945
19946         * mini.c: reenabled installation of handler for
19947           thread abort signal.
19948
19949 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19950
19951         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
19952         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
19953         until it's fixed and actually useful.
19954
19955 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19956
19957         * inssel-long32.brg: couple more opcodes implemented.
19958
19959 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19960         
19961         * mini-sparc.c: Even more opcodes implemeted.
19962
19963 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
19964
19965         * mini-sparc.c: More opcodes implemented.
19966
19967 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
19968
19969         * mini-sparc.c: More opcodes implemented.
19970
19971 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19972
19973         * inssel-sparc.brg: Add some needed rules.  Direct
19974         copy from PPC.
19975         * Makefile.am: Use inssel-sparc.brg
19976         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
19977         an assert happy for now.
19978
19979 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
19980
19981         * mini-sparc.c: Fixed compile errors.
19982         * exceptions-sparc.c: Same.  We now produce a mono binary 
19983         on sparc-linux.  Yea.
19984
19985 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
19986
19987         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
19988         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
19989         They compile, but do not work.
19990
19991 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19992
19993         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
19994         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
19995         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
19996         (ct@gentoo.org).
19997
19998 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19999
20000         * mini.c: more opcodes implemented and better support for generics.
20001
20002 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20003
20004         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
20005         * mini.c, mini.h: first cut at generics support: some new instructions 
20006         added and changed the behaviour of some of the existing ones.
20007
20008 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20009
20010         * mini.c: Removed definition of metadata_shared mutex here.
20011
20012 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20013
20014         * mini-x86.c: make vararg calls work for instance methods.
20015
20016 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20017
20018         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
20019         returns the arguments in a separte list, now.
20020
20021 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20022
20023         * aot.c, mini.c: updates for array type representation changes.
20024
20025 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
20026
20027         * mini.c: register function to perform jit shutdown.
20028
20029 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20030
20031         * mini.c: use a faster allocator if possible.
20032
20033 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20034
20035         * aot.c: some cleanups and portability changes.
20036
20037 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20038
20039         * mini.c: use faster allocation for CEE_BOX if possible.
20040
20041 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20042
20043         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
20044         Moved inlined mempcy code to its own function so that is can be
20045         reused. Added an inline memset function as well (optimized initobj).
20046         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
20047
20048 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20049
20050         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
20051
20052 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20053
20054         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
20055         arch code can setup the cpu for CLR execution, if needed.
20056         We use it on x86 to set the precision of FP operations.
20057
20058 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20059
20060         * mini.c: disable some optimizations if we can guess they'll cost too
20061         much for a given method.
20062
20063 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
20066         
20067 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20068         * mini.h mini.c mini-x86.c: Added instruction level coverage 
20069         info collection support.
20070
20071 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20072
20073         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
20074         is now implemented in the profiling API. Get rid of a couple of
20075         unnecessary global variables.
20076
20077 2003-06-15  Nick Drochak <ndrochak@gol.com>
20078
20079         * basic-long.cs: tests for negative values for bigmul, and unsigned.
20080         * cpu-g4.md: add op_bigmul and op_bigmul_un
20081         * cpu_pentium.md: add op_bigmul_un
20082         * inssel-long32.brg: add rule for unsigned bigmul
20083         * mini-ops.h: define OP_BIGMUL_UN
20084         * mini-x86.c: THE BUG: handle (un)signed properly
20085         * mini.c: choose unsigned opcode if needed.
20086         This set of patches fixes bug #44291
20087
20088 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
20089
20090         * mini.c (optimize_branches): improved to handle all kinds of
20091         conditional branches.
20092
20093 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20094
20095         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
20096         don't raise exceptions.
20097
20098 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20099
20100         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
20101         to arch-specific files.
20102
20103 2003-06-09  Martin Baulig  <martin@ximian.com>
20104
20105         * Makefile.am (libs): Added $(LIBGC_LIBS).
20106
20107 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
20108
20109         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
20110         and OP_ATAN (fixes bug#44293).
20111
20112 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
20113
20114         * Makefile.am, mini-x86.c: rename cpu description array to
20115         pentium_desc, since some compilers define the 'pentium' preprocessor
20116         symbol.
20117
20118 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
20119
20120         * mini.c (mini_select_instructions): add explicit branch if the
20121         following block is not the false target of a conditional branch -
20122         we need this with any optimization that reorder or remove bblocks
20123
20124         * mini.c (optimize_branches): bug fixes
20125
20126 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
20127
20128         * mini.c (mono_method_to_ir): inline static readonly fields
20129
20130         * ssa.c (fold_tree): start cfold support for long (very simple
20131         cases only)
20132
20133         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
20134
20135 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20136
20137         * inssel.brg: fixed memcpy (bug #44219).
20138
20139 2003-06-05  Dick Porter  <dick@ximian.com>
20140
20141         * driver.c: Set the glib log levels to not abort if g_message
20142         recurses.
20143
20144         g_set_prgname() has to happen before mini_init() so that the
20145         process handle gets the info.
20146         
20147 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20148
20149         * driver.c: add intrins to the default optimizations to get wider
20150         exposure.
20151
20152 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20153
20154         * mini.h: some large basic blocks will overflow a 16-bit
20155         integers for symbolic registers.
20156
20157 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20158
20159         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
20160         (mono_arch_output_basic_block): fix bug 43499 
20161
20162 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20163
20164         * mini.c: kill duplicated definition of mono_debug_format.
20165
20166 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
20167
20168         * mini-x86.c, arrays.cs: fixed register allocation bug.
20169
20170 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20171
20172         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
20173
20174         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
20175
20176 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20177
20178         * mini.c:
20179         (print_method_from_ip): also print source location information if
20180         available.
20181
20182 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
20183
20184         * mini.c (mono_find_block_region): bug fix in region code
20185         (mini_method_compile): enable removing unreachable code again, but
20186         only in methods without exception clauses.
20187
20188 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20189
20190         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
20191         Implemented arglist opcode and handling of TypedReference type.
20192         Fixed x86 call convention when a structure is returned.
20193         Minimal support for calling static vararg methods.
20194
20195 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
20196
20197         * mini.c (mini_method_compile):  always remove unreachable code,
20198         because the code in them may be inconsistent  (access to dead
20199         variables for example).
20200
20201 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20202
20203         * driver.c, debug-mini.c: warning fixes.
20204
20205 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
20206
20207         * Makefile.am, jit.h, mini.h: install header for embedding mono.
20208
20209 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
20210
20211         * mini.c: thread-static fields are registered in mono_class_vtable(),
20212         so ensure the function is called before checking for them.
20213
20214 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
20215
20216         * mini.c (optimize_branches): fix for bug 43586
20217
20218         * jit-icalls.c (mono_llmult_ovf): added an additional check for
20219         overflow (fixes Bug #43639)
20220
20221 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20222
20223         * mini.c, objects.cs: allow the use of stobj for primitive types.
20224
20225 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20226
20227         * mini.c: be less strict about argument checking until we support
20228         running the verifier.
20229
20230 2003-05-27  Nick Drochak <ndrochak@gol.com>
20231
20232         * basic-long.cs: tests for (ulong)int * (ulong)int also
20233         * mini.c: use the same trick for (ulong)int * (ulong)int
20234
20235 2003-05-27  Nick Drochak <ndrochak@gol.com>
20236
20237         * basic-long.cs: add regression test for (long)int * (long)int
20238         * cpu-pentium.md: add op_bigmul specification
20239         * inssel-long32.brg: add OP_BIGMUL rule
20240         * mini-ops.h: add OP_BIGMUL
20241         * mini-x86.c: register allocator: handle case where src1 needs to be
20242         in EAX.
20243         * mini.c: substitute special BIGMUL opcode in the tree for 
20244         (long)int * (long)int
20245
20246 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20247
20248         * jit-icalls.c: call the type ctor on field access if needed.
20249
20250 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20251
20252         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
20253         to a method (including results of ldelema, bug#43207).
20254
20255 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20256
20257         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
20258         colors to show exception handler blocks.
20259
20260         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
20261         (fix for pinvoke7.cs).
20262
20263 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20264
20265         * mini.h, mini.c: ensure correct initialization order for types that
20266         require it. Prepare for lazy compilation of jit icall wrappers.
20267         Provide a name for opcode emulation to reduce unneeded mallocing.
20268
20269 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20270
20271         * mini-x86.c: better register restoring code and profiling
20272         support for tail calls.
20273
20274 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20275
20276         * mini.h, driver.c: prepare for leaf methods optimization.
20277
20278 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20279
20280         * mini.c: get targets of branches before converting a method.
20281
20282 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
20283
20284         * mini.c (optimize_branches): added some experimental code (disbaled) 
20285
20286 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
20287
20288         * mini.c (optimize_branches): fix branch to branch optimization 
20289
20290         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
20291
20292         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
20293
20294         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
20295
20296         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
20297         if needed.
20298
20299 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20300
20301         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
20302         enable use of interface variables again.
20303
20304         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
20305         I1 to registers because there is no simply way to sign extend 8bit
20306         quantities in caller saved registers on x86.
20307
20308         * inssel-float.brg: set costs of some rules to 2 so
20309         that monobure always select the arch. specific ones if supplied,
20310         regardless of the order we pass the files to monoburg.
20311
20312 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20313
20314         * mini.c, mini-x86.c: since the magic trampoline for jumps
20315         can't patch the code directly, we do it as soon as the
20316         method gets compiled.
20317
20318 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20319
20320         * mini-x86.c, mini.h: introduce a new patching method
20321         to support CEE_JMP and tail calls.
20322         * mini.c: obey tail.call. Don't precompile methods target
20323         of CEE_JMP.
20324         * tramp-x86.c: new trampoline code to handle methods
20325         reached through a jump.
20326
20327 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
20328
20329         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
20330         bit values to registers
20331
20332 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
20333
20334         * mini.c (mono_compile_get_interface_var): share interface
20335         variables if possible.
20336
20337 2003-05-16  Martin Baulig  <martin@ximian.com>
20338
20339         * debug-mini.c (mono_init_debugger): New function to initialize
20340         the debugger.  This is not in the debugger since it needs to
20341         access some of mini's internals.
20342
20343 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20344
20345         * mini.c (mono_method_to_ir): inlining fixes/cleanups
20346
20347 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
20348
20349         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
20350         for value type handling.
20351
20352 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20353
20354         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
20355         (mono_method_check_inlining): enable inlining of all kinds of wrappers
20356
20357 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
20358
20359         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
20360           the constructor through a proxy.
20361
20362 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20363
20364         * jit-icalls.c, inssel.brg: fixes to array element address
20365         calculations.
20366
20367 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
20368
20369         * mini-x86.c (is_regsize_var): allocate pointer to registers
20370
20371 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20372
20373         * driver.c: fixed typo, added intrins to the set of optimizations
20374         tested with regressions.
20375
20376 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20377
20378         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
20379         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
20380         test case.
20381
20382 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
20383
20384         * inssel.brg: remove some common pop instructions without side effects
20385
20386 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20387
20388         * inssel-x86.brg: fixed thinko in int to double conversions.
20389
20390 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20391
20392         * mini.c, jit-icalls.c: added runtime thread-static variable support.
20393
20394 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20395
20396         * inssel-long32.brg: two more missing instructions.
20397
20398 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
20399
20400         * mini.c (mono_emit_call_args): set the cil_code for all arguments
20401         if not already set.
20402
20403 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
20404
20405         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
20406         correctly.
20407
20408         * basic-float.cs: Added tests for negative zero.
20409
20410 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20411
20412         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
20413         a couple of missing operations for long casts, with test cases.
20414
20415 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20416
20417         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
20418
20419 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
20420
20421         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
20422         code size estimation.
20423
20424 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
20425
20426         * mini.c (mono_jit_create_remoting_trampoline): make it work with
20427         abstract methods (fix bug 42542)
20428
20429         * aot.c: add ability to handle array types
20430         
20431 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
20432
20433         * mini.c: Call the _specific versions of the object allocation
20434         functions if possible.
20435
20436 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20437
20438         * driver.c: call setlocale ().
20439
20440 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20441
20442         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
20443         windows build.
20444
20445 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
20446
20447         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
20448
20449         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
20450         wrappers (fix bug 42122)
20451
20452 2003-05-04  Martin Baulig  <martin@ximian.com>
20453
20454         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
20455
20456         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
20457         s/mini_set_defaults/mono_set_defaults/g.
20458
20459 2003-05-04  Martin Baulig  <martin@ximian.com>
20460
20461         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
20462
20463 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20464
20465         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
20466         (reported by Don Roberts).
20467
20468 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20469
20470         * mini.c: temporarily work around two bugs for this release.
20471
20472 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20473
20474         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
20475         that contains -export-dynamic and it makes using the ld script
20476         useless.
20477         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
20478
20479 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20480
20481         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
20482         specific cpu.
20483
20484 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20485
20486         * mini.c: make sure leave calls all the needed finally blocks,
20487         even when the target jumps out of multiple exception clauses.
20488
20489 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20490
20491         * ldscript, Makefile.am: add linker script to reduce the number of
20492         exported symbols (should also fix the issues with libwine defining
20493         some of the same symbols in io-layer).
20494
20495 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
20496
20497         * driver.c (mini_main): Avoid assertion when no file name is given on 
20498         the command line.
20499
20500 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
20501
20502         * driver.c: added --version/-V command line option.
20503         Added the inline optimization in the regression tests.
20504
20505 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20506
20507         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
20508         to the type in the method signature (fixes bug#42134).
20509
20510 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
20511
20512         * mini.c: when inlining, check this is not null only when needed (bug #42135).
20513
20514 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
20515
20516         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
20517
20518 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20519
20520         * driver.c: fixed bug #42100.
20521
20522 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
20523
20524         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
20525
20526 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20527
20528         * mini.c: moved most of the code required to do inlining to its own
20529         function so it can be reused. Inline also ctors if appropriate.
20530
20531 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
20532
20533         * Makefile.am: Link with -export-dynamic so shared libs loaded by
20534         the runtime can call mono API functions.
20535
20536 2003-04-27  Martin Baulig  <martin@ximian.com>
20537
20538         * debug-mini.c (mono_debug_init_method): Added
20539         `guint32 breakpoint_id' argument; if the method has a breakpoint,
20540         send a notification to the debugger.
20541
20542         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
20543         running in the Mono Debugger, just pass the breakpoint number to
20544         mono_debug_init_method().
20545
20546         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
20547
20548 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
20549
20550         * mini.c: allow some more unsafe compares.
20551
20552 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20553
20554         * mini-x86.c, Makefile.am: make distcheck works (partially from
20555         a patch by Richard Lee <r.h.lee@attbi.com>).
20556         * regset.c, regset.h: removed, they are unused.
20557
20558 2003-04-25  Dick Porter  <dick@ximian.com>
20559
20560         * driver.c: Usage reports the name as 'mono' not 'mini'
20561         * exceptions-x86.c: Build and run on freebsd
20562
20563 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
20564
20565         * Makefile.am: install the program with the 'mono' name and
20566         the library as libmono instead of mini and libmini.
20567
20568 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20569
20570         * driver.c: provide the APIs for the embedding interface of the old jit.
20571
20572 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
20573
20574         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
20575
20576 2003-04-23  Martin Baulig  <martin@ximian.com>
20577
20578         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
20579
20580         * driver.c: Added `--debug' command line argument to enable
20581         debugging support.
20582
20583 2003-04-23  Martin Baulig  <martin@ximian.com>
20584
20585         * debug.[ch]: Removed.  The code is now in
20586         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
20587
20588         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
20589         last six months.
20590
20591 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
20592
20593         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
20594
20595 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20596
20597         * mini.c:
20598         (mini_cleanup): moved mono_runtime_cleanup call after the call to
20599         mono_domain_finalize.
20600         (mini_method_compile): use mono_method_profile* if the the option is
20601         enabled.
20602
20603 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
20604
20605         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20606         methods with their wrapper.
20607
20608         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20609         methods with their wrapper.
20610
20611         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
20612         their wrapper.
20613
20614         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
20615         wrapper.
20616
20617         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
20618         methods.
20619
20620 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
20621
20622         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
20623
20624 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
20625
20626         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
20627         of the mempool. This is slightly faster and uses less memory
20628
20629 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20630
20631         * mini.c: avoid O(n) allocation for variables.
20632
20633 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20634
20635         * mini.c: handle items on the stack after inlining methods.
20636
20637 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20638
20639         * mini.c: make the method->opcode optimization dependent
20640         on MONO_OPT_INSTRINS and do it lazily.
20641
20642 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20643
20644         * driver.c: print overall results at the end of regression run.
20645
20646 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
20647
20648         * inssel.brg: don't overwrite symbolic registers.
20649
20650 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20651
20652         * inssel-x86.brg: fix conversion from long to float.
20653
20654 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
20655
20656         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
20657
20658 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
20659
20660         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
20661
20662         * driver.c: Added --print-vtable option as in the old JIT.
20663
20664 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20665
20666         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
20667
20668 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
20669
20670         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
20671
20672 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
20673
20674         * mini.c regalloc.c regalloc.h: Fix memory leak.
20675
20676 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
20677
20678         * aot.c (mono_aot_get_method): register all used strings
20679
20680 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20681
20682         * mini.c: always intern strings references with ldstr at compile time.
20683
20684 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20685
20686         * Makefile.am: add BUILT_SOURCES.
20687
20688 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20689
20690         * driver.c: give a better error message when the assembly to execute
20691         doesn't have an entry point.
20692
20693 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
20694
20695         * Makefile.am: added hack for automake
20696
20697         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
20698         correct sematics.
20699
20700         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
20701
20702 22003-04-07  Martin Baulig  <martin@ximian.com>
20703
20704         * Makefile.am: Added Makefile.am.
20705
20706         * debugger-main.c: Removed, this is now in the debugger where it
20707         belongs.
20708
20709         * mini.pc.in: Call this package `mini' for the moment.
20710
20711
20712
20713
20714
20715
20716
20717
20718
20719
20720
20721
20722
20723
20724