a6866ab19323817ffcc9995f06b8cfbcbe4e3b6a
[mono.git] / mono / mini / ChangeLog
1 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
2
3         * image-writer.c (append_subsection): Don't align subsections of the
4         debug_line section as a workaround.
5
6         * dwarfwriter.c: Emit line number info in the AOT case as well.
7
8 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
9
10         This patch is contributed under the terms of the MIT/X11 license
11
12        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
13        code_len <= code_size
14
15 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
16
17         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
18
19 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
20
21         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
22         invoke wrappers, we now use trampolines instead.
23
24 2009-06-04  Mark Probst  <mark.probst@gmail.com>
25
26         * mini-darwin.c: The exception thread must not be registered with
27         the GC.
28
29 2009-06-04  Mark Probst  <mark.probst@gmail.com>
30
31         * mini-gc.c: Disable the code because it makes SGen crash.
32
33 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
34
35         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
36         instead of asserting.
37
38 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
39
40         * aot-compiler.c (mono_compile_assembly): Move the creation of the
41         output file after the code has been compiled.
42
43 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
44
45         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
46
47 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
48
49         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
50         entries distinction to simplify the code.
51
52         * mini.h: Bump AOT file format version.
53         
54 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
55
56         * objects.cs: Fix the signature of one of the tests.
57
58         * mini.c (mini_create_ftnptr): New helper function, moved here from
59         object.c.
60         (mini_get_addr_from_ftnptr): Ditto.
61         (mini_init): Install the new helpers.
62
63 2009-05-28  Martin Baulig  <martin@ximian.com>
64
65         Correctly initialize the debugger when embedding Mono.
66
67         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
68         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
69         see documentation in mini_debug_running_inside_mdb().
70
71         * debug-debugger.c
72         (mini_debug_running_inside_mdb): New function to check whether
73         we're running inside mdb.
74
75         * mini.c (mini_init): Call mini_debugger_init() if we're running
76         inside the debugger.
77
78         * driver.c (mono_main): Moved the call to mini_debugger_init()
79         into mini_init() to make this work when embedding Mono.
80
81         * debug-debugger.c (mini_debugger_init): Warn about duplicate
82         calls to mini_debugger_init().
83
84         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
85         mono_debugger_main() -> mini_debugger_main() and put them inside a
86         `MONO_DEBUGGER_SUPPORTED' conditional.
87
88 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
89
90         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
91         this is no longer in use.
92         * mini.h: Same.
93
94 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
95
96         * mini-sparc.c (add_outarg_load): Fix the sparc build.
97
98         * aot-compiler.c (emit_method_code): Always write out C style symbols for
99         methods.
100
101 2009-05-27  Martin Baulig  <martin@ximian.com>
102
103 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
104
105         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
106         long_conv_to_r_un to 64 bits.
107
108         * cpu-x86.md: Increase the instruction size due to the changes.
109
110         * iltests.il.in: Add regression test.
111
112         Fixes #467201.
113
114 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
115
116         * objects.cs: Move the previous test from basic.cs to here.
117
118 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
119
120         * basic.cs: Add regression test for #506915.
121
122 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
123
124         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
125         optimization we must check the bb of the first byte of stobj as
126         it's the only one set in cil_offset_to_bb.
127
128         Fixes #506915.  
129
130 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
131
132         * image-writer.c: Fix pointer directive on ppc64.
133
134 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
135
136         * image-writer.c (asm_writer_emit_section_change): Avoid using
137         .bss subsections on ppc too.
138
139 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
140
141         * image-writer.c: Fix the definition of TARGET_ASM_....
142         
143         * image-writer.c: Fix the emission of assembler directives in the last
144         change.
145
146         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
147         exception throwing code to accomodate ppc64.
148
149         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
150         size to work on ppc64 too.
151
152         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
153         too.
154
155         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
156         the assembler dialect instead of using platform specific defines.
157
158 2009-05-22  Geoff Norton  <gnorton@novell.com>
159
160         * mini-arm.c (get_call_info): If a structure is split between the stack
161         and argument registers, we should not advance the stack pointer by the entire
162         native size, but just by the amount that spilled.
163
164 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
165
166         * mini-arm.c (get_call_info): Handle structures with alignment requirements
167         correctly.
168
169 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
170
171         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
172         wrappers normally.
173         
174         * aot-compiler.c (add_extra_method): Fix up the collection of extra
175         methods so wrapper don't get added twice.
176         (add_generic_instances): Don't add methods of arrays.
177
178         * generics.cs: Mark one test as !FULLAOT.
179
180 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
181
182         * mini-x86.c (emit_move_return_value): Remove unused vars.
183
184 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
185
186         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
187         decomposing 8 bytes structs into a LCALL.
188
189         * mini-x86.c (emit_move_return_value): We no longer push the vtype
190         pointer for where to store the returned regs.
191
192         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
193         state the concern.
194
195         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
196
197 2009-05-20  Miguel de Icaza  <miguel@novell.com>
198
199         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
200         without getenv.
201
202 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
203
204         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
205
206         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
207         generics.
208
209 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
210
211         * local-propagation.c (mono_local_cprop): Avoid local propagation
212         across paired add/sub if the first instruction dest reg is it's
213         source reg. For example:
214
215         int_add_imm R12 <- R12 [1] clobbers: 1
216         int_sub_imm R42 <- R12 [1] clobbers: 1
217
218         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
219         maintain the math identify.
220
221         Fixes #505375.
222
223 2009-05-20  Andreia Gaita  <avidigal@novell.com>
224
225         * Makefile.am: avoid going on the network just to get the revision,
226         use git log instead
227
228 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
229
230         Fixed estimate for short branches on amd64 (they were off mark, and
231         enabling call prolog-epilog instrumentations caused assertions).
232         * mini.h (struct MonoBasicBlock): added max_length field to hold the
233         estimate for the maximum length of this basic block.
234         * mini-amd64.c:
235         - mono_arch_emit_prolog: compute max_length for each basic block
236           (instead of max_offset), and inflate size estimate also for entry bb
237           in case of code instrumentation.
238         - mono_arch_output_basic_block: get rid of "cpos" (the current
239           estimated "position" in the code), and always use "offset" instead,
240           which is accurate; at the beginning of the function quickly recompute
241           max_offset for all the remaining blocks, starting from the current
242           cfg->code_len (which is correct, and not estimated) and using the
243           estimated block lengths computed previously.
244
245 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
246
247         * exceptions-ppc.c: Remove the caching from the trampoline creation 
248         functions, it is already done in the caller.
249
250         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
251
252         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
253         MONO_ARCH_GSHARED_SUPPORTED define.
254
255         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
256
257         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
258         function.
259
260 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
261
262         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
263         call to mono_marshal_get_rgctx_invoke ().
264
265         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
266         mono_marshal_get_static_rgctx_invoke (), all platforms which support
267         gshared use the static rgctx trampolines now.
268         
269         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
270         platform supports it.
271
272 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
273
274         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
275
276         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
277
278 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
279
280         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
281
282         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
283         for ppc.
284
285 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
286
287         Made it possible for mono_arch_instrument_epilog to preserve
288         argument registers, otherwise instrumenting the "epilogue" before
289         a tail call would clobber them.
290         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
291         if like mono_arch_instrument_epilog but with an additional parameter
292         that states if argument registers must be preserved.
293         * mini.c: implemented mono_arch_instrument_epilog as a call to
294         mono_arch_instrument_epilog_full without asking to preserve argument
295         registers (this makes the existing code work as usual).
296         * mini-amd64.c:
297         - mono_arch_instrument_epilog: add parameter to transform it into
298         mono_arch_instrument_epilog_full, and preserve argument registers
299         when required.
300         - mono_arch_output_basic_block, OP_TAILCALL case: call
301         mono_arch_instrument_epilog_full.
302         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
303         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
304         only transformed mono_arch_instrument_epilog into
305         mono_arch_instrument_epilog_full.
306
307 2009-05-15  Geoff Norton  <gnorton@novell.com>
308
309         * mini-darwin.c: This works on arm now.
310
311 2009-05-14  Geoff Norton  <gnorton@novell.com>
312
313         * jit.h, driver.c: Allow full-aot to be decided programatically by the
314         embedding api.
315
316 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
317
318         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
319         label names.
320
321         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
322         wrappers during full aot mode correctly.
323
324         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
325         methods correctly.
326
327         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
328         mono_metadata_type_hash ().
329
330 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
331
332         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
333         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
334         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
335         Removed MONO_INST_BRLABEL from the instruction flags, and the
336         remaining code that used it, because we do not support branches inside
337         basic blocks (and branch target labels) anymore.
338         * Makefile.am: As part of the above cleanup, remove reference to
339         BURG files which don't exist anymore.
340
341 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
342
343         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
344         osx.
345
346         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
347         to use mono_arch_throw_corlib_exception.
348
349         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
350         mono_arch_throw_corlib_exception for throwing corlib exceptions.
351
352         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
353         domain mempool.
354
355         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
356
357         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
358         for the got to make debugging easier and to avoid confusing it with the
359         system got.
360         
361         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
362         method so a breakpoint can be set when using gdb.
363
364 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
365
366         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
367         on mono_method_get_imt_slot ().
368
369         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
370         num_decodes variables.
371
372         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
373         change as it doesn't seem to work.
374         
375         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
376         wrappers.
377
378 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
379
380         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
381         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
382
383         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
384         builder when using full aot.
385
386         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
387         here, it is already handled.
388         
389         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
390         correctly for IMT.
391
392         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
393
394         * mini-arm.h: Enable IMT for full aot.
395         
396         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
397         arch doesn't support it.
398
399         * mini.c (mini_init): Don't disable IMT for full aot if the
400         architecture supports it.
401
402         * mini.h (MonoAotTrampoline): New enum containing the different types
403         of 'numerous' trampolines.
404         (MONO_AOT_FILE_VERSION): Bump this.
405
406         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
407         static rgctx trampolines. Add support for full-aot IMT thunks.
408
409         * mini-amd64.h: Enable IMT for full aot.
410
411         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
412         to exclude tests belonging to a category.
413
414         * generics.cs: Mark some tests with a !FULLAOT category.
415
416         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
417         generics tests.
418
419 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
420
421         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
422         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
423         (emit_plt): Fix a warning.
424
425 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
426
427         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
428         back into aot-compiler.c to a place where the other functions shared by
429         the runtime and aot compiler are.
430         
431         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
432         as done previously, instead of in MonoAotFileInfo, since pointers might have
433         alignment requirements.
434
435         * mini.h: Bump AOT file format version.
436
437 2009-05-10  Miguel de Icaza  <miguel@novell.com>
438
439         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
440         that is used at runtime from the aot-compiler.c, this makes it
441         work on setups that remove the AOT compiler from the output
442         image. 
443
444 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
445
446         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
447         PPC.
448
449         * mini-ppc.h: Enable static rgctx trampolines for ppc.
450
451         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
452
453         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
454         stuff to mono_arch_decompose_long_opts ().
455         (mono_decompose_opcode): Remove some dead code.
456
457 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
458
459         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
460         cmethod can be null for quite a some reasons.
461
462 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
463
464         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
465
466 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
467
468         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
469
470 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
471
472         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
473         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
474         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
475         calls returning structures by addr on amd64.
476
477         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
478
479         * iltests.il.in: Restructure the tail call tests a bit.
480         
481 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
482
483         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
484         for virtual methods too.
485
486 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
487
488         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
489         due to regression in verifying System.dll.
490
491 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
492
493         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
494         in dynamic methods.
495
496         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
497         instances.
498
499         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
500         g_str_hash () which can change.
501
502         * driver.c (mini_regression): Disable optimizations not supported by
503         the cpu. Fixes #500019.
504
505         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
506         build.
507
508 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
509
510         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
511         to the latest LLVM code.
512
513 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
514
515         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
516
517 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
518
519         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
520         x86/amd64.
521
522         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
523         no longer saving offsets, so just save the patch types along with the other
524         info.
525         * aot-runtime.c (load_patch_info): Update after the changes to 
526         encode_patch_list ().
527         (decode_got_entry): Removed, merged into load_patch_info ().
528         (is_shared_got_patch): Removed, call the same function from
529         aot-compiler.c.
530
531         * mini.h: Bump aot file format version.
532         
533         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
534         half-finished no-dlsym code.
535
536         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
537         option.
538
539         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
540         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
541
542 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
543
544         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
545         buffer length to work with AOT code.
546
547         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
548         ldfld/stfld opcodes.
549
550         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
551         as it is not used.
552
553         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
554
555         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
556
557         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
558         LLVM API.
559
560         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
561         if needed. Don't decompose long operations when using llvm.
562
563 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
564
565         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
566         PAGESIZE constant.
567
568         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
569
570 2009-05-03  Martin Baulig  <martin@ximian.com>
571
572         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
573         mono_debugger_insert_method_breakpoint() since the class init
574         handler we're inserting at the top of the method already gives us
575         a notification.
576
577 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
578
579         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
580         to mono_arch_decompose_long_opts () for x86 and arm.
581
582 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
583
584         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
585         TARGET_AMD64 here.
586
587 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
588
589         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
590         JIT code.
591
592 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
593
594         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
595         number of trampolines used in full-aot mode.
596
597         * aot-compiler.c: Add an ntrampolines option to set the number of 
598         trampolines emitted in full-aot mode.
599
600 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
601
602         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
603         a volatile load. Get rid of get_tempname (), llvm assigns names
604         automatically.
605
606         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
607         builder function.
608
609         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
610         a value.
611
612         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
613         level 1.
614
615         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
616         to the same register as a fixed sreg2. Fixes #497271.
617
618         * iltests.il.in: Add a new test.
619
620 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
621
622         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
623         stack, since pushes complicate exception handling.
624
625         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
626         the stack if they are passed using moves.
627
628         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
629
630         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
631         when using llvm.
632
633         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
634         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
635         of FMOVE if it is an R4.
636
637 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
638
639         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
640
641         * mini.h (LLVMCallInfo): New structure to store calling convention 
642         information for the LLVM back end similar to the CallInfo structures in 
643         the back-ends.
644
645         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
646         call information in a format usable by LLVM.
647         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
648
649         * method-to-ir.c (mono_emit_call_args): Emit calls using 
650         mono_llvm_emit_call () when compiling using LLVM.
651
652         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
653         comments to all functions. Fix memory leaks. Add a public init/cleanup
654         function.
655
656         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
657
658         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
659         mono_array_new_va () jit icall.
660         
661 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
662
663         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
664         multiple machine description files to be specified.
665         * mini-ops.h: fixes for cross-compilation.
666
667 2009-04-22  Miguel de Icaza  <miguel@novell.com>
668
669         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
670         some porting work.
671
672 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
673
674         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
675         to prevent asserts in various passes. Fixes #497220.
676
677 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
678
679         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
680         a racy assert.
681
682         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
683         table to avoid duplicates.
684
685         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
686         
687         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
688         option is used.
689
690 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
691
692         * mini.c (mini_method_verify): Fail fulltrust code if the exception
693         is for method or field access.
694
695 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
696
697         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
698         a Value to stdout.
699
700         * mini-llvm.c (mono_llvm_emit_method): Use it.
701         
702         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
703         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
704         on volatile values.
705
706         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
707         synchronized methods.
708
709         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
710
711         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
712
713         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
714         OP_LOADI8_MEM.
715
716         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
717         allowing some options to be set dynamically.
718
719 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
720
721         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
722         unconditional branch.
723
724         * mini.h (MonoTrampolineType): Add new trampoline type 
725         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
726         compiled code.
727
728         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
729         function.
730
731         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
732         creation function.
733
734         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
735         is enabled. Instead, use the llvm vcall trampoline.
736         
737         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
738
739         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
740         
741         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
742         functions.
743
744         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
745         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
746
747         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
748         OP_IA64_CSET opcode.
749
750         * mini.c: Fix a warning.
751
752         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
753         THROW to the appropriate llvm type.
754
755 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
756
757         * mini.c (mini_method_compile): Add statistics for methods JITted
758         with/without LLVM.
759
760 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
761
762         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
763         OP_IA64_CMP_<cond>_IMM opcodes.
764
765 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
766
767         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
768         corlib exceptions.
769
770         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
771         correctly.
772
773         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
774         GENERICINST.
775
776 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
777
778         * mini-exceptions.c : add thread id to EXCEPTION trace message.
779
780 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
781
782         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
783         support.
784
785         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
786         rgctx invoke trampolines for x86.
787
788         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
789         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
790         (mono_arch_get_vcall_slot): Simplify this.
791
792 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
793
794         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
795         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
796
797 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
798
799         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
800         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
801
802         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
803
804         * liveness.c (visit_bb): Remove a needless assert.
805
806 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
807
808         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
809         full aot support to the arch specific code.
810
811         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
812
813         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
814
815         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
816         
817         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
818         collect information about the delegate invoke impl trampolines.
819
820         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
821         to save trampolines during full-aot mode.
822
823         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
824         creation function which returns a trampoline which sets the rgctx
825         argument.
826         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
827         wrapper if possible.
828         (mono_delegate_trampoline): Ditto.
829
830         * mini.c (mono_jit_runtime_invoke): Ditto.
831
832         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
833         
834         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
835
836         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
837         
838 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
839
840         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
841         just setting the opcode to OP_NOP.
842
843 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
844
845         * mini.c (mini_method_compile): Put the last change inside an 
846         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
847         
848         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
849         and extend live ranges to cover the whole method when using xdb.
850
851         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
852         do it in the trampolines.
853
854         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
855         needed.
856
857         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
858         
859         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
860         call code in full-aot mode since IMT is disabled there.
861         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
862         new JIT no longer has that restriction.
863
864         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
865
866         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
867         a more compact format.
868         (mono_aot_wrapper_name): New function to return a unique name for a
869         wrapper method, also used by the AOT runtime.
870
871         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
872         aot-compiler.c.
873
874         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
875         when a ICollection<T> etc is encountered.
876         (add_generic_instances): Process method arguments/locals too.
877         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
878         trampoline names.
879
880         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
881         
882 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
883
884         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
885
886         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
887
888         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
889         representing the result of the decomposition. Nullify instructions
890         instead of setting them to OP_NOP since nops can't have registers
891         set.
892
893 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
894
895         * aot-compiler.c (mono_compile_assembly): Split this huge function into
896         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
897         info. Strip 'mapping symbols' on ARM.
898
899         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
900         
901         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
902         this with the native genmdesc.
903
904 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
905
906         * aot-runtime.c:  Fixing the MSVC build.
907
908         Code is contributed under MIT/X11 license.
909
910 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
911
912         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
913         JITted code depends on it.
914
915 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
916
917         * aot-compiler.c: Use new MonoGenericParam accessors.
918
919 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
920
921         Reduce memory usage and improve correctness wrt MonoGenericParam
922         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
923         handing.  Avoid allocating MonoGenericParams, but use the ones in
924         the container itself.
925
926 2009-04-07  Miguel de Icaza  <miguel@novell.com>
927
928         * tasklets.c: Return exceptions in the out argument.
929
930 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
931
932         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
933         opcode. Use pointer types in more places instead of casting them to 
934         integers.
935
936         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
937         optimizations.
938         (mono_llvm_optimize_method): New helper function to optimize a method.
939
940         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
941         widening code so it could be called from more places.
942         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
943         code paths in the call opcodes.
944
945 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
946
947         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
948
949 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
950
951         * dwarfwriter.c: Use _ to separate class name 
952         components as gdb can't handle '.'. Represent reference variables
953         as 'class <NAME>&'.
954         
955         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
956
957         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
958         
959         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
960
961         * gc-test.cs: New file with GC stack marking tests.
962         
963         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
964         negative numbers for vfp.
965
966         * basic-float.cs: Add a test.
967         
968 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
969
970         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
971
972 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
973
974         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
975         part of tasklet/continuation support.
976
977 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
978
979         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
980         amd64 opcodes inside an ifdef.
981
982         * dwarfwriter.c: Emit inheritance information for classes, emit fields
983         of complex types.
984         
985         * dwarfwriter.c (emit_type): Emit the class info for classes.
986
987 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
988
989         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
990
991         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
992
993         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
994
995         * ssa.c (mono_ssa_compute): Fix some memory leaks.
996
997 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
998
999         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
1000
1001         * mini-llvm.c: Update comments.
1002
1003         * mini.h (COMPILE_LLVM): New macro.
1004
1005         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
1006
1007         * ssa.c (mono_ssa_compute): Ditto.
1008         
1009         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
1010         the unwind ops from a DWARF FDE.
1011
1012         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
1013         methods by extracting the dwarf unwind ops from the unwind info generated
1014         by LLVM.
1015         
1016         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
1017         calls.
1018
1019         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
1020         addressing modes.
1021
1022 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
1023
1024         * Makefile.am (llvm_sources): Enable this.
1025
1026         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
1027         failing back to the JIT if something cannot be handled.
1028
1029         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
1030         compiling with LLVM.
1031
1032         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
1033         compiling with LLVM.
1034
1035         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
1036         compiling with LLVM.
1037
1038         * mini-ops.h: Add a few opcodes needed by LLVM.
1039
1040         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
1041         has no unwind info.
1042
1043         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
1044         backend.
1045
1046         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
1047
1048         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
1049
1050 2009-04-01  Mark Probst  <mark.probst@gmail.com>
1051
1052         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
1053         ridiculously large methods.
1054
1055 2009-03-31  Martin Baulig  <martin@ximian.com>
1056
1057         * debug-debugger.c (debugger_remove_breakpoint): Call
1058         mono_debugger_remove_class_init_callback ().
1059
1060 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
1061
1062         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
1063         right before emitting code, not at the start.
1064
1065         * mini.c (mono_postprocess_patches): Extract this into a separate function
1066         from mono_codegen ().
1067
1068         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
1069         byref types correctly.
1070
1071 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1072
1073         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
1074         by the last change.
1075
1076 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
1077
1078         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
1079         indirect calls, this avoids problems where get_vcall_slot () would get
1080         confused by the native code for the instruction preceeding the call.
1081         (mono_arch_get_vcall_slot): Simplify this.
1082         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
1083
1084         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
1085         register allocator now seems to depend on them instead of the data in
1086         cpu-<ARCH>.md.
1087
1088         * mini.c (mini_method_compile): Throw the correct type of exception if
1089         mono_method_get_header () fails because of a loading error.
1090
1091 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1092
1093         * mini.c (mini_method_compile): Clear the loader error if the method
1094         header cannot be decoded.
1095
1096         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
1097         interface methods on proxies correctly.
1098
1099         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
1100         this argument for vtype methods. Add precise liveness info for arguments.
1101
1102         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
1103         LIVERANGE_START/END opcodes.
1104
1105         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
1106         for arguments and values in registers.
1107
1108 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1109
1110         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
1111         return a valuetype. Fixes #487518.
1112
1113         * iltests.il: Add a test.
1114         
1115         * aot-compiler.c: Use mono_thread_create () to create helper threads.
1116
1117         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
1118         closed over a null reference correctly.
1119
1120 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1121
1122         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
1123
1124 2009-03-25  Mark Probst  <mark.probst@gmail.com>
1125
1126         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
1127         allocated to the same registers as fixed sregs.
1128
1129 2009-03-24  Mark Probst  <mark.probst@gmail.com>
1130
1131         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
1132         ATOMIC_CAS_IMM ops.
1133
1134         * method-to-ir.c: Handle more cases for
1135         Interlocked.CompareExchange.
1136
1137         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
1138         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
1139         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
1140
1141 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1142
1143         * aot-runtime.c (decode_method_ref): Fix a warning.
1144
1145         * unwind.c (mono_unwind_frame): Ditto.  
1146
1147 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1148
1149         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
1150         (mono_compile_assembly): Enable the binary writer for full-aot as well.
1151
1152         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
1153         fix the handling of large values in the ALU_PC_G0_NC relocation.
1154
1155 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1156
1157         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
1158
1159 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1160
1161         * method-to-ir.c (mono_spill_global_vars): Support for ternary
1162         ops.
1163
1164 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1165
1166         * method-to-ir.c: MINI_OP3 needs a comma.
1167
1168         * method-to-ir.c, mini.h, mini.c: Remove
1169         mono_init_op_sreg_counts ().
1170
1171 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1172
1173         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
1174         OP_JMP.
1175         
1176         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
1177         assertion.
1178
1179         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
1180
1181         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
1182         code somewhat.
1183
1184 2009-03-21  Mark Probst  <mark.probst@gmail.com>
1185
1186         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
1187         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
1188         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
1189         operations.
1190
1191 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1192
1193         * driver.c: Change location of gc_wrapper.h.
1194
1195         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
1196         inside finally clauses correctly. Fixes #485721.
1197
1198         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
1199         after the change above.
1200
1201         * exceptions.cs: Add a test.
1202         
1203 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1204
1205         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
1206
1207         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
1208         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
1209         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
1210
1211         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
1212         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
1213
1214 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
1215
1216         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
1217         Simplify logic for ensure_method_is_allowed_to_call_method. 
1218         Handle wrappers on callers.
1219
1220 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1221
1222         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
1223         them don't run yet.
1224
1225         * basic-simd.cs: Fix the names of some test methods.
1226
1227 2009-03-18  Geoff Norton  <gnorton@novell.com>
1228
1229         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
1230
1231 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1232
1233         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
1234
1235 2009-03-17  Jb Evain  <jbevain@novell.com>
1236
1237         * driver.c: remove now uneeded call to mono_gc_base_init before
1238         mono_profiler_load.
1239
1240 2009-03-17  Jb Evain  <jbevain@novell.com>
1241
1242         * dwarfwriter.c (token_handler): handle more cases.
1243
1244 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
1245
1246         * method-to-ir.c: Remove more dead code (that was required only
1247         because of method_is_safe). Fix compiler warnings.
1248
1249 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1250
1251         * method-to-ir.c: Remove unneeded/useless method_is_safe
1252         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
1253
1254 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1255
1256         * mini.c (mini_method_compile): Print the method been compiled with
1257         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
1258         for people not familiar with the runtime.
1259
1260 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1261
1262         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
1263         a managed object which is later put into a GList. Return its class instead.
1264
1265         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
1266         stack slots when using sgen.
1267
1268 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
1269
1270         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
1271
1272 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
1273
1274         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
1275         > so it works on the first vreg as well.
1276
1277 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
1280         trigger randomly.
1281
1282         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
1283         
1284         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
1285         implement GArray.
1286
1287 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
1290         native->IL offset mapping.
1291
1292 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
1293
1294         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
1295
1296         * basic.cs: Add a test.
1297
1298 2009-03-11  Mark Probst  <mark.probst@gmail.com>
1299
1300         * mini-x86.c (mono_arch_output_basic_block): Use different
1301         registers in case the ones we want to overwrite are used by the
1302         other operand.  Fixes regression in #480807.
1303
1304 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1305
1306         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
1307
1308         * dwarfwriter.c (emit_line_number_info): The line number info for
1309         IL code was off by one. Fix that.
1310
1311         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
1312         stack.
1313
1314 2009-03-09  Mark Probst  <mark.probst@gmail.com>
1315
1316         Contributed under the terms of the MIT/X11 license by Steven
1317         Munroe <munroesj@us.ibm.com>.
1318
1319         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
1320         Fixes #483462.
1321
1322 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1323
1324         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
1325         as well.
1326
1327 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1328
1329         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
1330         the delegate ctor handling code. Fixes #482638.
1331         
1332         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
1333         #481458.
1334
1335         * iltests.il.in: Add a test.
1336         
1337         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
1338         mini-posix.c.
1339
1340 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1341
1342         * mini-trampolines.c (mono_create_jump_trampoline): If the method
1343         is shared generic code, return the trampoline, even if the method
1344         has already been compiled.  Fixes #479763.
1345
1346         * mini.c, mini.h: New function
1347         mono_jit_find_compiled_method_with_jit_info() which is the same as
1348         mono_jit_find_compiled_method() but also returns the jit info.
1349
1350 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1351
1352         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
1353         for methods which actually have one.  For all other methods, make
1354         sure the this argument var is live the whole method.
1355
1356         * mini.c (mini_method_compile): Every shared method has a
1357         this/vtable/mrgctx info.  Fixes #480807.
1358
1359 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1360
1361         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
1362         generic/imt thunks where some entries branch through the vtable,
1363         while other entries branch directly.
1364
1365 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1366
1367         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
1368
1369         * mini-windows.c: Ditto.
1370         
1371         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
1372         ctors.
1373
1374 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
1375
1376         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
1377         down an assert.
1378
1379 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1380
1381         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
1382         #481403.
1383
1384 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1385
1386         * exceptions-x86.c: Include debug-mini.h - fixes build.
1387
1388 2009-03-04  Martin Baulig  <martin@ximian.com>
1389
1390         * debug-mini.c: Clean up the exception API and add documentation.
1391         (mono_debugger_handle_exception): New public method; this is
1392         called when throwing an exception or encountering an unhandled one.
1393         (mono_debugger_call_exception_handler): Formerly known as
1394         mono_debugger_handle_exception(); this is used to tell the
1395         debugger that we're about to invoke an exception handler.
1396
1397 2009-03-04  Martin Baulig  <martin@ximian.com>
1398
1399         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
1400         ../metadata/mono-debug-debugger.c; save and reset exception state.
1401
1402 2009-03-02  Martin Baulig  <martin@ximian.com>
1403
1404         * debug-mini.c: Moved the debugger exception handling here from
1405         ../metadata/mono-debug-debugger.c.
1406
1407         * debug-mini.h
1408         (MonoDebuggerExceptionAction): New exception typedef.
1409
1410         * debug-mini.c
1411         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
1412
1413         * exceptions-amd64.c
1414         (mono_amd64_throw_exception): Use the new debugger exception
1415         handling code.
1416
1417         * mini-exceptions.c
1418         (mono_handle_exception_internal): Don't call
1419         mono_debugger_unhandled_exception() here.
1420
1421 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1422
1423         * mini.c aot-compiler.c: Update after the changes to 
1424         mono_marshal_get_runtime_invoke ().
1425
1426         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
1427         Virtual generic methods might not have method->slot set, work around
1428         that.
1429
1430         * generics.cs: Add a test.
1431
1432 2009-03-02  Geoff Norton  <gnorton@novell.com>
1433
1434         * mini.c:
1435         * driver.c: Allow signal chaining of SIGFPE as well.
1436
1437 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1438
1439         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
1440         this since it now receives the method not its generic context in the
1441         IMT reg.
1442
1443         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
1444         generic/imt thunks where some entries branch through the vtable, while
1445         other entries branch directly.
1446
1447         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
1448
1449         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
1450         support for interface methods as well.
1451
1452         * mini-trampolines.c: Add support for virtual generic methods in interfaces
1453         using the normal IMT thunks.
1454
1455         generics.cs: Add new tests.
1456         
1457         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
1458         the generic inst to the generic imt thunks. This fixes AOT support, 
1459         improves consistency with the normal IMT thunks, and makes it easier to
1460         add support for interface generic virtual methods later.
1461
1462         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
1463         
1464 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * driver.c (mono_set_signal_chaining): New public API function to enable
1467         signal chaining on POSIX platforms.
1468
1469         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
1470         (si@lindenlab.com) to implement signal chaining. The original patch was
1471         contributed under the MIT X/11 license:
1472         https://bugzilla.novell.com/show_bug.cgi?id=318894
1473
1474 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1475
1476         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
1477         too until it can be made to run on amd64.
1478
1479 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1480
1481         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
1482         to  get_generic_context_from_code () + get_call_info () if possible.
1483
1484 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1485
1486         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
1487         suspend-on-sigsegv functionality.
1488
1489         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
1490         to suspend when a native SIGSEGV is received. This is useful for debugging
1491         crashes which don't happen under gdb, since a live process contains more
1492         information than a core file.
1493
1494         * mini-exceptions.c (mono_print_thread_dump): Use 
1495         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
1496
1497         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
1498
1499         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
1500         
1501         * basic-float.cs: Disable the tests which currently fail on amd64.
1502
1503         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
1504         value to mono_arch_patch_callsite () to fix crashes.
1505         
1506         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
1507
1508 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1509
1510         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
1511         nop code by patching the call address to point to the nullified class init
1512         trampoline, as the former does not seem to be safe on SMP machines.
1513
1514 2009-02-23  Mark Probst  <mark.probst@gmail.com>
1515
1516         * mini-ops.h: Fix the argument types for a few x86 opcodes where
1517         they were wrong.
1518
1519 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * basic-float.cs basic-calls.cs: Fix warnings.
1522
1523 2009-02-22  Mark Probst  <mark.probst@gmail.com>
1524
1525         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
1526         correct frame pointer in the LMF.  Should fix #478394.
1527
1528 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1529
1530         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
1531
1532         * image-writer.c: Make the binary writer less verbose.
1533
1534 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1535
1536         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
1537         are called from runtime invoke wrappers.
1538
1539 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1540
1541         * cpu-ppc.md (store_memindex): Increase the size of this.
1542
1543 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1544
1545         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1546
1547         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
1548
1549         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
1550         OP_LCONV_TO_R_UN.
1551
1552         Last fix for of #467201.
1553
1554
1555 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1556
1557         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1558
1559         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
1560         and long_conv_to_r8_2:
1561
1562         Fixed part of #467201.
1563
1564 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1565
1566         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1567
1568         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
1569         conversion to 32 bits.
1570
1571         * cpu-x86.md: Increase the size of int_conv_to_r4.
1572
1573         * basic-float.cs: Add a test for this.
1574
1575         Fixed part of #467201.
1576
1577 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1578
1579         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1580
1581         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
1582         conversion to 64 bits.
1583
1584         * basic-float.cs: Add a test for this.
1585
1586         Fixed part of #467201.
1587
1588 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1589
1590         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1591
1592         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
1593         This behavior is compatible with MS.
1594
1595         * iltest.il.in: Add a test for this.
1596
1597         Fixed part of #467201.
1598
1599 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1600
1601         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1602
1603         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
1604         change the precision of the value.
1605
1606         * cpu-x86.md: Define len for float_conv_to_r4.
1607
1608         * basic-float.cs: Add a test for this.
1609
1610         Fixed part of #467201.
1611
1612 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1613
1614         * mini.c: Adjust locking order to the new semantics where the loader lock
1615         comes first.
1616
1617 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1618
1619         * aot-runtime.c:
1620         * mini-amd64.c:
1621         * mini-arm.c:
1622         * mini-ia64.c:
1623         * mini-mips.c:
1624         * mini-ppc.c:
1625         * mini-sparc.c:
1626         * mini-trampolines.c:
1627         * mini-x86.c:
1628         * mini.c:
1629         * tramp-alpha.c:
1630         * tramp-amd64.c:
1631         * tramp-arm.c:
1632         * tramp-hppa.c:
1633         * tramp-ia64.c:
1634         * tramp-mips.c:
1635         * tramp-ppc.c:
1636         * tramp-s390.c:
1637         * tramp-s390x.c:
1638         * tramp-sparc.c:
1639         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
1640
1641 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1642
1643         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
1644         as it is incorrect.
1645
1646 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1647
1648         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
1649         for cctors if needed.
1650
1651 2009-02-17  Mark Probst  <mark.probst@gmail.com>
1652
1653         * mini-ppc.c: Fix build on Darwin.
1654
1655 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1656
1657         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
1658         version instead of 3 as valgrind doesn't like version 3.
1659
1660         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1661
1662         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
1663         usable for hashing methods.
1664         (emit_extra_methods): Use the new hash to avoid putting every method in the
1665         same hash bucket.
1666
1667         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
1668
1669         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
1670         whenever a method ref could match a method.
1671         
1672         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
1673         test to fail.
1674         
1675         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
1676         methods refs.
1677
1678         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
1679
1680         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
1681         the encoding buffer.
1682
1683         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
1684         mono_method_get_header () on inflated methods as an optimization.
1685
1686 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1687
1688         * ssa.c (fold_ins): Fix another crash if the instruction following the
1689         switch was optimized away.
1690
1691 2009-02-16  Mark Probst  <mark.probst@gmail.com>
1692
1693         Contributed under the terms of the MIT/X11 license by Steven
1694         Munroe <munroesj@us.ibm.com>.
1695
1696         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
1697
1698 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1699
1700         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
1701         around the mono_domain_alloc calls, it is now done by the functions
1702         themselves.
1703
1704         * aot-compiler.c (compile_method): Only add wrappers referenced by
1705         the method if compiling with full AOT.
1706         (mono_compile_assembly): Error out if --aot=full is specified on
1707         a platform where it is not supported.
1708
1709         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
1710         on ARM too.
1711
1712         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
1713         AOT support.
1714
1715         * aot-runtime.c (load_named_code): Handle 
1716         mono_arm_throw_exception_by_token.
1717
1718         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
1719
1720         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
1721         unaligned.
1722
1723         * Makefile.am (fullaotcheck): Exit if a test fails.
1724
1725         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
1726         on ARM.
1727         (mono_compile_assembly): Handle the assembler failing.
1728
1729         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
1730         accepting subsections of .bss.
1731
1732         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
1733         was optimized away.
1734
1735         * aot-compiler.c: Remove some unused includes.
1736         
1737         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
1738         now in MonoImageWriter.
1739
1740         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
1741         code sequence which matches a non-virtual call. Fixes #472654.
1742
1743 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
1746         xdebug code.
1747         
1748         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
1749         use the image/dwarf writers directly.
1750
1751         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
1752         field.
1753
1754         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
1755         MonoDwarfWriter.
1756
1757         * image-writer.h: Fix some typos.
1758
1759         * dwarfwriter.h dwarfwriter.c: New files.
1760         
1761         * aot-compiler.c: Extract the DWARF info writing functionality into a 
1762         separate module.
1763
1764         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
1765         argument to return unwind info.
1766
1767         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
1768
1769         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
1770         
1771         * aot-runtime.c (decode_method_ref): Add a case for 
1772         MONO_AOT_METHODREF_WRAPPER_NAME.
1773
1774         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
1775         for AOT.
1776
1777         * aot-compiler.c (encode_method_ref): Use the new constants.
1778
1779         * aot-runtime.c (decode_method_ref): Ditto.
1780
1781         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
1782         be compiled, not the icall itself.
1783
1784 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
1787         using decode_method_ref ().
1788
1789         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
1790         convert it to an in32. Fixes #475859.
1791
1792         * arrays.cs: Add a test.
1793
1794 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1795
1796         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
1797         OP_LCONV_TO_U2.
1798
1799         * basic-long.cs: Add a test.
1800
1801 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1802
1803         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
1804         remove the frame pointer in leaf methods which don't receive any
1805         arguments, don't throw exceptions and don't do dynamic stack
1806         allocations.
1807
1808 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
1811         the fail_tramp changes. Hopefully fixes #475132.
1812
1813 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1814
1815         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
1816         instead of mono_metadata_signature_dup_full.
1817
1818 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1819
1820         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
1821         for processing jump tables. Fixes #473787.
1822
1823 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1824
1825         * mini-generic-sharing.c: mini_method_get_context() just calls
1826         mono_method_get_context_general() now.
1827
1828         * mini.c, mini.h: Moved get_object_generic_inst(),
1829         construct_object_context_for_method() and
1830         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
1831
1832 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1833
1834         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
1835         basic block fell through to its successor bblock without a branch. Fixes
1836         #474718.
1837
1838         * iltests.il.in: Add a test.
1839         
1840         * aot-compiler.c (encode_method_ref): Encode methods of array types.
1841         (can_encode_patch): We can now handle arrays of generic parameters and
1842         array methods.
1843
1844         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
1845
1846         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
1847         the AOT file to avoid some #ifdefs in aot-runtime.c
1848
1849         * mini.h: Bump AOT file format version.
1850
1851 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1852
1853         * Makefile.am (fullaotcheck): Make this run the tests.
1854
1855         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
1856
1857 2009-02-10  Mark Probst  <mark.probst@gmail.com>
1858
1859         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
1860         individually.  Fixes #473482.
1861
1862 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1863
1864         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
1865
1866 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
1867
1868         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
1869         (mono_compile_assembly): Hush compile warnings about
1870         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
1871         code path.
1872
1873 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1874
1875         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
1876
1877         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
1878
1879         * aot-compiler.c: Fix arm support.
1880
1881         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
1882         img_writer_emit_unset_mode () function.
1883
1884         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
1885         (mono_unwind_get_dwarf_pc_reg): Ditto.
1886
1887         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
1888         Move almost all platform specific code to a set of arch_ functions, 
1889         and document them to ease porting.
1890         
1891         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
1892
1893         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
1894
1895         * aot-compiler.c: Extract the image writing functionality into a separate
1896         module to reduce the size of this file.
1897
1898 2009-02-09  Geoff Norton  <gnorton@novell.com>
1899
1900         * mini-s390.c: Fix the signature of emit_sig_cookie.
1901
1902 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
1903
1904         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
1905
1906         * aot-runtime.c (is_shared_got_patch): Ditto.
1907
1908         * aot-runtime.c (load_named_code): Cope with the fact that 
1909         decode_got_entry () won't decode the patch fully if its corresponding got
1910         entry is already filled.
1911         
1912         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
1913         Initialize *ji.
1914         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1915
1916         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
1917         as the moving pointer instead of 'buf' for consistency with the rest of the
1918         codebase.
1919         (mono_arch_create_monitor_exit_trampoline): Ditto.
1920
1921         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
1922         generic_class_init trampolines.
1923         (add_generic_class): Extract some code from add_generic_instances () into a
1924         separate function so it can be called from other places too.
1925         (compile_method): Call add_generic_class () for the classes of inflated methods
1926         referenced by the method.
1927         (can_encode_patch): Allow references to generic parameters.
1928
1929         * aot-runtime.c: Add support the patches required by the new trampolines.
1930         
1931         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
1932         support.
1933
1934         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
1935         full-aot support.
1936
1937         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
1938         this from get_throw_pending_exception, make the signature full aot compatible.
1939
1940         * Makefile.am (fullaotcheck): New target to run full-aot tests.
1941
1942         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
1943
1944         * exceptions.cs: Add a test.
1945
1946 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1947
1948         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
1949         use the DWARF_DATA_ALIGN constant instead.
1950
1951         * exception-<ARCH>.c: Update after the above change.
1952
1953         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
1954         dwarf unwinder.
1955
1956         * mini-arm.c: Enable the dwarf unwinder.
1957
1958         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
1959         instead of mono_class_setup_vtable ().
1960
1961 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1962
1963         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
1964         dwarf unwinder.
1965
1966         * mini-x86.h: Enable the dwarf unwinder.
1967
1968 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
1969
1970         Fix mcs/tests/test-7.cs
1971         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
1972         2009-02-03.
1973
1974 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1975
1976         * mini.c (print_jit_stats): Remove some unused statistics.
1977
1978 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1979
1980         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
1981
1982 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1983
1984         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
1985         the method we get from mono_object_get_virtual_method() because
1986         that function does it properly, now.
1987
1988 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
1991         opcodes. Fixes #472775.
1992
1993 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1994
1995         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
1996         fact that mono_find_jit_info() sometimes returns the context
1997         corresponding to the jit info in new_ctx.  Fixes #472600.
1998
1999 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2000
2001         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
2002         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
2003         klass->enum_basetype directly.
2004
2005         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
2006         enum subtypes.
2007
2008         * unwind.c: Avoid 0 sized arrays.
2009
2010 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2011
2012         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
2013         size on systems with 64k pages. Fixes #471389.
2014
2015 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2016
2017         Contributed under the terms of the MIT/X11 license by Steven
2018         Munroe <munroesj@us.ibm.com>.
2019
2020         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
2021         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
2022         necessary.
2023
2024 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2025
2026         Contributed under the terms of the MIT/X11 license by Steven
2027         Munroe <munroesj@us.ibm.com>.
2028
2029         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
2030         comparison fix.
2031
2032         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
2033         The trampoline can be longer on PPC64.
2034
2035 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2036
2037         Contributed under the terms of the MIT/X11 license by Steven
2038         Munroe <munroesj@us.ibm.com>.
2039
2040         * mini-ppc.c: Compiler warning fixes and trivial code
2041         simplifications.
2042
2043 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2044
2045         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
2046         ins->dreg which could be a hardware register, not a vreg.
2047
2048         * aot-compiler.c (emit_method_dwarf_info): Ditto.
2049         
2050         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
2051         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
2052
2053         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
2054         
2055         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
2056         ->dreg, that is not the vreg we are looking for.
2057
2058         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
2059
2060         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
2061         LIVERANGE_END.
2062
2063         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
2064         strange crashes.
2065
2066 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
2069
2070         * aot-compiler.c (emit_line_number_info): Fix line number emission when
2071         the line diff is 0.
2072
2073         * aot-compiler.c: Add xdebug support on x86.
2074
2075         * unwind.c: Add x86 support.
2076         
2077         * aot-compiler.c (emit_exception_debug_info): Control the emission of
2078         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
2079
2080         * mini.c (mini_method_compile): Ditto.
2081         
2082         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
2083         the variable index.
2084
2085         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
2086         which mimic .push_section/.pop_section in GAS.
2087         
2088         * aot-compiler.c: Emit precise live range information for variables.
2089
2090         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
2091
2092         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
2093         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
2094         them.
2095
2096         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
2097         the live ranges of variables.
2098
2099         * mini.h (struct MonoMethodVar): Add two fields containing the live range
2100         of the variable in terms of native offsets.
2101
2102 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
2103
2104         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
2105         
2106 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2107
2108         Contributed under the terms of the MIT/X11 license by Steven
2109         Munroe <munroesj@us.ibm.com>.
2110
2111         * exceptions-ppc.c (restore_regs_from_context): Correct operand
2112         order (offset then base reg) for ppc_load_multiple_regs.
2113         (emit_save_saved_regs) Correct operand order for
2114         ppc_store_multiple_regs.
2115         (mono_arch_get_call_filter): Correct operand order for
2116         ppc_load_multiple_regs.
2117
2118         * mini-ppc.c (emit_memcpy): Fix operand order for
2119         ppc_load_reg_update and ppc_store_reg_update.
2120         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
2121         (mono_arch_emit_epilog): Correct operand order for
2122         ppc_load_multiple_regs.
2123
2124         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
2125         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
2126
2127 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2128
2129         * cpu-ppc64.md: Fixed storer4_memindex length.
2130
2131 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2132
2133         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
2134         line number info.
2135         
2136         * aot-compiler.c (emit_line_number_info): Optimize this.
2137
2138 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2139
2140         * aot-compiler.c: Disassemble tokens in the IL disassembly.
2141         
2142         * aot-compiler.c: Add debug info for methods without debug info by
2143         emitting an IL file and having the line number info referencing that file.
2144
2145         * aot-compiler.c: Optimize the size of the generated line number info.
2146
2147         * aot-compiler.c: Emit line number info in xdebug mode.
2148
2149         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
2150         million arguments.
2151
2152 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2153
2154         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
2155
2156         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
2157         is used.
2158
2159 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2160
2161         * basic-calls.cs: Test for the weird crash found on arm.
2162         
2163 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2164
2165         * cpu-arm.md: Increase the size of storer8_membase_reg and
2166         loadr8_membase_reg to 24 bytes to accomodate the extra add.
2167
2168         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
2169         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
2170         reg to LR otherwise we'll be loading/storing from just the offset.
2171
2172 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2173
2174         Question: if we are storing gint32's inside the "*native_offset",
2175         should we change the signature to "gint32 *native_offset" to
2176         ensure that we do not have type definition problems?
2177         
2178         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
2179         an int * as this is what the other function expects, causes
2180         problems with Freescale's compiler that defined int32_t to be a
2181         long and makes int incompatible 
2182
2183 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2184
2185         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
2186         filename conflict with bjam.
2187
2188 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2189
2190         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
2191         as it might use decomposed ops.
2192
2193 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2194
2195         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
2196
2197         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
2198         is defined.
2199
2200         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
2201
2202         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
2203         offsets.
2204
2205         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
2206         way registers are stored in MonoContext on arm.
2207
2208         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
2209         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
2210
2211         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
2212
2213         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
2214
2215         * mini.c (mini_init): Register mono_isfinite.
2216
2217         * jit-icalls.c (mono_isfinite): New jit icall.
2218
2219         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
2220         
2221         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
2222         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
2223         the parent frame.
2224
2225 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2226
2227         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
2228         separate frame and stack pointers, so we must use FP to find the register
2229         spill area.
2230         The FP reg is retrieved from the MonoContext::regs array.
2231
2232 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2233
2234         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
2235         as FPA requires it.
2236
2237 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2238
2239         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
2240         return R4 and R8 when not running under softfloat.
2241
2242         Fixes basic-calls.exe
2243
2244 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2245
2246         * mini-arm.c: Implement some overflow opcodes.
2247
2248 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2249
2250         * ssa.c: handle another alloca.h
2251
2252         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
2253         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
2254         MONO_ARCH_USE_SIGACTION. 
2255
2256         * aot-runtime.c, mini-exceptions.c: Replace platform define with
2257         capability defines.
2258
2259         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
2260
2261         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
2262         PPC targets as sigaction does not exist on all platforms, define
2263         this on a per-platform basis.
2264
2265         Instead of erroring out if the platform is not defined, include
2266         mini-ppc-os.h, and expect that the OS specific setting provides
2267         the required information.   
2268
2269 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * aot-compiler.c: Fix --enable-minimal=aot.
2272
2273 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2274
2275         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
2276         previous change.
2277
2278 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * exceptions-arm.c: Fix warnings.
2281
2282         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
2283         ARM.
2284
2285         * mini-x86.c: Fix --enable-minimal=jit build.
2286
2287         * mini.c: Really fix --enable-minimal=jit build.
2288         
2289         * mini.c (construct_object_context_for_method): Move this outside
2290         the DISABLE_JIT block to fix the --enable-minimal=jit build.
2291
2292         "Backported" of r124984 from 2.0 branch.
2293         
2294         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
2295
2296         "Backport" of r124977 + r124978 from 2.0 branch.
2297         
2298         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
2299         to avoid calling mono_exception_from_token () from the throw trampoline.
2300         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
2301         for throwing corlib exceptions, this fixes full-aot support for corlib
2302         exceptions.
2303
2304         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
2305
2306 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2307
2308         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
2309         part of the changes to split the code in mini into operating
2310         system specific files.
2311
2312         This patch was done by copying mini.c to the respective files to
2313         preserve SVN history.
2314
2315 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2316
2317         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
2318
2319 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2320
2321         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
2322         remoting-invoke-with-check wrappers of shared methods.
2323
2324         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
2325
2326 2009-01-27  Mark Probst  <mark.probst@gmail.com>
2327
2328         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
2329         optimization if the top of stack is the last instruction in the
2330         bblock.  Otherwise it might have been used after its definition.
2331         Fixes #469742.
2332
2333 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2334
2335         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
2336         method as well when get_vcall_slot () fails to match a code sequence.
2337
2338         * mini-arm.c: Fix the android build, which doesn't have
2339         __aeabi_read_tp.
2340
2341 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2342
2343         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
2344         the s390x build.
2345
2346 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
2347
2348         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
2349
2350 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
2353         and put its id into jinfo->used_regs. This is only used on amd64,
2354         which is currently the only platform generating unwind info.
2355
2356         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
2357         the dwarf unwinder. This is required to correctly handle async exceptions
2358         like thread abort and stack overflows, which can happen while a method
2359         is in the middle of its prolog or epilog.
2360         
2361         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
2362         the unwind info belonging to an AOTed method.
2363
2364         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
2365         into cfg->unwind_ops.
2366         
2367         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
2368
2369         * mini.c (mini_init): Call mono_unwind_init ().
2370         (mini_cleanup): Call mono_unwind_cleanup ().
2371
2372         * unwind.c: Add functions for managing a set of unwind info entries, allowing
2373         unwind info to be shared between methods.
2374
2375         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
2376         saved in the LMF.
2377
2378         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
2379         get_throw_pending_exception () to avoid initialization races.
2380
2381         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
2382         mono_arch_exceptions_init () function.
2383
2384         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
2385
2386 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
2387
2388         * mini.c (mono_get_domain_intrinsic): New helper function.
2389         (mono_get_thread_intrinsic): Ditto.
2390
2391         * mini-arm.c mini-ia64.c: Use the new helper functions.
2392         
2393         * method-to-ir.c (mono_method_to_ir): Fix the comment for
2394         the last constrained_call change, since it is needed in the non-AOT
2395         case as well.
2396
2397         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
2398         
2399         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
2400         mono_get_lmf_addr () on arm eabi linux.
2401
2402 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
2405         code sequence which matches a non-virtual call.
2406
2407 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2408
2409         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
2410         stack pointer (r1).
2411
2412 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2413
2414         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
2415         runtime-invoke wrappers, since they are also shared based on signature.
2416
2417 2009-01-22  Mark Probst  <mark.probst@gmail.com>
2418
2419         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
2420         info from the (correct) context.
2421
2422 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
2423
2424         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
2425         
2426         * unwind.c (mono_unwind_frame): New function to unwind through a frame
2427         using dwarf unwinding info. Not yet used.
2428
2429         * mini.c (mini_init): When using xdebug, disable freeing of domains.
2430
2431 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2432
2433         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
2434         descriptors.
2435
2436         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
2437         special case and handle mono_arch_delegate_invoke_impl() returning
2438         function descriptors.
2439
2440         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
2441         trampolines return function descriptors, too.
2442
2443 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2444
2445         * method-to-ir.c (handle_alloc): Avoid generic instances in the
2446         out_of_line optimization.
2447
2448 2009-01-21  Martin Baulig  <martin@ximian.com>
2449
2450         * mini.h
2451         (MonoCompile): Added `disable_deadce_vars' to disable removing
2452         unused variables.
2453
2454         * mini.c
2455         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
2456         inside the debugger.
2457
2458         * liveness.c (mono_analyze_liveness): Don't remove any unused
2459         variables if `cfg->disable_deadce_vars' is set.
2460
2461 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2462
2463         * method-to-ir.c: Only apply exception constructor optimization if
2464         the the method actually belongs to an exception class.  Fixes
2465         #467456.
2466
2467 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2468
2469         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
2470         change inside a #ifdef __mono_ppc64__.
2471
2472         * aot-compiler.c (compile_method): Remove the previous limitation.
2473
2474         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
2475         on type variables in AOTed code.
2476         
2477         * aot-compiler.c (compile_method): Skip generic methods having type 
2478         constraints on their generic parameters.
2479
2480         * aot-compiler.c (compile_method): Check for methods which cannot be
2481         encoded inside RGCTX_FETCH patches as well.
2482
2483         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
2484         build.
2485
2486 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2487
2488         * method-to-ir.c: Force the vtable variable in shared generic code
2489         for the case that they might show up on a stack trace where they
2490         are needed.
2491
2492         * mini-exceptions.c: Save and use generic sharing info as well as
2493         IP in stack traces to resolve shared generic instantiations.
2494
2495 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
2496
2497         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
2498         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
2499
2500 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2501
2502         * method-to-ir.c: Do generic sharing for array constructors.
2503
2504 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
2505
2506         * mini-exceptions.c (mono_print_thread_dump): Add information
2507         about the thread state using wapi_current_thread_desc.
2508
2509 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2510
2511         * basic-simd.cs: Tests for the new constructors. 
2512
2513 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2514
2515         * mini-ops.h: Added OP_EXPAND_*
2516
2517         * cpu-x86.md: Same.
2518
2519         * mini-x86.c (mono_arch_output_basic_block): Same.
2520         
2521         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
2522
2523 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2524
2525         * iltests.il.in: Add a test for #467385.
2526
2527 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2528
2529         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
2530         thread been cleaned up is not the same currently in execution.
2531
2532         Fixes appdomain-unload crashes on windows, osx and linux variants
2533         without the __thread keyword.
2534
2535 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2536
2537         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
2538         (koush@koushikdutta.com). Implement this for android.
2539
2540         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
2541         begins with a digit.
2542
2543         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
2544         mono_marshal_get_write_barrier ().
2545
2546 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2547
2548         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
2549         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
2550         that pass them on a register pair.
2551
2552         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
2553         test was crashing due to that.
2554
2555 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
2556
2557         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
2558         trampoline code. Include ucontext.h only if available.
2559
2560 2009-01-15  Mark Probst  <mark.probst@gmail.com>
2561
2562         * mini.c: mono_domain_lookup_shared_generic() takes an open method
2563         and doesn't check whether it's sharable, like it was before
2564         removing the shared generics hash.  This brings IronPython
2565         performance back to what it was before that change.
2566
2567 2009-01-14  Mark Probst  <mark.probst@gmail.com>
2568
2569         * method-to-ir.c: Handle delegate invocation optimization earlier,
2570         otherwise it would be handled (much more slowly) by the
2571         final/sealed optimization.
2572
2573 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
2576         domain is not set. Fixes #465864.
2577
2578 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2579
2580         * method-to-ir.c: Don't stop sharing of generic methods with catch
2581         clauses - we already handle those.
2582
2583 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2584
2585         * mini.c, mini.h: lookup_generic_method() is now
2586         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
2587         making the shared_generics_hash obsolete.
2588
2589 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2590
2591         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
2592         use the red zone.  Make room on the stack first and then use it,
2593         not the other way around.
2594
2595 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2596
2597         * mini.c (mini_init): Call mono_xdebug_init ().
2598
2599         * aot-compiler.c (mono_xdebug_init): Make this non-static.
2600
2601 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
2602
2603         * TestDriver.cs: Add an --iter argument to run tests multiple times.
2604
2605         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
2606         trampolines.
2607
2608         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
2609         debug+unwind info for trampolines.
2610
2611         * mini.c (mono_create_unwind_op): New helper function.
2612
2613         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
2614
2615 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2616
2617         * aot-compiler.c: Fix the build.
2618
2619 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2620
2621         * Makefile.am: Update dtrace-prelink.sh location.
2622
2623 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
2624
2625         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
2626         optimization. Fixes #464520.
2627
2628 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
2629
2630         * mini-amd64.c : Adding code to save/restore non-volatile registers
2631            on Winx64.
2632
2633         * exceptions-amd64.c : Adding code to save/restore non-volatile 
2634           registers on Winx64.
2635
2636         Contributed under MIT/X11 license.
2637
2638 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
2639
2640         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
2641         __GNUC_MINOR__ which can break when the major version changes.
2642
2643 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2644
2645         * basic-simd.cs: Add tests for usage of the sizeof opcode.
2646
2647 2009-01-07  Geoff Norton  <gnorton@novell.com>
2648
2649         * helpers.c:  Allow mono -v -v -v to work on darwin.
2650
2651 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
2652
2653         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
2654           pattern. 
2655
2656         Contributed under MIT/X11 license.
2657
2658 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
2659
2660         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
2661         instead of directly accessing type->data.klass. Fixes #462016.
2662         (mono_allocate_stack_slots_full): Ditto.
2663
2664         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
2665         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
2666
2667         * aot-compiler.c (emit_plt): Fix ARM build.
2668
2669 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
2670
2671         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
2672         
2673         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
2674         change.
2675
2676         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
2677         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
2678         #463357.
2679
2680         * iltests.il.in: Add a regression test.
2681
2682 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2683
2684         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
2685
2686 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2687
2688         * basic-simd.cs: Add a regression test for #462457.
2689
2690 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2691
2692         * mini-ops.h: Add a definition of XPHI.
2693
2694         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
2695
2696         * ssa.c (op_phi_to_move): Handle XPHI.
2697
2698         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
2699
2700         Fixes #462457
2701
2702 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2703
2704         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
2705
2706 2008-12-31  Geoff Norton  <gnorton@novell.com>
2707
2708         * mini-ppc.c: The prolog size allocated can be too small for darwin
2709         ppc32 under certain circumstances.  Also fix a small logic bug.
2710
2711 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
2712
2713         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
2714         while loading AOT methods.
2715
2716         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
2717         since only the former is nulled out after a successful cast. This prevents
2718         crashes with rethrown exceptions when using --debug=casts.
2719
2720 2008-12-24  Mark Probst  <mark.probst@gmail.com>
2721
2722         * mini.h: New macro for checking whether a method is final,
2723         i.e. whether the method or its class is marked final.
2724
2725         * method-to-ir.c: Use the new macro for all final-checks
2726         consistently.  Fixes the crash in the System.ServiceModel tests.
2727
2728 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2729
2730         * mini-exceptions.c (get_exception_catch_class): Corrected another
2731         overly strict assertion.
2732
2733 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2734
2735         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
2736         Clobbering it is not allowed because the caller might use it as
2737         the vtable register in the interface call.
2738
2739 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2740
2741         * mini-exceptions.c (get_exception_catch_class): Corrected an
2742         overly strict assertion.
2743
2744 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
2745         
2746         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
2747
2748         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
2749
2750         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
2751
2752         * cpu-mips.md: correct lengths for certain long_ opcodes.
2753
2754         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
2755
2756         * 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().
2757         
2758 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2759
2760         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
2761         
2762 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2763         
2764         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
2765         
2766 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2767
2768         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
2769         next basic block.
2770         
2771 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
2772
2773         * 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
2774
2775         * 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)
2776         
2777 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
2778         
2779         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
2780         
2781 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
2782
2783         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
2784         gshared code. Fixes #458947.
2785
2786         * generics.cs: Add a test.
2787
2788 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2789         
2790         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2791         
2792         * mini-mips.c: first pass n32 code generation.
2793
2794         * mini-mips.h: datatypes and defines for n32 support.
2795
2796         * exceptions-mips.c: first pass n32 code generation.
2797         
2798         * tramp-mips.c: first pass n32 code generation.
2799         
2800         * cpu-mips.md: add long_ opcodes.
2801         
2802 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2803
2804         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2805
2806         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2807         
2808         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2809         
2810         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2811
2812         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2813
2814         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2815
2816         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2817
2818         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2819
2820         * helpers.c: for mips/n32, don't pass -mips32 to objdump
2821
2822 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
2823
2824         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
2825
2826 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
2827
2828         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
2829
2830 2008-12-12  Mark Probst  <mark.probst@gmail.com>
2831
2832         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
2833         descriptors for helper functions directly in front of the code.
2834
2835 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2836
2837         * method-to-ir.c: Removed an unnecessary assertion.
2838
2839 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2840
2841         * method-to-ir.c: Merge SGEN changes from the old JIT.
2842
2843 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2844
2845         * driver.c (compile_all_methods_thread_main): Handle failure of
2846         mono_get_method ().
2847
2848 2008-12-10  Mark Probst  <mark.probst@gmail.com>
2849
2850         * mini-ppc.c: Merged with mini-ppc64.c.
2851
2852         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
2853
2854         * Makefile.am: Use the same sources for PPC and PPC64.
2855
2856         * mini-ppc64.c: Removed.
2857
2858 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2859
2860         * branch-opts.c (remove_block_if_useless): Extract fall through detection
2861         code to mono_bb_is_fall_through.
2862         
2863         * branch-opts.c (mono_remove_critical_edges): Same.
2864
2865 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2866
2867         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
2868         expect that an OP_BR_REG will be there.
2869
2870 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2871
2872         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
2873         for the many branch ops. The original check miss OP_BR_REG.
2874
2875         Fixes #457574.
2876         
2877 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2878
2879         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
2880
2881 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2882
2883         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
2884         while holding the aot lock.
2885
2886 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2887
2888         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
2889         
2890 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2891
2892         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
2893           to release all runtime callable wrappers held by the runtime.
2894
2895         Contributed under MIT/X11 license.
2896
2897 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2898
2899         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
2900           for Winx64.
2901
2902         Contributed under MIT/X11 license.
2903
2904 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2905
2906         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
2907         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
2908
2909 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2910
2911         * cpu-mips.md: fix ckfinite length
2912
2913         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
2914         (mono_arch_lowering_pass): cleanup, rearrange for clarity
2915         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
2916         
2917 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
2918
2919         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
2920         
2921 2008-12-08  Geoff Norton  <gnorton@novell.com>
2922
2923         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
2924         size by 8 bytes as well.
2925
2926 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2927
2928         * basic-simd.cs: Fix method names for Vector16b.
2929         
2930 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2931
2932         * basic-simd.cs: Fix method names for Vector16sb.
2933
2934 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2935
2936         * basic-simd.cs: Fix method names for Vector8us.
2937         
2938 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2939
2940         * basic-simd.cs: Fix method names for Vector8s.
2941         
2942 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2943
2944         * basic-simd.cs: Fix method names for Vector4ui.
2945
2946 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2947
2948         * basic-simd.cs: Fix method names for Vector2l.
2949
2950 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2951
2952         * basic-simd.cs: Fix method names for Vector2d.
2953
2954 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2955
2956         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
2957         that are extension methods.
2958
2959 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2960
2961         * basic-simd.cs: Fix method names for Vector4f.
2962
2963 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
2964
2965         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
2966         as such. Fixes #456669.
2967
2968 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2969
2970         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
2971         
2972 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2973
2974         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
2975         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
2976         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
2977         (mips_adjust_stackframe): handle FP spills
2978                 
2979         * mini-ops.h: add mips_mtc1_s2
2980         
2981         * cpu-mips.md: add mips_mtc1_s2
2982         
2983 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
2984
2985         * unwind.c: New file, move the unwind info encoding functions here from
2986         aot-compiler.c, so they could be used at runtime too.
2987
2988 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2989
2990         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
2991         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
2992         
2993 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2994
2995         * mini-mips.c: cleanup warnings
2996         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
2997         (mips_adjust_stackframe): handle case of taking the address of stack locals
2998         
2999 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3000
3001         * aot-compiler.c: Implement a few functions missing from the asm writer.
3002         (emit_method_code): Only write symbols for methods when using the bin
3003         writer, since the assembler can't deal with the characters in our method
3004         names.
3005
3006         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
3007
3008         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
3009         call.
3010
3011         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
3012         a bit to also restore %rax.
3013
3014 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3015
3016         * mini-ppc.c: Some simple merges from mini-ppc64.c.
3017
3018 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3019
3020         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
3021         arguments.
3022
3023 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3024
3025         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
3026
3027         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
3028         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
3029
3030         * exceptions-ppc64.c: Removed.
3031
3032         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
3033
3034 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3035
3036         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
3037         tramp-ppc64.c.
3038
3039         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
3040
3041         * tramp-ppc64.c: Removed.
3042
3043 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
3046         the TYPESPEC table.
3047
3048 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3049
3050         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
3051
3052         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
3053         mini-ppc.h instead of mini-ppc64.h.
3054
3055         * mini-ppc64.h: Removed.
3056
3057 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3058
3059         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
3060         
3061         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
3062         
3063 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3064
3065         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
3066         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
3067         code easier.
3068
3069 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3070
3071         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
3072
3073 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3074
3075         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
3076
3077 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3078
3079         * basic-simd.cs: Tests for operator == and != on Vector4f.
3080
3081 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3082
3083         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
3084
3085         * simd-intrinsics.c: Kill useless enum.
3086
3087 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3088
3089         * cpu-mips.md: add long_conv_to_ovf_i4_2
3090         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
3091
3092 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3093
3094         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
3095         
3096         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
3097
3098 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3099
3100         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
3101         
3102 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3103
3104         * basic-simd.cs: Add tests for new methods.
3105
3106 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3107
3108         * simd-intrinsics.c: Add support for operator == and !=
3109         on Vector4(u)i.
3110
3111         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
3112
3113 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3114
3115         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
3116
3117 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3118
3119         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
3120
3121         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
3122         MONO_PATCH_INFO_ICALL_ADDR.
3123
3124         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
3125
3126         * aot-compiler.c: Resurrect full-aot support.
3127
3128 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3129
3130         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
3131         
3132 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3133
3134         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
3135         
3136 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3137
3138         * basic-simd.cs: Fix tests to work under ppc.
3139         Remove tests for methods that will be removed.
3140
3141 2008-12-03  Mark Probst  <mark.probst@gmail.com>
3142
3143         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
3144         generic type (via a typedef or typeref) correctly.
3145
3146 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3147
3148         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
3149         diagnose an assertion failure.
3150
3151 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3152
3153         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
3154         Fix trampoline size.
3155
3156         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
3157         conversion opcodes are implemented natively instead via emulation.
3158
3159 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3160
3161         * cpu-mips.md: remove mips_xori
3162
3163         * mini-ops.h:  remove mips_xori
3164
3165         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
3166
3167         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
3168         
3169         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
3170         
3171 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3172
3173         * cpu-mips.md: fix instruction lengths.
3174
3175         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
3176
3177         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
3178
3179         * mini-ops.h: fix slti / sltiu op profiles.
3180         
3181 2008-12-02  Martin Baulig  <martin@ximian.com>
3182
3183         * method-to-ir.c (mono_method_to_ir): Disable debugging
3184         information for the init locals block to make the debugger stop
3185         after all locals have been initalized.
3186
3187 2008-12-02  Martin Baulig  <martin@ximian.com>
3188
3189         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
3190         running inside the debugger.
3191
3192 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
3193
3194         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
3195         is enabled.
3196
3197         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
3198         alu->alu imm optimization which only shows if deadce is disabled.
3199
3200         * aot-compiler.c: Rename the function names for the binary and asm writers
3201         so they can coexist in the same process. Rework the xdebug code to use the
3202         asm writer. This avoids the need to call into the runtime to dump the
3203         debugging info. Add more debugging info for types.
3204
3205         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
3206
3207         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
3208         cpu description tables, they can't occur in cpu-<ARCH>.md.
3209
3210         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
3211         the stack in CEE_LDFLDA. Fixes #450542.
3212
3213         * generics.cs: Add a new test.
3214
3215 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3216
3217         * mini-ops.h: updated MIPS opcodes
3218         * mini-mips.c: decompose long opts
3219         * mini-mips.h: decompose long opts
3220         
3221 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
3222
3223         * cpu-mips.md: fix length on int_rem_un
3224         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
3225         
3226 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
3229
3230         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
3231
3232 2008-11-29  Martin Baulig  <martin@ximian.com>
3233
3234         * mini-exceptions.c (mono_handle_native_sigsegv): Check
3235         mono_debug_using_mono_debugger() in addition to the
3236         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
3237
3238 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3239
3240         * mini-ops.h: updated more MIPS opcodes
3241         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
3242         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
3243         
3244 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3245
3246         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
3247
3248 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3249
3250         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
3251         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
3252         * mini-ops.h: correct selected mips opcode entries
3253         
3254 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3255
3256         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
3257         make them work.
3258
3259 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3260
3261         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
3262
3263 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3264
3265         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
3266         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
3267         * mini-mips.h: disable IMT
3268         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
3269         
3270 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3271
3272         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
3273
3274 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3275
3276         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
3277
3278 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
3279
3280         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
3281         consistency.
3282
3283 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3284
3285         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3286         for Set/GetVector aligned versions.
3287
3288 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3289
3290         * basic-simd.cs: Add tests for Get/SetVector.
3291
3292 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3293
3294         * mini.c: Removed g_slist_append_mempool().  Now in
3295         metadata/mempool.c.
3296
3297 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3298
3299         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
3300         size properly and make the bounds check optional.
3301
3302         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3303         for SetVector and IsAligned.
3304
3305 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
3306
3307         * mini.c: Remove unused mono_normalize_opcodes () function.
3308
3309 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3310
3311         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
3312         using the new atomic add ops now.
3313
3314         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
3315         add.
3316
3317 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3318
3319         * mini-ppc64.c: Several fixes.
3320
3321 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3322
3323         * cpu-mips.md: added jump_table
3324         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
3325
3326 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3327
3328         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
3329
3330 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3331
3332         * mini-ops.h: corrected a handful of MIPS opcodes.
3333
3334 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3335
3336         * aot-compiler.c: MIPS to use ELF writer
3337
3338 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3339
3340         * mini-codegen.c: remove MIPS specific assert.
3341
3342 2008-11-25  Mark Probst  <mark.probst@gmail.com>
3343
3344         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
3345         fixes.  PPC64 now passes most of the runtime regressions.
3346
3347 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
3348
3349         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
3350         volatile intervals a bit.
3351
3352 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3353
3354         * basic-long.cs: New test case.
3355
3356 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3357
3358         * mini.c (mini_method_compile): Disable globalra for large methods for 
3359         now.
3360
3361         * regalloc2.c (order_moves): Add fp support.
3362
3363         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
3364         source bblock ends with an OP_BR_REG.
3365
3366         * ratests.cs: Add a new test.
3367
3368 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3369
3370         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
3371         sharing.  PPC64 now passes generics.exe.
3372
3373 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3374
3375         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
3376
3377 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3378
3379         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
3380         memory when mono_jit_info_table_find () can't find the method in the
3381         LMF case.
3382
3383         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
3384         AOTed code too.
3385         
3386         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
3387         writer too.
3388
3389 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3390
3391         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
3392         Several fixes.  PPC64 now runs exceptions.exe and
3393         devirtualization.exe.
3394
3395 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3396
3397         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
3398         arrays.exe and basic-math.exe.
3399
3400 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3401
3402         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
3403         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
3404
3405 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3406
3407         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
3408
3409 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3410
3411         * method-to-ir.c: Move bounds checking macros to ir-emit.h
3412
3413         * ir-emit.h: Move macros from method-to-ir.c to here.
3414
3415 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3416
3417         * mini-ops.h: Correct the long simd ops to use LREG.
3418
3419 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
3420
3421         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
3422         
3423         * mini-ops.h: Correct the dreg type of a few long opcodes.
3424
3425         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
3426         Add netbsd support.
3427
3428 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
3429
3430         * mini-ppc.c: remove negative stack references in epilog
3431         for platforms that don't support the red zone.
3432
3433 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3434
3435         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
3436         point regs.  Now PPC64 passes basic-calls.exe.
3437
3438 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3439
3440         * basic-simd.cs: Add tests for accessors of Vector2l.
3441
3442 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3443
3444         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
3445
3446         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
3447         
3448         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
3449
3450 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3451
3452         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
3453         PPC64 passes basic-long.exe.
3454
3455 2008-11-20  Mark Probst  <mark.probst@gmail.com>
3456
3457         * decompose.c: Decompose carry and overflow add on PPC64 like on
3458         other 64 bit archs.  Don't decompose sub at all on PPC64.
3459
3460         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
3461         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
3462         basic-long.exe.
3463
3464 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3465
3466         * basic-simd.cs: Add tests for accessors of Vector2d.
3467
3468 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3469
3470         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
3471
3472         * cpu-x86.md: Same.
3473
3474         * mini-x86.c (mono_arch_output_basic_block): Same.
3475         
3476         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
3477
3478 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3479
3480         * basic-simd.cs: Add tests for accessors of Vector4f.
3481
3482 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3483
3484         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
3485
3486         * cpu-x86.md: Same.
3487
3488         * mini-x86.c (mono_arch_output_basic_block): Same.
3489         
3490         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
3491
3492 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3493
3494         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
3495
3496 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3497
3498         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
3499
3500         * cpu-x86.md: Same.
3501
3502         * mini-x86.c (mono_arch_output_basic_block): Same.
3503         
3504         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
3505
3506 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3507
3508         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
3509
3510 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3511
3512         * simd-intrinsics.c: Enable setters for Vector16sb.
3513
3514 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3515
3516         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
3517
3518         * cpu-x86.md: Same.
3519
3520         * mini-x86.c (mono_arch_output_basic_block): Same.
3521         
3522         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
3523
3524 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
3525
3526         * simd-intrinsics.c: Implement setter for Vector8us.
3527
3528 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3529
3530         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
3531         for dead variables.
3532
3533 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3534
3535         * mini-ppc.c: remove references to the red zone in the prolog
3536         (for systems that don't support it).
3537
3538 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3539
3540         * cpu-ppc64.md: Fixed a few instruction lengths.
3541
3542         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
3543         now.
3544
3545 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3546
3547         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
3548         basic.exe now.
3549
3550 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3551
3552         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
3553
3554 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
3555
3556         * mini-ops.h: Added OP_INSERT_I2.
3557
3558         * cpu-x86.md: Same.
3559
3560         * mini-x86.c (mono_arch_output_basic_block): Same.
3561         
3562         * simd-intrinsics.c: Implement setter for Vector8s.
3563
3564         * simd-methods.h: Add the names of get setters of Vector8s.
3565
3566 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3567
3568         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
3569         
3570         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
3571         parameters.
3572
3573         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3574
3575 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3576
3577         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
3578         for PPC64.  An empty program runs now.
3579
3580 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3581
3582         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3583
3584         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
3585         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
3586         info for JITted code is emitted into a shared library, loadable into gdb.
3587
3588 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3589
3590         * Makefile.am: Changes to build PPC64.
3591
3592         * mini-arch.h: Include mini-ppc64.h on PPC64.
3593
3594 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3595
3596         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
3597         in PPC code up to r119147.
3598
3599 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3600
3601         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3602         cpu-ppc64.md: Changes for PPC64.
3603
3604         Based on code submitted by andreas.faerber@web.de at
3605         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
3606         X11/MIT license.
3607
3608 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3609
3610         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3611         cpu-ppc64.md: Copied from the corresponding PPC files from
3612         r118846.
3613
3614 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
3615
3616         * mini-ops.h: Added OP_ROUND.
3617
3618         * cpu-x86.md: Added round.
3619
3620         * mini-x86.c: Added support for intrinsicing Math.Round (double).
3621
3622         * basic-math.cs: Added test_0_round to test rounding.
3623
3624         Contributed under MIT/X11 license.
3625
3626 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3627
3628         * aot-compiler.c : Fix the Winx64 build.
3629
3630         Contributed under MIT/X11 license.
3631
3632 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3633
3634         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
3635         in OP_EXTRACT_R8 to avoid possible stack corruption.
3636
3637 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3638
3639         * mini-ops.h: Added OP_EXTRACT_R8/I8.
3640
3641         * cpu-x86.md: Added extract_r8.
3642
3643         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
3644         
3645         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
3646         a couple of OP_EXTRACT_I4.
3647
3648         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
3649
3650         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
3651
3652 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3653
3654         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
3655         and not 4.1. 
3656
3657 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3658
3659         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
3660         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
3661
3662         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
3663         are not needed any more.
3664
3665         * mini.h: Remove the unused INS_LIST macros.
3666
3667         * mini.c (mini_method_compile): Remove a disable globalra case which is no
3668         longer needed.
3669
3670         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
3671         ir-emit.h.
3672
3673         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
3674         mono_alloc_ireg () instead.
3675
3676         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
3677         macros.
3678
3679         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
3680         on amd64.
3681
3682         * aot-runtime.c (load_aot_module): Disable AOT when running under
3683         CAS.
3684
3685         * mini-amd64.h: Change the monitor fastpath defines to check for
3686         !PLATFORM_WIN32 so they work on *bsd too.
3687
3688         * mini.h mini.c mini-hhpa.c: Remove more unused code.
3689
3690         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
3691
3692         * mini.h (MonoCompile): Remove new_ir flag.
3693
3694         * regalloc.h regalloc.c: Remove unused code.
3695
3696         * cpu-*.md: Remove more unused opcodes.
3697
3698         * simple-cee-ops.h simple-mini-ops.h: Removed.
3699
3700         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
3701         
3702 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3703
3704         * aliasing.h: Removed.
3705
3706         * *.c: Remove references to aliasing.h and inssel.h.
3707
3708         * mini.c: Remove additional unused functions.
3709
3710         * mini-ops.h cpu-*.md: Remove unused opcodes.
3711
3712 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3713
3714         Remove the old JIT code.
3715
3716         * inssel*.brg: Removed.
3717
3718         * ssa.c abcremoval.c aliasing.c: Removed.
3719
3720         * ssa2.c: Renamed to ssa.c.
3721
3722         * abcremoval2.c: Renamed to abcremoval.c.
3723
3724         * *.c: Removed all !cfg->new_ir code.
3725
3726         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
3727         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
3728
3729         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
3730         
3731 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3732
3733         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
3734         to simplify the code and cut back on the number of global symbols in the AOT
3735         file.
3736         
3737         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
3738
3739 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
3740
3741         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
3742         with the got/got_info tables.
3743
3744         * mini.h: Bump AOT file format version.
3745         
3746         * unwind.h: New file, contains definitions for stack unwinding.
3747
3748         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
3749         to cfg->unwind_ops.
3750         
3751         * aot-compiler.c: Generalize the emitting of unwind information to use the
3752         information in cfg->unwind_ops.
3753
3754         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
3755
3756         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
3757         AOT method frames. Enable writing symbols for methods by default.
3758
3759 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
3760
3761         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
3762         and make it work with vectors of element sizes 1, 2 and 4.
3763
3764         * simd-intrinsics.c: Enable getter for all vectors with element size
3765         1, 2 or 4.
3766
3767         * simd-methods.h: Add the names of other getters.
3768
3769         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
3770
3771         * cpu-x86.md: Same.
3772
3773         * mini-x86.c: Same.
3774
3775 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
3776
3777         * mini-ppc.h: portability fix.
3778
3779 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3780
3781         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
3782         buggy and will overwrite it.
3783
3784 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3785
3786         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
3787         Use it to emit local symbols for all methods so AOTed methods show up with
3788         their full name in gdb/valgrind output.
3789
3790 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
3791
3792         * mini-ppc.c: portability fixes.
3793
3794 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3795
3796         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
3797         entries out of the if (!generic_shared...) code so it is always done.
3798         (mono_class_init_trampoline): Do the patching when running under valgrind
3799         too, newer versions of valgrind have no problems with it.
3800
3801 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3802
3803         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
3804         further sections.
3805
3806 2008-11-13  Mark Probst  <mark.probst@gmail.com>
3807
3808         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
3809         filters.
3810
3811 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3812
3813         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
3814
3815 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3816
3817         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
3818
3819         * cpu-x86.md: Same.
3820
3821         * mini-x86.c: Same.
3822
3823         * simd-intrinsics.c: Same.
3824
3825 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3826
3827         * simd-intrinsics.c: Enable constructor intrinsics for all types.
3828
3829 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3830
3831         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
3832         to work with more Vector types.
3833
3834 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3835
3836         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
3837         store the elemens directly instead of using and intermediate.
3838
3839 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3840
3841         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
3842
3843         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
3844         to preserve %eax for aot plt trampolines.
3845
3846         * aot-compiler.c (compile_method): Don't skip synchronized methods.
3847         (encode_method_ref): Flag synchronized methods so they won't go through
3848         the AOT trampoline.
3849
3850         * aot-compiler.c: Additional work to support AOTing synchronized methods/
3851         wrappers.
3852
3853         * cpu-ia64.md (jmp): Increase max length.
3854
3855 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3856
3857         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
3858         open generic classes.
3859
3860         * aot-compiler.c: Enable the ELF writer on ELF platforms.
3861
3862         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
3863         box+brtrue optimization since it causes test failures on x86.
3864
3865 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3866
3867         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
3868
3869         * cpu-x86.md: Same.
3870
3871         * mini-x86.c: Same.
3872
3873         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
3874         for simd ctor values. 
3875
3876         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
3877         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
3878
3879 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3880
3881         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
3882         LogicalRightShift.
3883
3884         * simd-instrincs.c: Same.
3885
3886         * basic-simd.cs: Same.
3887
3888 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3889
3890         * ratests.cs: Add more tests.
3891
3892         * regalloc2.c (add_spill_code): Handle more corner cases.
3893
3894 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3895
3896         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
3897         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
3898         both the source an destination of an instruction.
3899
3900 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3901
3902         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
3903         wapihandles.c: more portability changes.
3904
3905 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
3906
3907         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
3908         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
3909         safe to execute in a signal handler and the kernel provides better
3910         the info in /proc/self/smaps. Avoid the assert on sigaction during
3911         cleanup.
3912
3913 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3914
3915         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
3916         do the bblock linking hack if it is actually needed.
3917
3918         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
3919         up linking.
3920
3921         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
3922         crash problem is fixed.
3923
3924         * branch-opts.c (mono_remove_critical_edges): Link up newly added
3925         bblocks.
3926
3927         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
3928         for catch clauses.
3929         (mini_method_compile): Set the starting value of next_vreg to 
3930         MAX_IREGS + MAX_FREGS when using globalra.
3931
3932         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
3933         filter clauses with BB_EXCEPTION_HANDLER.
3934
3935         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
3936
3937 2008-11-10  Mark Probst  <mark.probst@gmail.com>
3938
3939         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
3940         space for stdcall.  Fixes regressions on Win32.
3941
3942 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
3943
3944         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
3945         bblocks.
3946         (linear_scan): Remove an assert which doesn't seem to be needed.
3947
3948         * local-propagation.c (mono_local_deadce): Avoid a call to
3949         MONO_DELETE_INS which would screw up the instruction linking.
3950
3951         * mini.c (mono_decompose_op_imm): Make this work with globalra.
3952
3953         * regalloc2.c: Upgrade to work the current JIT code.
3954
3955 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
3956
3957         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
3958         case.
3959
3960         * aot-runtime.c: Remove some dead code.
3961
3962         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
3963         consistency.
3964         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
3965
3966         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
3967         trampolines using sscanf since atoi doesn't work on large unsigned values.
3968
3969         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
3970         Initialize code_size.
3971
3972 2008-11-08  Mark Probst  <mark.probst@gmail.com>
3973
3974         * method-to-ir.c (mini_emit_inst_for_method): Make
3975         Interlocked.CompareExchange work for Int arguments on 32 bit
3976         archs, as well.
3977
3978 2008-11-07  Mark Probst  <mark.probst@gmail.com>
3979
3980         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
3981
3982 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
3983
3984         * main.c Fix MSVC build.
3985
3986         Contributed under MIT/X11 license.
3987
3988 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3989
3990         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
3991         alignment larger than 8 bytes are aligned correctly, too.
3992
3993         * mini.c: Honor the min_align field of MonoClass when laying out
3994         the stack.
3995
3996 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
3997
3998         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
3999
4000         * aot-compiler.c (emit_plt): Fix a warning.
4001         
4002         * aot-compiler.c: Implement ARM support in the binary writer.
4003
4004 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4005
4006         * basic-simd.cs: Add test for getter with byref arg.
4007         Fix the naming of a few tests.
4008         Add missing checks to a test.
4009
4010 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4011
4012         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
4013
4014         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
4015         most of the full-aot support for monitor enter/exit trampolines.
4016
4017         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
4018         enter/exit trampoline creation functions.
4019
4020         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
4021         make dist.
4022
4023 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
4024
4025         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
4026         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
4027         implement the needed functionality without adding crap to the runtime.
4028
4029 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4030
4031         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
4032         non-x86 builds.
4033
4034         * mini.c (mono_build_date): New global version holding the build date in
4035         string format.
4036         
4037         * Makefile.am (buildver.c): Generate a file containing the build date.
4038
4039         * main.c: Set the build date from the generated file.
4040
4041         * mini.c (mono_get_runtime_build_info): New helper function returning build
4042         information in a string format.
4043         
4044         * driver.c (mono_main): Print the build date in --version.
4045
4046         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
4047         file when the bind-to-runtime-version option is used.
4048
4049 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4050
4051         * simd-intrinsics.c: Fix bug when using getters and byref args. 
4052
4053 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4054
4055         * simd-methods.h: Rename prefetch methods.
4056
4057         * simd-intrinsics.c: Same.      
4058
4059 2008-11-05  Mark Probst  <mark.probst@gmail.com>
4060
4061         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
4062         sizes.
4063
4064 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4065
4066         * aot-compiler.c: Use the bundled elf header files instead of depending on
4067         the system one.
4068         
4069         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
4070         mempool.
4071
4072         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
4073         on every call.
4074
4075 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
4076
4077         * cpu-x86.md: Add store nta ops.
4078
4079         * mini-ops.h: Same.
4080
4081         * mini-x86.c: Same.
4082
4083         * mini.h: Add an enum for simd prefetch modes.
4084
4085         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
4086         of store. Use the changed code to support store nta.
4087
4088         * simd-intrinsics.c: Add prefetch ops for all vector types.
4089
4090 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
4093         threads.
4094         
4095         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
4096         names.
4097
4098         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
4099         trampolines.
4100
4101 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4102
4103         * mini-x86.c: Fixed commit.
4104
4105 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4106
4107         * aot-compiler.c (emit_plt): Align the plt section only on x86.
4108
4109 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4110
4111         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
4112         and MONITOR_EXIT, for the ASM fastpaths.
4113
4114         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
4115         available.
4116
4117         * mini.c, patch-info.h: Signature and patch infos for
4118         Monitor.Enter/Exit trampolines.
4119
4120         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
4121
4122         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
4123         Monitor.Enter/Exit ASM fastpath for Linux.
4124
4125 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4126
4127         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
4128
4129         * objects.cs: Add a new test.
4130         
4131         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
4132
4133         * aot-runtime.c (load_method): Run class initialization in the PLT case even
4134         if MONO_LOG_LEVEL is set.
4135
4136         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
4137
4138         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
4139
4140         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
4141         
4142         * aot-compiler.c: Change the relocation code to use virtual addresses instead
4143         of file offsets. Align the sections belonging to the data segment to 
4144         PAGESIZE.
4145
4146 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4147
4148         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
4149         elf.h. Port it to amd64.
4150
4151 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4152
4153         * driver.c: Enable SIMD by default.
4154
4155 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4156
4157         * cpu-x86.md: Add prefetch op.
4158
4159         * mini-ops.h: Same.
4160
4161         * mini-x86.c: Same.
4162
4163         * mini.h: Add an enum for simd prefetch modes.
4164
4165         * simd-methods.h: Add prefetch function names.
4166
4167         * simd-intrinsics.c: Add prefetch ops for all vector types.
4168
4169 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4170
4171         * aot-compiler.c (emit_bytes): Speed this up a little.
4172
4173 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
4174
4175         * aot-compiler.c: Add JIT time etc. statistics.
4176         
4177         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
4178
4179         * mini.h (MonoCompile): Add 'got_offset' field.
4180
4181         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
4182         method_got_offsets array.
4183
4184         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
4185         wrappers.
4186
4187         * aot-compiler.c (compile_method): Add generic method instances referenced
4188         by the method to the list of methods to be compiled, this is required so if
4189         A<T> references B<T>, and another assembly references A<int>, then it will
4190         also get a copy of B<int>.
4191
4192         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
4193         when checking for monitor enter/exit.
4194
4195 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4196
4197         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
4198         for Monitor.Enter and Monitor.Exit if enabled.
4199
4200         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
4201         Solaris.
4202
4203 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
4204
4205         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
4206         of an OP_MOVE. Fixes #440046.
4207
4208         * basic-long.cs: Add a new test.
4209
4210 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4211
4212         * mini.h: Add synchronization note for the managed counter-part.
4213
4214         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
4215         returns the simd caps of the current cpu.
4216
4217 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4218
4219         * basic-simd.cs: Remove Console.WriteLine.
4220
4221 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4222
4223         * basic-simd.cs: New tests for Vector2ul.
4224
4225 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4226
4227         * simd-intrinsics.c: Add new vector type Vector2ul.
4228
4229 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4230
4231         * basic-simd.cs: New tests for Vector2l.
4232
4233 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4234
4235         * cpu-x86.md: Add long version of most packed int ops.
4236
4237         * mini-ops.h: Same.
4238
4239         * mini-x86.h: Same.
4240
4241         * simd-intrinsics.c: Add new vector type Vector2l.
4242
4243 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4244
4245         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
4246
4247         * simd-methods.h: Remove SN_op_BitwiseXor.
4248
4249 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4250
4251         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
4252         alignment.
4253
4254 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4255
4256         * basic-simd.cs: Test for Vector2d.
4257
4258         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
4259         value.
4260
4261 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4262
4263         * cpu-x86.md: Add double version of all packed float ops.
4264
4265         * mini-ops.h: Same.
4266
4267         * mini-x86.h: Same.
4268
4269         * simd-intrinsics.c: Add new vector type Vector2d.
4270
4271         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
4272
4273         * simd-methods.h: Add Duplicate.
4274
4275 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4276
4277         * basic-simd.cs: Test for packing with signed saturation.
4278
4279 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4280
4281         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
4282         found in the TYPESPEC table.
4283
4284 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4285
4286         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
4287         too.
4288
4289         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4290
4291         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
4292         instead of the RVA, since the RVA can be changed by tools like the cil 
4293         stripper.
4294
4295         * method-to-ir.c (mono_method_to_ir2): Ditto.
4296
4297         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
4298         (deserialize_variable): Ditto.
4299
4300 2008-10-25  Martin Baulig  <martin@ximian.com>
4301
4302         * debug-mini.c (write_variable): Use
4303         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
4304
4305 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4306
4307         * cpu-x86.md: Add unsigned variants of packd and packw.
4308
4309         * mini-ops.h: Same.
4310
4311         * mini-x86.h: Emit the right instruction for packd and packw.
4312         Add unsigned variants of packd and packw.
4313
4314         * simd-intrinsics.c: Packd and packw were used in place of their
4315         unsigned variants. Change that.
4316         Add intrinsics for (Signed)PackWithSignedSaturation.
4317
4318         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
4319
4320 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4321
4322         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
4323
4324 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4325
4326         * mini-ops.h: Remove dword packed add/sub with saturation ops.
4327
4328         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
4329
4330         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
4331         sse instructions.
4332
4333         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
4334
4335 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4336
4337         * method-to-ir.c, mini.c: Special casing for the synchronized
4338         wrapper for the ldtoken+GetTypeFromHandle case.
4339
4340 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4341
4342         * mini.c (mono_replace_ins): Move this to branch-opts.c.
4343
4344         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
4345         created/split bblocks.
4346
4347 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4348
4349         * mini-ops.h: Add packed signed mul high.
4350         
4351         * cpu-x86.md: Same.
4352
4353         * mini-x86.c (mono_arch_output_basic_block): Same.
4354
4355         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
4356
4357         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
4358
4359 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4360
4361         * basic-simd.cs: Tests for Vector16sb.
4362
4363 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4364
4365         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
4366
4367 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4368
4369         * mini-ops.h: Add packed signed min, max and compare greater.
4370         
4371         * cpu-x86.md: Same.
4372
4373         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
4374         saturation.
4375
4376         * simd-methods.h: Add CompareGreaterThan.
4377
4378         * simd-methods.h: Remove CompareEquals.
4379
4380         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
4381
4382         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
4383
4384         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
4385         CompareEqual.
4386
4387 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4388
4389         * basic-simd.cs: Fix tests due to change in the API.
4390
4391 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4392
4393         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
4394
4395 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4396
4397         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
4398
4399         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
4400         inst_offset as this has invalid values for LDADDR.
4401
4402 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4403
4404         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4405
4406         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
4407
4408 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4409
4410         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
4411         for accessing field->data.
4412
4413 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4414
4415         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4416
4417 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4418
4419         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
4420
4421         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
4422
4423 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4424
4425         * dominators.c (mono_compute_natural_loops): Allocate GList enties
4426         from the cfg mempool.
4427
4428 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4429
4430         * basic-simd.cs: Tests for new methods in Vector8us.
4431
4432 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4433
4434         * mini-ops.h: Add multiply and store high.
4435         
4436         * cpu-x86.md: Same.
4437
4438         * mini-x86.c (mono_arch_output_basic_block): Same.
4439
4440         * simd-methods.h: Same.
4441
4442         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
4443         and CompareEqual.
4444
4445 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4446
4447         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
4448         mono_class_setup_vtable ().
4449
4450         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
4451         mono_class_get_vtable_entry () for accessing klass->vtable.
4452
4453         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
4454
4455         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
4456         found.
4457
4458         * method-to-ir.c (mono_save_token_info): Don't save references made from
4459         wrappers.
4460
4461         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
4462         of generic instances.
4463
4464         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
4465
4466 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4467
4468         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
4469         OP_JMP depends on the method signature.  Calculate it properly.
4470
4471 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4472         
4473         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
4474         called directly.
4475
4476         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
4477         instances.
4478         (emit_extra_methods): Add another table mapping method indexes to 
4479         offsets in the extra_method_info table.
4480
4481         * mini.h: Bump AOT file format version.
4482         
4483         * aot-runtime.c: Merge most of the code from mono_aot_get_method
4484         and mono_aot_get_method_from_token () into one function.
4485
4486 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4487
4488         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
4489         separate counter.
4490
4491 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
4492
4493         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
4494         methods.
4495
4496         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
4497         disable_aot.
4498
4499         * mini.c (mono_patch_info_equal): Compare the generic context as well.
4500
4501         * mini.h: Bump aot file format version.
4502
4503         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
4504         AOT file can contain native code for methods which are not in the METHOD
4505         table. Generate code for non-sharable generic instances of generic methods
4506         found in the METHODSPEC table.
4507         
4508         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
4509         encoding generic type handles.
4510
4511         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
4512         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
4513
4514         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
4515         macros + MONO_ADD_INS.
4516
4517         * mini.c (mono_jump_info_token_new2): New function which takes a generic
4518         context as well.
4519
4520         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
4521
4522         * mini.h: Bump aot file format version.
4523
4524         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
4525
4526 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4527
4528         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
4529         platforms, with definable stack alignment value.  Set to 16 now
4530         for all platforms.
4531
4532         * mini.c, mini.h, driver.c: Command line option for disabling
4533         stack alignment.
4534
4535 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4536
4537         * basic-simd.cs: Tests for new methods in Vector4ui.
4538
4539 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4540
4541         * mini-ops.h: Add packed int shuffle.
4542         
4543         * cpu-x86.md: Same.
4544
4545         * mini-x86.c (mono_arch_output_basic_block): Same.
4546
4547         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
4548         extract mask, max, min, shuffle.
4549
4550         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
4551
4552 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4553
4554         * basic-simd.cs: Tests for new methods in Vector8us.
4555
4556 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4557
4558         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
4559         RuntimeTypeHandle, not a TypedReference.
4560
4561 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
4562
4563         * simd-intrinsics.c: remove relocations.
4564
4565 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
4566
4567         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
4568         optimizations from the x86 backend.
4569
4570 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
4571
4572         * simd-methods.h, simd-intrinsics.c: debloat method names and
4573         prepare for no relocations.
4574
4575 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4576
4577         * mini-ops.h: Add packed min/equal and sum of absolute differences.
4578         
4579         * cpu-x86.md: Same.
4580
4581         * mini-x86.c (mono_arch_output_basic_block): Same.
4582
4583         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
4584         extract mask, max, min and sum of absolute differences.
4585
4586         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
4587         method name.
4588
4589 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4590
4591         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
4592         Renamed one test for consistency.
4593
4594 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4595
4596         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
4597         fix to the code that deal with other blocks.
4598
4599 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4600
4601         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
4602
4603 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4604
4605         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
4606         that deals with vreg interference. Explicitly check for OP_LDADDR to be
4607         able to process the source reg.
4608
4609 2008-10-16  Martin Baulig  <martin@ximian.com>
4610
4611         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
4612
4613         * inssel.brg: Add `OP_HARD_NOP'.
4614
4615         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
4616
4617         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
4618         `OP_HARD_NOP' instruction when running inside the debugger.
4619
4620         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
4621         `OP_HARD_NOP' instruction when running inside the debugger.
4622
4623 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4624
4625         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
4626         now works. The issue with the regalloc tripping up no longer
4627         happens.
4628
4629         * simd-intrinsics.c (load_simd_vreg): Same.
4630
4631 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4632         
4633         * basic-simd.cs: Tests for new Vector8ui methods.
4634
4635 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4636
4637         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
4638         only for type. This fixes crashes where MonoInst::klass is checked
4639         for ops of type != VTYPE or OBJ.
4640
4641         * simd-intrinsics.c (load_simd_vreg): Same.
4642
4643 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4644
4645         * mini-ops.h: Add ops for packed shuffle/max/avg and
4646         extract mask.
4647         
4648         * cpu-x86.md: Same.
4649
4650         * mini-x86.c (mono_arch_output_basic_block): Same.
4651
4652         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
4653         extract mask.
4654
4655         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
4656         to emit extract mask op.
4657
4658         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
4659         to emit word shuffles.
4660
4661 2008-10-15  Mark Probst  <mark.probst@gmail.com>
4662
4663         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
4664         the largest alignment needed by a variable, but at least
4665         sizeof(gpointer).
4666
4667 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4668
4669         * basic-simd.cs: Tests for the fixes in the last commit.
4670
4671 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4672
4673         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
4674         no longer handles STACK_PTR input.
4675
4676         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
4677
4678         * simd-intrinsics.c (load_simd_vreg): New function that works like 
4679         get_simd_vreg   but handles STACK_PTR input.
4680
4681         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
4682         as the input can be an arbitrary pointer.
4683
4684         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
4685         LDADDR local optimization directly otherwise use a store op.
4686
4687 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4688
4689         * basic-simd.cs: Tests for dup low and dup high.
4690
4691 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4692
4693         * mini-ops.h: Add dup low and dup high ops.
4694         
4695         * cpu-x86.md: Same.
4696
4697         * mini-x86.c (mono_arch_output_basic_block): Same.
4698
4699         * simd-intrinsics.c (vector4f_intrinsics): Same.
4700
4701 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4702
4703         * basic-simd.cs: Tests for recently added functionality.
4704
4705 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4706
4707         * mini-ops.h: Add remaining sse1 fp ops.
4708         
4709         * cpu-x86.md: Add remaining sse1 fp ops.
4710
4711         * mini-x86.c (mono_arch_output_basic_block): Same.
4712
4713         * mini.h: Add enum for simd FP compare conditions.
4714
4715         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
4716
4717         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
4718         so the backed can generate the appropriate op.
4719
4720 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4721         This patch squeese one more byte from the SimdIntrinsc struct.
4722
4723         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
4724         a a shift amount intead of simply or'ing it.
4725
4726         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
4727
4728         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
4729         byte so we can have an aditional flags field without increasing struct size.
4730
4731         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
4732         against the simd_supported_versions bitmask.
4733
4734         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
4735
4736 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
4737
4738         * mini.c: remove rawbuffer code (the only use here is unsafe because
4739         it takes locks during signal handling and the kernel now provides much
4740         better info in proc/pid/smaps these days).
4741
4742 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
4743
4744         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
4745         OP_X86_PUSH_OBJ. Fixes #434620.
4746
4747         * objects.cs: Add a test.
4748         
4749 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
4750
4751         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
4752         that the packuswb/packusdw don't work with unsigned numbers for what
4753         would be negative numbers in signed format.
4754
4755         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
4756         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
4757
4758         * mini-ops.h: Add doubleword forms of many ops and packing ones.
4759
4760         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
4761
4762         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
4763
4764         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
4765
4766         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
4767         add more ops.
4768
4769         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
4770         version as the enum in mini.h.
4771
4772         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
4773         for sse3 ops, check the simd_version field if present. This way the code
4774         works with all versions of sse.
4775
4776 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4777
4778         * simd-intrinsics.c: Fixed intrinsic name typo.
4779
4780         * mini.h: Added missing simd exported function.
4781
4782         * basic-simd.cs: Added tests for Vector4ui.
4783         Fixed broken test for Vector16b.
4784
4785 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
4786
4787         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
4788         the max length to 64.
4789
4790 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4791
4792         * method-to-ir.c: Only do the fast virtual generic method call for
4793         non-wrapper methods.
4794
4795         * mini.h, mini-trampolines.c: The new generic virtual remoting
4796         trampoline handles virtual method calls via the vtable (as done by
4797         the fast virtual generic method calls) to remoting proxies.
4798
4799         * mini.c (mono_jit_create_remoting_trampoline): For generic
4800         methods reate a generic virtual remoting trampoline.
4801
4802         * mini-amd64.h: Enable fast virtual generic method calls again.
4803
4804 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4805
4806         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
4807         restore registers when doing tail calls.
4808
4809 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4810
4811         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
4812         Vector4ui.
4813
4814 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4815
4816         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
4817
4818 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4819
4820         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
4821
4822 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4823
4824         * basic-simd.cs: Retrofit for API changes.
4825
4826 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4827
4828         * mini-ppc.c: Handle integer stack arguments for tail calls.
4829
4830 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4831
4832         * optflags-def.h: Removed sse3 optimization.
4833
4834         * driver.c: Same.
4835
4836         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
4837         sse3.
4838
4839         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
4840
4841         * mini.h: Added enumeration with simd versions.
4842
4843         * simd-intrinsics.c (emit_intrinsics): Use the new static var
4844         for detecting SSE3.
4845
4846         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
4847
4848         * mini.c (mini_init): Call mono_simd_intrinsics_init.
4849
4850 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4851
4852         * basic-simd.cs: Added tests for Vector8u and Vector16u.
4853
4854         * basic-simd.cs: Fixed test naming.
4855
4856 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4857
4858         * mini-ops.h: Added ops for packed and saturated math, shifts
4859         and packing/unpacking.
4860
4861         * cpu-x86.md: Added descriptors for the above ops.
4862
4863         * mini-x86.c: Added code to emmit the above ops.
4864
4865         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
4866
4867 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
4868
4869         * aot-compiler.c (compile_method): Enable AOT for generic code.
4870
4871         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
4872
4873 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
4874
4875         * mini.c: add a workaround for a common screwup that ends up blamed
4876         to mono (other processes blocking signal delivery).
4877
4878 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4879
4880         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
4881         in the LDFLD/STFLD opcodes. Fixes #432673.
4882
4883         * iltests.il.in: Add a new test.
4884
4885 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
4886
4887         * mini-arm.c: attach the thread in unmanaged->managed transitions
4888         using delegates (bug #433148).
4889
4890 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4891
4892        * basic-simd.cs: Use new ShuffleSel constants.
4893
4894 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4895
4896         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
4897
4898         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
4899         only disable simd intrinsics if no sse2 is detected.
4900
4901         * optflags-def.h: Added sse3.
4902
4903         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
4904         is disabled.
4905
4906 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4907
4908         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
4909         when adding delegate-invoke wrappers.
4910
4911 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4912
4913         * Makefile.am: Reenable the simd tests.
4914
4915 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4916
4917         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
4918           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
4919           other vreg is allocated to that hreg.
4920
4921         Contributed under MIT/X11 license.
4922
4923 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4924
4925         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
4926         yet checked in.
4927
4928 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4929
4930         * basic-simd.cs: New test suite for SIMD intrinsics.
4931
4932         * Makefile.am: Added new tests.
4933
4934 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4935
4936         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
4937
4938         * mini-ops.h: Same.
4939
4940         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
4941
4942         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
4943         using SSE2 aware opcodes.
4944
4945         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
4946         is enabled, this code path is only reachable if conversion ops are emmited after
4947         mono_method_to_ir.
4948
4949         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
4950
4951         This optimization saves 6 bytes per conversion against the old version.
4952
4953 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4954
4955         * aot-compiler.c (compile_method): Don't skip methods referencing 
4956         generic methods without a corresponding entry in token_info_hash, since
4957         encode_method_ref () can handle all generic methods now.
4958
4959         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
4960         generic context is set.
4961         
4962         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
4963         generic sharing of LDTOKEN.
4964
4965 2008-10-06  Mark Probst  <mark.probst@gmail.com>
4966
4967         * mini-amd64.h: Temporarily disabled fast virtual generic method
4968         calls because it breaks the System.Runtime.Remoting tests.
4969
4970 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
4973
4974         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
4975         so inlining actually works.
4976         (check_inline_caller_method_name_limit): Ditto.
4977
4978 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
4979
4980         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
4981         64 bit safety (from Olaf Hering and Andreas Farber).
4982
4983 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4984         
4985         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
4986         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
4987         unused virtual call support code.
4988
4989         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
4990         
4991         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
4992         which can't use aot trampolines.
4993         (decode_patch): Don't create aot trampolines for methods which can't use
4994         them.
4995
4996         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
4997         use aot trampolines.
4998
4999         * mini.h: Bump AOT image format version.
5000         
5001 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
5002
5003         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
5004         to save_token_info () since cmethod is inflated for constrained calls.
5005
5006         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
5007
5008 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
5009
5010         * Makefile.am: Add build rules for ppc64.
5011         This avoids the build failing at pedump with unresolved symbols
5012         due to lack of arch_sources. Instead it will now fail earlier
5013         due to lack of cpu-ppc64.md.
5014
5015         Contributed under MIT/X11 license.
5016
5017 2008-10-04  Mark Probst  <mark.probst@gmail.com>
5018
5019         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
5020         tail calls.
5021
5022         * iltests.il.in: Add test case for tail call with many arguments.
5023
5024 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5025
5026         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
5027         to the fast virtual generic method code until the aot case is fixed.
5028
5029 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5030
5031         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
5032
5033 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5034
5035         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
5036         thunks.
5037
5038 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5039         
5040         * simd-intrinsics.c: Forgot to add this one.
5041
5042         * mini-codegen.c: Fix macro in case SIMD is not supported.
5043
5044 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5045         
5046         This patch land initial JIT support for simd intrinsics.
5047
5048         * mini-x86.h: Added new define to make --enable_minimal work on x86.
5049
5050         * Makefile.am: Added simd-intrinsics.c
5051
5052         * simd-intrinsics.c: New file with simd instrinsic related
5053         code.
5054
5055         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
5056
5057         * cpu-x86.md: Add simd related instructions.
5058
5059         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
5060
5061         * driver.c: Added two new --regression variants.
5062
5063         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
5064
5065         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
5066
5067         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
5068         extract some complicated logic to helper functions.
5069
5070         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
5071
5072         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
5073
5074         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
5075         the specialized simplification pass.
5076
5077         * method-to-ir.c (mono_spill_global_vars): Use new macro.
5078
5079         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
5080
5081         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
5082         table.
5083
5084         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
5085         if MONO_ARCH_NEED_SIMD_BANK is defined.
5086
5087         * mini-ops.h: Added the new simd ops.
5088
5089         * mini-x86.c: Added mono_arch_xregname.
5090
5091         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
5092
5093         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
5094
5095         * mini-x86.h: Define simd related MONO_ARCH macros.
5096
5097         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
5098
5099         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
5100
5101         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
5102         MONO_CLASS_IS_SIMD to deal with simd related IR.
5103
5104         * mini.h (MonoInst): Added spill_var to the backend union.
5105
5106         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
5107
5108         * mini.h: Added forward declarations of the new simd fuctions.
5109
5110         * optflags-def.h: Added new optimization names SIMD.
5111
5112         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
5113
5114         * regalloc.h: Added support for working with 3 register banks.
5115
5116         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
5117
5118         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
5119
5120 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
5121
5122         * mini-exceptions.c: remove 64 bit related ifdef clutter.
5123
5124 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
5127         instead of one on 64 bit systems.
5128
5129         * method-to-ir.c: Remove unused includes.
5130
5131 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
5132
5133         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
5134         cfg->used_int_regs, since the two are different on arm.
5135
5136 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5137
5138         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
5139         mono_method_get_vtable_index() to get the vtable index.
5140
5141 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5142
5143         * method-to-ir.c (mono_method_to_ir2): Don't create native
5144         wrappers for array methods, because they're never called (and if
5145         they were called they wouldn't work).
5146
5147 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5148
5149         * method-to-ir.c (mono_method_to_ir2): Array methods are
5150         special-cased and must not be invoked indirectly via the (M)RGCTX
5151         when generic sharing is turned on.  Fixes #431413.
5152
5153 2008-10-01  Mark Probst  <mark.probst@gmail.com>
5154
5155         * method-to-ir.c: When generic sharing is active, call
5156         non-interface virtual generic methods via the standard trampoline.
5157
5158         * mini-trampolines.c: Handle virtual generic shared methods.
5159
5160         * mini.h, mini-x86.c, mini-x86.h: New argument for
5161         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
5162         method thunks and which is the trampoline to call if the lookup
5163         fails.  Enable the virtual generic method thunk for x86.
5164
5165         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
5166         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
5167         argument but assert that it's NULL, because these archs don't yet
5168         implement the virtual generic method thunk.  Changes in the IMT
5169         thunk data structures.
5170
5171 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
5172
5173         * aot-compiler.c (emit_globals): Avoid invalid characters in
5174         the static linking symbol.
5175
5176         * objects.cs: Add a test for the range check optimization. Fix warnings.
5177
5178         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
5179         optimization from the current JIT.
5180
5181         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
5182         later in decompose_array_access_opts () to allow more optimizations.
5183
5184         * method-to-ir.c (mono_handle_soft_float): Rename this to 
5185         mono_decompose_soft_float () for consistency.
5186
5187         * mini-ops.h: Fix arguments of OP_STRLEN.
5188
5189         * method-to-ir.c (save_cast_details): Extract the cast details saving code
5190         into a separate function.
5191         (reset_cast_details): Ditto.
5192         (handle_unbox): Save cast details. Fixes #431254.
5193
5194         * method-to-ir.c: Remove some obsolete FIXMEs.
5195
5196 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5197
5198         * ir-emit.h (alloc_dreg): Write a warning before crashing.
5199
5200 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5201
5202         * mini-codegen.c: More work on macros to make them
5203         ready for multiple regbanks.
5204
5205 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5206
5207         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
5208
5209         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
5210
5211 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5212
5213         * mini-codegen.c (mono_spillvar_offset): Proper support for
5214         multiple regbanks.
5215
5216 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
5219         the stack overflow changes.
5220
5221 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5222
5223         * mini-codegen.c: Make all bank macros depend on reg_bank.
5224
5225         * mini-codegen.c (mono_local_regalloc): Make free mask
5226         initialization regbank aware.
5227
5228 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5229
5230         * mini-codegen.c (mono_local_regalloc): Extract callee
5231         mask selection to a function and make it regbank aware.
5232
5233 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5234
5235         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
5236         code to deal with many regbanks.
5237
5238 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5239
5240         * mini-codegen.c: More fp->regbank changes.
5241
5242 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5243
5244         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
5245         of a hardcoded constant.
5246
5247 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5248
5249         * method-to-ir.c (type_from_stack_type): Fix typo.
5250
5251 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * mini-ia64.c (emit_move_return_value): Convert float return values to
5254         double.
5255
5256         * objects.cs: Add a new test.
5257         
5258         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
5259         VARARG methods to fix an assert later.
5260
5261         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
5262         end so it at least compiles.
5263
5264 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5265
5266         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
5267
5268 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
5269
5270         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
5271         optimization to a new function (emit_optimized_ldloca_ir) and enable
5272         it for both ldloca and ldloca_s.
5273
5274 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5275
5276         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
5277         gshared CASTCLASS code.
5278
5279         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
5280         amd64, where the libc stack unwinder encounters stack frames referring to
5281         native code in unmapped memory.
5282
5283         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
5284         sharing.
5285
5286         * generics.cs: Add new test.
5287
5288 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
5289
5290         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
5291         add a check that one of the ARM_FPU_ constants is defined.
5292
5293         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
5294         
5295         * mini-exceptions.c: Fix build on non-altstack platforms.
5296
5297         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
5298         sharing of vtypes.
5299
5300         * ir-emit.h: Add a comment to NEW_PCONST.
5301
5302         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
5303
5304         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
5305
5306         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
5307         after the changes to MonoJitDomainInfo.
5308
5309 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5310
5311         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
5312
5313 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5314
5315         * mini-ppc.c: Compiler warning fixes.
5316
5317 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5318
5319         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
5320         for pinvokes.
5321
5322 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5323
5324         * exceptions-ppc.c, mini-ppc.h: Compile
5325         mono_arch_handle_altstack_exception() on Darwin, too.
5326
5327 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5328
5329         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
5330         work on archs which don't have generic sharing implemented, only
5331         without the vtable_arg.
5332
5333 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5334
5335         * mini.c: Added comment explaining why delegate ctor icall
5336         wrappers are compiled.
5337
5338 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5339
5340         * mini.c: Don't produce trampolines to delegate ctor icall
5341         wrappers but compile them upfront.
5342
5343 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
5344
5345         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
5346         runtime-set function when going back to managed code. Currently this
5347         is used to set back the protection on the soft ovf pages and/or to
5348         throw the stack overflow exception that happened in unmanaged code.
5349
5350 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
5351
5352         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
5353         runtime-set function when going back to managed code. Currently this
5354         is used to set back the protection on the soft ovf pages and/or to
5355         throw the stack overflow exception that happened in unmanaged code.
5356
5357 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5358
5359         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
5360         the support code for restoring stack protection after stack overflows
5361         that happen in unmanaged code. Don't set the exec permission on the
5362         soft overflow area.
5363
5364 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
5365
5366         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
5367         delegate->method_ptr is set. Fixes #428054.
5368
5369 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5370
5371         * tests.cs: Rename to ratests.cs.
5372
5373         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
5374         emit_get_rgctx_... functions.
5375
5376 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5377
5378         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
5379
5380 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5381
5382         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
5383         before asserting that method is sharable.
5384
5385 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5386
5387         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
5388         whether method needs a static RGCTX wrapper used instead of
5389         complex conditions.
5390
5391         * generic-sharing.c, mini.h: A few functions moved to
5392         metadata/generic-sharing.c.
5393
5394 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5395
5396         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
5397         Generic code sharing for value types, which essentially means
5398         treating value type methods like static methods.  The RGCTX is
5399         passed in the same way.
5400
5401 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5402
5403         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
5404         opcode when creating multi-dimensional arrays of open types.
5405
5406         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
5407         open generic types.
5408
5409         * generics.cs: Add a test.
5410
5411         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
5412
5413 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5414
5415         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
5416
5417         * mini.c (mini_method_compile): Set it when running under the debugger. 
5418
5419         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
5420         vreg optimization if the flag is set.
5421
5422         * driver.c (mono_main): Add --attach= option to pass options to
5423         the attach agent.
5424
5425         * mini.c (sigquit_signal_handler): Start the attach agent.
5426
5427         * ssapre.c: Disable this to save space since it is not yet ported to
5428         linear IR.
5429
5430         * regalloc2.c: Disable this to save space.
5431
5432         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
5433
5434 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
5435
5436         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
5437         the -v option useful again.
5438
5439 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5440
5441         * mini-amd64.c (mono_arch_output_basic_block): Add support for
5442         --break-at-bb.
5443
5444         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
5445         arrays of arrays. Fixes #428406.
5446
5447         * method-to-ir.c (mini_emit_castclass): Ditto.
5448
5449         * objects.cs: Add new test.
5450         
5451 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
5452
5453         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
5454         was wrong at it choked against target_type_is_incompatible for byref types.
5455
5456 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5457
5458         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
5459         places.
5460
5461 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
5462
5463         * mini-exceptions.c: update a few more exceptions-related counters.
5464
5465 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
5466
5467         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
5468         new functions to allocate from persistent mempools.
5469
5470 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5471
5472         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
5473         multiple register banks in the future.
5474
5475         * mini-codegen.c (mono_local_regalloc): Fix a warning.
5476
5477 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
5478
5479         * mini.c (type_to_eval_stack_type): Remove duplicated function.
5480
5481         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
5482
5483         * mini.h: Export type_to_eval_stack_type.
5484
5485         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
5486         is only ins->klass of byref types.
5487
5488 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
5489
5490         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
5491         (mini_emit_memcpy2): Ditto.
5492
5493         * mini-amd64.c: Fix a warning.
5494
5495 2008-09-21  Mark Probst  <mark.probst@gmail.com>
5496
5497         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
5498         linking.
5499
5500 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
5501
5502         * method-to-ir.c: Extract stloc micro-optimization to a
5503         function and apply it to all cases.
5504
5505 2008-09-19  Mark Probst  <mark.probst@gmail.com>
5506
5507         * method-to-ir.c: Don't fail generic code sharing in cases we
5508         already support.
5509
5510 2008-09-18  Mark Probst  <mark.probst@gmail.com>
5511
5512         * mini-ppc.c: Handle structs in tailcalls on Darwin.
5513
5514 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
5515
5516         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
5517         implementation.
5518
5519 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
5520
5521         * trace.c: make tracing more useful and correct, with per-thread
5522         id and indent info.
5523
5524 2008-09-15  Mark Probst  <mark.probst@gmail.com>
5525
5526         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
5527         doing a method call and the argument is an R4.
5528
5529 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
5530
5531         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
5532         generic methods.
5533
5534 2008-09-13  Mark Probst  <mark.probst@gmail.com>
5535
5536         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
5537
5538 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
5539
5540         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
5541         (MONO_JUMP_TABLE_FROM_INS): Ditto.
5542
5543 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5544
5545         * driver.c: Add a --agent argument (not supported yet) to load managed
5546         agent assemblies before loading the main assembly, similarly to how the
5547         Java VM handles agents.
5548
5549 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5550
5551         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
5552         function to do stack layout of local variables.
5553
5554 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5555
5556         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
5557         calculation.
5558
5559 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5560
5561         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
5562         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
5563         JIT if DISABLE_JIT is defined.
5564
5565         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
5566         defined.
5567
5568 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5569
5570         * iltests.il.in: Disable the fconv test on PPC (the result is
5571         undefined according to ECMA).
5572
5573 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5574
5575         * iltests.il.in: Enable tail call tests for PPC.
5576
5577         * mini.h: Add variable for storing incoming valuetype argument
5578         addresses for tail calls.
5579
5580         * mini-ppc.c: Implement valuetype arguments and return values for
5581         tailcalls on Linux.
5582
5583 2008-09-09  Mark Probst  <mark.probst@gmail.com>
5584
5585         * mini-ppc.c: Partially implement tail calls (struct arguments and
5586         return values not supported).
5587
5588         * method-to-ir.c: Enable tail calls on PPC.
5589
5590 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
5591
5592         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
5593         runtime-invoke wrappers to work around the problem of them getting
5594         assigned to a random class.
5595
5596         * aot-runtime.c (mono_aot_get_method): Ditto.
5597         
5598 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
5599
5600         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
5601         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
5602
5603 2008-09-07  Mark Probst  <mark.probst@gmail.com>
5604
5605         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
5606         until they're implemented properly.
5607
5608         * exceptions-ppc.c: Use arch-independent exception-handling code
5609         instead of custom one.
5610
5611         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
5612         for Linear IR.
5613
5614         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
5615
5616         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
5617         applies when __powerpc__ is defined.
5618
5619 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
5620
5621         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
5622         methods to their code to avoid computing the full name of wrappers and
5623         doing a lookup in a string hash table.
5624
5625 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5626
5627         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
5628         we identify bblocks before method_to_ir () is ran.
5629
5630         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
5631         Also avoid optimizing branches pointing to themselves.
5632
5633         * mini.c (mini_method_compile): Ditto. Fixes #422947.
5634
5635 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
5636
5637         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
5638
5639 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5640
5641         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
5642         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
5643         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
5644         'buf'.
5645
5646         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
5647         jumped to the same entry in plt_jump_table.
5648
5649 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
5650
5651         * method-to-ir.c (initialize_array_data): Handle field with RVA from
5652         dynamic images.
5653
5654 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
5657         other assignment can be if converted. Saves 1.5% on corlib size and fixes
5658         #421807.
5659
5660 2008-08-29  Geoff Norton  <gnorton@novell.com>
5661
5662         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
5663         segment, and doesn't properly handle .space as .text.  Fixes
5664         AOT Mach/ARM
5665
5666 2008-08-29  Geoff Norton  <gnorton@novell.com>
5667
5668         * mini.c: Disable the mach exception handler when running on 
5669         ARM
5670
5671 2008-08-29  Geoff Norton  <gnorton@novell.com>
5672
5673         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
5674         globals on Darwin/ARM
5675
5676 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
5677
5678         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
5679         since too many things depend on it. Instead, call 
5680         mono_runtime_set_no_exec ().
5681         
5682         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
5683         the new JIT.
5684
5685         * aot-compiler.c: Add an 'asm-only' AOT option.
5686
5687         * mini.c: Avoid initializing the runtime when doing AOT compilation.
5688                 
5689         * aot-compiler.c (compile_method): Disable gshared support for now as it
5690         doesn't yet work.
5691
5692 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5693
5694         * mini-amd64.h : Fix a compiler warning.
5695
5696         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
5697           Changed to use a callback function to retrieve the unwind info.
5698           This avoids problems observed when code blocks were removed by
5699           unloading an app domain.
5700
5701         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
5702           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
5703           to work properly.
5704
5705         Contributed under MIT/X11 license.
5706
5707 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5708
5709         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
5710           case to keep the stack aligned to 8.
5711
5712         Contributed under MIT/X11 license.
5713
5714 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
5715
5716         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
5717         avoid repeated linear searches.
5718
5719 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
5720
5721         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
5722         methods it can't handle.
5723         
5724         * aot-compiler.c (add_method): Avoid adding a method twice.
5725         (add_wrappers): Add runtime invoke wrappers for all methods.
5726
5727         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
5728         function to create an aot-compatible version of this trampoline.
5729
5730         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
5731
5732 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5733
5734         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
5735
5736         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
5737         with a generic sharing failure.
5738
5739         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
5740
5741         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
5742         CEE_RETHROW. Fixes #419634.
5743
5744         * mini.c (mono_method_to_ir): Ditto.
5745
5746         * exceptions.cs: Add a new test.
5747         
5748         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
5749         to mono_type_stack_size_internal () since some callers might not pass in
5750         an rgctx.
5751
5752         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
5753         instrument_prolog. Fixes #419878.
5754
5755         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
5756         doubles in soft float mode volatile.
5757
5758 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
5759
5760         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
5761
5762         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
5763         to handle soft float correctly.
5764
5765         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
5766         the fast path.
5767
5768         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
5769
5770         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
5771         to sp, since the generics catch code requires it.
5772
5773         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
5774         copying.
5775
5776         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
5777         mono_arch_emit_imt_argument ().
5778
5779         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
5780
5781         * mini-arm.c tramp-arm.c: Generic sharing updates.
5782
5783 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
5784
5785         * mini-arm.c: Fix the arm build.
5786
5787         * generic-sharing.c (mini_type_get_underlying_type): New helper function
5788         handling enums, generic instances and generic sharing.
5789         (mini_type_stack_size_full): Ditto.
5790
5791         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
5792         
5793         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
5794
5795         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
5796
5797         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
5798         trampolines.
5799
5800         * mini-arm.c: Various small generic sharing changes.
5801
5802         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
5803         this for x86.
5804         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
5805         custom code.
5806
5807         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
5808         helper function to return a generic class init trampoline.
5809
5810         * method-to-ir.c mini.c: Use it.
5811         
5812         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
5813         arch-specfic function to return a generic class init trampoline.
5814
5815         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
5816         the GENERIC_CLASS_INIT custom code.
5817
5818         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
5819         a fatal error, not a sharing failure.
5820
5821         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
5822         needed.
5823
5824         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
5825         trampoline argument from MONO_ARCH_VTABLE_REG.
5826
5827         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5828         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5829         argument, and pass the vtable in VTABLE_REG.
5830
5831         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5832         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5833         argument, and pass the vtable in VTABLE_REG.
5834         (mono_arch_create_trampoline_code_full): Remove some special casing for
5835         the rgctx fetch trampoline.
5836
5837         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
5838         Fixes #419273.
5839
5840         * iltests.il: Add a test for it.
5841
5842 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
5843
5844         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
5845
5846         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
5847         no longer needed.
5848
5849         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
5850         use mono_jit_info_table_find () to avoid recursion.
5851         (mono_delegate_trampoline): Add a sync wrapper here.
5852
5853         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
5854         here.
5855
5856         * mini.c (mono_method_to_ir): Ditto.
5857         
5858         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
5859         add_sync_wrapper argument. Don't add a sync wrapper here.
5860         (mono_create_jump_trampoline): Don't add a sync wrapper here.
5861
5862         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
5863         
5864 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5865
5866         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
5867           of nonvolatile registers back from MonoContext to CONTEXT.
5868
5869         Contributed under MIT/X11 license.
5870
5871 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5872
5873         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
5874           arguments on Winx64 there are only 4 argument registers.  For this
5875           logic to work the last argument must be pulled from the stack.  
5876
5877         Contributed under MIT/X11 license.
5878
5879 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
5880
5881         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5882
5883         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
5884         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
5885         encode/decode_method_ref ().
5886
5887         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
5888
5889         * aot-runtime.c (decode_patch): Ditto.  
5890
5891         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
5892         MONO_PATCH_INFO_METHOD.
5893
5894         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
5895         MonoGenericJitInfo.
5896
5897         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
5898         MonoGenericJitInfo.
5899
5900         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
5901
5902         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
5903         one from the caller.
5904
5905         * aot-runtime.c (decode_generic_inst): New function to decode and
5906         return a interned generic inst.
5907         (decode_klass_ref): Use it.
5908         (decode_method_ref): Ditto.
5909
5910         * aot-compiler.c (emit_exception_debug_info): Save 
5911         jinfo->has_generic_jit_info too.
5912
5913 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5914
5915         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
5916
5917         * iltests.il.in: Add a test for fconv_to_i.
5918
5919         * liveness.c: Disable the liveness2 pass for now to save space.
5920
5921         * regalloc2.c: Include mempool-internals.h to fix warnings.
5922
5923         * aot-compiler.c (encode_method_ref): Encode the context of generic
5924         instance methods.
5925
5926         * aot-runtime.c (decode_method_ref): Inflate generic methods using
5927         the context saved in the aot file.
5928
5929         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5930
5931         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5932
5933         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
5934         volatile so they won't be optimized away.
5935
5936 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
5937
5938         * ssa.c:
5939         * ssa2.c:
5940         * mini.c:
5941         * regalloc2.c:
5942         * dominators.c: Remove duplicated functions that now are in
5943         mempool-internals.h.
5944
5945 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5946
5947         * aot-compiler.c: Fix warnings.
5948
5949         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
5950
5951         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
5952
5953         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
5954         as the patch type.
5955
5956         * mini.c (mono_resolve_patch_target): Ditto.
5957         
5958         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
5959         (encode_klass_ref): Add support for encoding VARs/MVARs.
5960
5961         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
5962
5963         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
5964         the handling of the got entries into a separate 'decode_got_entry' function.
5965         Add support for RGCTX_FETCH.
5966
5967         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
5968         clobbered by the trampoline code.
5969
5970         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
5971         not clobbered by the indirect calling code.
5972
5973 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5974
5975         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
5976         to fix the build.
5977
5978 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
5979
5980         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
5981         signature using the compilation mempool otherwise we would leak it.
5982
5983 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5984
5985         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
5986         mono_emit_abs_call ().
5987
5988         * patch-info.h: Add GENERIC_CLASS_INIT.
5989
5990         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
5991
5992         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
5993         as their target as a near call.
5994
5995         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
5996         ABS handling code.
5997         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
5998
5999         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
6000         call to a runtime function described by a patch.
6001
6002         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
6003         mono_emit_abs_call, this has the advantage that the ABS handling code in
6004         mono_codegen () can handle them both, and can handle other stuff in the
6005         future without additional code.
6006
6007         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
6008         entry.
6009         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
6010         abs addresses.
6011
6012         * mini.h: Add missing bblock related prototypes.
6013
6014         * mini.h (MonoCompile): Remove unused reverse_inst_list and
6015         reverse_inst_list_len fields.
6016
6017         * mini.c: Refactor this file a bit by moving branch optimizations to 
6018         branch-opts.c.
6019
6020         * method-to-ir.c: Merge generic sharing changes missed earlier.
6021
6022         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
6023
6024         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
6025         shared patches. Process METHODCONST as a shared patch.
6026
6027         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
6028         as it crashes on the 2.0 mscorlib.
6029
6030         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
6031         to cause crashes.
6032         
6033         * aot-compiler.c: Use is_plt_patch () in a few additional places.
6034         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
6035         by IMT.
6036
6037         * aot-compiler.c: Reorganize the got handling code to be a bit more
6038         understandable.
6039
6040 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6041
6042         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
6043         mono_patch_info_equals/hash, and use it to massively simplify
6044         get_plt_index ().
6045
6046         * mini.c (mono_patch_info_hash): Simplify this and add support for
6047         more patch types.
6048
6049         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
6050
6051         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
6052         handling code, since an offset is not enough to identify a trampoline.
6053
6054         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
6055
6056 2008-08-17  Mark Probst  <mark.probst@gmail.com>
6057
6058         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
6059
6060         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
6061
6062         * mini-ops.h: Argument and result types for OVF_CARRY ops.
6063
6064         * decompose.c: PPC decompositions for various ops.
6065
6066         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
6067
6068 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6069
6070         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
6071         call the generic trampoline code using a call, instead of a jump, to
6072         remove some special casing from the generic trampoline code.
6073
6074         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
6075         (mono_codegen): Ditto.
6076
6077         * aot-compiler.c aot-runtime.c: Ditto.
6078
6079         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
6080
6081         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
6082         helper function to find the offset corresponding to a lazy fetch trampoline.
6083
6084         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
6085         when doing generic sharing.
6086
6087         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
6088         places.
6089         
6090         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
6091         mini-trampolines.c to be with the other trampoline creation functions.
6092
6093         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
6094         as it is equal to method->signature in most cases, add a 
6095         mono_emit_method_call_full variant which takes a signature and an imt
6096         argument as well.
6097
6098 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
6099
6100         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
6101         to this function, since it could be computed easily from the method 
6102         argument.
6103         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
6104         more.
6105
6106         * method-to-ir.c mini.c: Remove references to 
6107         compile_generic_method_wo_context.
6108
6109         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
6110         generic method calls.
6111         
6112         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
6113         dimensional non-szarrays.
6114
6115         * mini.c (mini_init): Register mono_array_new_1.
6116
6117         * jit-icalls.c (mono_array_new_1): New jit icall.
6118
6119         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
6120         pointing to the method.
6121
6122         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
6123         method addresses belonging to METHOD_JUMP patches in the 
6124         jump_target_got_slot_hash.
6125         (mono_aot_load_method): Ditto.
6126
6127         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
6128         METHOD_JUMP patches.
6129
6130         * mini.c (mini_create_jit_domain_info): New helper function which 
6131         initializes/frees domain->runtime_info.
6132         (mini_free_jit_domain_info): Ditto.
6133         (mini_init): Install the domain hook functions with the runtime.
6134
6135         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
6136         information maintained by the JIT.
6137
6138         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
6139         insertion into jump_table_hash into mono_codegen (), also implement proper
6140         locking.
6141
6142         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
6143         tail calls, it is already done by the aot code.
6144         
6145         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
6146         mechanism on amd64.
6147
6148         * iltests.il.in: Make the jmp test a bit more complex.
6149
6150         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
6151         generic instances which doesn't have a token.
6152
6153         * aot-runtime.c (decode_method_ref): Ditto.
6154         
6155         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
6156         can handle this case now.
6157         (handle_box): Ditto.
6158
6159 2008-08-15  Geoff Norton  <gnorton@novell.com>
6160
6161         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
6162         debugging check.
6163
6164 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
6165
6166         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
6167         calling generic methods.
6168
6169         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
6170
6171         * aot-runtime.c (decode_patch_info): Ditto.
6172
6173         * mini.c (mono_resolve_patch_target): Ditto.
6174         
6175         * patch-info.h: Add METHOD_RGCTX.
6176
6177         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
6178
6179 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
6180
6181         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
6182         arguments in registers.
6183
6184         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
6185         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
6186
6187         * mini.c (mini_method_compile): Abort aot compilation for generic
6188         methods if generic sharing is disabled.
6189         
6190         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
6191         an mrgctx.
6192
6193         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
6194         requiring an mrgctx.
6195
6196         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
6197         store instructions when converting a vcall to a normal call.
6198
6199         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
6200         mono_arch_find_jit_info.
6201
6202 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
6203
6204         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
6205         avoid calling mono_method_full_name () for every method even if the
6206         env var is not set.
6207         (check_inline_caller_method_name_limit): Ditto.
6208
6209 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6210
6211         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
6212         assemblies in one run.
6213
6214         * aot-compiler.c (mono_compile_assembly): Only print out a count of
6215         skipped methods if it is not 0.
6216
6217         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
6218
6219 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6220
6221         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
6222           MONO_ARCH_HAVE_UNWIND_TABLE.
6223
6224         Contributed under MIT/X11 license.
6225
6226 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6227
6228         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
6229           from default optimizaton list on Winx64.
6230
6231         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
6232
6233         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
6234           the LMF from the MonoJitTlsData structure.
6235
6236         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
6237
6238         Contributed under MIT/X11 license.
6239
6240 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6241
6242         * mini.c (sigsegv_signal_handler): Fix the build.
6243
6244         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
6245         assembly->aot_module.
6246
6247         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
6248         hash table. This simplifies and speeds up a lot of code, and fixes support
6249         for .netmodules.
6250
6251         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
6252         with the runtime.
6253
6254         * mini-exceptions.c: Ditto.
6255         
6256         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
6257         'native_offset' argument, since these are computed in the 
6258         mono_find_jit_info () function.
6259
6260         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
6261         is used by exceptions-ppc.c.
6262
6263         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
6264         mono_arch_find_jit_info ().
6265         
6266         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
6267         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
6268         generic code in mini-exceptions.c.
6269
6270 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
6271
6272         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
6273
6274         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
6275         
6276         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
6277         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
6278         called while holding the loader lock. Fixes #415608.
6279         (mono_aot_get_method_from_token_inner): Ditto.
6280
6281 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6282
6283         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
6284         to reduce differences between this and the generic implementation in
6285         mini-exceptions.c.
6286         (ves_icall_get_frame_info): Ditto.
6287
6288         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
6289
6290         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
6291         longer neccesarry.
6292
6293         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
6294         mono_arch_get_call_filter () and make it non-static, for consistency with the
6295         other architectures.
6296
6297 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
6298
6299         * mini.c:
6300         * local-propagation.c:
6301         * mini-x86.c: Correct the name of arch defines.
6302
6303 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6304
6305         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
6306         NO_EMULATE_LONG_SHIFT_OPS define.
6307
6308 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6309
6310         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
6311         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
6312
6313         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
6314         MACH fixes. Merged from the 2.0 branch.
6315
6316         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
6317
6318         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
6319         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
6320
6321         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
6322
6323         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
6324         mono_marshal_get_native_wrapper () signature changes.
6325
6326 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
6327
6328         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
6329         conversion bug under arm.
6330
6331 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
6332
6333         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
6334
6335         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
6336         with overflow checking.
6337
6338 2008-08-05  Marek Habersack  <mhabersack@novell.com>
6339
6340         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
6341         to the genmdesc.pl file
6342
6343 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
6344
6345         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
6346         arg_array in the soft-float versions of the LOAD/STORE macros.
6347
6348         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
6349         implementation.
6350
6351         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
6352
6353 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6354
6355         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
6356         a float HFA. Fixes #413621.
6357
6358 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
6359
6360         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
6361         frame_size to args_size. Fixes build.
6362
6363 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6364
6365         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
6366         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
6367
6368         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
6369         the stack are not unaligned. Fixes #413247.
6370         
6371 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
6372
6373         * mini.c: update jitted methods performance counters.
6374
6375 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6376
6377         * mini-exceptions.c: increase the exceptions thrown performance
6378         counter in mono_handle_exception ().
6379
6380 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
6381
6382         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
6383         can work with netmodules.
6384
6385 2008-07-28  Geoff Norton  <gnorton@novell.com>
6386
6387         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
6388         regression tests.
6389
6390 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6391
6392         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
6393         correct place.
6394
6395 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
6396
6397         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6398           The float param registers and other param registers must be the 
6399           same index on Windows x64.
6400
6401         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
6402           ArgValuetypeAddrInIReg argument case.  Setting the argument
6403           op to OP_VTARG_ADDR (OP_REGOFFSET)).
6404
6405         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
6406           variable computed above as the copy length for arguments of storage
6407           type ArgValuetypeAddrInIReg.
6408
6409         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
6410           ArgValuetypeAddrInIReg argument case.  This case will rely on
6411           mono_arch_emit_outarg_vt to emit the correct code later in the process.
6412
6413         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
6414           a 32 byte stack allocation for all calls.  We will omit the adjustment for
6415           jump and tail call instructoins as they do not follow the typical call behavior.
6416
6417         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
6418           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6419           local variable and pass the local variable by reference to the called method.
6420
6421         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
6422           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
6423           of a struct is passed in a register it must be saved with the other
6424           volatile argument on the stack.
6425
6426         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
6427           frame pointer the stack adjustment value must be saved to the unwind 
6428           info structure.
6429
6430         Contributed under MIT/X11 license.
6431
6432 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6433
6434         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
6435         which got lost in the merge.
6436
6437 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6438
6439         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
6440         build.
6441
6442         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
6443         
6444         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
6445         icalls, since they won't be patched.
6446
6447         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
6448         different code sequence when running under valgrind to prevent some valgrind
6449         errors.
6450
6451         * iltests.il.in: Add new regression test.
6452
6453         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
6454         end with a throw.
6455
6456         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
6457         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
6458
6459         * iltests.il.in: Add new test.
6460
6461         * aot-compiler.c: Fix some warnings.
6462
6463         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
6464         Fixes #412494.
6465
6466 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6467
6468         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
6469         (mini_usage_jitdeveloper): Add a missing --wapi option.
6470
6471 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6472
6473         * mini-codegen.c: Simplify the is_fp macros.
6474         (free_up_ireg): Remove, use free_up_reg instead.
6475         (free_up_reg): Fix the fp case.
6476
6477 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6478
6479         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
6480         lowered earlier.
6481
6482         * exceptions-x86.c: Merge some changes which seemed to have got lost
6483         in the linear-ir merge.
6484
6485         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
6486
6487         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
6488         long vreg volatile even if the variable was already created.
6489
6490         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
6491         volatile variables.
6492
6493 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6494
6495         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
6496
6497         * mini.c (mono_jit_compile_method_inner): Add support for 
6498         MONO_EXCEPTION_BAD_IMAGE.
6499
6500         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
6501         mini_method_get_context () returns NULL. Fixes #356531.
6502
6503         * mini.c (mono_method_to_ir): Ditto.
6504         
6505         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
6506         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
6507
6508 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6509
6510         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
6511         in the LDFTN implementation.
6512
6513 2008-07-25  Mark Probst  <mark.probst@gmail.com>
6514
6515         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
6516         code, patch calls to icalls, too, even if they're not in the
6517         shared generic code hash.  Fixes #411962.
6518
6519 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6520
6521         * cpu-x86.md: Increase the length of the fcall opcodes.
6522
6523         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
6524         calls returning floats.
6525
6526         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
6527         on NEWARR.
6528         
6529         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
6530         missed earlier.
6531
6532         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
6533         into the domain->method_code_hash.
6534
6535         * aot-compiler.c: Fix win32 build.
6536
6537         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
6538         
6539         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
6540         gshared NEWARR implementation.
6541
6542         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
6543
6544         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
6545         can be used outside of method_to_ir.
6546
6547         * mini.h (MonoCompile): Add arg_types field.
6548
6549         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
6550         
6551         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
6552         the values of the local arg_array and param_types array.
6553
6554 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6555
6556         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
6557         got accesses might only get generated later when NEWOBJ is decomposed.
6558         
6559         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
6560         looking up the native code of the target method when a delegate is called
6561         for the first time.
6562
6563         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
6564         optimization.
6565
6566         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
6567
6568         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
6569         AOT work on platforms without a working dlsym implementation.
6570
6571         * mini.h: Bump AOT image format version.
6572         
6573 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6574
6575         * mini-exceptions.c: Free a MonoType with
6576         mono_metadata_free_type() instead of g_free().
6577
6578         * aot-runtime.c: Free a MonoType.
6579
6580 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6581
6582         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
6583         optimization.
6584
6585         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
6586         fp stack on x86.
6587
6588 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
6589         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
6590         profiler hook.
6591
6592 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6593
6594         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
6595         NEWOBJ calls on valuetypes.
6596
6597         * iltests.il.in: Add new test.
6598
6599         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
6600
6601 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6602
6603         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
6604         is no longer needed.
6605
6606         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
6607         non register sized integer arguments.
6608         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
6609         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
6610         emit_memcpy2 ().
6611
6612         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
6613         CEE_MONO_RETOBJ.
6614         
6615         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
6616         two a binop with different sized arguments is emitted.
6617
6618         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
6619         instruction in the ins==NULL case.
6620
6621 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6622
6623         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
6624
6625         * mini-x86.c: Fix osx build.
6626
6627         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
6628         opcodes as well.
6629
6630         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
6631         instruction for non int sized variables.
6632
6633         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
6634         implementation.
6635
6636 2008-07-23  Robert Jordan  <robertj@gmx.net>
6637
6638         * method-to-ir.c: Fix MSVC build.
6639
6640 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6641
6642         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
6643         a non int sized type, widen it to an int since newer versions of gcc seem to
6644         generate code which needs this.
6645
6646         * ssa2.c abcremoval2.c: Fix warnings.
6647
6648         * *: Merge the Linear IR branch.
6649
6650         The original branch is at trunk/branches/vargaz/mini-linear-il, and
6651         the ChangeLog file there describes all the changes done over the years. 
6652         Further documentation can be found at www.mono-project.com/Linear_IL.
6653
6654 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6655
6656         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6657           The float param registers and other param registers must be the 
6658           same index on Windows x64.
6659
6660         Contributed under MIT/X11 license.
6661
6662 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
6663
6664         * mini.c: Make the previous fix GC safe.
6665
6666 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
6667
6668         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
6669
6670 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6671
6672         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
6673           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
6674           ArgValuetypeAddrInIReg instead.
6675
6676         Contributed under MIT/X11 license.
6677
6678 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
6679
6680         * mini-codegen.c (get_register_spilling): Fix a warning.
6681
6682 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
6683
6684         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
6685         for types which the initialization fails. Raises the provided exception
6686         at the right stop after cleanup.
6687
6688 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
6689
6690         * aot-compiler.c: Free most of the memory allocated during compilation.
6691
6692         * mini.c (mini_parse_debug_options): Fix a leak.
6693         
6694         * mini.c (mini_method_compile): Don't add the method to the jit info tables
6695         during aot compilation.
6696
6697 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
6698
6699         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
6700         it has too much register pressure.
6701
6702 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
6703
6704         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
6705
6706 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6707
6708         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6709         on x86.
6710
6711         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6712         on amd64 similar to the way it is done on arm.
6713
6714         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6715
6716         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
6717         consistency, normalize error messages, avoid loading aot-only modules in
6718         normal mode.
6719
6720         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
6721         for consistency.
6722
6723         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
6724
6725 2008-07-11  Martin Baulig  <martin@ximian.com>
6726
6727         * debug-debugger.h
6728         (MonoDebuggerInfo): Add `interruption_request'.
6729
6730 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6731
6732         * aot-compiler.c (emit_plt): Remove some dead code.
6733
6734         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
6735
6736         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
6737         return the plt info offset belonging to a given plt entry.
6738
6739         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
6740         mono_aot_get_plt_info_offset.
6741         
6742         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
6743         similar to the amd64 code by makeing jumps through a separate jump table 
6744         instead of embedding the jump addresses into the code.
6745
6746 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
6747
6748         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
6749         method.
6750
6751 2008-07-10  Martin Baulig  <martin@ximian.com>
6752
6753         * mini.c (mini_method_compile): Disable generics sharing when
6754         running in the debugger.
6755
6756 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6757
6758         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
6759
6760         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
6761         the local register allocator from running out of registers on x86 when 
6762         using aot.
6763
6764 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
6765
6766         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
6767         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
6768         C4146.
6769
6770         Contributed under MIT/X11 license.
6771
6772 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6773
6774         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
6775         speed up the assembler.
6776
6777 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6778
6779         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
6780         support.
6781
6782         * mini.c: Move the soft float handling macros a bit earlier, add 
6783         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
6784         place.
6785
6786         * mini.h: Add prototype for mono_arch_fixup_jinfo.
6787
6788         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
6789         read-only to help catch code allocation requests.
6790         
6791         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
6792         and turn it off when using --aot-only or when compiling with --aot=full.
6793
6794         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
6795         jump table for switches from the normal domain mempool, not the code
6796         manager.
6797
6798         * mini-trampolines.c (get_unbox_trampoline): New function to return an
6799         unbox trampoline which handles aot-only mode too.
6800
6801         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
6802         an AOTed unbox trampoline.
6803
6804         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
6805
6806 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6807
6808         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
6809         ""
6810
6811         Contributed under MIT/X11 license.
6812
6813 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6814
6815         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
6816           the unwind information for the method at the end of the allocated block.
6817           
6818         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
6819           MonoCompileArch to hold the unwind info for SEH on Winx64
6820         
6821         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
6822           frame pointer info for the method being compiled.
6823           
6824         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
6825           the call to mono_exception_from_token.
6826           
6827         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
6828           storing the method prolog information in a format that the Winx64 SEH can understand.  This
6829           information is stored a the end of the method block because it is all 32-bit offset based.
6830
6831         Contributed under MIT/X11 license.
6832
6833 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6834
6835         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
6836
6837         * wapihandles.c: Fix warnings.
6838
6839         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
6840         mode.
6841
6842         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
6843         mono_jit_compile_method in aot-only mode since that calls the type 
6844         initializer.
6845         
6846         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
6847         get_delegate_invoke_impl in aot-only mode.
6848
6849         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
6850
6851 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
6852
6853         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
6854
6855         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
6856         is on by default.
6857
6858         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
6859
6860         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
6861         init trampoline from the AOT file as well.
6862
6863         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
6864         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
6865         code.
6866
6867         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
6868         mono_init.
6869
6870         * exceptions-amd64.c: Add _full variants for the remaining exception code
6871         creation functions as well, allow emission of relocatable code, remove
6872         caching since that is now done by the caller.
6873
6874         * mini-exceptions.c: Add _full variants for the remaining exception code
6875         creation functions as well, add aot-only support.
6876
6877         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
6878         if we can determine a proper token for them.
6879         (add_wrappers): Add a few more wrappers.
6880         (emit_method_code): Remove some dead code.
6881         (emit_trampolines): Emit exception code too.
6882
6883         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
6884
6885         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
6886         mono_array_new_va which avoids varargs.
6887
6888         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
6889
6890         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
6891         mono_arch_create_specific_trampoline () in all places.
6892
6893         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
6894         a bit so it can be used for other things as well.
6895         
6896         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
6897         on demand as well.
6898
6899         * exceptions-amd64.c: Rename the caching from the exception code creation
6900         functions, it is done by the caller instead.
6901         
6902         * exceptions-amd64.c: Change the signature of the exception code creation 
6903         functions to allow the creation of relocatable code later.
6904
6905         * mini-exceptions.c: Add a set of functions to query the various 
6906         runtime-generated exception functions.
6907
6908         * mini.c mini-exceptions.c: Use the newly added functions instead of the
6909         mono_arch_.. () functions.
6910         
6911 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
6914
6915         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
6916
6917         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
6918         (mini_get_vtable_trampoline): Ditto.
6919
6920         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
6921         code in the AOT case by returning the code size and a list of relocations to
6922         the caller.
6923
6924         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
6925
6926 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
6927
6928         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
6929           clean the stack.
6930
6931         Contributed under MIT/X11 license.
6932
6933 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6934
6935         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
6936         so the buffer size can be computed correctly. Fixes #404735.
6937
6938         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
6939         normally as cfg->debug_info is already freed.
6940
6941 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
6942
6943         * mini-amd64.c: For calls returning vtypes in registers, don't store
6944         the return address on the stack, instead allocate a separate local for
6945         it. Fixes #404729.
6946
6947 2008-07-05  Mark Probst  <mark.probst@gmail.com>
6948
6949         * mini-trampolines.c, mini.h: Add an argument to
6950         mono_create_jit_trampoline_in_domain() for turning off the adding
6951         of the sync wrapper.
6952
6953         * mini.c: Use the JIT trampoline without sync instead of
6954         ldftn_nosync in static RGCTX invoke wrappers so that the call can
6955         be patched.
6956
6957 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6958
6959         * driver.c: Turn on GSHARED optimization by default.
6960
6961 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
6962
6963         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
6964         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
6965
6966         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
6967         create a variant of the generic trampoline code callable from AOTed trampolines.
6968
6969         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
6970         trampoline code callable from AOTed trampolines.
6971
6972         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
6973
6974 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6975
6976         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
6977         pass-through manner.
6978
6979         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
6980         and don't fail sharing for them anymore.
6981
6982         * mini-exceptions.c: Handle exceptions in shared generic methods.
6983
6984         * generic-sharing.c: When checking the context of a generic
6985         method, also check its class's context.  Don't treat wrappers as
6986         sharable.
6987
6988         * mini-trampolines.c: Some code factored out to
6989         metadata/generic-sharing.c.  Handle the MRGCTX case.
6990
6991         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
6992         we must deal with the method being of another instantiation of the
6993         class.  Add static rgctx invoke wrappers to generic methods.
6994
6995 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6996
6997         * mini.c: Provide all jit infos of generic shared methods with a
6998         generic jit info.
6999
7000         * mini-exceptions.c: Handle the new situation that a generic info
7001         might be available, but not info about the this/vtable/mrgctx
7002         variable.
7003
7004 2008-07-03  Mark Probst  <mark.probst@gmail.com>
7005
7006         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
7007         generic methods.
7008
7009 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
7010
7011         * dominators.c (check_dominance_frontier): Fix a warning.
7012
7013         * mini.h: Add some missing prototypes.
7014
7015         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
7016
7017         * driver.c (mono_jit_init_version): Correct the comments since the first
7018         argument should be the name of the root domain, not a filename.
7019
7020         * aot-runtime.c (make_writable): Error out if this is called while running
7021         with --aot-only.
7022         (load_aot_module): Ditto.
7023
7024         * aot-compiler.c: Really fix the computation of method indexes.
7025
7026         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
7027         optimizations as this is no longer called frequently.
7028
7029         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
7030         method and the invoke impl code and pass it to the delegate trampoline instead of
7031         just the delegate class.
7032
7033 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
7034
7035         * aot-compiler.c: Fixup the computation of method indexes.
7036         (add_wrappers): Create the base methods of the runtime invoke wrappers using
7037         the method builder infrastructure.
7038
7039         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
7040         has no header.
7041
7042         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
7043         mode, load the method right away instead of creating a trampoline.
7044
7045         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
7046
7047         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
7048         some checks a bit.
7049
7050 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
7051
7052         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
7053         (mono_aot_load_method): Use method_index instead of method->token.
7054
7055         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
7056         can handle icalls etc. properly.
7057
7058         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7059
7060         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
7061
7062         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
7063         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
7064         JIT_ICALL_ADDR patch type.
7065
7066         * patch-info.h: Add JIT_ICALL_ADDR patch type.
7067
7068         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
7069         request flag.
7070         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
7071
7072         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
7073
7074 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
7075
7076         * mini.c: Use domain->jit_code_hash_lock for controlling access to
7077         domain->jit_code_hash.
7078
7079 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
7080
7081         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
7082
7083 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
7084
7085         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
7086         get_this_arg_from_call, let it compute it when needed.
7087
7088         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
7089         gsctx from code only when needed.
7090
7091         * mini-trampolines.c (get_generic_context): Rename this to 
7092         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
7093         it can be called by the arch backends.
7094
7095         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
7096
7097 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
7098
7099         * driver.c (mono_main): Add experimental --aot-only command line option.
7100
7101         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
7102         set.
7103
7104 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
7105
7106         * driver.c (DllMain): Remove mono_module_handle.
7107
7108         Contributed under MIT/X11 license.
7109
7110 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
7111
7112         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
7113         for emitting methods which are not in the source assembly. Detect and report
7114         failure of assembling+linking.
7115         
7116         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
7117
7118         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
7119
7120 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
7121
7122         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
7123
7124 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
7125
7126         * mini.h: Remove some obsolete prototypes.
7127
7128         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
7129
7130 2008-06-24  Mark Probst  <mark.probst@gmail.com>
7131
7132         * mini.c (get_object_generic_inst): Variable-sized arrays are not
7133         supported by Visual Studio, so use alloca().
7134
7135 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
7136
7137         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
7138         Fixes #402585.
7139
7140 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7141
7142         * mini.c: Fail sharing of a generic method if it contains an open
7143         catch clause (because we don't pass MRGCTXs yet).
7144
7145 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7146
7147         * mini.c: When compiling a method with generic sharing, insert the
7148         method instantiated with an all-Object generic context into the
7149         jit info table, instead of the context of the first instantiation
7150         of the method we happen to compile.
7151
7152 2008-06-18  Martin Baulig  <martin@ximian.com>
7153
7154         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
7155         `major_version' and `minor_version'.
7156
7157 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7158
7159         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
7160         mono_method_is_generic_sharable_impl() takes an additional
7161         argument specifying whether to treat type variables as reference
7162         types.
7163
7164 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7165
7166         * mini.h: Removed obsolete prototypes.
7167
7168 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7169
7170         * mini.c: Don't fail generic sharing for initobj and sizeof - we
7171         already handle them.
7172
7173 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7174
7175         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
7176         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
7177         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
7178         tramp-x86.c: Added a MonoGenericContext* argument to
7179         mono_arch_get_unbox_trampoline() so that it can call other
7180         functions which require it.
7181
7182 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7183
7184         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
7185         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
7186         mono_arch_get_this_arg_from_call() takes a
7187         MonoGenericSharingContext* as well.
7188
7189 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7190
7191         * mini.c: Factor out code for emitting unbox into emit_unbox() and
7192         implement generic sharing of unbox.
7193
7194 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7195
7196         * mini.c: Don't compute the vtable to determine whether a field is
7197         special static, because it might not work for open types.
7198
7199 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7200
7201         * mini.c: Removed the unused token_type and token_source arguments
7202         from get_runtime_generic_context_ptr().
7203
7204 2008-06-17  Marek Habersack  <mhabersack@novell.com>
7205
7206         * mini.c (ADD_BINOP): fix the build
7207
7208 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
7209
7210         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
7211         a widening op.
7212
7213 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7214
7215         * mini.h: Removed class relations enum that's not used anymore.
7216
7217 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7218
7219         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
7220
7221         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
7222         the lazy fetch trampoline access code.
7223
7224 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
7225
7226         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
7227
7228 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
7229
7230         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
7231
7232         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
7233
7234         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
7235
7236 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7237
7238         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
7239         intrinsics.
7240
7241         * mini-ops.h: Add MIN/MAX_UN opcodes.
7242
7243         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
7244         intrinsics.
7245
7246         * basic-math.cs: Add more min/max tests.
7247
7248         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7249
7250 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7251
7252         * mini.c: Small fix in the prologue of emit_castclass.
7253
7254 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7255
7256         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7257
7258         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
7259         do not work even for unsigned types. Fixes #400014.
7260
7261         * basic-math.cs: Add regression tests for unsigned Min/Max.
7262
7263 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7264
7265         * mini.c: Added additional context_used argument to several
7266         functions, which will be needed for sharing generic methods.  Use
7267         GET_RGCTX macro wherever appropriate.  Declare only one
7268         context_used in mono_method_to_ir().
7269
7270 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7271
7272         * mini.c, generic-sharing.c: Removed generic class relations.
7273
7274         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
7275         functions due to MRGCTX changes.
7276
7277 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7278
7279         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
7280         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
7281         with calculated IMT.
7282
7283         * mini.c: Generic sharing of calls via generic interfaces.
7284
7285         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
7286         generic method with non-constant MonoGenericContext*.  Instead,
7287         the context is taken out of the method itself.
7288
7289 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7290
7291         * mini.c: Generic sharing of ldvirtftn.
7292
7293 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7294
7295         * mini.c: Generic sharing of ldftn.
7296
7297 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7298
7299         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
7300
7301 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7302
7303         * mini.c: Generic sharing of the special case of ldtoken followed
7304         by a call to GetTypeFromHandle.
7305
7306 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7307
7308         * mini.c: Generic sharing of box for nullable types.
7309
7310 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7311
7312         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
7313         are passed on the stack. Fixes #324807.
7314
7315 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
7316
7317         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
7318         for the ArgValuetypeAddrInIReg case.
7319
7320         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
7321         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
7322
7323         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
7324         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7325         local variable and pass the local variable by reference to the called method.
7326           
7327         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
7328         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
7329
7330         Contributed under MIT/X11 license.
7331
7332 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
7333
7334         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
7335
7336         * debug-mini.c (mono_debug_print_vars): Release memory after printing
7337         everything.
7338
7339 2008-06-10  Martin Baulig  <martin@ximian.com>
7340
7341         * debug-mini.c
7342         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
7343
7344 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
7345
7346         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
7347         possible error when no arguments are passed.
7348
7349         Contributed under MIT/X11 license.
7350
7351 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
7352
7353         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
7354         where the file name is NULL.
7355
7356 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7357
7358         * mini.c: Fix s390 build.
7359
7360 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
7361
7362         * trace.c (mono_trace_parse_options): Fix warnings.
7363
7364         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
7365
7366 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7367
7368         * mini.c (remove_block_if_useless): Avoid printing the method name.
7369         
7370         * mini.c: Remove needless setting of ins->cil_code which is now done by 
7371         MONO_INST_NEW.
7372
7373         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
7374         LMF. Not yet used.
7375
7376         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
7377         translated code after it has been patched.
7378
7379 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7380
7381         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
7382         avoid problems during code patching on SMP systems.
7383         (emit_call): Avoid adding a patch info which is already added by 
7384         emit_call_body.
7385         (mono_arch_emit_exceptions): Ditto.
7386
7387 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
7388
7389         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
7390         MONO_TYPE_ISSTRUCT already checks for it.
7391
7392 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
7393
7394         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
7395           structs with floats on Winx64 the float registers are not used.  
7396           The integer registers are always used..
7397         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
7398           only one register will be used and only if the size of the struct 
7399           is 1,2,4, or 8 bytes.
7400
7401         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
7402           to work for Winx64.
7403
7404         Contributed under MIT/X11 license.
7405
7406 2008-06-05  Martin Baulig  <martin@ximian.com>
7407
7408         * debug-debugger.c (debugger_lookup_class): Also call
7409         mono_class_setup_methods() here; we're only called from RTI.
7410
7411 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
7412
7413         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
7414         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
7415         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
7416         Post-process object files and add dtrace-generated object, if necessary.
7417
7418         Contributed under MIT/X11 license.
7419
7420 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7421
7422         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
7423         element class.
7424
7425         * mini.c: Generic sharing for unbox.any and castclass.
7426
7427 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7428
7429         * mini.c: Ignore tailcall prefix in shared generic code and when
7430         doing calls which require a vtable/rgctx argument.
7431
7432 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7433
7434         * mini.c: Don't free the JIT info.
7435
7436         * driver.c: Changes in the JIT info table testing code.
7437
7438 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7439
7440         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
7441         interruption. Fix some warnings.
7442
7443         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
7444         interruption_checkpoint.
7445
7446 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
7447
7448         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
7449         from embedding applications.
7450
7451 2008-06-02  William Holmes  <billholmes54@gmail.com>
7452
7453         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
7454           reserving 32 bytes on the stack when making calls. 
7455
7456         Contributed under MIT/X11 license.
7457
7458 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
7459
7460         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
7461         the linear IL branch.
7462
7463         * driver.c: Print out more information for --version on arm.
7464
7465 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
7466
7467         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
7468         bb_exit instead, since out of line bblocks might not actually be emitted
7469         out-of-line.
7470         
7471         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
7472         maximum epilog size for out of line bblocks if tracing is enabled.
7473
7474         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
7475
7476 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
7477
7478         * arrays.cs: Regression tests for allocating arrays with negative sizes.
7479
7480 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
7481
7482         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
7483         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
7484         opcodes.
7485
7486 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
7487
7488         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
7489         the 'value' to store is a constant.
7490
7491         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
7492
7493         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
7494         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
7495
7496 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
7497
7498         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
7499         for accessing method->generic_container.
7500
7501 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
7502
7503         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
7504         
7505         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
7506
7507         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
7508
7509         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
7510         fails.
7511
7512 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
7513
7514         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
7515
7516         * mini.c: Handle the case when mono_class_vtable () fails.
7517
7518 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
7519         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
7520         the stat profiler.
7521
7522 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7523
7524         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
7525         together with domain sharing.
7526
7527 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7528
7529         * mini.c: Treat callvirts to final methods like non-virtual calls
7530         when doing generic sharing, i.e. look them up in the runtime
7531         generic context.
7532
7533 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7534
7535         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
7536         with computed types (for generic sharing).
7537
7538         * mini.c: Generic sharing for mkrefany and refanyval.
7539
7540 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
7541
7542         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
7543         possible.
7544
7545         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
7546         the generic sharing code.
7547         
7548         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
7549         when needed.
7550
7551 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7552
7553         * mini.h: Remove the declaration of mono_aot_init_vtable ().
7554
7555 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
7556
7557         * driver.c: updated copyright date
7558
7559 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7560
7561         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
7562         needed.
7563
7564 2008-05-19  Martin Baulig  <martin@ximian.com>
7565
7566         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
7567         pointing to the new `_mono_debug_using_mono_debugger' variable.
7568
7569         * driver.c
7570         (mono_main): Check mono_debug_using_mono_debugger() rather than
7571         the `MONO_INSIDE_MDB' environment variable to check whether we're
7572         inside the debugger.
7573
7574 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
7575
7576         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
7577         argument.
7578
7579 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
7580
7581         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
7582
7583         * mini.c: Added mini_assembly_can_skip_verification. This
7584         function checks if the assembly requested to skip verification. 
7585         Fixes part of #387274.
7586
7587 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7588
7589         * mini.c (mini_get_method): Disable the check for open generic classes when
7590         using generic sharing.
7591
7592         * generics.cs: Add a test for #387034.
7593
7594         * mini.c (mini_get_method): Check whenever the method class is an open generic
7595         type, and return NULL in that case, causing a verification error. Fixes
7596         #384123.
7597
7598 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7599
7600         * driver.c (mono_main): Revert r102623. The right
7601         thing to do is to enable the verifier under verifiable
7602         unless a --security flag was passed.
7603
7604         We need this non-trivial behavior for --verify-all otherwise
7605         mcs-compileall won't be able to use it. As it needs everything to
7606         be verified under validil.
7607
7608 2008-05-06  Martin Baulig  <martin@ximian.com>
7609
7610         Fix #383749.
7611
7612         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
7613         (mono_debugger_thread_cleanup): Likewise.
7614         (mono_debugger_extended_notification): Likewise.
7615
7616 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7617
7618         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
7619         against both inflated and non-inflated methods. We need to check against the
7620         generic definition for cases where the instantiated method is not visible.
7621         We need to check against the inflated types for cases where the instantiation
7622         changes any super type. This fixes #382986.
7623
7624         Note that this doesn't need to be applied to other parts of mono_method_to_ir
7625         that check for visibiliy as generic params only appears as the type subject
7626         of tokens on call opcodes. Field manipulation and ldftn must always
7627         target an exact type.
7628
7629 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7630
7631         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
7632         if no related --security flag is passed.
7633
7634 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7635
7636         * mini-arch.h: Prepare support for ppc64.
7637
7638         Contributed under MIT/X11 license.
7639
7640 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7641
7642         * aot-runtime.c: Prepare support for ppc64.
7643
7644         Contributed under MIT/X11 license.
7645
7646 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7647
7648         * mini-ops.h: Prepare support for ppc64.
7649
7650         Contributed under MIT/X11 license.
7651
7652 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
7653
7654         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
7655
7656         Contributed under MIT/X11 license.
7657
7658 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
7659
7660         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
7661         assemblies, since aot_name is not a full path, causing us to load MS.NET 
7662         assemblies on windows.
7663
7664 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
7665
7666         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
7667         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
7668         * main.c: Use UTF-8 encoded command line instead of Windows default code
7669         page on Windows to support Unicode.
7670         * driver.c (DllMain): New function for mixed-mode assembly support.
7671         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
7672         export __stdcall functions without decoration.
7673
7674         Contributed under MIT/X11 license.
7675
7676 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7677
7678         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
7679         saving it very early.
7680
7681 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7682
7683         * mini.h, mini.c: Lots of code for accessing the old RGCTX
7684         deleted.  The only way to access the new RGCTX is via the
7685         trampline.
7686
7687         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
7688         vtable instead of the RGCTX to static methods.
7689
7690         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
7691         accessing the new RGCTX.
7692
7693         * generic-sharing.c: There is no separation between self, type
7694         arguments and other types in the RGCTX anymore.
7695
7696 2008-04-25  Jonathan Chambers <joncham@gmail.com>
7697
7698         * mini-amd64.c (add_general): Remove previous stack adjustment.
7699         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
7700         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
7701         for 32 bytes of stack space reserved for all calls.
7702         
7703         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
7704         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
7705         adjustment.
7706         
7707         Code contributed under MIT/X11 license.
7708
7709 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
7710
7711         * mini.c (mini_method_verify): Only verify non-inflated methods, check
7712         against the root definition, peeling out method and type instantiations.
7713         Cache verify success results, code that fails verification is still
7714         checked multiple times.
7715
7716 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
7717
7718         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
7719
7720 2008-04-23  Jonathan Chambers <joncham@gmail.com>
7721
7722         * mini-amd64.c (add_general): Always increment stack on Win64.
7723         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
7724         on Win64.
7725         
7726         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
7727         stack based argument handling on Win64.
7728         
7729         Code contributed under MIT/X11 license.
7730
7731 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
7732
7733         * Makefile.am (version.h): Add support for git-svn.
7734
7735 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
7736
7737         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
7738         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
7739         avoiding allocations and libc functions which might deadlock.
7740         
7741         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
7742         'no-gdb-backtrace' option is set.
7743
7744         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
7745
7746         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
7747
7748 2008-04-21  Martin Baulig  <martin@ximian.com>
7749
7750         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
7751         and `get_lmf_addr'; `notification_address' is no longer a pointer.
7752
7753 2008-04-21  Martin Baulig  <martin@ximian.com>
7754
7755         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
7756         `thread_vtable', `event_handler_ptr' and `event_handler'.
7757
7758 2008-04-21  Martin Baulig  <martin@ximian.com>
7759
7760         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
7761         allows delayed initialization of the `executable_code_buffer' when
7762         attaching.
7763
7764 2008-04-21  Martin Baulig  <martin@ximian.com>
7765
7766         * mini.h (mono_debugger_create_notification_function): Removed.
7767         * tramp-*.c (mono_debugger_create_notification_function): Removed.
7768
7769         * mdb-debug-info64.s
7770         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7771
7772         * mdb-debug-info32.s
7773         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7774
7775         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
7776         currently only works on x86 and x86_64, so don't create it on ppc.
7777
7778 2008-04-21  Martin Baulig  <martin@ximian.com>
7779
7780         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
7781
7782         * mini.c
7783         (mini_method_compile): In the fp elimination check, check
7784         `debug_options.mdb_optimizations' in addition to
7785         mono_debug_using_mono_debugger().       
7786
7787         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
7788         disable some JIT optimizations which are only disabled when
7789         running inside the debugger.
7790         Added `--help-debug' option to describe the debugging options.
7791         (parse_debug_options): New static function to parse the `--debug'
7792         options, so we can easily add more stuff in future.
7793
7794 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
7795
7796         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
7797         the method has no body.
7798
7799 2008-04-19  Jonathan Chambers <joncham@gmail.com>
7800
7801         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
7802         assembly is not allowed in MSVC 64-bit compiler. 
7803         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
7804         as we get floating point exceptions everywhere.
7805         
7806         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
7807         correctly align arguments for call to throw_exception.
7808         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
7809         
7810         Code contributed under MIT/X11 license.
7811
7812 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
7813
7814         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
7815
7816 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
7817
7818         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
7819
7820         * mini-amd64.c (NEW_INS): Set cil_code.
7821
7822         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
7823         from mini-amd64.c so all debugger related logic is in one place.
7824
7825         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
7826         later won't have a random ip assigned to them.
7827
7828 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
7829
7830         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
7831         the arch specific function initializes code_size.
7832         (mono_create_delegate_trampoline): Ditto.
7833
7834         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
7835         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
7836         platforms.
7837
7838         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
7839         running under the debugger.
7840
7841         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
7842         debugger.
7843
7844         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
7845         debugger. Also move the disabling of optimizations here from driver.c.
7846         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
7847         debugger.
7848
7849         * mini.h (MonoCompile): Add a few new flags.
7850
7851 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
7852
7853         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
7854         so the cil_code field of created MonoInst's is properly set.
7855         (mini_select_instructions): Ditto.
7856
7857         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
7858         (MONO_INST_NEW_CALL): Ditto.
7859
7860         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
7861         in many places so the ins->cil_code field is properly initialized.
7862
7863         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
7864         place.
7865
7866 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
7867
7868         * mini.c (mini_method_compile): Print a different message when compiling a 
7869         shared method.
7870         
7871         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
7872         > 1.
7873
7874 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7875
7876         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
7877         SSE2 instructions.
7878
7879         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
7880         
7881 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7882
7883         * mini.c (handle_stack_args): Make this return void since its return value was
7884         never used. Also set cfg->unverifiable for invalid IL instead of calling
7885         G_BREAKPOINT ().
7886
7887 2008-04-10  Mark Probst  <mark.probst@gmail.com>
7888
7889         * mini.c: Make sure "this" is live in catch clauses with type
7890         variables in shared generic code.
7891
7892 2008-04-08  Mark Probst  <mark.probst@gmail.com>
7893
7894         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
7895         generic_class_is_reference_type() to ensure the proper behaviour
7896         when sharing generic code and the type in question is a type
7897         argument.
7898
7899 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7900
7901         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
7902         race conditions when printing thread dumps. Fixes #377738.
7903
7904 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
7905         
7906         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
7907         shows up when both MonoInst arguments can cause aliasig.
7908         There is likely no way in the current JIT to trigger this problem, but
7909         it showed up in the development of generics sharing, when in a new
7910         opcode both args of an OP_GROUP can be aliases (addresses of a local).
7911         When the generics sharing code will be committed, its tests will be
7912         valid also for this bug.
7913
7914 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7915
7916         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
7917         PATCH_INFO_METHOD.
7918
7919         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
7920         NULL.
7921
7922 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
7923
7924         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
7925         use a more detailed exception message for InvalidCastException.
7926
7927         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
7928
7929         * driver.c (mono_main): Add --debug=casts option to turn on better 
7930         InvalidCastException message details.
7931
7932         * mini.c (mini_get_debug_options): New helper function to return the address of
7933         the debug_options variable.
7934
7935         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
7936         the jit_tls TLS variable.
7937
7938         * mini.c (mono_jit_tls): New TLS variable.
7939
7940         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
7941         option is used.
7942
7943 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
7944
7945         * mini.h: Removed verifer related stuff. This code was moved to verify.c
7946
7947         * mini.c: Removed verifer related stuff, code moved to verify.c.
7948
7949         * driver.c: Using code from verify.c instead of mini.c.
7950
7951 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
7952
7953         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
7954         longer valid.
7955
7956 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
7957
7958         * mini.c (check_for_method_verify): Enabling verification of
7959         corlib if mono_verify_all is set. Bugs in the verifier preventing that
7960         have been fixed.
7961
7962 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
7963
7964         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
7965         caller saved registers as well.
7966         
7967         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
7968         saved registers as well.
7969
7970 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
7971
7972         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
7973
7974         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
7975         code.
7976
7977 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
7978
7979         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
7980         to get_call_info.
7981         (get_call_info): Take a gsctx argument instead of 'cfg'.
7982
7983 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
7984
7985         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
7986         mono_verify_all is set.
7987
7988         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
7989
7990         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
7991
7992 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
7993
7994         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
7995         an exception.
7996
7997         * driver.c mini.c mini.h: Add a --verify-all development option to test the
7998         verifier and the code generated by the compiler.
7999
8000 2008-03-25  Mark Probst  <mark.probst@gmail.com>
8001
8002         * mini.c: Generic sharing of the non-nullable case of the box
8003         instruction.
8004
8005 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
8006
8007         * inssel.brg: Fix the build.
8008
8009         * iltests.il.in: Add a test for lconv.ovf.u8.un.
8010
8011 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
8012
8013         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
8014         Array:Address. Fixes #372410.
8015
8016         * iltests.il.in: New tests for readonly prefix.
8017
8018 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
8019
8020         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
8021         mini-trampolines.c.
8022
8023         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
8024         mini-exceptions.c.
8025
8026         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
8027         
8028         * mini.c (mono_decompose_op_imm): New helper function.
8029
8030         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
8031         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8032         return value.
8033
8034         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8035         mono_arch_output_basic_block. Fix warnings.
8036
8037         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
8038         for now.
8039
8040 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
8041
8042         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
8043         since the extra frame is now detected automatically inside the loop.
8044
8045         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
8046         opts which are now in mono_peephole_ins ().
8047         
8048         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
8049
8050         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
8051         frames and skip duplicate managed-to-native frames. Fixes #367665.
8052
8053         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8054         opts which are now in mono_peephole_ins ().
8055         (mono_arch_peephole_pass_2): Ditto.
8056
8057         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
8058
8059         * mini-codegen.c (mono_peephole_ins): New helper function containing the
8060         arch independent peephole optimizations.
8061
8062         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8063         opts which are now in mono_peephole_ins ().
8064
8065         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
8066         
8067         * mini-s390.c (mono_arch_output_basic_block): Fix build.
8068
8069         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
8070         pattern.
8071
8072         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
8073         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
8074         opcode. 
8075
8076 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
8077
8078         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
8079         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8080         return value.
8081
8082         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8083         mono_arch_output_basic_block. Fix warnings.
8084
8085 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8086
8087         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8088         conv.ovf.u.un.
8089
8090 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8091
8092         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8093         conv.ovf.u.un.
8094
8095         * iltests.il: Add new tests.
8096
8097 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
8098
8099         * mini.c: Removed Windows version macros.
8100
8101 2008-03-20  Mark Probst  <mark.probst@gmail.com>
8102
8103         * generic-sharing.c: Put reflection types in the extensible part
8104         of the runtime generic context.
8105
8106         * mini.c: Generic sharing of the GetTypeHandle special case of the
8107         ldtoken instruction.
8108
8109 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8110
8111         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
8112
8113         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
8114         
8115         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
8116         consistency with the other version on the linear IR branch.
8117
8118         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
8119
8120         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
8121
8122         * iltests.il.in: Add new tests.
8123
8124 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
8125
8126         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
8127
8128         * iltests.il.in: Add new tests.
8129
8130 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8131
8132         * mini.c: Two variables with the same name were declared in
8133         nesting contexts and one wasn't initialized.  Fixed.
8134
8135 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8136
8137         * mini.c: Generic sharing of the initobj instruction.
8138
8139 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
8140
8141         * mini.c: make the test to optimize ldtoken from typeof() more
8142         precise.
8143
8144 2008-03-18  Mark Probst  <mark.probst@gmail.com>
8145
8146         * mini.c: Generic sharing of the initobj instruction for reference
8147         types.
8148
8149 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8150
8151         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
8152         the mono_breakpoint_clean_code() code to perform bound checks.
8153
8154 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
8155
8156         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
8157         mono_arch_patch_callsite() to include the start of the managed method
8158         to be able to perform bound checks.
8159
8160 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8161
8162         * mini.c: Generic sharing for the isinst instruction.
8163
8164 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8165
8166         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8167         inssel-long32-mips.brg: Added opcodes for doing indirect calls
8168         with the runtime generic context argument.
8169
8170         * mini.c: Share calls to several types of unsharable methods by
8171         putting the address of the method code in the runtime generic
8172         context and doing an indirect call.
8173
8174         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8175         to switches.
8176
8177 2008-03-16  Mark Probst  <mark.probst@gmail.com>
8178
8179         * generic-sharing.c: Change due to a change in the runtime genric
8180         context API.
8181
8182 2008-03-15  Martin Baulig  <martin@ximian.com>
8183
8184         * tramp-x86.c
8185         (mono_arch_nullify_class_init_trampoline): Add call to
8186         mono_breakpoint_clean_code() to make things work when running
8187         inside the debugger.
8188
8189         * tramp-amd64.c
8190         (mono_arch_nullify_class_init_trampoline): Add call to
8191         mono_breakpoint_clean_code() to make things work when running
8192         inside the debugger.
8193
8194 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8195
8196         * inssel-long.brg (reg): Fix 64 bit build.
8197
8198 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8199
8200         * mini.c, mini.h: Share static generic code by passing it an
8201         implicit argument pointing to the runtime generic context.
8202
8203         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8204         inssel-long32-mips.brg: New opcodes for calling shared static,
8205         which need to be passed the runtime generic context.
8206
8207         * mini-amd64.c, mini-x86.c: Save the runtime generic context
8208         argument on the stack in the prologue if needed.  New function for
8209         finding the runtime generic context argument from the registers
8210         saved by the trampoline.
8211
8212         * mini-amd64.h, mini-x86.h: Specify which register to use for the
8213         runtime generic context argument.
8214
8215         * tramp-amd64.c: Also restore the register used for the runtime
8216         generic context argument.
8217
8218         * mini-trampoline.c: Resolve shared static calls by consulting the
8219         runtime generic context via the new argument.
8220
8221         * generic-sharing.c: Add an argument to sharability-checking
8222         functions that specifies whether type variables should be treated
8223         as sharable type arguments.
8224
8225         * inssel-x86.brg: Removed a superfluous, buggy rule.
8226
8227         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8228         to switches.
8229
8230 2008-03-14  Martin Baulig  <martin@ximian.com>
8231
8232         * debug-debugger.c (main_thread_handler): Call
8233         mono_runtime_run_main() without sending any notifications.
8234
8235         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
8236
8237 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8238
8239         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
8240
8241 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8242
8243         * tramp-x86.c: Fixed register restore offsets in the trampoline
8244         code for ECX and EDX.
8245
8246 2008-03-12  Geoff Norton  <gnorton@novell.com>
8247
8248         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
8249         different ucontext_t implementations.
8250         * exceptions-arm.c: Use the above defines to get exceptions working on 
8251         iPhone (based on a patch by Luke Howard lukeh@padl.com)
8252         * mini-arm.c: Implement iPhone icache support (based on a patch by
8253         Luke Howard lukeh@padl.com)
8254
8255 2008-03-12  Mark Probst  <mark.probst@gmail.com>
8256
8257         * mini.c: Enable generic sharing of calls to non-static
8258         non-interface non-generic non-value-type methods.
8259
8260         * mini-trampolines.c: Resolve calls from shared generic code.
8261
8262 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
8263
8264         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
8265
8266         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
8267
8268 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
8269
8270         * mini.c: some fixes for the AOT compiler.
8271
8272 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8273
8274         * cpu-amd64.md: Add clob:1 to some float opcodes.
8275
8276 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
8277
8278         * mini.h: Added MiniVerifierMode enumeration.
8279
8280         * mini.c: Added mini_verifier_set_mode to control
8281         the usage of the new verifier.
8282
8283         * mini.c (mono_method): Integrated the new verifier.
8284
8285         * driver.c: Extended --security option with validil and
8286         verifiable options to activate the new verifier.
8287
8288 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8289
8290         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
8291         optimization to ctors taking 0 or 2 arguments too.
8292
8293         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
8294         a bit.
8295
8296         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
8297
8298         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
8299
8300 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8301
8302         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
8303         non-aot case as well.
8304
8305         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
8306
8307         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
8308         changes.
8309
8310         * aot-compiler.c (encode_patch): Ditto.
8311
8312         * mini.h (G_MININT32): Fix the definition of this.
8313
8314 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
8315
8316         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
8317
8318         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
8319
8320 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8321
8322         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
8323         methods returning vtypes in registers.
8324         (mono_arch_allocate_vars): Ditto.
8325
8326         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
8327
8328         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
8329
8330         * generics.cs: Add a test from the linear IR branch.
8331
8332         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
8333
8334         * mini.c (inline_method): Cache failed inline attempts.
8335
8336 2008-03-04  Mark Probst  <mark.probst@gmail.com>
8337
8338         * mini.c: For shared methods of generic classes put the location
8339         of "this" into the MonoGenericJitInfo.
8340
8341         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
8342         register out of a MonoContext by register number.  Add the generic
8343         sharing context as an argument to mono_arch_find_this_argument().
8344
8345         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
8346         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
8347         for new arch function.
8348
8349         * mini-exception.c: Handle open exception clauses in shared
8350         generic code.
8351
8352         * mini-trampolines.c: Supply additional argument to
8353         mono_arch_find_this_argument().
8354
8355 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8356
8357         * Makefile.am (regtests): Run the bench.exe tests last.
8358
8359 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
8360
8361         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
8362         a bit.
8363
8364 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
8365
8366         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
8367         with MS.
8368
8369         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
8370         
8371         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
8372
8373         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
8374         whose class has no cctor.
8375
8376         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
8377
8378 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
8379
8380         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
8381         unverified.
8382
8383 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
8384
8385         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
8386         to be in sync with the code on the linear IR branch.
8387
8388         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
8389
8390         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
8391
8392 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
8393
8394         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
8395
8396         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
8397
8398         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
8399
8400         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
8401
8402         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
8403         
8404         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
8405         body.
8406
8407 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
8408
8409         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
8410         OP_LOADR4_MEMBASE emission.
8411
8412         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
8413         (mono_spillvar_offset_float): Ditto.
8414
8415         * mini-mips.c (mono_arch_emit_prolog): Ditto.
8416
8417         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
8418         emission.
8419
8420         * basic-long.cs: Add regression tests for them.
8421
8422         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
8423         use.
8424         (mono_arch_allocate_vars): Fix representation of single-precision float
8425         argument.
8426         (mono_arch_output_basic_block): Ditto.
8427
8428         * inssel-mips.brg: Ditto, remove duplicate items.
8429
8430         * mini-mips.c (emit_load_volatile_arguments): New function to handle
8431         arguments of tail calls as on other platforms.
8432         (mono_arch_output_basic_block): Handle tail calls.
8433
8434         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
8435         register.
8436
8437         * objects.cs (test_5_pass_static_struct): Add test for it.
8438
8439         Contributed under MIT/X11 license.
8440
8441 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
8442
8443         * Makefile.am: Use gmcs for compiling the regression tests.
8444
8445         * *.2.cs *.2.il: Rename to *.cs and *.il.
8446
8447 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
8448
8449         * regalloc.h: Make the vassign array smaller.
8450
8451         * mini.c (mini_method_compile): Remove an unused field in cfg.
8452
8453         * mini-codegen.c: Add a bunch of micro optimizations.
8454
8455 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
8456
8457         * regalloc.h: Remove some unused fields.
8458
8459 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
8460
8461         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
8462
8463         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
8464
8465 2008-02-22  Mark Probst  <mark.probst@gmail.com>
8466
8467         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
8468
8469         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
8470         trampoline: Fetch an entry from the runtime generic context.  If
8471         it's NULL, jump to the actual trampoline to fill the runtime
8472         generic context.  Otherwise, return it.
8473
8474         * mini.c: Call the lazy fetch trampoline to get entries out of the
8475         runtime generic context.
8476
8477         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
8478         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
8479         tramp-sparc.c: Stubs for the lazy fetch trampoline.
8480
8481 2008-02-21  Mark Probst  <mark.probst@gmail.com>
8482
8483         * mini.c: Fetch data out of the extensible part of the runtime
8484         generic context instead of calling a helper function.
8485
8486         * generic-sharing.c: Some functions moved into
8487         metadata/generic-sharing.c.  Helper function for fetching other
8488         types now checks and asserts against extensible rgctx (just for
8489         debugging purposes - the helper function isn't called anymore
8490         unless for debugging).
8491
8492 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8493
8494         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
8495         for tail calls up to the point that the tests in iltests.exe run. Also add a
8496         dummy CKFINITE implementation.
8497         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
8498         needed for trampoline LMF frames.
8499
8500         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
8501         trampoline LMF frames.
8502
8503 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
8504
8505         * mini.c (inline_method): clean any pending loader error when inlining fail.
8506         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
8507
8508 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8509
8510         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
8511
8512         * aot-runtime.c (decode_patch_info): Ditto.
8513
8514         * mini.c (mono_resolve_patch_target): Ditto.
8515         
8516         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
8517         icall wrappers.
8518
8519         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
8520         
8521         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
8522         if it references an icall address.
8523
8524 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
8525
8526         * cpu-s390x.md: Remove some more unused opcodes.
8527         
8528         * cpu-s390x.md: Remove some unused opcodes.
8529
8530         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
8531         mono_op_imm_to_op ().
8532
8533         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
8534         instead of a switch statement.
8535         
8536         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
8537         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
8538
8539         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
8540         
8541         * mini-codegen.c: Remove unused mono_regstate2_... functions.
8542
8543         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
8544         -1.
8545
8546 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
8547
8548         * driver.c (mono_main): Improve error reporting when an assembly cannot be
8549         opened. Fixes #362607.
8550
8551         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
8552
8553         * iltests.il.in: Add a test for static methods in interfaces.
8554
8555 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
8556
8557         * genmdesc.c (build_table): Fix a crash on older glib versions.
8558
8559         * cpu-sparc.md: Remove some unused opcodes.
8560         
8561         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
8562         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
8563
8564         * cpu-amd64.md: Remove some unused opcodes.
8565
8566         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
8567         like the other opcodes.
8568
8569 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
8570
8571         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
8572
8573         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
8574
8575         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
8576         variables 'cfg' instead of 'm' for consistency.
8577
8578         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
8579
8580         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
8581         argument holding the vtype return address, to avoid the ambigious use of
8582         cfg->ret for this purpose.
8583
8584         * mini.c (NEW_RETLOADA): Use vret_addr if set.
8585
8586         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
8587         
8588         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
8589         new mono_print_ins () function which only takes one argument.
8590
8591 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
8592
8593         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
8594         macro arguments.
8595
8596 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
8597
8598         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
8599
8600         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
8601
8602         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
8603         opcodes and other small changes.
8604
8605         * mini-ops.h: Add some new opcodes from the linear IR branch.
8606
8607         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
8608
8609         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
8610         opcodes, use the REG_MEMBASE opcodes instead.
8611         
8612         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
8613         opcodes, use the REG_MEMBASE opcodes instead.
8614         
8615         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
8616         linear IR branch.
8617
8618         * mini.c (mono_op_imm_to_op): New helper function.
8619
8620         * mini-ops.h: Add some opcodes from linear IR branch.
8621
8622 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
8623
8624         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
8625         <tsv@solvo.ru>.
8626
8627 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
8628
8629         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
8630         OP_ICONV_TO_R4/R8.
8631
8632         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
8633
8634 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
8635
8636         * aot-compiler.c (emit_method_code): Add an assert.
8637
8638         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
8639         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
8640         methods.
8641
8642 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
8643
8644         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
8645         some load/store opcodes so they are consistent. 
8646         (mono_arch_emit_prolog): Simplify some code.
8647
8648         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
8649
8650         * objects.cs: Add tests for large argument offsets on ARM.
8651
8652         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
8653         stack offsets. Fixes #359651.
8654
8655         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
8656
8657         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
8658
8659         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
8660
8661         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
8662
8663         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
8664
8665         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
8666         rid of CEE_CONV_R_UN.
8667
8668         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
8669
8670 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
8671
8672         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
8673
8674         * mini.c (mono_normalize_opcodes): Add some more opcodes.
8675
8676         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
8677
8678         * cpu-amd64.md: Remove some unused opcodes.
8679
8680         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
8681
8682         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
8683
8684         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
8685         arch specific functions for its parts. Call the peephole pass after local
8686         regalloc so the prolog can compute a more accurate max_offset.
8687         
8688         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
8689         the corresponding OP_I/OP_L opcodes.
8690
8691         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
8692
8693         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
8694
8695 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8696
8697         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
8698         as they are handled in mini.c.
8699
8700         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
8701         
8702         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
8703         case since it is handled in mini.c.
8704
8705         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
8706
8707         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
8708
8709         * *.c: Use the new opcodes in the IR and back end code.
8710
8711         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
8712
8713         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
8714
8715 2008-02-06  Mark Probst  <mark.probst@gmail.com>
8716
8717         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
8718         an assert because it has a race condition.
8719
8720 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8721
8722         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
8723
8724         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
8725
8726         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
8727
8728         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
8729         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
8730
8731 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
8732
8733         * cpu-amd64.md (move): Correct the maximum size of move.
8734
8735 2008-02-05  Mark Probst  <mark.probst@gmail.com>
8736
8737         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
8738         the generic class init trampoline to return quickly if the class
8739         is already inited.
8740
8741 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
8742
8743         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
8744         issues where an 32 bit callsite cannot be patched by a 64 bit address.
8745
8746 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
8747
8748         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
8749         branch.
8750
8751 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
8752
8753         * objects.cs: Add some soft-float tests.
8754
8755         * mini.c: Fix a couple more soft-float issues.
8756
8757         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
8758
8759         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
8760         avoid a REX prefix.
8761
8762 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
8763
8764         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
8765         exception happens while compiling a virtual method.
8766
8767 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
8768
8769         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
8770         
8771         * mini-sparc.c: Fix build.
8772
8773         * mini-sparc.c (get_call_info): Add support for generic sharing.
8774
8775         * mini-exceptions.c: Add a FIXME.
8776
8777 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
8778
8779         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
8780         altstack handling code.
8781
8782         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
8783         
8784         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
8785
8786         * mini-s390.c: Add support for generic sharing.
8787
8788         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8789         Fix CAS on s390.
8790         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8791
8792         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
8793
8794         * mini-s390x.c: Add support for generic sharing.
8795         
8796         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8797         Fix CAS on ia64.
8798         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8799
8800         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
8801         can be used since it takes a 16 bit signed immediate.
8802
8803         * inssel-s390x.brg: Fix OP_SETRET.
8804
8805         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
8806
8807         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
8808
8809         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
8810
8811         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
8812
8813         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
8814         in one place.
8815
8816         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
8817         stuff.
8818
8819         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
8820         of the unused mono_arch_patch_delegate_trampoline stuff.
8821
8822 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
8823
8824         * basic-long.cs: Move the fp related tests to basic-float.cs.
8825
8826         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
8827
8828         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
8829
8830         * basic-calls.cs: Add a test for proper float argument passing.
8831
8832         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
8833         if the context corresponds to an exception received through a signal.
8834
8835         * exceptions.cs: Add a test for nullref handling at the start of a try
8836         clause.
8837
8838         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
8839
8840         * jit-icalls.c (mono_break): New JIT icall.
8841
8842         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
8843
8844         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
8845
8846 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
8847
8848         * cpu-*.md: Get rid of unused opcodes.
8849
8850         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
8851
8852         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
8853         by all platforms.
8854
8855         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
8856         define.
8857
8858         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
8859         the arch independent trampoline code in mini-trampolines.c.
8860
8861         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
8862
8863         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
8864
8865         * mini-s390.h: Remove an unused define.
8866         
8867         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
8868         the arch independent trampoline code in mini-trampolines.c.
8869
8870         * mini-arm.c (mono_arch_emit_prolog): Fix build.
8871
8872 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
8873
8874         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
8875
8876         * mini-s390.c (mono_arch_emit_prolog): Fix build.
8877
8878         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
8879
8880         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
8881
8882         * cpu-amd64.md: Use smaller sizes for int opcodes.
8883
8884         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
8885
8886         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
8887         objects.cs.
8888
8889         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
8890         debugging.
8891
8892         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
8893         instead of though a pointer to save an indirection when accessing elements of
8894         the array.
8895
8896         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
8897         some typos.
8898         (NOT_IMPLEMENTED): New helper macro.
8899         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
8900         of a bb.
8901
8902         * *.c: Use the new helper macro.
8903
8904 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
8905
8906         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
8907
8908 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
8909
8910         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
8911         stack slots.
8912
8913 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
8914
8915         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
8916         profiling is enabled.
8917         
8918         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
8919         the end.
8920         (mono_arch_emit_prolog): Add more first bblock optimizations.
8921
8922         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
8923         in order if possible.
8924         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
8925         bblock, since the arguments are still in their original registers.
8926
8927         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
8928
8929 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
8930
8931         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
8932         as well.
8933
8934         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
8935         offset 0.
8936
8937         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
8938
8939         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
8940         process async exceptions received while in unmanaged code.
8941
8942         * mini.c (mini_init): Install a callback with the runtime which will be called
8943         when a thread receives an async exception while in unmanaged code.
8944
8945         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
8946
8947         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
8948
8949 2008-01-16  Wade Berrier  <wberrier@novell.com>
8950
8951         * cpu-g4.md:
8952         * cpu-arm.md:
8953         * cpu-s390x.md:
8954         fix build
8955
8956 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8957
8958         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
8959         compilation with sun cc.
8960
8961         * cpu-*.md: Fix the build.
8962
8963         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
8964
8965         * mini-amd64.h: Add some comments to the MonoLMF structure.
8966
8967         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
8968         
8969         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
8970         in the LMF structure if possible. This saves two instructions in the
8971         managed->native wrappers.
8972
8973         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
8974
8975 2008-01-16  Mark Probst  <mark.probst@gmail.com>
8976
8977         * generic-sharing.c: New type argument lookup code which uses the
8978         runtime generic context template.
8979
8980 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
8981
8982         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
8983
8984         * mini-arm.c (add_general): Fix arm eabi parameter passing.
8985         (mono_arch_output_basic_block): Fix localloc implementation.
8986
8987         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
8988
8989         * mini-ia64.c (peephole_pass): Fix ia64 build.
8990
8991         * mini-amd64.c (peephole_pass): Fix a warning.
8992         
8993         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
8994         at a constant offset from sp/fp.
8995
8996         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
8997         instead of obtaining it from *lmf in the managed method case.
8998
8999 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
9000
9001         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
9002
9003 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
9004
9005         * mini.h (MonoInstList): New type.
9006         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
9007         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
9008         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
9009         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
9010         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
9011         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
9012         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
9013         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
9014         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
9015         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
9016         MONO_INST_LIST_FOR_EACH_ENTRY,
9017         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
9018         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
9019         mono_inst_list_first, mono_inst_list_last,
9020         mono_inst_list_next, mono_inst_list_prev): New instruction
9021         list handling interfaces.
9022         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
9023         list head 'ins_list'.
9024         (MonoInst): Replace next pointer with list head 'node'.
9025         (MonoCallInst): Make 'out_args' a MonoInstList.
9026         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
9027         (MonoCompile): Delete reverse_inst_list and
9028         reverse_inst_list_len.
9029         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
9030         mono_arch_lowering_pass, mono_arch_local_regalloc,
9031         mono_arch_output_basic_block, mono_arch_emit_prolog):
9032         Convert to new instruction lists.
9033         (insert_after_ins): Delete.
9034         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
9035         instruction lists.
9036         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
9037         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
9038         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
9039         mono_emulate_opcode, mono_emit_load_got_addr,
9040         inline_method, mono_method_to_ir, mono_print_bb_code,
9041         print_dfn, decompose_pass, nullify_basic_block,
9042         replace_out_block_in_code, remove_block_if_useless,
9043         merge_basic_blocks, move_basic_block_to_end,
9044         try_unsigned_compare, optimize_branches, mono_print_code,
9045         mini_select_instructions, remove_critical_edges): Likewise.
9046         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
9047         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
9048         mono_arch_output_basic_block, mono_arch_emit_prolog):
9049         Likewise.
9050         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
9051         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9052         mono_arch_output_basic_block): Likewise.
9053         (inst_list_prepend, insert_after_ins): Delete.
9054         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
9055         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
9056         instruction lists.
9057         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
9058         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
9059         mono_arch_emit_prolog): Likewise.
9060         * cfold.c (mono_constant_fold): Likewise.
9061         * liveness.c (visit_bb, mono_analyze_liveness,
9062         optimize_initlocals): Likewise.
9063         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
9064         * graph.c (mono_draw_code_cfg): Likewise.
9065         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
9066         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
9067         mono_ssa_cprop): Likewise.
9068         * abcremoval (get_relations_from_previous_bb, process_block):
9069         Likewise.
9070         * local-propagation (mono_cprop_invalidate_values,
9071         mono_local_cprop_bb): Likewise.
9072         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
9073         peephole_pass, mono_arch_output_basic_block,
9074         mono_arch_emit_prolog): Likewise.
9075         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
9076         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9077         mono_arch_emit_prolog): Likewise.
9078         (insert_after_ins): Delete.
9079         * aliasing.c (print_code_with_aliasing_information,
9080         mono_build_aliasing_information, mono_aliasing_deadce):
9081         Convert to new instruction lists.
9082         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
9083         peephole_pass, NEW_INS, mono_arch_lowering_pass,
9084         mono_arch_local_regalloc, mono_arch_output_basic_block):
9085         Likewise.
9086         (insert_after_ins): Delete.
9087         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
9088         peephole_pass, mono_arch_output_basic_block): Convert to
9089         new instruction lists.
9090         * mini-codegen (InstList, inst_list_prepend,
9091         insert_after_ins): Delete.
9092         (insert_before_ins, get_register_force_spilling,
9093         get_register_spilling, free_up_ireg, free_up_reg,
9094         create_copy_ins, create_spilled_store, alloc_int_reg,
9095         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
9096         to new instruction lists.
9097         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
9098         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9099         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
9100         (insert_after_ins): Delete.
9101         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
9102         mono_arch_local_regalloc, mono_arch_output_basic_block,
9103         mono_arch_call_opcode): Convert to new instruction lists.
9104         (insert_after_ins): Delete.
9105         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
9106         peephole_pass, mono_arch_output_basic_block,
9107         mono_arch_emit_prolog): Convert to new instruction lists.
9108
9109 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
9110
9111         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
9112
9113         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
9114         Fixes #353182.
9115
9116         * Makefile.am (version.h): Make this work with non-bash shells.
9117
9118 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
9119
9120         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
9121
9122 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
9123
9124         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
9125         the InitializeArray optimization.
9126
9127 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
9128
9129         * mini.c driver.c: Don't include os/gc_wrapper.h.
9130
9131 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
9132
9133         * mini.c (print_jit_stats): Print GC statistics if available.
9134
9135 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
9136
9137         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
9138
9139 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
9140
9141         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
9142
9143 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
9144
9145         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
9146         
9147         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
9148
9149         * driver.c (mono_main): Ditto.
9150
9151 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
9152
9153         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
9154
9155         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
9156         in the vtable can't be encoded.
9157         (compile_method): Ditto.
9158
9159 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
9160
9161         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
9162         defined.
9163
9164         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
9165         lmf->rbp.
9166
9167         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
9168         the top LMF entry belongs to the current method.
9169
9170         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
9171
9172 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
9173
9174         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
9175         
9176         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
9177
9178         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
9179
9180         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
9181
9182         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
9183
9184         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
9185         implementation.
9186
9187         * basic-float.cs: Add an ulong->double cast test.
9188
9189 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
9190
9191         * mini.c (mono_method_to_ir): Fix a warning.
9192
9193 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
9194
9195         * mini-ops.h: Add OP_SWITCH.
9196
9197         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
9198         CEE_SWITCH in back-end code, use OP_SWITCH instead.
9199
9200 2007-12-11  Geoff Norton  <gnorton@novell.com>
9201
9202         * mini-s390x.c: Minor change to the MAX() define to allow
9203         it to compile with other gcc versions.
9204
9205 2007-12-11  Geoff Norton  <gnorton@novell.com>
9206
9207         * cpu-s390x.md:
9208         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
9209
9210 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9211
9212         exceptions-arm.c (mono_arch_get_restore_context): Restore
9213         the frame pointer.
9214
9215         exceptions-arm.c (throw_exception): Save the frame pointer.
9216         This is a partial fix for #323747. Only the client side is
9217         fixed.
9218
9219 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9220
9221         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
9222         was using an unrelated variable to log the class which
9223         needed the cctor to be called. This was crashing on arm.
9224
9225 2007-12-09  Robert Jordan  <robertj@gmx.net>
9226
9227         * mini-x86.c (mono_arch_emit_epilog):
9228         Consider all kinds of 64-bit types. Fixes #323114.
9229
9230 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
9231
9232         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
9233
9234 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9235
9236         * mini-amd64.c (peephole_pass): Add a missing instruction check.
9237
9238 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9239
9240         * mini.c: run type ctor before allocating an object, not only
9241         when running it's constructor method (fixes at least part of bug #342507).
9242
9243 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9244         
9245         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
9246         
9247         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
9248         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
9249         function.
9250
9251         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
9252         mono_generic_class_init_trampoline () the same as it is done with the other
9253         trampolines.
9254
9255         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
9256         aot-runtime.c aot-compiler.c: Implement AOT support.    
9257
9258 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9259
9260         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
9261         build for archs which don't have the vtable trampoline defined
9262         yet.
9263
9264 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9265
9266         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
9267
9268         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
9269
9270         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
9271
9272         * tramp-<ARCH>.c: Use the new helper function.
9273
9274 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9275
9276         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
9277         trampoline call, which takes a vtable argument.
9278
9279         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
9280         OP_TRAMPCALL_VTABLEs like other calls.
9281
9282         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
9283         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
9284         call.  Implemented a support function which fetches the vtable
9285         from a register set.
9286
9287         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
9288         Implemented a generic class init trampoline, using the
9289         OP_TRAMPCALL_VTABLE opcode.
9290
9291         * mini.c: Implemented static field access when sharing generic
9292         code.  This implies initing the class using the new
9293         OP_TRAMPCALL_VTABLE call.
9294
9295 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9296
9297         * mini.c: Don't compile methods with sharing enabled if their
9298         classes are disabled for sharing.
9299
9300 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9301
9302         * inssel.brg: Add a missing sign extension to the GETCHR and array access
9303         opcodes. Fixes #346563.
9304
9305         * objects.cs: Add a new test.
9306
9307         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
9308
9309         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
9310         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
9311
9312 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9313
9314         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
9315
9316 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
9317
9318         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
9319         code stream.
9320
9321 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
9322
9323         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
9324
9325         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
9326         optimization in the AOT case.
9327         
9328 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
9329
9330         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
9331         
9332         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
9333
9334         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
9335
9336         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
9337
9338         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
9339         is created by the inlined delegate ctor.
9340
9341         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
9342
9343         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
9344
9345 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
9346
9347         * cpu-x86.md: Fix the length of ckfinite.
9348
9349 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
9350
9351         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
9352         
9353         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
9354         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
9355
9356         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
9357
9358         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
9359         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
9360
9361 2007-11-28  Martin Baulig  <martin@ximian.com>
9362
9363         * mini-x86.c
9364         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
9365         after creating the trampoline.
9366
9367 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
9368
9369         * aot-runtime.c (load_aot_module): Check runtime version if needed.
9370
9371         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
9372         the same version.
9373
9374         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
9375         instead of the calling method to help AOT.
9376
9377         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
9378
9379 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
9380
9381         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
9382         is defined.
9383
9384 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9385
9386         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
9387         
9388         * aot-compiler.c (compile_method): Correct check for generic method definitions.
9389         (encode_method_ref): No need to handle generic method definitions specially.
9390
9391         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
9392
9393         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
9394         decode_klass_info.
9395
9396         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
9397         encode_klass_info.
9398         (compile_method): Enable generic sharing.
9399
9400 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
9401
9402         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
9403         (mini_method_compile): Add preliminary support for AOTing shared generic code.
9404
9405         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
9406         generic code.
9407
9408         * mini-trampolines.c: Fix a warning.
9409
9410         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
9411         NEW_PCONST.
9412         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
9413         (generic_class_is_reference_type): Remove unused function.
9414
9415         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
9416         in the generic vtable trampoline case.
9417
9418         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
9419         
9420         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
9421         return an AOT method based on a vtable slot.
9422
9423         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
9424
9425         * mini.c (mini_get_vtable_trampoline): Export this.
9426
9427 2007-11-22  Martin Baulig  <martin@ximian.com>
9428
9429         * debug-debugger.h
9430         (MonoDebuggerInfo): Move `debugger_version' up.
9431
9432 2007-11-22  Martin Baulig  <martin@ximian.com>
9433
9434         * mini-amd64.c
9435         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
9436
9437         * mini-trampolines.c
9438         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
9439         after compiling the method.
9440
9441 2007-11-20  Martin Baulig  <martin@ximian.com>
9442
9443         * debug-mini.c
9444         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
9445         (mono_debugger_remove_breakpoint): Likewise.
9446         (mono_debugger_check_breakpoints): Likewise.
9447
9448         * debug-debugger.c: Implement the new breakpoint interface here.
9449
9450 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
9451
9452         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
9453         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
9454
9455         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
9456
9457 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
9458
9459         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
9460
9461         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
9462         mini.c.
9463
9464         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
9465         mini.c.
9466
9467         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
9468         returning a vtype in a register.
9469
9470         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
9471         here from the arch specific code.
9472
9473         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
9474         mini.c.
9475
9476         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
9477         (mono_arch_emit_prolog): Increment maximum prolog size.
9478
9479         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
9480         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
9481
9482         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
9483         MonoGenericSharingContext.
9484
9485         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
9486         MonoGenericSharingContext. Allocate memory from the cfg mempool.
9487
9488 2007-11-15  Mark Probst  <mark.probst@gmail.com>
9489
9490         * mini.c, mini.h, generic-sharing.c: Functions for producing code
9491         which extract fields out of the runtime generic context.  Full
9492         sharing of the NEWARR opcode.
9493
9494 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9495
9496         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
9497         --enable-minimal=ssa.
9498
9499 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
9500
9501         * mini-trampolines.c (mono_delegate_trampoline): Update after 
9502         mono_marshal_get_delegate_invoke () signature change.
9503
9504 2007-11-13  Mark Probst  <mark.probst@gmail.com>
9505
9506         * mini.c: Removed the shared context in favor of the generic
9507         sharing context.  Allocate the MonoJitInfo structure with room for
9508         the generic sharing context if it's needed.
9509
9510         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
9511         domain-internals.h now.
9512
9513         * mini-x86.c: Pass the generic sharing context to get_call_info ().
9514
9515         * generic-sharing.c: Several changes for working without a shared
9516         context and instead operating on open types instead.
9517
9518 2007-11-12  David S. Miller  <davem@davemloft.net>
9519
9520        * inssel-sparc.brg: Fix double instruction emit.
9521
9522 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9523
9524         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
9525         Get/Set/Address methods.
9526         
9527         * mini.c debug-debugger.c mini-trampolines.c: Update after 
9528         mono_marshal_get_delegate_invoke signature change.
9529
9530 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9531
9532         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
9533         This can happens with dynamic methods. Fixes the other bug in #322722.
9534
9535 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9536
9537         * tramp-arm.c (mono_arch_patch_callsite): Support patching
9538         BX call sequence.
9539
9540         * mini-arm.c (arm_patch): Implement patching of BX call
9541         sequence. Fixes one of the bugs in #322722.
9542
9543 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
9544
9545        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
9546        under Linux.  We only need to flush every 32-byte cache line.    
9547
9548 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9549
9550         * mini.c:
9551         move_basic_block_to_end: Add branches when needed, eventually creating
9552         a new BB.
9553         optimize_branches: added a parameter that tells if it's ok to create
9554         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
9555         and avoid calling move_basic_block_to_end when it's not ok.
9556         Fixes bug 318677.
9557
9558 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9559
9560         * mini.c: Abort inlining call to InitializeArray if something
9561         looks wrong.  Let the icall handle it, which now has proper safety
9562         checks.
9563
9564 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9565
9566         * mini.c (mono_spill_call): add support for soft-float.
9567
9568         * mini.c (mono_method_to_ir): add support for soft-float
9569         to inlined functions that return float.
9570
9571         * mini.c (mono_method_to_ir): add support for soft-float
9572         to cee_stsfld opcode on float fields.
9573
9574 2007-11-05  Geoff Norton  <gnorton@novell.com>
9575
9576         * mini-x86.h: Fix the structure access for X86 Leopard.
9577
9578
9579 2007-11-05  Martin Baulig  <martin@ximian.com>
9580
9581         * mini-trampolines.c
9582         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
9583         after compiling the method to notify the debugger.
9584
9585 2007-11-05  Martin Baulig  <martin@ximian.com>
9586
9587         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
9588
9589 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
9590
9591         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
9592         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
9593
9594 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
9595
9596         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
9597         native-to-managed wrappers.
9598         
9599 2007-11-01  Geoff Norton  <gnorton@novell.com>
9600
9601         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
9602         members.
9603
9604 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
9605
9606         * mini.c, mini-x86.c: when getting back from unmanaged code
9607         to managed via a marshaled delegate we also need to set the
9608         right domain.
9609
9610 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9611
9612         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
9613         for amd64.
9614
9615 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9616
9617         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
9618         let the debugger or other external agents to tell the JIT when
9619         a sw breakpoint has been inserted in the code that the JIT needs
9620         to be able to inspect.
9621
9622 2007-10-31  Martin Baulig  <martin@ximian.com>
9623
9624         * debug-debugger.h
9625         (MonoDebuggerInfo): Remove `runtime_class_init'.
9626
9627 2007-10-30  Martin Baulig  <martin@ximian.com>
9628
9629         * debug-mini.h
9630         (mono_debugger_thread_created): Added `MonoThread *' argument.
9631         (mono_debugger_extended_notification): New public method.
9632         (mono_debugger_trampoline_compiled): New public method.
9633
9634         * debug-mini.c
9635         (MonoDebuggerThreadInfo): Added `thread' and
9636         `extended_notifications' fields.
9637
9638         * debug-debugger.c
9639         (debugger_executable_code_buffer): New static variable.
9640
9641         * debug-debugger.h
9642         (MonoDebuggerInfo): Added `executable_code_buffer',
9643         `executable_code_buffer_size', `breakpoint_info_area',
9644         `breakpoint_table' and `breakpoint_table_size'.
9645
9646 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
9647
9648         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
9649         that IP  either is an unused value or the vtable pointer. IMT 
9650         calls use vtable + offset now. Reduced by almost half the size
9651         of IMT entries.
9652
9653 2007-10-26  Jonathan Chambers <joncham@gmail.com>
9654
9655         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
9656         defines to access param registers. Replace long usage with
9657         gsize as sizeof(long) != sizeof(void*) on Win64.
9658
9659         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
9660         on Win64. Fix intrinsic, use _AddressOfReturnAddress
9661         instead of non-existant _GetAddressOfReturnAddress.
9662
9663         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
9664         param registers. Save/restore %rdi and %rsi in MonoLMF.
9665
9666         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
9667         param registers. Modify (throw_exception) signature to take 
9668         %rdi and %rsi on Win64. 
9669
9670         Code is contributed under MIT/X11 license.
9671
9672 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9673
9674         * helpers.c: unlink debugging output files.
9675
9676 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
9677
9678         * mini.c: Move mono_create_ftnptr () to object.c.
9679
9680 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9681
9682         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
9683         optional. This function can now be used to disassemble code generated
9684         outside the JIT such as trampolines and IMT thunks.
9685
9686         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
9687
9688         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
9689         vtable pointer from a ldr instruction.
9690
9691         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
9692         new IMT call sequence.
9693
9694         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
9695         call sequence for interface invocations.
9696
9697         * mini-arm.c (mono_arch_emit_imt_argument): added, required
9698         for imt support. This function is empty since IMT on ARM requires no
9699         special handling on the IR side.
9700
9701         * mini-arm.c (mono_arch_find_imt_method): added, required for
9702         imt support.
9703
9704         * mini-arm.c (mono_arch_find_this_argument): added, required
9705         for imt support.
9706
9707         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
9708         a ldr instruction to load a value stored in the code stream.
9709
9710         * mini-arm.c (mono_arch_build_imt_thunk):added, required
9711         for imt support.
9712
9713
9714 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
9715
9716         * mini.c (mini_init): Install the jump trampoline callback.
9717
9718 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9719
9720         * mini-trampolines.c: handle synchronized methods with the common
9721         vtable trampoline (bug #335601).
9722
9723 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
9724
9725         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
9726
9727         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
9728         64 bit platforms.
9729
9730         * mini-ia64.h mini-ia64.c: Add support for IMT.
9731
9732         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
9733         prolog. Fixes #331958.
9734
9735 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
9736
9737         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
9738
9739 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9740
9741         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
9742         trampoline.
9743
9744 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9745
9746         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
9747         trampoline.
9748
9749 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
9750
9751         * mini-x86.c, mini-x86.h: x86 support for the common vtable
9752         trampoline.
9753
9754 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
9755
9756         * mini-trampolines.c: changed the magic rampoline to understand
9757         the common vtable trampoline method: the method to invoke is
9758         determined by the vtable displacement of the call.
9759
9760 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9761
9762         * mini.c, mini.h: register the common vtable trampoline if the
9763         architecture supports it.
9764
9765 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9766
9767         * cpu-amd64.md: use the correct max length for tls_get.
9768
9769 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
9770
9771         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
9772         CEE_STELEM_ANY. Fixes #333696.
9773
9774 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9775
9776         * exceptions-x86.c: provide more graceful handling of the case where
9777         we followed a bogus function pointer from managed code (bug #332866).
9778
9779 2007-10-11  Mark Probst  <mark.probst@gmail.com>
9780
9781         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
9782         replaces the generic_shared flag and will carry more information
9783         in the future.
9784
9785         * generic-sharing.c: Added mini_type_stack_size() which allows
9786         allows open types if given a generic sharing context.
9787         mini_get_basic_type_from_generic() takes a
9788         MonoGenericSharingContext* instead of a MonoCompile* now.
9789
9790         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
9791         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
9792         mini-sparc.c, mini-x86.c: Trivial changes required by the two
9793         changes above.  Just passing arguments through to the right
9794         places.
9795
9796 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9797
9798         * mini-arm.c: unify the call emission to emit_code_seq().
9799
9800 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
9801
9802         * tramp-arm.c: reduced the trampoline size.
9803
9804 2007-10-10  Mark Probst  <mark.probst@gmail.com>
9805
9806         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
9807         variable handling out of arch-specific code.
9808
9809 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
9810
9811         * mini-arm.c: implemented fast delegate dispatch.
9812
9813 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9814
9815         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
9816         that fp elimination is turned off if the space required by locals is too
9817         big. Fixes #331958.
9818
9819 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9820
9821         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
9822         ARM to the new style trampoline.
9823
9824 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9825
9826         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
9827
9828         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
9829
9830 2007-10-09  Martin Baulig  <martin@ximian.com>
9831
9832         * debug-debugger.h
9833         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
9834         `field_info_offset_offset'.     
9835
9836 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9837
9838         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
9839         removed more internal usage of the r11 register and made it available
9840         to the register allocator.
9841
9842 2007-10-08  Mark Probst  <mark.probst@gmail.com>
9843
9844         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
9845         when sharing generics and treat type variables as references.
9846
9847 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9848
9849         * mini-ppc.c: started removing the internal uses of register r11
9850         to eventually allow the register allocator to manage it as an
9851         additional available register.
9852
9853 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9854
9855         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
9856
9857 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9858
9859         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
9860         specific trampolines as they are not performance critical as a jump
9861         target (maybe align as before only for AOT code?). This saves about
9862         200 KB of native code on x86 for monodevelop startup.
9863
9864 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9865
9866         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
9867         monodevelop startup.
9868
9869 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
9870
9871         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
9872
9873         * mini-sparc.h mini-sparc.c: Implement IMT support.
9874
9875         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
9876         its smaller and doesn't clobber sparc_g1.
9877
9878         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
9879
9880 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9881
9882         * mini-ppc.c: optimized the size of the IMT thunks a bit.
9883
9884 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9885
9886         * mini-ppc.c: implemented fast delegate invocation.
9887
9888 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
9889
9890         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
9891
9892 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9893
9894         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
9895         code to the new style trampoline in preparation for IMT support.
9896
9897 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
9898
9899         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
9900         systems already. This also reduces the specific trampiline sizes and
9901         prepares for the use of r12 as the IMT identifier register.
9902
9903 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9904
9905         * mini-mips.h: endianess fix (simplified from a patch by
9906         Thomas Kunze <thommy@tabao.de>, bug #323737).
9907
9908 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9909
9910         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
9911         to access ucontext fields and enable netbsd support
9912         (partially from Magnus Henoch <mange@freemail.hu>).
9913
9914 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9915
9916         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
9917         use the preprocessor from the CPP env var if it is set.
9918
9919 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9920
9921         * mini-trampolines.c: fixed an assertion and moved it earlier in the
9922         code, before interface_offset gets used.
9923
9924 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
9925
9926         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
9927         mono_class_setup_vtable () before accessing klass->vtable.
9928
9929 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
9930
9931         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
9932         hackish.
9933
9934 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9935
9936         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
9937         IMT slots (this saves hundreds of KB of memory in programs like
9938         IronPython and Monodevelop).
9939
9940 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9941
9942         * mini.c: print the delegate counter.
9943
9944 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
9945
9946         * mini-x86.c: make it easier to enable the debugging code for IMT
9947         slots.
9948
9949 2007-09-28  Martin Baulig  <martin@ximian.com>
9950
9951         * debug-debugger.h
9952         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
9953         `mono_method_klass_offset' and `mono_method_token_offset'.
9954
9955 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9956
9957         * mini.c: First generics sharing implementation.  Can only share
9958         in very simple cases.  If sharing doesn't work it falls back to
9959         dedicated compilation.
9960
9961         * mini.h: Flag in MonoCompile to specify whether generic
9962         compilation is shared.  Flags enum for marking which generic inst
9963         of a context is used.  Prototypes for helper functions.
9964
9965         * generic-sharing.c: Helper functions for generic method sharing.
9966
9967         * optflags-def.h: Optimization flag (gshared) for enabling generic
9968         method sharing added.
9969
9970         * Makefile.am: generic-sharing.c added.
9971
9972 2007-09-19 Daniel Nauck <dna@mono-project.de>
9973
9974         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
9975
9976 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
9977         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
9978         fixes bug 325507.
9979
9980 2007-09-19  Martin Baulig  <martin@ximian.com>
9981
9982         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
9983         mono_debug_cleanup() is now part of mono_cleanup().
9984
9985 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9986
9987         * driver.c (mono_main): Fix a warning.
9988
9989 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9990
9991         * aot-compiler.c: Optimize various parts when processing large assemblies.
9992         Fixes ##325568.
9993
9994         * mini.c (mono_patch_info_hash): Improve hash function.
9995
9996 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9997
9998         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
9999         
10000         Code is contributed under MIT/X11 license.
10001
10002 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10003
10004         * mini.c (mini_init): Fix a leak.
10005
10006         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
10007
10008 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10009
10010         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
10011
10012 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10013
10014         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
10015
10016 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10017
10018         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
10019         variance tests.
10020
10021         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
10022
10023         * mini.c (handle_alloc): Enable managed allocators in AOT code.
10024
10025         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
10026
10027         * aot-runtime.c (decode_patch_info): Ditto.
10028
10029 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10030
10031         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
10032         static case. Cache delegates in architecture specific code, 
10033         based on number of parameters.
10034         
10035         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
10036         in architecture specific code, based on number of parameters.
10037         
10038         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
10039         caching happen in architecture specific code now.
10040         
10041         Code is contributed under MIT/X11 license.
10042
10043 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10044
10045         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
10046         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
10047         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
10048
10049         Code is contributed under MIT/X11 license.
10050
10051 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10052         * mini.c: (mono_thread_abort) Fixed bug #82416.
10053
10054 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10055
10056         * mini.: hook the new managed GC allocation feature into the JIT.
10057
10058 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10059
10060         * mini.c: implementation for the new runtime tls opcode.
10061
10062 2007-09-11  Martin Baulig  <martin@ximian.com>
10063
10064         * debug-debugger.h
10065         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
10066         `mono_method_inflated_offset'.
10067
10068 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
10069
10070         * driver.c mini.h mini.c: Add a new devel command line option for injecting
10071         async exceptions into a method.
10072
10073         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
10074         purpose of testing whenever the unwinder works at every instruction.
10075
10076 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10077
10078         * mini.c: check accessibility of method used in ldftn (fixes
10079         bug #82635).
10080
10081 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
10082
10083         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
10084
10085         * inssel.brg: Fix a warning.
10086
10087 2007-09-03  Martin Baulig  <martin@ximian.com>
10088
10089         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
10090         now takes the `main_method' as argument.
10091
10092 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
10093
10094         * cpu-sparc.md (endfilter): Add missing src1:i argument.
10095
10096 2007-08-30  Jonathan Chambers <joncham@gmail.com>
10097
10098         * driver.c: include the cil-coff.h header on Windows.
10099         
10100         Code is contributed under MIT/X11 license.
10101
10102 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10103
10104         * mini.c, driver.c: don't include the cil-coff.h header.
10105
10106 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10107
10108         * mini.c: flag places that needs fixes fo soft-float support.
10109
10110 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
10111
10112         * mini.h, inssel-float.brg: fix soft-float constant loads on big
10113         endian systems (partially from Dean Jenkins, bug #81924).
10114
10115 2007-08-28  Mark Probst  <mark.probst@gmail.com>
10116
10117         * mini.c (check_linkdemand): Remove embedded reference object in
10118         call to LinkDemandSecurityException.
10119         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
10120         with an IntPtr instead of a reference object.
10121
10122 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10123
10124         * mini.c (handle_initobj): Handle alignment properly.
10125
10126         * inssel.brg (mini_emit_memset): Ditto. 
10127
10128         * inssel.brg (mini_emit_memcpy): Ditto. 
10129
10130         * inssel-sparc.brg: Ditto.              
10131
10132         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
10133
10134 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
10135
10136         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
10137         exceptions raised in unmanaged code. Fixes part of #82594.
10138
10139 2007-08-24  Mark Probst  <mark.probst@gmail.com>
10140
10141         * mini.c (mono_method_to_ir), declsec.c
10142         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
10143
10144 2007-08-22  Martin Baulig  <martin@ximian.com>
10145
10146         * debug-mini.h
10147         (MonoDebuggerThreadInfo): New typedef.
10148         (mono_debugger_thread_table): New global variable.
10149         (mono_debugger_thread_created): New public function.
10150         (mono_debugger_thread_cleanup): New public function.
10151
10152         * debug-debugger.h
10153         (MonoDebuggerInfo):
10154         - removed `get_current_thread' and `lookup_assembly'.
10155         - removed `data_table'.
10156         - added `thread_table'.
10157
10158         * mini.c
10159         (mono_thread_start_cb): Call mono_debugger_thread_created().
10160         (mono_thread_attach_cb): Likewise.
10161         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
10162         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
10163         initial domain.
10164
10165         * driver.c (mono_main): Move mono_debug_init() up, before calling
10166         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
10167
10168 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10169
10170         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
10171         together when passing several arguments of type double (gives a small
10172         speedup and saves a few bytes of generated code).
10173
10174 2007-08-20  Jb Evain  <jbevain@novell.com>
10175
10176         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
10177
10178 2007-08-20  Jb Evain  <jbevain@novell.com>
10179
10180         * mini.c (mono_method_to_ir): throw MethodAccessException
10181         and FieldAccessException instead of InvalidProgramException.
10182
10183 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10184
10185         * mini.c: CoreCLR security checks.
10186
10187         * mini.h: Removed MonoSecurityMode (moved to
10188         metadata/security-manager.h) and mono_security_mode global var
10189         (replaced by set/get functions in security-manager.h).
10190
10191         * driver.c: Added "core-clr-test" security mode for testing.  Used
10192         set-function for setting security mode.
10193
10194 2007-08-17  Mark Probst  <mark.probst@gmail.com>
10195
10196         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
10197         the new jit_info_table.
10198
10199         * driver.c: Test code for the new jit_info_table (enabled by the
10200         define MONO_JIT_INFO_TABLE_TEST).
10201
10202 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
10203
10204         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
10205         detection of call <REG> instruction sequence. Fixes build on freebsd.
10206
10207 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
10208
10209         * mini-exceptions.c: Fix a warning.
10210
10211 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
10212
10213         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
10214         stack overflow handling code on amd64 too.
10215
10216         * mini-exceptions.c (mono_setup_altstack): Make this use 
10217         mono_thread_get_stack_bounds ().
10218
10219         * mini-x86.h: Disable sigaltstack on solaris x86.
10220
10221 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
10222
10223         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
10224
10225 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
10226
10227         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
10228
10229 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10230
10231         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
10232
10233         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
10234
10235 2007-08-03  Neale Ferguson <neale@sinenomine.net>
10236
10237         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
10238         due to alignment.
10239
10240 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10241
10242         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
10243         to be emitted (bug #82281).
10244
10245 2007-08-01  Martin Baulig  <martin@ximian.com>
10246
10247         Merged the `debugger-dublin' branch.
10248
10249         * debug-debugger.h (MonoDebuggerInfo):
10250         Removed the `old_*' compatibility entries.
10251         Added `debugger_version' and `data_table'.
10252         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
10253         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
10254
10255         * debug-mini.c
10256         (MiniDebugMethodBreakpointInfo): Add `address_list'.
10257         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
10258         instead of a `gconstpointer'.
10259         (mono_debugger_insert_method_breakpoint): Return a
10260         `MonoDebugMethodAddressList *'.
10261
10262 2007-06-28  Martin Baulig  <martin@ximian.com>
10263
10264         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10265
10266 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10267
10268         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
10269         __builtin_frame_address () since it is broken on older gcc versions.
10270
10271 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10272
10273         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
10274         on the stack overflow handling and made the managed stack overflows
10275         catchable in most cases using soft guard pages.
10276         * exceptions-x86.c: added code to restore the protection in the soft
10277         guard pages at the end of exception handling.
10278
10279 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10280
10281         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
10282
10283 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10284
10285         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
10286         exception handling.
10287
10288 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10289
10290         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
10291         signal handling support until it has been ported to the new mechanism.
10292         * mini.c: fixed stack overflow detection and use the new
10293         architecture code  to handle signals on the altstack.
10294
10295 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
10296
10297         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
10298         stack overflows on the alt stack.
10299
10300 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
10301
10302         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
10303         stack overflows on the alt stack.
10304
10305 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
10306
10307         * exceptions-ppc.c: cleanup preparing for altstack support.
10308
10309 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10310
10311         * exceptions-arm.c: cleanup preparing for altstack support.
10312
10313 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10314
10315         * mini.c (print_jit_stats): Output hazard pointer stats.
10316
10317 2007-07-26  Mark Probst  <mark.probst@gmail.com>
10318
10319         * driver.c, mini.c: Replaced security mode flags with a single
10320         enum variable.
10321
10322 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10323
10324         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
10325
10326 2007-07-25  Mark Probst  <mark.probst@gmail.com>
10327
10328         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
10329         (which doesn't do anything yet) for activating Core CLR
10330         (Silverlight) security.
10331
10332 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10333
10334         * mini-codegen.c: work around a possible gcc bug on arm.
10335
10336 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10337
10338         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
10339         message for platforms that don't support AOT compilation.
10340
10341 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10342
10343         * mini.h, mini.c, driver.c: temporary smcs hack.
10344
10345 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
10346
10347         * mini-arm.h, mini-arm.c: arm EABI fixes.
10348
10349 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10350
10351         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
10352         case.
10353
10354         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
10355         trampolines taking a method argument.
10356
10357         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
10358
10359         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
10360         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
10361
10362         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
10363         JIT compilation throws an exception. Fixes #82050.
10364
10365 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10366
10367         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
10368         with the MONO_EXCEPTION_ defines.
10369
10370 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
10371
10372         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
10373         #82117.
10374         
10375         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
10376         the cause of an assertion.
10377
10378 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
10379
10380         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
10381         removed.
10382
10383 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10384
10385         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
10386         assert. Should fix #82103.
10387
10388 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10389
10390         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
10391         here too. Fixes #82095.
10392
10393         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
10394         addresses.
10395
10396         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
10397
10398         * mini-amd64.h: Enable IMT for amd64.
10399         
10400         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
10401
10402 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
10403
10404         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
10405
10406 2007-07-12  Mark Probst  <mark.probst@gmail.com>
10407
10408         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
10409         as soon as check_linkdemand sets an exception_type.
10410
10411 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10412
10413         * mini-x86.c: fixed offsets for IMT call sequence.
10414         * mini-x86.h: enable IMT again.
10415
10416 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * trace.c (mono_trace_enter_method): Decode MonoType too.
10419
10420         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
10421
10422         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
10423
10424         * mini-amd64.c: Add preliminary IMT implementation.
10425         
10426 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10427
10428         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
10429         understand the new IMT-base interface invocation (thanks to
10430         Daniel Nauck for the report and the remote debugging session).
10431
10432 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10433
10434         * mini-x86.c: size and speed optimizations for the IMT bsearch.
10435
10436 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10437
10438         * Makefile.am (aotcheck): Make this actually use the AOTed code.
10439
10440 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
10441
10442         * mini-trampolines.c: implement AOT IMT support.
10443         * mini-x86.h: enable IMT support for wider testing.
10444
10445 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10446
10447         * inssel.brg (emit_imt_argument): Add aot support here.
10448
10449         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
10450
10451 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10452
10453         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
10454         of the IMT implementation, partially from massi, with my
10455         implementation of the bsearch sequence. Disabled by default until
10456         the AOT code is implemented.
10457
10458 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10459
10460         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
10461
10462         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
10463
10464 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10465
10466         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
10467         arch-independent IMT JIT code from Massimiliano
10468         Mantione (massi@ximian.com) with small cleanups from me.
10469
10470 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10471
10472         * Makefile.am: fix svn invocation to get the svn revision to be
10473         independent of the local language (build fix).
10474
10475 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10476
10477         * mini.c (inline_method): Reset cfg->exception_type if the
10478         inlining is aborted.  Fixes: 82049.
10479
10480 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
10481
10482         * mini.c: remove assert from exception handling code when exception_ptr
10483         is not set.
10484
10485 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10486
10487         * mini.c (mono_codegen): Add an assert.
10488
10489         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
10490         enter and leave code.
10491         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
10492
10493 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10494
10495         * mini-ppc.c: fixed memory corruption for localloc(0)
10496         (bug #81852).
10497
10498 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10499         
10500         * mini.c: Fix warnings.
10501
10502 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
10503
10504         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
10505         to emit better double->int conversions.
10506
10507 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10508
10509         * mini.c: the provided Min/Max optimizations are valid for unisgned
10510         ints.
10511
10512 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10513
10514         * 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
10515
10516 2007-06-28  Miguel de Icaza  <miguel@novell.com>
10517
10518         * mini.c (mono_running_on_valgrind): Add support for reporting the
10519         method and  its boundaries to valgrind.
10520
10521 2007-06-28  Martin Baulig  <martin@ximian.com>
10522
10523         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10524
10525 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
10526
10527         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
10528
10529         * generic.2.cs: Add new test case.
10530
10531 2007-06-25  Martin Baulig  <martin@ximian.com>
10532
10533         Merged the `debugger-dublin' branch.
10534
10535         * debug-mini.c
10536         (mono_debugger_insert_method_breakpoint): New public method.
10537         (mono_debugger_remove_method_breakpoint): Likewise.
10538         (mono_debugger_check_breakpoints): New static method.
10539         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
10540
10541         * debug-debugger.h (MonoDebuggerInfo):
10542         Renamed (to keep backward compatibility in the vtable):
10543         `insert_breakpoint' -> `old_insert_breakpoint'.
10544         `remove_breakpoint' -> `old_remove_breakpoint'.
10545         `create_string' -> `old_create_string'.
10546         `lookup_class' -> `old_lookup_class'.
10547         `lookup_type' -> removed; changed into a dummy field.
10548         `lookup_assembly' -> `old_lookup_assembly'.
10549         Added (same functionality, but different signature):
10550         `create_string', `lookup_class', `lookup_assembly'
10551         Added new:
10552         `get_method_addr_or_bpt', `remove_method_breakpoint',
10553         `runtime_class_init'.
10554
10555         * debug-debugger.c: Merged the `debugger-dublin' branch.
10556
10557 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
10558
10559         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
10560         well.
10561         (peephole_pass): Likewise.
10562
10563 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10564
10565         * driver.c: hopefully make setaffinity work also for ancient
10566         versions of linux.
10567
10568 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
10569
10570         * driver.c : win32 build fix.
10571
10572 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10573
10574         * driver.c: check for the MONO_NO_SMP env var and bind to a single
10575         processor if it is set.
10576
10577 2007-06-21  Martin Baulig  <martin@ximian.com>
10578
10579         * debug-mini.h: New file.
10580
10581         * debug-mini.c
10582         (mono_debugger_insert_breakpoint_full): Moved here from
10583         ../metadata/mono-debug-debugger.c.
10584         (mono_debugger_remove_breakpoint): Likewise.
10585         (mono_debugger_breakpoint_callback): Likewise.
10586
10587 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10588
10589         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10590         changes in MonoGenericClass.
10591
10592 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
10593
10594         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
10595
10596 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10597
10598         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10599         removal of MonoGenericMethod.
10600
10601 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10602
10603         * mini-exceptions.c: hooks for the exception events profiling API.
10604
10605 2007-06-14  Randolph Chung  <tausq@debian.org>
10606
10607         * Makefile.ma: Add hppa target.
10608         * mini-arch.h: Include mini-hppa.h
10609         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
10610         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
10611         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10612
10613 2007-06-14  Randolph Chung  <tausq@debian.org>
10614
10615         * inssel.brg: Add rules for "chained" compare-branch operations so that
10616         a single compare op can affect multiple branches.  Adjust cost for
10617         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
10618         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
10619         cost for some rules so that they can more easily be overridden by
10620         per-arch rules (with fixes from lupus).
10621         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10622
10623 2007-06-13  Randolph Chung  <tausq@debian.org>
10624
10625         * mini-ops.h: Reorder branch ops so that they match the order of the
10626         corresponding CEE_* ops.  The code expects them this way.
10627         Add new ops for HPPA target.
10628         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10629
10630 2007-06-13  Randolph Chung  <tausq@debian.org>
10631
10632         * mini-exceptions.c: Handle cases where the stack grows towards
10633         larger addresses.
10634         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10635
10636 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10637
10638         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
10639         counter.
10640         * driver.c: explain where a non-matching corlib is found.
10641
10642 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10643
10644         * mini.c (print_jit_stats): Output dynamic code allocation stats.
10645
10646 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
10647
10648         * mini-exceptions.c: Generate a method profile leave event during
10649         an exception to ensure that the profiler gets notified.
10650
10651 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
10652
10653         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
10654         branch.
10655
10656         * cpu-amd64.md: Add long_and/or/xor opcodes.
10657
10658 2007-06-06  Wade Berrier  <wberrier@novell.com>
10659
10660         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
10661         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
10662         length of instruction shr_imm (expected 8, got 10)
10663
10664 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
10665
10666         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
10667
10668 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10669
10670         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10671         MonoInternalHashTable again (fixed bug in the internal hash table
10672         code).
10673
10674 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10675
10676         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
10677         Have to figure out what makes it crash the SWF regression.
10678
10679 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
10680
10681         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
10682
10683 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10684
10685         * mini.c: optimize out the type check when storing null in a
10686         reference array.
10687
10688 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10689
10690         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10691         MonoInternalHashTable.
10692
10693 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10694
10695         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
10696         signed integer methods.
10697
10698 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10699
10700         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
10701         permanently since the current approach doesn't work.
10702
10703 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10704
10705         * inssel.brg (stmt): Only call delegate->invoke_impl if 
10706         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
10707
10708 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10709
10710         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
10711         the sreg2==rdx case.
10712         
10713         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
10714         account if it contains a rex prefix.
10715         (peephole_pass): Handle OP_FMOVE as well.
10716
10717 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10718
10719         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
10720         as it causes regressions.
10721
10722 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10723
10724         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
10725         static case as well.
10726
10727         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
10728
10729         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10730         (mono_arch_get_this_arg_from_call): Ditto.
10731
10732         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
10733
10734         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
10735         invoke_impl field.
10736
10737         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10738         (mono_arch_get_this_arg_from_call): Ditto.
10739
10740         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
10741         
10742         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
10743         try to create optimized invoke code and use that for further invocations. 
10744         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
10745
10746         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
10747
10748 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
10749
10750         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
10751         sealed classes or methods.
10752         *devirtualization.cs: tests for the new optimization
10753
10754 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
10755
10756         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
10757         by the update_volatile () function.
10758
10759 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
10760
10761         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
10762         require it.
10763
10764         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
10765
10766 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10767
10768         * mini.c: Add configure checks for header files.
10769         * mini-x86.c: Add configure checks for header files.
10770         * trace.c: Add configure checks for header files.
10771         * aot-runtime.c: Add configure checks for header files.
10772         * aot-compiler.c: Add configure checks for header files.
10773         * driver.c: Add configure checks for header files.
10774         * mini-codegen.c: Add configure checks for header files.
10775         
10776         Code is contributed under MIT/X11 license.
10777
10778 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10779
10780         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
10781         icompare_imm -128 + op_iclt. Fixes #81703.
10782
10783 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
10784
10785         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
10786
10787 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10788
10789         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
10790         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
10791         so that all isinst checks now use "interface_bitmap".
10792
10793 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
10794
10795         * cpu-amd64.md (jmp): Fix a warning.
10796
10797         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
10798
10799         * basic.cs: Add new regression test.
10800
10801         * basic.cs: Remove test which is now in basic-long.cs.
10802
10803         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
10804
10805         * basic-long.cs: Add new test.
10806         
10807 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
10808
10809         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
10810
10811 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10812
10813         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
10814
10815         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
10816         places.
10817         
10818         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
10819         throwing code a bit.
10820
10821         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
10822         the exception throwing code a bit.
10823
10824         * mini-x86.c (get_call_info): Allocate result from a mempool.
10825
10826 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
10827
10828         * aot-compiler.c (find_typespec_for_class): Fix the assert.
10829
10830         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
10831
10832         * mini.h (MonoCompile): Add 'token_info_hash' field.
10833
10834         * mini.c: Save token->method associations during compilation so the AOT 
10835         compiler can use it.
10836         
10837         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
10838         which reference generic classes and methods.
10839
10840 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
10841
10842         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
10843
10844         * aot-compiler.c (compile_method): Fix a typo in a comment.
10845
10846         * aot-runtime.c (decode_cached_class_info): Skip generic types.
10847
10848         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
10849         everything generic.
10850
10851         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
10852
10853 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
10854
10855         * mini.h (MonoCompile): Add 'args' field.
10856
10857         * mini.c (mono_compile_create_vars): Store variables representing the arguments
10858         into cfg->args.
10859
10860         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
10861
10862 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
10863
10864         * mini.c (mono_compile_get_interface_var): Remove this unused function.
10865
10866         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
10867
10868         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
10869         opcodes for some opcodes.
10870
10871         * mini.h *.brg *.c: Use the new opcodes.
10872
10873 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10874
10875         * mini.h: Bumped aot revision.
10876
10877         * inssel.brg: modified code generation of type checks for interfaces
10878         to use the new "MonoClass.interface_bitmap" instead of the old
10879         "MonoClass.interface_offsets".
10880
10881 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10882
10883         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
10884
10885 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
10886
10887         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
10888         64 bit platforms.
10889
10890 2007-04-27  Neale Ferguson <neale@sinenomine.net>
10891
10892         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
10893
10894 2007-04-27  Wade Berrier  <wberrier@novell.com>
10895
10896         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
10897         mini.h) to fix build.
10898
10899 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10900
10901         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
10902         
10903         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
10904         causes the corlib unit tests to fail.
10905
10906 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10907
10908         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
10909
10910         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
10911
10912         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
10913         opcodes to the comparison relations.
10914
10915         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
10916         opcodes to their types.
10917         
10918         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
10919
10920         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
10921         it in cfg->arch.cinfo.
10922
10923         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
10924
10925         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
10926         cfg->cil_offset_to_bb.
10927
10928 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10929
10930         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
10931         created becase of initlocals.
10932
10933 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
10934
10935         * mini-alpha.c cpu-alpha.md: More alpha port work from 
10936         Sergey Tikhonov <tsv@solvo.ru>.
10937
10938 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
10939
10940         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
10941
10942 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
10943
10944         * cpu-s390.md (break): Correct the length of break instruction.
10945
10946 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10947
10948         * mini.c: fix a couple of soft-float issues and comments.
10949
10950 2007-04-15  Miguel de Icaza  <miguel@novell.com>
10951
10952         * trace.c (is_filenamechar): - is also a filename char.
10953
10954 2007-04-15  Neale Ferguson <neale@sinenomine.net>
10955
10956         * mini-s390.c: Correct checking for enum type in return value processing.
10957
10958 2007-04-14  Raja R Harinath  <rharinath@novell.com>
10959
10960         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
10961         (version.h): Makefile is in the build directory.
10962
10963 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
10964
10965         * mini-amd64.h: fix for assertion failure on Solaris/amd64
10966
10967 2007-04-11  Martin Baulig  <martin@ximian.com>
10968
10969         * mini.c (can_access_member): Fix handling of generic classes;
10970         fixes #81259.
10971
10972 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
10973
10974         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
10975
10976 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
10977
10978         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
10979
10980 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10981
10982         * mini-codegen.c: make sure the right spill amount is
10983         used for fp or integer registers (fixes the float_sub_spill() on ppc).
10984
10985 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
10986
10987         * mini-ppc.c: fixes for the fp_branch_nan test.
10988
10989 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
10990
10991         * basic.cs: Comment out new test which still fails on ia64.
10992
10993 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10994
10995         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
10996
10997 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10998
10999         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
11000
11001 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
11002
11003         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
11004         on 64 bit machines. Fixes part of #80738.
11005
11006         * basic.cs: Add regression test.
11007
11008 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11009
11010         * inssel.brg basic.cs: Revert previous change to fix build.
11011
11012         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
11013         platforms.
11014         
11015         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
11016
11017         * basic.cs: Add new regression test.
11018
11019 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11020
11021         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
11022         many arguments.
11023
11024 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11025
11026         * cpu-s390x.md: Correct length of break instruction.
11027
11028 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11029
11030         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
11031         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
11032
11033 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
11034
11035         * *.c: Begin WIN64 port.
11036         * mini.c:  Use correct register in profiler.
11037         * mini-amd64.c: No inline assembly on Win64.
11038         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
11039         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
11040         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
11041         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
11042         mono_arch_ip_from_context for Win64.
11043         
11044         Contributed under MIT/X11 license.
11045
11046 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
11047
11048         * exceptions-amd64.c (seh_handler): Ditto.
11049
11050         * exceptions-x86.c (seh_handler): Fix a memory leak.
11051
11052 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
11053
11054         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
11055         mini-s390x.c: fixed peephole optimizations to deal
11056         correctly with 1 and 2 byte reload avoidance.
11057
11058 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11059
11060         * cpu-s390.md, cpu-s390x.md: update localloc length.
11061
11062 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11063
11064         * cpu-g4.md: added missing descriptions.
11065
11066 2007-03-14  Miguel de Icaza  <miguel@novell.com>
11067
11068         *  Makefile.am: Add support so the tail tests are not executed on
11069         PowerPC as that is a known limitation of the PowerPC port.
11070
11071 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11072
11073         * runmdesc.bat:  Move to msvc directory.
11074         
11075 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11076
11077         * runmdesc.bat:  Run executable that was produced by the current
11078         target and sent via an argument.
11079         
11080 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
11081
11082         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
11083         #81102.
11084
11085         * generics.2.cs: Add regression test.
11086
11087 2007-03-09  Wade berrier  <wberrier@novell.com>
11088
11089         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
11090
11091 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
11092
11093         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
11094         AOT code depends on this.
11095
11096 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11097
11098         * mini.c: more precise tracking of types in the eval stack
11099         (part of fix for bug #81044).
11100
11101 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
11102
11103         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
11104
11105         * aot-compiler.c (encode_patch): Remove an obsolete comment.
11106
11107 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11108
11109         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
11110
11111         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
11112
11113 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
11114
11115         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
11116         a pointer on 64 bit systems. Fixes #80190.
11117
11118         * iltests.il: Add new regression test.
11119
11120 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11121
11122         * mini.c: inline a constant for Environment.IsRunningOnWindows.
11123
11124 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
11125
11126         * trace.c: Remove an erroneous alignemnt check when tracing.
11127           Fixes --trace on OSX86.
11128
11129 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11130
11131         * mini-$(arch).h: initialize SP in context for all the archs.
11132
11133 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
11134
11135         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
11136         regressions in the thread tests.
11137
11138 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
11139
11140         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
11141         - fixed implementation of LOCALLOC opcode
11142         - implemented non-un compare for floats
11143         - code cleanup
11144         - implementation of FDIV and CKFINITE opcodes
11145         - fixes for latest mono updates
11146         - additional arch opcodes
11147
11148 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11149
11150         * Makefile.am: simplify and merge rules for cross-compilation.
11151
11152 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
11153
11154         * local-propagation.c: Actually *apply* the fix for bug 80591...
11155
11156 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11157
11158         * mini-exceptions.c: backuot part of the last change
11159         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
11160
11161 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
11162         * inssel.brg: Fix bug 59286.
11163
11164
11165 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
11166
11167         * mini-exceptions.c: patch from Zoltan to correctly check for
11168         stack boundaries (using the stack register, not the frame register),
11169         fixes bugs #80724, #79717.
11170
11171 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
11172
11173         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
11174         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
11175
11176         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
11177         presence of frame pointer elimination.
11178
11179 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
11180         
11181         * mini-x86.h: NetBSD UCONTEX_REG defines.
11182
11183 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * inssel-amd64.brg: Fix amd64 build.
11186
11187 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
11188
11189         * mini.h: remove extern to workaround what looks likes gcc bug 26905
11190         on amd64.
11191
11192 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
11193
11194         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
11195         ends.
11196
11197         * mini-<ARCH>.c: Use mono_is_regsize_var ().
11198
11199 2007-01-30 Mark Mason <mason@broadcom.com>
11200
11201            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
11202            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
11203            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
11204            beginning support for CEE_JMP [not quite working yet]
11205            * tramp-mips.c: LMF handling now works
11206         
11207 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
11208
11209         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
11210
11211         * mini.h (NULLIFY_INS): New macro.
11212
11213 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11214
11215         * mini.c: statistical profiler fix for windows, patch
11216         from Tor Lillqvist (tml@novell.com).
11217
11218 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
11219         * local-propagation.c: Fix bug 80591.
11220
11221 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11222
11223         * Makefile.am: put back the --export-dynamic option as with
11224         the previous gmodule flags (thanks to Robert Jordan).
11225
11226 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
11227
11228         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
11229
11230         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
11231         simplify and speed up the local register allocator. Also rename some fields
11232         like iassign->vassign.
11233         
11234         * regalloc.c: Remove some functions which are no longer used since their
11235         inlined version is in mini-codegen.c.
11236         
11237         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
11238
11239         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
11240
11241 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
11242
11243         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
11244         narrowing. Fixes #80622.
11245
11246         * iltests.il: Add new regresssion test. 
11247
11248 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11249
11250         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
11251         debug-debugger.c, debug-debugger.h: warning fixes.
11252         * driver.c: updated copyright year and made it fit in one line.
11253
11254 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
11255
11256         * aot-runtime.c: updated to use mono-dl instead of gmodule.
11257
11258 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
11259
11260         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
11261
11262         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
11263
11264         * iltests.il: Add new test for bug #80507.
11265
11266 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11267
11268         * mini-arm.h: use soft-float also on vfp for now.
11269
11270 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11271
11272         * mini.c: fix some more soft-float issues.
11273
11274 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11275
11276         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
11277
11278 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
11279         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
11280         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
11281         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
11282
11283 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
11284
11285         * mini-arm.c: typo fix.
11286
11287 2007-01-23  Neale Ferguson <neale@sinenomine.net>
11288
11289         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
11290
11291 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
11292
11293         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
11294         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
11295
11296         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
11297
11298         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
11299
11300         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
11301         
11302         * inssel.brg: Fix a warning.
11303
11304         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
11305
11306         * abcremoval.c ssa.c ssapre.c: Update after this change.
11307         
11308         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
11309
11310         * dominators.c (df_set): Use mono_bitset_union_fast.    
11311
11312 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11313
11314         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
11315         mini-codegen.c: reduce relocations and memory usage for the cpu
11316         description.
11317
11318 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
11321
11322         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
11323         to reduce their size.
11324
11325 2007-01-19 Mark Mason <mason@broadcom.com>
11326
11327         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
11328         * mini-mips.c: more configuration macros, support long conditional branches, additional
11329         asserts, fix epilog instrumentation.
11330         * mini-mips.h: use standard stack walk
11331         * cpu-mips.md: increase size of div, rem and conditional branches
11332         
11333 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
11334
11335         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
11336         to cpu spec data.
11337
11338 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
11339
11340         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
11341         (compile_method): Ditto.
11342
11343         * aot-runtime.c (decode_klass_info): Ditto.
11344
11345         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
11346         needed by the code generated by inssel.brg. Also fix a warning.
11347
11348 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
11349
11350         * mini.c: deal with enums that become genericinsts by
11351         being nested in a generic class (bug #79956).
11352
11353 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11354
11355         * mini.c: match the generic definition to check for
11356         private access with generic types (bug #78431).
11357
11358 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11359
11360         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
11361         to make life easier for people cross-compiling that insist on not
11362         using scratchbox.
11363
11364 2007-01-17 Mark Mason <mason@broadcom.com>
11365
11366         * inssel-long.brg: patch to deal with mips missing flags
11367         * inssel-long32-mips.brg: implement overflow checks
11368         * insset-mips.brg: implement overflow checks
11369         * mini-mips.h: implement conditional exception handling
11370         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
11371           Remove unused code, minor cleanups.
11372         * exceptions-mips.c: minor cleanups
11373         * mini-ops.h: add mips conditional exception ops
11374         * cpu-mips.md: add mips conditional exception ops
11375
11376         
11377 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11378
11379         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
11380         to deal with mips missing of flags.
11381
11382 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11383
11384         * exceptions-ppc.c: execute fault handlers.
11385
11386 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
11387
11388         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
11389
11390 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11391
11392         * mini.c: handle also floating point values in initialize_array.
11393
11394 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11395
11396         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
11397         array initialization and make it conditional on the intrins option.
11398
11399 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11400
11401         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
11402         relocations and put the patch info names close to the enum definition.
11403
11404 2007-01-15 Mark Mason <mason@broadcom.com>
11405
11406         * basic.cs, exceptions.cs: break up large tests to increase debugability.
11407
11408 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11409
11410         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
11411
11412 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11413
11414         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
11415
11416 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11417
11418         * Makefile.am: distribute the mips sources.
11419
11420 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11421
11422         * mini-codegen.h: handle bug #80489 here, by excluding ecx
11423         directly.
11424
11425 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
11426
11427         * cpu-x86.md: back out for now as this triggers other regressions.
11428
11429 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11430
11431         * cpu-x86.md: force src1 and dest regpair for long shift instructions
11432         to eax:edx, so ecx can't get allocated to them (bug #80489).
11433
11434 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
11435
11436         * mini.c, mini-exceptions.c: enabled running fault handlers
11437         (bug #80469).
11438
11439 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11440
11441         * driver.c: If nothing fail, do not use the string "failed",
11442         because it makes it very annoying to view test result logs on the
11443         web. 
11444
11445 2006-12-30  Miguel de Icaza  <miguel@novell.com>
11446
11447         * debug-debugger.c (mono_debugger_main): Rename "main" to
11448         "main_method" to prevent a warning.
11449
11450         Remove a warning for unused field.
11451
11452 2006-12-28  Martin Baulig  <martin@ximian.com>
11453
11454         * debug-debugger.c
11455         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
11456
11457 2006-12-22  Martin Baulig  <martin@ximian.com>
11458
11459         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
11460         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
11461         seperate `.mdb_debug_info' section, so we can access it from the
11462         debugger even if the binary is stripped.
11463
11464         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
11465         from the `.mdb_debug_info' here to prevent the linker from
11466         removing that section.
11467
11468         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
11469         mdb-debug-info64.s.
11470
11471 2006-12-19  Robert Jordan  <robertj@gmx.net>
11472
11473         * mini-x86: enable the code to return small structures in
11474         registers for FreeBSD as well. Fixes bug #80278.
11475         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
11476
11477 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11478
11479         * mini-x86.c: align the stack when calling the profiler
11480         function instrumenting the prolog (on OSX).
11481
11482 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11483
11484         * mini.c: emit a break opcode where Debugger.Break () is called.
11485
11486 2006-12-13  Miguel de Icaza  <miguel@novell.com>
11487
11488         * mini.c (mono_method_to_ir): Provide useful information on this
11489         assert, to prevent others from debugging like I did.
11490
11491 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11492
11493         * mini.c: enable code which was incorrectly commented
11494         (bug #80235).
11495
11496 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11497
11498         * mini-x86.c: enable on OSX, too, the code to return small
11499         structures in registers.
11500
11501 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11502
11503         * mini-x86.c: remove the use of the dynamic code manager here, too.
11504
11505 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11506
11507         * mini.h, debug-debugger.c, tramp-*.c: fixed 
11508         mono_debugger_create_notification_function() to use
11509         mono_global_codeman_reserve () instead of a dynamic code manager.
11510
11511 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11512
11513         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
11514         ves_array_element_address() jit icall and use a generated
11515         managed method instead (which is about 4 times faster for a rank 3
11516         array access).
11517
11518 2006-11-29  Mark Mason  <mason@broadcom.com>
11519
11520         * basic-calls.cs: additional tests for passing
11521         structures as function arguments.
11522
11523 2006-11-29  Mark Mason  <mason@broadcom.com>
11524
11525         * mini-mips.h: disable custom exception handling
11526         * mini-mips.c: throw/rethrow should use jalr to call
11527         exception stubs.  Fixed bug with passing structures
11528         by value. More support for tracing floating point
11529         functions.
11530
11531 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11532
11533         * mini.c: fixed typo in the soft-float ldind.r4 handling
11534         (bug #80086).
11535
11536 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11537
11538         * mini.c, mini.h, driver.c: added --runtime command line
11539         option to select a different runtime than the autodetected one.
11540         * jit.h: added API for embedders to initialize with a specific
11541         runtime version.
11542
11543 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11544
11545         * mini.c: handle also boxing of r4 values (bug #80024).
11546
11547 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11548
11549         * mini-ppc.c: force indirect calls until we reserve
11550         enough address space for all the generated code.
11551
11552 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
11553
11554         * exceptions-arm.c: workaround bugs in the libc definition
11555         of struct ucontext.
11556
11557 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11558
11559         * inssel.brg: fixes from me and Mark Mason.
11560
11561 2006-11-23  Dick Porter  <dick@ximian.com>
11562
11563         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
11564         semaphore display now we've fixed the initial value
11565
11566 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11567
11568         * inssel.brg: partially revert the last change to fix the build.
11569
11570 2006-11-21  Mark Mason  <mason@broadcom.com>
11571
11572         * inssel.brg: Add and use compare-and-branch macros to support
11573         architectures that do not have condition code registers (ie. MIPS).
11574         * *-mips.{c,brg,md}: Fix copyright statements
11575
11576 2006-11-20  Mark Mason  <mason@broadcom.com>
11577
11578         * Makefile.am: remove mini-codegen.c from list of MIPS sources
11579         * mini.c: Allow GET_CONTEXT to be specified by the arch port
11580         * mini.h: Added declaration for mono_print_ins()
11581         * mini-codegen.c: added ins_spec initializer for MIPS
11582         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
11583         vreg to be virtual and hreg to be non-virtual.
11584         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
11585         is not yet working/implemented correctly.
11586         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
11587         non-static, fixup calls to print_ins() from other parts in the file.
11588
11589 2006-11-20  Mark Mason  <mason@broadcom.com>
11590
11591         * basic-calls.cs: added tests for passing structures as arguments
11592         to calls.
11593
11594 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11595
11596         * inssel-long32.brg: optimize signed division by power of two.
11597
11598 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11599
11600         * mini-arm.c: added support for interworking with thumb code
11601         (mono must be still be built using the ARM instruction encoding).
11602
11603 2006-11-19  Miguel de Icaza  <miguel@novell.com>
11604
11605         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
11606         verifier has different rules for it.   Fixes a few verifier issues
11607         in the test suite.
11608
11609         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
11610         at the end, so people know what happened.
11611
11612 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11613
11614         * brach-opts.c: in optimize_exception_target() make sure we
11615         are in a catch clause (fixes bug #79871).
11616
11617 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11618
11619         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
11620         more soft-float support fixes.
11621
11622 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
11623
11624         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
11625         that are passed half on the stack and half in registers.
11626
11627 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
11628
11629         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
11630         more mips integration work from Mark E Mason 
11631         <mark.e.mason@broadcom.com>.
11632
11633 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11634
11635         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
11636         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
11637         tramp-mips.c: added sources for the mips port, not
11638         integrated in the build yet. Contributed by
11639         Mark E Mason <mark.e.mason@broadcom.com>.
11640
11641 2006-11-14  Neale Ferguson <neale@sinenomine.net>
11642
11643         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
11644
11645 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11646
11647         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
11648         put the soft-float rules in its own file since it seems to
11649         break s390 compilation.
11650
11651 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11652
11653         * mini-arm.c: fixed wrnings.
11654
11655 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
11656
11657         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
11658         inssel-arm.brg: ARM support for soft-float.
11659
11660 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11661
11662         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
11663         loads and stores of 32 bit fp values.
11664
11665 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
11666
11667         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
11668
11669         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
11670         works. Fixes #79852 and #79463.
11671
11672 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11673
11674         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
11675         more soft-float support WIP and fixes.
11676
11677 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
11678
11679         * mini-arm.c: some VFP updates.
11680
11681 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11682
11683         * mini-exceptions.c: 0 is a valid local var offset in some
11684         architectures, don't assert (bug #78508).
11685
11686 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
11687
11688         * exceptions-arm.c: fixed off by one error in stack walk code.
11689
11690 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
11691
11692         * mini.h, mini.c: more precise tracking of type load exceptions.
11693
11694 2006-11-03  Robert Jordan  <robertj@gmx.net>
11695
11696         * Makefile.am: [WIN32] Add monow.exe target.
11697         * driver.c: [WIN32] Don't detach the console when debugging.
11698         Fixes bug #79797.
11699         
11700 2006-10-30  Miguel de Icaza  <miguel@novell.com>
11701
11702         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
11703
11704 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11705
11706         * aot-compiler.c (emit_method_info): Add a case missed earlier.
11707
11708         * driver.c (mini_regression): Fix --regression with AOT.
11709
11710         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
11711
11712 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
11713
11714         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
11715
11716         * mini-sparc.h: Don't use sigaction on sparc/linux.
11717
11718         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
11719
11720         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
11721
11722         * mini-exceptions.c: Add proper include files for getpid ().
11723
11724 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
11725
11726         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
11727         address instead of a MonoJitInfo* to avoid decoding the exception info for the
11728         method.
11729
11730         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
11731         name cache to reduce its size.
11732
11733         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
11734
11735 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11736
11737         * mini-x86.c: Save/restore the current LMF structure more efficiently using
11738         the mono_lmf TLS variable.
11739
11740         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
11741         trampoline lmf frames.  
11742
11743         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
11744
11745 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
11746
11747         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
11748         the mono_lmf TLS variable.
11749
11750         * mini-exceptions.c: Access the LMF structure through accessors.
11751
11752         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
11753         variable instead of in jit_tls->lmf.
11754
11755         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
11756         
11757         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
11758         trampoline lmf frames.
11759
11760         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
11761
11762 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
11763
11764        * mini.c trace.c mini-x86.c: Revert these too.
11765         
11766        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
11767        signature change.
11768
11769 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
11770
11771         * genmdesc.c: removed now dead code.
11772
11773 2006-10-09  Robert Jordan <robertj@gmx.net>
11774
11775         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
11776
11777 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11778
11779         * mini.h: do not leave gaps in the opcode values.
11780
11781 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
11782
11783         * jit-icalls.h: flag functions as internal here, too.
11784
11785 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
11786
11787         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
11788         functions with the internal attribute.
11789
11790 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
11791
11792         * aot-compiler.c: fclose the file descriptor in the profile read loop.
11793
11794 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
11795
11796         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
11797         for soft-float.
11798
11799 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
11800
11801         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
11802         tail calls as on other platforms.
11803
11804         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
11805
11806         * iltests.il: Add a few tailcall tests.
11807
11808 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11809
11810         * driver.c: fix loop for old compilers (bug #79521).
11811
11812 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
11813
11814         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
11815
11816         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
11817
11818         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
11819         metadata without any code.
11820
11821         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
11822         more precise debugging information using gdb.
11823
11824 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
11825
11826         * inssel-ia64.brg: Make the helper methods static.
11827
11828 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11829
11830         * inssel-x86.brg: make the helper methods static.
11831
11832 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
11833
11834         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
11835
11836 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11837
11838         * mini.c: updates for monoburg changes.
11839         * inssel.brg: make a few helper functions static as they should.
11840
11841 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
11842
11843         * Makefile.am: Move mini-codegen.c to common_sources.
11844
11845 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11846
11847         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
11848         instructions.
11849         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
11850         mini-ppc.h: port to use the common local register allocator.
11851
11852 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11853
11854         * mini.h: Remove the comment too then.
11855
11856 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
11857
11858         * mini.h: put back backend.data which is to be used shortly and
11859         doesn't increase the size of MonoInst. If any 64 bit arch aligned
11860         pointers on 4 byte boundaries it'd have much bigger issues running
11861         and you can ifdef it out anyway.
11862
11863 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11864
11865         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
11866         MonoInst size by 4 bytes on 64 bit machines.
11867
11868 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11869
11870         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
11871         replacement with more meaningful field names. Arch maintainers, please
11872         check the assigned names are good enough for your arch.
11873
11874 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11875
11876         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
11877         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
11878
11879 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
11880
11881         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
11882         relocations and memory requirements, put the optimization flags
11883         definitions in their own file.
11884
11885 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
11886
11887         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
11888
11889         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
11890
11891 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
11892
11893         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
11894
11895 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
11896
11897         * inssel.brg: use the correct function to get the size of an item
11898         in an array, given an element class.
11899         * aot-compiler.c: do not access class->class_size directly.
11900
11901 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11902
11903         * mini.h, debug-mini.c: added a debugging function to print
11904         info about local variables and arguments in a jitted method.
11905
11906 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
11907
11908         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11909
11910         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
11911
11912 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11913
11914         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
11915         inner and outer loops when passing vtypes.
11916
11917 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
11918
11919         * mini-ppc.c: take into account the cpu errata for cache flushing
11920         which caused some random errors (bug #79381).
11921
11922 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11923
11924         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
11925         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
11926
11927 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
11928
11929         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
11930         loaded.
11931
11932         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
11933         freebsd ports tree.
11934
11935         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
11936         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
11937
11938         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
11939         displacement.
11940
11941 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
11942
11943         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
11944
11945 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
11946
11947         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
11948         macro does not have to be changed during debugging.
11949
11950         * 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>.
11951
11952         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
11953
11954         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
11955         
11956         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
11957         MONO_ARCH_NO_EMULATE_MUL is defined.
11958
11959         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
11960
11961         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
11962
11963         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
11964
11965         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
11966         
11967 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
11968
11969         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
11970         stuff to mini-exceptions.c where it is used.
11971
11972         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
11973         setup code, the real one is in mini-exceptions.c.
11974
11975         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
11976         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
11977         some changes from the freebsd ports tree.
11978
11979         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
11980         constants.
11981         
11982         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
11983
11984 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
11985
11986         * mini.c: on Linux, check for /proc to be mounted
11987         (bug# 79351, novell bug#201204).
11988
11989 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11990
11991         * mini.c: handle cases where pthread_attr_getstack() behaves
11992         incorrectly (bug #78096).
11993
11994 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
11995
11996         * mini-arm.c: support larger stack frames (bug #79272).
11997
11998 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
11999
12000         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
12001
12002         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
12003         tokens.
12004
12005         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
12006         mono_class_from_name () to find a class from its name.
12007
12008         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
12009
12010 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
12011
12012         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
12013
12014 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
12015
12016         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
12017
12018 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12019
12020         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
12021         callinfo->trampoline.
12022
12023         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
12024         fixes #79271.
12025         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
12026         future.
12027
12028 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12029
12030         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
12031
12032 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
12033
12034         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
12035         stats.method_trampolines, it is already done by the generic trampoline code.
12036
12037         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
12038         
12039 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12040
12041         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
12042
12043         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
12044
12045         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
12046
12047         * mini.c (print_jit_stats): Print mscorlib mempool size too.
12048         
12049         * mini.c (print_jit_stats): Print new stats.
12050
12051         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12052
12053 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12054
12055         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
12056         Address on two dimensional arrays. Fixes #78729.
12057
12058         * mini.h (MonoCompile): Add a 'skip_visibility' field.
12059
12060         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
12061         a method.
12062
12063         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
12064
12065         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
12066         #79130.
12067         
12068         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
12069         a race condition.
12070         (mini_get_ldelema_ins): Ditto.
12071
12072 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
12073
12074         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
12075         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
12076         Fixes #79213.
12077
12078 2006-08-29 Neale Ferguson <neale@sinenomine.net>
12079
12080         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
12081         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
12082
12083         * exceptions-s390x.c: Cosmetic change.
12084
12085         * tramp-s390.c: Fix warning.
12086
12087         * cpu-s390.md: Correct length of mul_imm.
12088
12089 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
12090
12091         * aot-compiler.c: added binary writer with ELF backend
12092         implementation (only on Linux/x86 for now).
12093
12094 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12095
12096         * Makefile.am: Don't run net 2.0 AOT tests.
12097
12098         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
12099         (mono_compile_assembly): Skip net 2.0 assemblies as well.
12100
12101         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
12102
12103 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12104
12105         * aot-compiler.c: simplified and refactored the asm-writing code
12106         to allow different backends.
12107
12108 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12109
12110         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12111
12112         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
12113         little. Share patches of type TYPE_FROM_HANDLE as well.
12114
12115         * mini.c (mono_patch_info_equal): New helper function.
12116         (mono_patch_info_hash): Ditto.
12117
12118         * aot-compiler.c (emit_method_code): Fix s390 build.
12119
12120         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
12121         is not handled because it is stored as a flag and not as a type ctor. Fixes
12122         #79016.
12123
12124 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12125
12126         * aot-compiler.c: Fix computation of GOT slot statistics.
12127         
12128         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
12129         Also remove support for not PIC AOT.
12130
12131         * mini.h: Bump AOT file format version.
12132
12133         * objects.cs: Add a test for #78990.
12134
12135         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
12136         (peter.dettman@iinet.net.au). Fixes #79087.
12137
12138         * basic-long.cs: Add a test for the above.
12139
12140 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
12141
12142         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
12143         
12144         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
12145         code somewhat.
12146
12147 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
12148
12149         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
12150         exceptions.
12151
12152 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12153
12154         * mini.c: Don't verify COM proxy invoke calls
12155         
12156
12157 2006-08-10  Dick Porter  <dick@ximian.com>
12158
12159         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
12160         which process is holding semaphores locked.
12161
12162 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
12163
12164         * mini-ia64.c mini-amd64.c: Fix #79027.
12165
12166         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
12167
12168         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
12169
12170         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
12171         implicit arguments in a vararg call. Fixes #79027.
12172
12173 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
12174
12175         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
12176         (mono_get_array_new_va_signature): Ditto.
12177
12178 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
12179
12180         * aot-runtime.c: Call init_plt lazily.
12181
12182         * inssel-long.brg: Fix unsigned long->int conversion.
12183
12184         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
12185
12186         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
12187         that most data is now in the .rss/.data section.
12188
12189 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
12190
12191         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
12192
12193         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
12194
12195         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
12196
12197         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
12198
12199         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
12200         virtual call. Fixes #79010.
12201
12202         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
12203         and use the result as the this argument in the real call.
12204
12205         * generics.2.cs: Add a new test for #79010.
12206         
12207 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
12208
12209         * mini-x86.c: Fix a warning.
12210
12211         * aot-compiler.c: Add a bunch of statistics.
12212
12213         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
12214
12215 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
12216
12217         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
12218
12219 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12220
12221         * 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>.
12222
12223 2006-07-13  Miguel de Icaza  <miguel@novell.com>
12224
12225         * mini.c (mono_method_to_ir): Obtain the original method in the
12226         CIL stream and use this to perform validation.
12227
12228         Fixed: #78816
12229
12230 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
12231
12232         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
12233         (mono_arch_call_opcode): Ditto.
12234
12235         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
12236         #78826.
12237
12238         * mini.c (mono_patch_info_dup_mp): New helper function.
12239         
12240         * aot-compiler.c (compile_method): Fix some of the memory allocated during
12241         compilation. Fixes #78827.
12242
12243 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
12244
12245         * declsec.c: Use original security informations for
12246           MONO_WRAPPER_MANAGED_TO_MANAGED.
12247
12248 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12249
12250         * mini.c: Allow Com Interop methods/classes and
12251         don't verify COM wrapper calls
12252         
12253
12254 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
12255
12256         * inssel-long32.brg: Fix long->i4 checked conversion.
12257
12258         * exceptions.cs: Add a test for the above.
12259
12260 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
12263
12264         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
12265         leaks.
12266
12267         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
12268         #78775.
12269
12270 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
12271
12272         * mini.c: Fix solaris/x86 exception handling.
12273
12274         * Makefile.am: Get rid of $(ICU_LIBS).
12275
12276 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
12277
12278         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
12279         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
12280         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
12281
12282         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
12283
12284         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
12285         this function causes a SIGSEGV.
12286
12287 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
12288
12289         * mini.c: Remove unused solaris/x86 includes.
12290
12291 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12292
12293         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
12294
12295 2006-06-20  Jb Evain  <jbevain@gmail.com>
12296
12297         * cpu-g4.md: fix max length of start_handler instruction.
12298
12299 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
12300         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
12301
12302 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
12303         * ssa.c: Fixed bug 78653 for SSA based deadce.
12304         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
12305         MonoInst.flags, used in SSA based deadce.
12306         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
12307         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
12308
12309 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12310
12311         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
12312         it can end up using non executable memory on ppc64 systems
12313         running ppc32 userspace (fix from Johannes Berg).
12314
12315 2006-06-14  Dick Porter  <dick@ximian.com>
12316
12317         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
12318         4.1.1
12319
12320 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
12321         * mini.c: Made so that inline is locally disabled if it would
12322         trigger a .cctor, because too many apps depend on this behavior
12323         (which seems to be also the one of the MS CLR).
12324
12325 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
12326
12327         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
12328         No idea why this worked before.
12329
12330         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
12331         which branch to outer exception clauses since they could skip the
12332         inner finally clauses. Fixes #78633.
12333
12334         * exceptions.cs: Add a test for the above.
12335
12336         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
12337         Fixes #78629.
12338
12339         * iltests.il: Add a test for the above.
12340
12341 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
12342
12343         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
12344         after the end of a try bblock, to prevent asserts in mini_method_compile ().
12345
12346         * iltests.il: Add a test for the above.
12347
12348 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
12349
12350         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
12351         
12352         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
12353         methods as instrinsics.
12354
12355 2006-06-09  Wade Berrier <wberrier@novell.com>
12356
12357         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
12358         (simple-cee-ops.h ssapre-mini-ops.h)
12359
12360 2006-06-09  Neale Ferguson <neale@sinenomine.net>
12361
12362         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
12363         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
12364         instruction).
12365         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
12366         * cpu-s390x.md: Fix max. length values for a couple of instructions.
12367
12368 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12369
12370         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
12371
12372 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
12373
12374         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
12375         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
12376         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
12377         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
12378         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
12379         of opcodes, so that bug 78549 should not happen again.
12380         * ssapre.c: Updated to use the renamed files.
12381
12382 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12383
12384         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
12385         in OP_ATOMIC_EXCHANGE_I4.
12386
12387 2006-06-07  Wade Berrier <wberrier@novell.com>
12388
12389         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
12390         in mono_debugger_create_notification_function)
12391
12392 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
12393
12394         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
12395         
12396         * mini.c (type_from_stack_type): Disable some changes which do not
12397         seem to work.
12398
12399         * driver.c: Reenable opts.
12400
12401         * mini.h (MonoStackSlot): New structure to keep track of the verification state
12402         of the evaluation stack.
12403         
12404         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
12405         evaluation stack trace at entry to the bblock.
12406
12407         * mini.c (merge_stacks): New function to perform verification of stack merges.
12408         Turned off by default.
12409
12410         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
12411         STACK_MP.
12412         
12413 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
12414
12415         * local-propagation.c: Fixed bug 78549.
12416
12417 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
12418
12419         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
12420
12421 2006-06-02  Miguel de Icaza  <miguel@novell.com>
12422
12423         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
12424         tramp-arm.c, tramp-ia64.c
12425         (mono_debugger_create_notification_function): Update signature to
12426         new signature and use new protocol for creating the notification
12427         function.  
12428
12429         Should fix the build.
12430
12431 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
12432
12433         * exceptions-ppc.c (mono_jit_walk_stack)
12434         (ves_icall_get_frame_info): Fix the build
12435
12436 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12437
12438         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
12439
12440 2006-05-31  Raja R Harinath  <rharinath@novell.com>
12441
12442         * il2tests.2.il: New file for generics CIL tests.  Add test for
12443         #78019.
12444         * Makefile.am: Update.
12445
12446         Fix #78019
12447         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
12448         to nullable types.
12449
12450 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
12451
12452         * aliasing.c: Fixed bug 78311.
12453
12454 2006-05-29  Martin Baulig  <martin@ximian.com>
12455
12456         * mini-exceptions.c (mono_find_jit_info): When computing the
12457         native offset, check whether we're actually inside the method's
12458         code; call mono_debug_print_stack_frame() to format the frame.
12459         (ves_icall_System_Exception_get_trace): Call
12460         mono_debug_print_stack_frame() to format the stack frame.
12461         (ves_icall_get_trace): Update to the new debugging API.
12462         (mono_jit_walk_stack_from_ctx): Likewise.
12463         (ves_icall_get_frame_info): Likewise.
12464
12465         * mini.c (get_method_from_ip): Use the new debugging API.
12466         (mono_print_method_from_ip): Likewise.
12467
12468         * exceptions-ppc.c
12469         (mono_jit_walk_stack): Use the new debugging API.
12470         (ves_icall_get_frame_info): Likewise.   
12471
12472 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12473
12474         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
12475
12476 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
12477
12478         * mini.c: Added "limitator" to inline for debugging.
12479
12480 2006-05-24  Martin Baulig  <martin@ximian.com>
12481
12482         * debug-debugger.c (mono_debugger_init): Create a private,
12483         malloc()-based code manager for the notification function and
12484         intentionally leak it on exit.  This fixes the crash-on-exit race
12485         condition.
12486
12487         * tramp-amd64.c
12488         (mono_debugger_create_notification_function): Added
12489         `MonoCodeManager *' argument.
12490
12491         * tramp-x86.c
12492         (mono_debugger_create_notification_function): Added
12493         `MonoCodeManager *' argument.
12494
12495 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
12496
12497         * aliasing.c: Fixed 64 bit issue.
12498         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12499         default since all known bugs are fixed (one more time!).
12500
12501 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12502
12503         * mini.c: write barrier support.
12504
12505 2006-05-23  Martin Baulig  <martin@ximian.com>
12506
12507         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
12508         check at the top of the file.
12509
12510 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12511
12512         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
12513         reverting changes without reason and without changelog entries.
12514
12515 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12516
12517         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
12518         to a few opcodes. Fixes #78439.
12519
12520         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
12521         consistency with other archs.
12522
12523         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
12524
12525 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12526
12527         * debug-debugger.c: fix the build.
12528
12529 2006-05-17  Martin Baulig  <martin@ximian.com>
12530
12531         * debug-debugger.c
12532         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
12533         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
12534         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
12535         (debugger_attach): Call GC_mono_debugger_add_all_threads().
12536
12537 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
12538
12539         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
12540
12541 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
12542
12543         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
12544         MONO_TYPE_GENERICINST.
12545         
12546         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
12547         MONO_TYPE_GENERICINST.
12548
12549 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
12550
12551         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
12552         #78325.
12553
12554 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
12555
12556         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
12557         mempool.
12558         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
12559
12560 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
12561
12562         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
12563         mono_trace_cleanup ().
12564
12565         * iltests.il: Fix problem with the newly added test.
12566
12567         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
12568         due to register constraints, free up the previous hreg. Fixes #78314.
12569
12570         * iltests.il: Add new test for #78314.  
12571
12572         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
12573         Interlocked.Add. Fixes #78312.
12574
12575         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
12576         
12577 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
12578
12579         * inssel.brg (mini_emit_virtual_call): Fix a warning.
12580
12581 2006-05-05  Martin Baulig  <martin@ximian.com>
12582
12583         * debug-mini.c (mono_debug_open_block): New method.
12584
12585         * mini-amd64.c
12586         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12587         the beginning of each basic block.
12588
12589         * mini-x86.c
12590         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12591         the beginning of each basic block.
12592
12593 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12594
12595         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12596         default until I understand why they break the build on amd64.
12597
12598 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
12599
12600         * mini.c (mini_cleanup): Call mono_cleanup ().
12601
12602         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
12603         errors.
12604
12605 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12606
12607         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
12608         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12609         default since all known bugs are fixed, and I cannot reproduce bug
12610         77944... I'm asking Matt Hargett to test again after this commit.
12611
12612 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
12613
12614         * mini-codegen.c: Fixed typo that thrashed inline.
12615
12616 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
12617
12618         * dominators.c (compute_dominators): Avoid using a worklist since
12619         it is not correct in some cases. Instead, iterate over all bblocks as
12620         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
12621
12622 2006-04-28  Miguel de Icaza  <miguel@novell.com>
12623
12624         * mini.c (mono_jit_compile_method_inner): Use
12625         mono_prepare_exception_from_error that resets the value
12626         internally.
12627
12628 2006-04-27  Miguel de Icaza  <miguel@novell.com>
12629
12630         * mini.c: Move the mini_loader_error_to_exception to metadata. 
12631         
12632 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12633
12634         * aliasing.c: Fixed bug 78210.
12635
12636 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12637
12638         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12639         default until all their problems (or the ones they trigger) are fixed.
12640
12641 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
12642
12643         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
12644         
12645         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
12646         as loaded only after resolving patches since that could invoke the same method.
12647
12648         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
12649
12650         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
12651         functions.
12652
12653         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
12654         AOT loader.
12655
12656         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
12657         stack.
12658
12659         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
12660         made from AOT code through the PLT table.
12661
12662         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
12663         holding the plt offset when a call is made to the aot plt trampoline.
12664         
12665 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12666
12667         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
12668         amd64 AOT support.
12669
12670         * Makefile.am (common_sources): Fix build breakage.
12671
12672         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
12673         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
12674         intra-assembly calls if possible.
12675         
12676         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
12677
12678         * mini-trampolines.c: Handle PLT entries.
12679
12680         * mini.c: Avoid creating a GOT var for calls.
12681
12682         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
12683         from mscorlib code.
12684
12685         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
12686         from mscorlib code.
12687
12688         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
12689         AOT code.       
12690
12691         * mini.h: Bump AOT file format version.
12692         
12693         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
12694         covers more cases.
12695
12696 2006-04-25  Martin Baulig  <martin@ximian.com>
12697
12698         * driver.c: Disable copyprop, consprop and inline when running
12699         inside the debugger.
12700
12701 2006-04-25  Martin Baulig  <martin@ximian.com>
12702
12703         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
12704         with `get_current_thread' and added `detach'.
12705         (MonoDebuggerMetadataInfo): Added `thread_size',
12706         `thread_tid_offset', `thread_stack_ptr_offset' and
12707         `thread_end_stack_offset'.
12708
12709 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12710
12711         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
12712         aot-runtime.c.
12713
12714         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
12715         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
12716
12717         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
12718
12719         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
12720
12721         * aot.c: Add support for ADJUSTED_IID.  
12722
12723 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
12724
12725         * aot.c (emit_method_order): Don't align method_order_end.
12726
12727         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
12728         the interface ID changes.
12729
12730 2006-04-21  Dick Porter  <dick@ximian.com>
12731
12732         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
12733         cleaning up a thread.  Fixes the new part of bug 77470.
12734
12735 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
12736
12737         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
12738         to managed wrapper.
12739                      
12740 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
12741
12742         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
12743         
12744         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
12745         SIGSEGV. Fixes #78072.
12746
12747         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
12748         unregister our SIGABRT handler.
12749
12750 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
12751
12752         * mini.c: Disabled inline where it can alter the call stack in a
12753         way visible from managed code.
12754         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
12755         default.
12756
12757 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
12758
12759         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
12760         on other platforms. Fixes #78089.
12761
12762 2006-04-13  Martin Baulig  <martin@ximian.com>
12763
12764         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
12765         determine whether we're inside the debugger.
12766
12767         * debug-debugger.h
12768         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
12769
12770 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
12771
12772         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
12773         handler clauses. Fixes #78024.
12774
12775         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
12776         in the CALL_MEMBASE opcodes. Fixes #78088.
12777         (mono_arch_get_vcall_slot_addr): Ditto.
12778
12779 2006-04-10  Martin Baulig  <martin@ximian.com>
12780
12781         * debug-debugger.c: The thread handling code has now been moved
12782         into ../metadata/threads.c.
12783
12784 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12785
12786         * driver.c (mono_main): Fix --with-gc=none build.
12787
12788         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
12789         (mono_spillvar_offset_float): Ditto.
12790         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
12791         hreg, not when its !global, since on ia64, there is a third category: stacked
12792         registers.      
12793
12794 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
12795
12796         * mini.c: set MonoInst->klass for load field address and a few other
12797         places.
12798
12799 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12800
12801         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
12802
12803 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
12804
12805         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
12806         the branch opt changes.
12807
12808 2006-04-06  Dick Porter  <dick@ximian.com>
12809
12810         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
12811         
12812         * wapihandles.c (mini_wapi_seminfo): 
12813         * driver.c (mono_main): Add semaphore info option
12814
12815 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
12816
12817         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
12818         branch optimization changes. Fixes #78009.
12819
12820 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12821
12822         * mini.c: ignore accessibility of methods in managed->native wrappers.
12823
12824 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
12825
12826         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
12827         
12828         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
12829
12830 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
12831
12832         * mini.c: Modify the branch optimizations to preserve the invariant that
12833         the entries inside the in_bb and out_bb arrays are unique.
12834         (mono_unlink_bblock): Avoid creation of new arrays.
12835
12836 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
12837
12838         * mini.c (mono_unlink_bblock): Fix regression caused by previous
12839         change (#77992).
12840
12841 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
12842
12843         * mini.c (optimize_branches): Remove the "optimizations" in
12844         the cbranch1/cbranch2 -> branch cases which were causing several
12845         problems in the past. Fixes #77986.
12846
12847 2006-03-31  Chris Toshok  <toshok@ximian.com>
12848
12849         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
12850         default optimizations :(
12851
12852 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
12853
12854         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
12855         branch.
12856
12857 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
12858
12859         * local-propagation.c: Added comments to structs and removed
12860         "Mono" prefixes from local tree mover types.
12861
12862 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
12863
12864         * Makefile.am (arch_sources): Define this for each architecture so 
12865         libmono_la_SOURCES is defined in one place.
12866
12867 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
12868
12869         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
12870         from handles/.
12871
12872 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
12873
12874         * driver.c: print the GC name supplied by configure.
12875
12876 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
12877
12878         * local-propagation.c: Added tree mover, and moved here all the
12879         local propagation code from mini.c
12880         * mini.c: Added support for treeprop, and moved all the local
12881         propagation code to local-propagation.c
12882         * mini.h: Added support for treeprop
12883         * driver.c: Added support for treeprop, enabled consprop, copyprop,
12884         treeprop, inline and deadce by default
12885         * Makefile.am: Added local-propagation.c
12886
12887 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
12888
12889         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
12890
12891 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
12892
12893         * debug-debugger.c: make it compile without the Boehm GC.
12894
12895 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12896
12897         * mini.c: fixed issue with mismatch when an icall is registered
12898         with multiple names but same address.
12899
12900 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12901
12902         * declsec.c, mini-exceptions.c: use write barrier to set reference
12903         fields of managed objects.
12904
12905 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12906
12907         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
12908         (can_access_internals): Fix a warning.
12909
12910         * mini.c (print_method_from_ip): Rename this to 
12911         mono_print_method_from_ip so it gets exported.
12912
12913         * trace.c: Deal with strings inside StringBuilder's containing garbage
12914         and fix memory leaks. Fixes #77848.
12915
12916 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12917
12918         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
12919         fixes #77787.
12920
12921 2006-03-16 Neale Ferguson <neale@sinenomine.net>
12922         
12923         * mini-s390.c: Remove OP_X86_TEST_NULL.
12924
12925 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12926
12927         * mini.c: use the correct GetHashCode() for the moving collector.
12928
12929 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
12930
12931         * liveness.c: Regalloc spill cost tuning.
12932
12933 2006-03-15 Neale Ferguson <neale@sinenomine.net>
12934         
12935         * mini-s390x.h: Correct S390_LONG macro.
12936
12937         * mini-s390x.c: Cleanup unused code.
12938
12939 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
12940
12941         * jit-icalls.h: New file.
12942
12943         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
12944         icalls and include that instead of including jit-icalls.c.
12945
12946         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
12947         OP_X86 opcodes.
12948
12949 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
12950
12951         * mini.c: when checking for member accessibility, also check for
12952         friend assemblies and for explicit interface implementations.
12953
12954 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
12955
12956         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
12957
12958         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
12959
12960         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12961         common cases are done first.    
12962
12963         * mini-ops.h: Only define platform specific opcodes on the given platform.
12964
12965         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
12966         branch.
12967         
12968 2006-03-14  Martin Baulig  <martin@ximian.com>
12969
12970         Revert Paolo's change from r57348:
12971
12972         * mini.h: don't use gboolean for bitfields.
12973         * mini.c: verifier changes for fields and methods accessibility.
12974
12975 2006-03-13  Neale Ferguson <neale@sinenomine.net>
12976
12977         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
12978
12979         * mini-s390x.c: Fix conv_r_un.
12980
12981         * cpu-s390, cpu-s390x.md: Fix lengths.
12982
12983 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
12984
12985         * mini.c: nested types have access to all the nesting
12986         levels, not just the enclosing types.
12987
12988 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12989
12990         * mini.c: added a few more verification checks.
12991
12992 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
12993
12994         * liveness.c: Merge optimizations from the linear-il branch.
12995
12996 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12997
12998         * mini-ia64.c (emit_call): Add a comment.
12999
13000         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
13001
13002         * tramp-ia64.c: Fix some warnings.
13003
13004 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
13005
13006         * mini.h: don't use gboolean for bitfields.
13007         * mini.c: verifier changes for fields and methods accessibility.
13008
13009 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13010
13011         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
13012         lazy icall wrapper changes.
13013
13014         * dominators.c: Replace all the dominator algorithms with faster
13015         ones from the linear-il branch.
13016
13017         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
13018         the mempool.
13019
13020         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13021         common cases are done first.
13022
13023         * mini-amd64.c: Fix some warnings.
13024
13025         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
13026         from the mempool.
13027
13028         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
13029         added code.
13030
13031         * mini.h: Add a missing prototype.
13032
13033 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13034
13035         * mini.c: Compile icall wrappers lazily.
13036
13037         * mini-codegen.c: Use printf instead of g_print since its much faster.
13038
13039         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
13040         function.
13041
13042         * mini.c (optimize_branches): Cache the negative result from 
13043         remove_block_if_useless ().
13044
13045         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
13046         Also fix some bblock linking issues.
13047
13048         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
13049         assembly files.
13050
13051         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
13052
13053         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
13054         accessed fields first, for better cache behavior.
13055         
13056 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13057
13058         * mini.c: speedup IList<T> array accesses.
13059
13060 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13061
13062         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
13063         inline_costs counter. Fixes #77190.
13064
13065 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
13066
13067         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
13068         trace messages. Fixes #77706.
13069
13070 2006-03-04  Martin Baulig  <martin@ximian.com>
13071
13072         * tramp-amd64.c, tramp-x86.c
13073         (mono_debugger_create_notification_function): Use
13074         mono_global_codeman_reserve() to allocate a buffer at runtime and
13075         return it.
13076
13077         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
13078
13079         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
13080         notification function at runtime and then call `initialize' in the
13081         `MONO_DEBUGGER__debugger_info' vtable.
13082
13083 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13084
13085         * iltests.il: Fix a visibility problem.
13086
13087 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13088
13089         * driver.c, mini.c: add hooks for the counters API.
13090
13091 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13092
13093         * driver.c: show disabled options.
13094
13095 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13096
13097         * linear-scan.c: always use cost-driven selection.
13098
13099 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13100
13101         * jit-icalls.c (helper_compile_generic_method): Revert change from
13102         2006-02-24.
13103
13104 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
13105
13106         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
13107
13108 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13109
13110         * inssel.brg: style fixes, mostly to force the updated monoburg
13111         to run for people using svn.
13112
13113 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
13114
13115         * mini.c: match monoburg changes.
13116
13117 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13118
13119         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
13120         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
13121         declaration in the header file.
13122
13123 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13124
13125         * helpers.c: reduce relocations and mem usage.
13126
13127 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
13128
13129         * mini.h, mini-codegen.c: disable logging features if
13130         requested by configure.
13131
13132 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
13133
13134         * mini.c: tiny verifier changes.
13135
13136 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13137
13138         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
13139         cpu-pentium.md: stack alignment changes for osx/x86,
13140         partially from Geoff Norton <gnorton@customerdna.com>.
13141
13142 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13143
13144         * jit-icalls.c (helper_compile_generic_method): Update to changes
13145         in metadata/class.c.
13146
13147 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13148         
13149         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
13150         
13151         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
13152         interface calls with large offsets.
13153
13154 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13155
13156         * jit-icalls.c (helper_compile_generic_method): Document the
13157         special-case we depend on so that we can inflate the method twice
13158         with the same context with no bad side-effects.
13159
13160 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
13161
13162         * mini-x86.c, mini-amd64.c: fix for case when xen support
13163         is disabled.
13164
13165 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
13166
13167         * mini-x86.c, mini-amd64.c: generate code to access tls items
13168         in a faster way for Xen systems.
13169
13170 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13171
13172         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
13173         updates and compilation fixes for the OSX/x86 port, mostly from
13174         Geoff Norton <gnorton@customerdna.com>.
13175
13176 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13177
13178         * inssel.brg: faster interface call implementation
13179         to sync with the interface_offsets MonoVTable changes.
13180
13181 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13182
13183         * mini.c: more verification checks.
13184
13185 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
13186
13187         * mini.c: added a few more verification checks.
13188
13189 2006-02-17      Neale Ferguson <neale@sinenomine.net>
13190
13191         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
13192         facility on the processor and use it if available.
13193
13194 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13195
13196         * driver.c, aot.c, mini.c: throw exception if the IL code is
13197         invalid or unverifiable.
13198
13199 2006-02-17  Raja R Harinath  <rharinath@novell.com>
13200
13201         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
13202         m.StructField.
13203
13204 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
13205
13206         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
13207
13208 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13209
13210         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
13211         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
13212         handling of instantiated generic valuetypes.
13213
13214 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
13215
13216         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
13217         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
13218         instead.
13219
13220         * generics.2.cs: Revert the nullable reftypes tests.
13221
13222 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
13223
13224         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
13225         using __builtin_frame_address (1) as it doesn't work in the presence
13226         of optimizations. Hopefully fixes #77273.
13227
13228         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
13229         -> generics.cs change as it doesn't work with some automake versions.
13230
13231 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13232
13233         * mini.c: handle systems that sue a different way to
13234         retrieve the stack address of the current thread.
13235
13236 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
13237
13238         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
13239         it specially in the makefile.
13240
13241         * generics.2.cs: Add tests for nullable reference types.
13242
13243 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13244
13245         * mini.c: always handle the case when mono_jit_init()
13246         is called in a thread different from the main thread,
13247         confusing libgc (bug #77309).
13248
13249 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
13250
13251         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
13252
13253 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13254
13255         * mini.c: change optimize_branches () to use a single loop
13256         and introduce a new optimization to simplify some range checks.
13257
13258 2006-02-03  Martin Baulig  <martin@ximian.com>
13259
13260         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
13261         and merged with debugger_thread_manager_add_thread().
13262         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
13263         inform the debugger about the main thread.
13264
13265 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13266
13267         * basic.cs: Add test for div.un/rem.un constant folding.
13268
13269 2006-02-03  Neale Ferguson <neale@sinenomine.net>
13270
13271         * cpu-s390x.md: correct int_xor_imm length
13272
13273 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13274
13275         * generics.2.cs: New test for #77442.
13276
13277         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
13278         #77442.
13279
13280 2006-02-02  Martin Baulig  <martin@ximian.com>
13281
13282         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
13283         <mono/metadata/mono-debug-debugger.h>   
13284
13285         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
13286
13287 2006-02-02  Martin Baulig  <martin@ximian.com>
13288
13289         * debug-debugger.h: New header file for debug-debugger.c.
13290
13291         * debug-debugger.c: Big API cleanup; don't run the managed Main()
13292         function is a separate thread anymore; add support for attaching.
13293
13294 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
13295
13296         * tramp-x86.c: Fix a warning.
13297
13298 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
13299
13300         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
13301         on very large methods.
13302
13303         * aot.c (load_patch_info): Fix a warning.
13304
13305 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13306
13307         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
13308         mini-ops.h: alu membase optimizations.
13309
13310 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
13311
13312         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
13313         to speedup StringBuilder.
13314
13315 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
13316
13317         * dominators.c (mono_compute_natural_loops): Fix detection of
13318         loop body start blocks.
13319
13320         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
13321
13322 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
13323
13324         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
13325         #75145.
13326
13327 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
13328
13329         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13330
13331 2006-01-25  Martin Baulig  <martin@ximian.com>
13332
13333         * debug-debugger.c: Moved the `MonoDebuggerManager' and
13334         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
13335         started to cleanup this file a little bit.
13336
13337 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
13338
13339         * mini.c: optimize a codepath frequently happening in generics code.
13340
13341 2006-01-23  Martin Baulig  <martin@ximian.com>
13342
13343         * Makefile.am: Only compile debug-debugger.c on supported platforms.
13344
13345         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
13346         functions directly.
13347
13348         * driver.c: debug-debugger.c is only available if
13349         `MONO_DEBUGGER_SUPPORTED' is defined.   
13350
13351 2006-01-23  Martin Baulig  <martin@ximian.com>
13352
13353         * debug-debugger.c: Only enable this on platforms where the Mono
13354         Debugger is working (x86 and x86_64).
13355
13356 2006-01-21  Martin Baulig  <martin@ximian.com>
13357
13358         The Mono Debugger is now using the normal `mono' instead of the
13359         `mono-debugger-mini-wrapper' when executing managed code.
13360
13361         * debug-debugger.c: New file; previously known as
13362         debugger/wrapper/wrapper.c.
13363
13364         * debug-mini.c (mono_init_debugger): Removed.
13365
13366         * driver.c (mono_main): Added new `--inside-mdb' command line
13367         argument which is used when running inside the debugger.
13368
13369 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
13370
13371         * liveness.c (mono_analyze_liveness): Remove some unused data
13372         structures.
13373
13374 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
13375
13376         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
13377
13378 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
13379
13380         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
13381         depends on implementation details of monobitset.
13382
13383         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
13384         Fixes #77271.
13385
13386 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
13387
13388         * liveness.c: Update after monobitset changes.
13389
13390 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
13391
13392         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
13393
13394 2006-01-11 Neale Ferguson <neale@sinenomine.net>
13395
13396         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
13397
13398         * mini-s390x.c: Remove warning messages.
13399
13400 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
13401
13402         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
13403
13404 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
13405
13406         * generics.2.cs: Add ldelem/stelem_any test.
13407
13408 2006-01-10 Neale Ferguson <neale@sinenomine.net>
13409
13410         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
13411
13412 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
13413
13414         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
13415         
13416 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
13417
13418         * generics.2.cs: Reenable vtype tests.
13419
13420         * inssel-x86.brg: Remove an icorrect valuetype rule.
13421
13422 2006-01-06 Neale Ferguson <neale@sinenomine.net>
13423
13424         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
13425         initial support for OP_ABS.
13426
13427 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13428
13429         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
13430
13431 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13432
13433         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
13434         conversion and implement LADD/LSUB.
13435
13436         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
13437         architectures.
13438
13439 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13440
13441         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
13442
13443         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
13444         architectures.
13445
13446 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13447
13448         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
13449         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
13450         (stack walk problem).
13451
13452 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
13453
13454         * aot.c (mono_aot_load_method): Fix a warning.
13455
13456 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13457
13458         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
13459
13460 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13461
13462         * iltests.il: Add test for #77148.
13463
13464         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
13465         #77148.
13466
13467 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13468
13469         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
13470
13471 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13472
13473         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
13474         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
13475
13476         * basic-long.cs: Add lconv-to-r4/r8 tests.
13477
13478 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
13481
13482         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
13483         here as on other archs.
13484
13485 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13486
13487         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
13488
13489 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13490
13491         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
13492         
13493         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
13494
13495         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
13496         instrument_prolog; Add memory_barrier instruction.
13497
13498 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
13499
13500         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
13501
13502 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
13503
13504         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
13505
13506         * aliasing.c inssel.brg: Fix warnings.
13507
13508         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
13509         could skip initialization of some parts of memory.
13510
13511         * mini.c mini-ia64.c: Fix warnings.
13512
13513         * inssel-sparc.brg: Add an implementation of lneg which actually works.
13514
13515 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
13516
13517         * aliasing.c (mono_build_aliasing_information): Add a workaround for
13518         a crash seen on sparc.
13519
13520         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
13521         
13522         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
13523
13524 2005-12-21 Neale Ferguson <neale@sinenomine.net>
13525
13526         * mini-ops.h: Add s390_backchain instruction
13527
13528         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
13529
13530         * cpu-s390.md: Add s390_backchain instruction
13531
13532         * mini-s390.c: Significant ABI changes
13533
13534         * mini-s390.h: Cater for zero length structures
13535
13536 2005-12-20 Neale Ferguson <neale@sinenomine.net>
13537
13538         * mini-s390.c: ABI fixes
13539
13540         * inssel-s390.brg: Remove debug statements
13541
13542         * cpu-s390.md: Fix length of ATOMIC_xx operations
13543
13544 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
13545
13546         * basic-float.cs: Add float<->long conversion tests.
13547
13548 2005-12-16 Neale Ferguson <neale@sinenomine.net>
13549
13550         * mini-s390.c: Fix LOCALLOC processing.
13551
13552         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
13553
13554 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
13555
13556         * iltests.il: Add tests for some opcodes not covered by the other
13557         tests.
13558
13559 2005-12-15 Neale Ferguson <neale@sinenomine.net>
13560
13561         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
13562         register loading for Tail processing; Correct trace output.
13563
13564         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
13565
13566         * cpu-s390.md: Correct size of jmp instruction. 
13567
13568 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13569
13570         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
13571
13572 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13573
13574         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
13575           Bring s390 up to current level.
13576
13577 2005-12-12  Zltan Varga  <vargaz@gmail.com>
13578
13579         * generics.2.cs: Disable the newly added tests as they do not work yet.
13580         
13581         * generics.2.cs: Add valuetype tests.
13582
13583 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
13584
13585         * basic-long.cs: Add i4->u8 test.
13586
13587         * objects.cs: Add tests for JIT intrinsic.
13588
13589         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
13590         optimizations lost by a mistake.
13591
13592 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
13593
13594         * basic-long.cs: Remove a test moved to objects.cs.
13595
13596         * arrays.cs: Add more array tests.
13597
13598 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
13599
13600         * arrays.cs: Add new tests for multi-dimensional arrays.
13601
13602 2005-12-06  Raja R Harinath  <rharinath@novell.com>
13603
13604         * Makefile.am (test_sources2): Add generics.2.cs.
13605         (EXTRA_DIST): Add test_sources2.
13606
13607 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
13608
13609         Support for boxing and unboxing nullable types as well as the
13610         isinst operation on nullables, per the CLI ammendment.
13611
13612         * inssel.brg (CEE_ISINST): Special case for nullable
13613
13614         * mini.c (handle_unbox_nullable): new method
13615         (handle_box): Special case for nullable types
13616         (mono_method_to_ir): Call handle_unbox_nullable in correct
13617         places.
13618
13619         * generics.2.cs: New test suite
13620
13621         * Makefile.am: Support for regression tests with generics.
13622
13623 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
13626         allocated to registers. Fixes #76800.
13627
13628 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
13629
13630         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
13631
13632 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
13633
13634         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
13635         of platforms.
13636
13637 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
13638
13639         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
13640         objects.cs.
13641
13642         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
13643         
13644         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
13645 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
13646
13647         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
13648         single precision before storing to a single precision location.
13649
13650 2005-11-28  Raja R Harinath  <rharinath@novell.com>
13651
13652         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
13653
13654 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
13655
13656         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
13657         correct files.
13658
13659         * basic.cs: Remove test_0_byte_compares test which was moved to
13660         objects.cs a long time ago.
13661
13662 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
13663
13664         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13665
13666 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
13667
13668         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
13669         handlers are called.
13670
13671         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
13672         throwing code.
13673
13674          * mini-ia64.c: Add support for the throw->branch exception 
13675         optimization.   
13676
13677         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
13678
13679 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13680
13681         * mini.c: Enabled "fastpath" deadce :-)
13682         
13683 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13684
13685         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
13686         alias analysis pass to support it.
13687         * mini.h: Likewise.
13688         * ssa.c: Likewise.
13689         * liveness.c: Likewise (liveness computation can use aliasing
13690         information to be more accurate).
13691         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
13692         moreover made so that "--compile-all" uses the given optimization
13693         flags and not the default ones.
13694         * aliasing.c: Alias analysis (new file).
13695         * aliasing.h: Likewise.
13696         * Makefile.am: added "aliasing.c" and "aliasing.h".
13697         
13698 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
13699
13700         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
13701         OP_L opcodes.
13702
13703 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
13704
13705         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
13706         fp >= end_of_stack exit condition, as it is not needed, and it might
13707         become true for fp eliminated frames.
13708
13709 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
13710
13711         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
13712         coded offsets.
13713
13714 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
13715
13716         * mini-arm.c: fixed alignment of doubles/longs to match
13717         the C ABI (bug #76635).
13718
13719 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
13720
13721         * aot.c: fix compilation with --enable-minimal=aot.
13722
13723 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
13724
13725         * mini-arm.c: fixed compatibility with the new
13726         floating point emulator package for compares.
13727
13728 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
13729
13730         * mini.c : reverted sig->pinvoke changes (r51396-51397).
13731
13732 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
13733
13734         * mini-exceptions.c (print_stack_frame): Output to stderr.
13735         (mono_handle_native_sigsegv): Ditto.
13736
13737 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13738
13739         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
13740         OP_LCONV_TO_OVF_I implementation.
13741
13742         * mini-amd64.c: Add support for the throw->branch exception 
13743         optimization.
13744
13745         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
13746         when the catch clause catches a more general exception, i.e. Object.
13747
13748 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
13749
13750         * cpu-ia64.md: Remove unused opcodes.
13751
13752         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
13753         specific defines for architectures defining USE_SIGACTION.
13754
13755         * mini-ia64.c: Fix some warnings.
13756
13757         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
13758         version seemed to skip a frame.
13759
13760 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13761
13762         * mini.c: Clean up the usage of sig->pinvoke flag. Now
13763         only calls which are made to native code use this flag.
13764
13765 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
13766
13767         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
13768         varargs methods as well.
13769         
13770         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
13771         which have save_lmf set. Reorganize methods prologs a bit.
13772
13773         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
13774         debugger to the proper place.
13775
13776 2005-10-29  Martin Baulig  <martin@ximian.com>
13777
13778         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
13779         when running inside the debugger until the debugger has support
13780         for it.
13781
13782 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
13783
13784         * mini.h: Fix a warning.
13785
13786 2005-10-24  Miguel de Icaza  <miguel@novell.com>
13787
13788         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
13789         we expose publicly, this returns the string.
13790
13791 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
13792
13793         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
13794         with fp elimination.
13795
13796 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
13797
13798         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
13799         native stacktrace using the glibc 'backtrace' function if available.
13800
13801 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
13802
13803         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
13804
13805         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
13806         handle SIGSEGVs received while in native code.
13807
13808         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
13809         code, call mono_handle_native_sigsegv which will abort the runtime
13810         after printing some diagnostics, instead of converting it into a
13811         confusing NullReferenceException.
13812
13813 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
13814
13815         * cpu-pentium.md: Remove unused opcodes.
13816
13817 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
13818
13819         * mini-amd64.h (MonoLMF): Add rsp field.
13820
13821         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
13822         the lmf too.
13823
13824 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
13825
13826         * mini-codegen.c (get_register_spilling): Fix some warnings.
13827
13828 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
13829
13830         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
13831         elimination during exception handling. Enable fp elimination by
13832         default.
13833
13834         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
13835         elimination.
13836
13837 2005-10-16  Martin Baulig  <martin@ximian.com>
13838
13839         * mini-exceptions.c
13840         (mono_debugger_run_finally): New public method for the debugger.
13841
13842 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
13843
13844         * debug-mini.c (mono_debug_init_method): Fix warning.
13845
13846         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
13847         the 'exname' parameter const to fix some warnings.
13848
13849 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
13850
13851         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
13852         introduced by the previous patch.
13853
13854 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
13855
13856         * basic-float.cs: Add test for precision of float arithmetic.
13857
13858         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
13859         when loading/storing single values from/to memory.
13860
13861         * mini.c (mono_jit_compile_method_with_opt): Create the function
13862         pointers in the correct domain.
13863
13864 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
13865
13866         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
13867         introduced by previous patch.
13868         
13869         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
13870         when out_filter_idx is NULL.
13871
13872         * mini-exceptions.c: Don't run filter clauses twice during exception
13873         handling. Fixes #75755.
13874
13875 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
13876
13877         * aot.c: Add support for ldflda wrappers.
13878
13879         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
13880         #75902.
13881
13882 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
13883
13884         * mini.c, mini.h: do not consider exception handlers blocks when
13885         setting up interface variables.
13886
13887 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
13888
13889         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
13890
13891 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
13892
13893         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
13894         causes a regression.
13895
13896         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
13897
13898 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
13899
13900         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
13901         of the OP_P definitions.
13902
13903         * TODO: Add a proposal for dealing with the CEE/OP mess.
13904
13905         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
13906         optimizations from the x86 port.
13907
13908         * cpu-amd64.md: Ditto.
13909
13910         * basic.cs basic-long.cs: Add tests.
13911
13912 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
13913
13914         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
13915         Patrik Torstensson's implementation of my exception-handling
13916         optimization idea, when the exception object is not used
13917         (bug #62150).
13918
13919 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
13920
13921         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
13922         of the mul_imm optimizations from the old jit.
13923
13924 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
13925
13926         * mini.c, liveness.c: patch by Patrik Torstensson and
13927         Zoltan Varga to improve performance in methods with
13928         exception clauses.
13929
13930 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
13931
13932         * driver.c: Remove 'Globalization' entry from --version.
13933
13934 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
13935
13936         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
13937         there is a profiler interested in JIT events.
13938
13939         * aot.c: Load profile files produced by the AOT profiling module, and
13940         reorder methods based on the profiling info. Add a 'method_order' table
13941         to the AOT file to make mono_aot_find_jit_info work with the reordered
13942         methods.
13943
13944         * mini.h: Bump AOT file version info.
13945
13946 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
13947
13948         * mini-arm.h: work around what looks like a gcc bug when optimizations
13949         are enabled.
13950
13951 2005-09-28  Raja R Harinath  <rharinath@novell.com>
13952
13953         * Makefile.am (AM_CFLAGS): Don't use += to append inside
13954         conditionals.  Use ...
13955         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
13956
13957 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
13958
13959         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
13960         to determine the amount of memory to copy when passing valuetypes.
13961
13962         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
13963         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
13964
13965 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
13966
13967         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
13968         information about aot.
13969
13970 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
13971
13972         * *.c: Replace the use of {Enter,Leave}CriticalSection with
13973         macros. This will allow a deadlock debugger to easily be plugged
13974         in.
13975
13976 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
13977
13978         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
13979
13980 2005-09-27  Raja R Harinath  <rharinath@novell.com>
13981
13982         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
13983         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
13984         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
13985         ($(arch_built)) [CROSS_COMPILING]: Error out.
13986
13987 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
13988
13989         * aot.c: Add support for the no_special_static flag for classes.
13990
13991 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13992
13993         * Reapply reverted patches.
13994
13995         * *: Revert r50174 as well.
13996
13997         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
13998
13999 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14000
14001         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
14002
14003 2005-09-23  Miguel de Icaza  <miguel@novell.com>
14004
14005         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
14006         part of the SIG_HANDLER_SIGNATURE.  
14007
14008 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
14009
14010         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
14011         statistics.
14012
14013         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
14014         introduced by previous patch.
14015
14016 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
14017
14018         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
14019         saved registers too.
14020
14021         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
14022         upon the information returned by get_call_info ().
14023         
14024         * mini-x86.c (add_float): Fix stack size calculation.
14025         (mono_arch_call_opcode): Rewrite this so it works based up the
14026         information returned by get_call_info ().
14027         (mono_arch_get_this_vret_args): Ditto.
14028
14029 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
14030
14031         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
14032         in cinfo to determine the registers which need to be used.
14033
14034 2005-09-20  Miguel de Icaza  <miguel@novell.com>
14035
14036         * driver.c (mono_main): Add --server and --desktop flags. 
14037
14038 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
14039
14040         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
14041         registers as global registers.
14042
14043         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
14044         longer needed with the new register allocator.
14045
14046         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
14047
14048         * cpu-ia64.md: Remove unused opcodes.
14049         
14050         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
14051         
14052 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
14053
14054         * cpu-amd64.md: Remove unused opcodes.
14055
14056         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
14057         needed with the new register allocator.
14058
14059         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
14060         reg-reg moves.
14061
14062 2005-09-16  Raja R Harinath  <rharinath@novell.com>
14063
14064         * Makefile.am (check-local): Don't invoke semdel-wrapper.
14065
14066 2005-09-16  Martin Baulig  <martin@ximian.com>
14067
14068         * exceptions-amd64.c
14069         (throw_exception): Don't call mono_debugger_throw_exception() if
14070         we're a rethrow - see the FIXME in the code.
14071
14072 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
14073
14074         * mini.c (mono_init_exceptions): This only works on some architectures.
14075         
14076 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14077
14078         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
14079         on ia64.
14080
14081         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
14082
14083         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
14084         now in mini-exceptions.c.
14085
14086 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
14087
14088         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
14089         now in mini-exceptions.c.
14090
14091 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14092
14093         * exceptions-x86.c: Applied patch from Patrik Torstensson 
14094         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
14095
14096         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
14097         code into mini-exceptions.c. Add some assertions to it.
14098
14099 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
14100
14101         * aot.c (emit_section_change): Applied patch from "The Software Team" 
14102         (<software@solmersa.com>). Fix as errors on windows.
14103
14104 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14105
14106         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
14107         method info into the LMF.
14108
14109 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14110         
14111         * mini-ia64.c: Add proper unwind info for method epilogs.
14112
14113         * exceptions-ia64.c: Add some code to help debugging.
14114         
14115         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
14116
14117         * mini-exceptions.c: Fix warning.
14118
14119 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14120
14121         * mini.c: Really fix build.
14122
14123         * mini-x86.c mini-amd64.c: Fix build.
14124
14125 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14126
14127         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
14128
14129         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
14130         some Interlocked methods as intrinsics.
14131
14132         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
14133         for Thread methods as well.
14134
14135         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
14136
14137         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
14138
14139         * mini-ia64.c mini-x86.c mini-amd64.c 
14140         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
14141         OP_MEMORY_BARRIER.
14142         
14143         * mini.c (mono_init_exceptions): Fix build breakage.
14144
14145 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
14146
14147         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
14148         of instructions. Use the new ia64_unw_op macros for emitting unwind
14149         info.
14150
14151         * mini.c (mono_init_exceptions): Initialize exception handling
14152         related trampolines at startup.
14153
14154 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
14155
14156         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
14157
14158 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
14159
14160         * mini.c: Handle type loading errors gracefully during compilation and
14161         throw the appropriate exception.
14162
14163 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
14164
14165         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
14166         for the mono binary.
14167
14168 2005-09-09  Martin Baulig  <martin@ximian.com>
14169
14170         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
14171         the release.
14172
14173 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14174
14175         * mini-arm.h: use emulation for conv.r.un for the release.
14176
14177 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14178
14179         * mini-arm.c, objects.cs: more fixes and tests for them.
14180
14181 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14182
14183         * mini-arm.c: align structures to at least 4 bytes to be able
14184         to keep our current optimized memcpy.
14185
14186 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
14187
14188         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
14189
14190 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14191
14192         * mini.c: ignore SIGPIPE.
14193
14194 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
14195
14196         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
14197
14198         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
14199
14200 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
14201
14202         * mini.h: Add prototype for mono_allocate_stack_slots_full.
14203
14204 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14205
14206         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
14207         exception handling support.
14208         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
14209         patch by Brian Koropoff <briank@marakicorp.com>).
14210
14211 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
14212
14213         * mini.c: revert another 'optimization' which breaks when
14214         items on the eval stack need to be saved at a basic block end
14215         (bug #75940).
14216
14217 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14218
14219         * jit-icalls.c: for arrays, ensure we always provide
14220         lower bounds.
14221
14222 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
14223
14224         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
14225         
14226         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
14227
14228 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
14229
14230         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
14231         arguments in their original register.
14232
14233 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
14234
14235         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
14236         memset/memcpy.
14237
14238         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
14239         when ssapre is enabled.
14240
14241         * inssel-long.brg: Fix bug in previous patch.
14242
14243         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
14244         multiplication by a constant.
14245
14246 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
14247
14248         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
14249         icc.
14250
14251         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
14252         saving registers.
14253
14254 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
14255
14256         * inssel-arm.brg: apply changes tested by Brian Koropoff
14257         <briank@marakicorp.com>.
14258
14259 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
14260
14261         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
14262         
14263 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
14264
14265         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
14266         to the same register if dreg is just a base register.
14267         (print_ins): Improve printing of membase opcodes.
14268
14269         * inssel-x86.brg: Add optimized ldind(reg) rules.
14270
14271         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
14272
14273 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
14274
14275         * mini.c: when running under valgrind, set the stack bottom for
14276         the GC at the actual approximate stack for the app (fixes running
14277         mono with valgrind).
14278
14279 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
14280
14281         * mini.c: do no break at the first valuetype to init found
14282         (fixes bug #75791).
14283
14284 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
14285
14286         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
14287
14288 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
14289
14290         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
14291
14292 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
14293
14294         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
14295
14296 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14297
14298         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
14299
14300         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
14301         code.
14302
14303         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
14304         code.
14305
14306         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
14307         methods.
14308
14309 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
14310
14311         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
14312
14313 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14314
14315         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
14316         in the tail recursion optimization.
14317
14318         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
14319         debug info into the assembly file.
14320
14321         * iltests.il: Add test for filter regions.
14322
14323         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
14324         initial stack of filter regions. Fixes #75755.
14325
14326 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
14327
14328         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
14329         stack requirements.
14330
14331 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14332
14333         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
14334         the check for an already compiled method on non-ia64 platforms.
14335         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
14336         proper domain.
14337
14338         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
14339
14340         * inssel-x86.brg: Add some optimized call rules.
14341
14342 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
14343
14344         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
14345         method here.
14346
14347         * mini.h mini-trampolines.c: Pass the trampoline argument to 
14348         mono_arch_patch_delegate_trampoline.
14349
14350         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
14351
14352         * mini-trampolines.c: Fix build.
14353
14354         * mini-amd64.h: Add delegate trampolines.
14355
14356         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
14357
14358         * inssel-amd64.brg: Add optimized call rules.
14359         
14360         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
14361
14362         * inssel-ia64.brg: Add optimized ldind(reg) rules.
14363
14364 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
14365
14366         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
14367         change.
14368
14369         * mini-ia64.c: Remove LMF fixmes.
14370
14371         * mini-ia64.h: Remove most fields from LMF.
14372
14373         * inssel-ia64.brg (stmt): Fix unaligned access errors.
14374
14375         * mini-trampolines.c: Add support for IA64 function descriptors.
14376
14377         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
14378         for IA64 function descriptors.
14379
14380 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
14381
14382         * tramp-arm.c: patch the vtable for virtual calls. Added
14383         support code to register/unregister the LMF.
14384         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
14385         more LMF work.
14386
14387 2005-08-19  Dick Porter  <dick@ximian.com>
14388
14389         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
14390         bit value if needed.
14391
14392 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
14393
14394         * mini.c (mini_get_method): Move handling of wrapper data here.
14395
14396         * mini.c (mono_method_to_ir): Add support for dynamic methods.
14397
14398         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
14399         virtual.
14400
14401         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
14402         bblock->code does not remain empty.
14403
14404 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
14405
14406         * arrays.cs: Add regression test for #75832.
14407
14408         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
14409         rules. Fixes #75832.
14410
14411         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
14412         instruction scheduling.
14413
14414 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
14415
14416         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
14417
14418 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
14419
14420         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
14421
14422         * mini-codegen.c: Fix VC build.
14423
14424         * cpu-pentium.md: Increase length of atomic_exhange_i4.
14425
14426 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14427
14428         * mini.h: fix signature for mono_register_opcode_emulation.
14429
14430 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
14431
14432         * mini.c: Get rid of most of the helper_sig_... constants using
14433         mono_create_icall_signature ().
14434
14435 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
14436
14437         * jit-icalls.c (helper_ldstr): New helper function.
14438
14439         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
14440
14441         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
14442         throw, load the string using a helper call instead of creating a string object.
14443
14444         * aot.c: Update after LDSTR changes.
14445
14446         * mini.h: Bump AOT file version.
14447         
14448         * aot.c: Save class size info into the AOT file. Print more statistics during
14449         compilation.
14450
14451         * mini.h: Bump AOT file version.
14452
14453         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14454         ordering of disasm cases. Fixes #74957.
14455
14456 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
14457
14458         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
14459         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
14460         the generic code needed for the ARM port.
14461
14462 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
14463
14464         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
14465         inssel-arm.brg: more ARM features and fixes.
14466
14467 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
14468
14469         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
14470         ARM port work in progress.
14471
14472 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
14473
14474         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
14475
14476         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
14477
14478         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
14479
14480         * inssel.brg (mini_emit_memset): Add support for unaligned access.
14481
14482         * *-ia64.*: Ongoing IA64 work.
14483         
14484         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
14485
14486 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
14487
14488         * TODO: Remove out-of-data todo stuff.
14489
14490         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
14491         dead code.
14492
14493         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
14494
14495         * mini.h: Bump corlib version.
14496
14497 2005-07-27  Martin Baulig  <martin@ximian.com>
14498
14499         * mini-codegen.c
14500         (create_copy_ins): Added `const unsigned char *ip' argument; set
14501         `copy->cil_code' from it.
14502
14503 2005-07-27  Martin Baulig  <martin@ximian.com>
14504
14505         * mini-exceptions.c (mono_handle_exception): Don't call
14506         mono_debugger_handle_exception() for filters.
14507
14508 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
14509
14510         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
14511         as well.
14512
14513 2005-07-26  Martin Baulig  <martin@ximian.com>
14514
14515         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
14516
14517         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
14518         helper_compile_generic_method() if the method is actually virtual
14519         and non-final.
14520
14521 2005-07-26  Martin Baulig  <martin@ximian.com>
14522
14523         * mini.c
14524         (trampoline_code): Renamed to `mono_trampoline_code' and made it
14525         public; this is now accessed directly by the debugger.
14526         (mono_generic_trampoline_code): Removed.
14527
14528         * debug-mini.c
14529         (mono_debug_init_method): Also add interncalls and wrappers.
14530
14531 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
14532
14533         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
14534
14535 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
14536
14537         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
14538
14539 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
14540
14541         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
14542
14543 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14544
14545         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
14546         getting TLS offsets on AMD64 too.
14547
14548 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
14549
14550         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
14551
14552 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
14553
14554         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
14555         inssel-arm.brg, mini-arm.h: ARM port work in progress.
14556
14557 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14558
14559         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
14560
14561         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
14562         to mini.c.
14563
14564         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
14565         mono_sparc_is_virtual_call ().
14566         
14567         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
14568
14569         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
14570         trampoline parameters.
14571
14572         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
14573         
14574         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
14575         to mono_arch_get_vcall_slot_addr.
14576
14577         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
14578         trampoline code.
14579
14580         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
14581
14582 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14583
14584         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
14585
14586 2005-07-19  Martin Baulig  <martin@ximian.com>
14587
14588         * exceptions-amd64.c (throw_exception): Call
14589         mono_debugger_throw_exception() here like we're doing it on i386.
14590
14591 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14592
14593         * mini-ia64.c: Add optimized TLS access support.
14594
14595 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
14596
14597         * mini-exceptions.c: Ongoing IA64 work.
14598
14599         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
14600
14601         * mini.c: Use the default optimization set when embedding. Fixes
14602         #75194.
14603
14604 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
14605
14606         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
14607         of trampolines to a separate file.
14608
14609         * mini-trampolines.c: New file.
14610
14611         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
14612         separate file.
14613         
14614         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
14615         amd64/ia64 code.
14616
14617         * mini-codegen.c: Fix cygwin build.
14618
14619 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
14620
14621         * mini.c: Add some minor changes needed by the IA64 port.
14622
14623         * *-ia64.*: Ongoing IA64 work.
14624
14625 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
14626
14627         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
14628         trampolines into arch-independent and arch-dependent parts.
14629
14630         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
14631
14632 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
14633
14634         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
14635
14636         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
14637         the xp-regalloc-branch for amd64.
14638
14639         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
14640         xp-regalloc-branch for x86.
14641
14642 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14643
14644         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
14645
14646 2005-07-06  Martin Baulig  <martin@ximian.com>
14647
14648         * mini.c
14649         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
14650         (mono_jit_runtime_invoke): Likewise.
14651
14652 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
14653
14654         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
14655         on x86 too.
14656         
14657         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
14658         without loading their metadata. Reorganize the file format so exception handling+
14659         debug info is kept separate from normal method info. Create MonoJitInfo 
14660         structures for methods lazily.
14661
14662         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
14663         loading metadata.
14664         (x86_class_init_trampoline): Patch AOT class init trampolines too.
14665
14666         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
14667
14668         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
14669         in AOT code.
14670
14671         * mini.h: Bump AOT file version.
14672
14673 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
14674
14675         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14676
14677 2005-07-01  Raja R Harinath  <rharinath@novell.com>
14678
14679         * Makefile.am (check-local): Call semdel-wrapper.
14680
14681 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
14682
14683         * mini-x86.c: Revert the last change as it seems to break the build..
14684
14685 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
14686
14687         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14688         
14689         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
14690
14691 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
14692
14693         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
14694         outside of the macro, so strange stuff doesn't happen with gcc4
14695         (NEW_AOTCONST_TOKEN): Likewise.
14696
14697 2005-06-28  Martin Baulig  <martin@ximian.com>
14698
14699         * mini.c (mini_class_is_system_array): New static method; use this
14700         instead of `klass->parent == mono_defaults.array_class' everywhere
14701         since this also works for the new generic array class.
14702
14703 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
14704
14705         * inssel.brg: Remove warnings.
14706
14707 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
14708
14709         * mini-ia64.c: Ongoing IA64 work.
14710
14711         * basic-float.cs: Add float->i1 conversion test.
14712
14713         * iltests.il: Add conv.u4 test.
14714
14715 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
14716
14717         * inssel-long.brg: Fix bug caused by last change.
14718
14719 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
14720
14721         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
14722         BSDs.  Allows the x86 JIT to work on OSX86
14723
14724 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
14725
14726         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
14727         u4->i8 conversion.
14728
14729         * mini-ia64.c: Ongoing IA64 work.
14730
14731 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
14732
14733         * mini-ia64.c: Ongoing IA64 work.
14734
14735         * driver.c: Clean up jit_code_hash as well when using --regression.
14736
14737         * inssel-long.brg: Fix long->i4/u4 conversion rules.
14738
14739         * basic-long.cs: Add tests for long->u4 conversion.
14740
14741 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
14742
14743         * mini.c: Take mono_get_domainvar out of macros. This makes sure
14744         that we do not depend on undefined C behavior: the order stuff
14745         gets evaluated within an expression. Fixes mono when compiled on
14746         GCC 4.
14747
14748 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
14749
14750         * *-ia64.*: Ongoing IA64 work.
14751
14752         * aot.c: Lower memory usage while loading AOT methods.
14753
14754         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
14755
14756         * mini.h: Bump AOT file format version.
14757
14758 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
14759
14760         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
14761
14762 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
14763
14764         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
14765         not on callee assembly). Fixed some comments.
14766
14767 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
14768
14769         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
14770         it gets proper disassembly.
14771         (emit_method_info): Remove some dead code.
14772
14773         * mini.c (mini_method_compile): Allways allocate the GOT var in
14774         mono_method_to_ir for emulating opcodes.
14775
14776 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
14777
14778         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
14779         before freeing the code memory. Fixes #74990.
14780
14781         * objects.cs: Add regression test for #74992.
14782
14783         * liveness.c: Extend live ranges of arguments to the beginning of the
14784         method. Fixes #74992.
14785
14786         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
14787         so it points into the faulting instruction.
14788
14789 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
14790
14791         * jit-icalls.c (mono_imul_ovf): Add exception handling.
14792
14793         * *-ia64.*: Ongoing IA64 work.
14794
14795         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
14796
14797 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
14798
14799         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
14800
14801         * *-ia64.*: Ongoing IA64 work.
14802
14803 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
14804
14805         * basic-long.cs: Add tests for add/sub.ovf.
14806
14807         * basic.cs: Add tests for sub.ovf.
14808
14809         * *-ia64.*: Ongoing IA64 work.
14810
14811 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
14812
14813         * *-ia64.*: Ongoing IA64 work.
14814
14815         * basic.cs: Add conv.ovf.i4.un test.
14816
14817 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
14818
14819         * mini.c: (remove_block_if_useless) Fixed bug 75061.
14820         
14821 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14822
14823         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
14824
14825 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
14826
14827         * *-ia64.*: Ongoing IA64 work.
14828
14829 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14830
14831         * trace.[ch]:
14832         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
14833
14834 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
14835
14836         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
14837
14838 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
14839
14840         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
14841
14842         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
14843         of a call is callable by a near call.
14844
14845 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
14846
14847         * mini-ia64.c: Ongoing IA64 work.
14848
14849 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
14850
14851         * genmdesc.c: Make the generated array non-static.
14852
14853         * inssel-long.brg: Fix LSHR_IMM rule.
14854
14855         * *-ia64.*: Ongoing IA64 work.
14856
14857         * *-ia64.*: Ongoing IA64 work.
14858
14859 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14860
14861         * *-ia64.*: Ongoing IA64 work.
14862
14863         * *-ia64.*: Ongoing IA64 work.
14864         
14865         * mini-ia64.c: Ongoing IA64 work.
14866
14867         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
14868
14869 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14870
14871         * objects.cs basic-calls.cs: Move some tests to objects.cs.
14872         
14873         * objects.cs basic-long.cs: Move some tests to objects.cs.
14874
14875 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
14876
14877         * *-ia64.*: Ongoing IA64 work.
14878
14879         * iltests.il: Add a new test.
14880
14881         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
14882         newobj. Fixes #75042.
14883
14884 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
14885
14886         * *-ia64.*: Ongoing IA64 work.
14887         
14888         * *-ia64.*: Ongoing IA64 work.
14889         
14890         * *-ia64.*: Ongoing IA64 work.
14891
14892         * basic.cs objects.cs: Move tests accessing static variables as well.
14893
14894         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
14895
14896 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
14897
14898         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
14899
14900         * driver.c: Always print failed tests.
14901
14902         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
14903         frame pointer.
14904
14905         * *ia64*: Ongoing IA64 work.
14906
14907 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
14908
14909         * basic.cs: Add tests for add.ovf. Fix warnings.
14910
14911 2005-05-18  Miguel de Icaza  <miguel@novell.com>
14912
14913         * driver.c (mono_main): Avoid crash if no argument is passed to
14914         --break;  Do not use g_error, but f_printf.   And fix all other
14915         ocurrences of the same crash.
14916
14917 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
14918
14919         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
14920         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
14921         Fixes #74742.
14922
14923 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
14924
14925         * *-ia64.*: Add beginnings of IA64 backend.
14926
14927         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
14928
14929 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
14930
14931         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
14932         Fixes #74925.
14933
14934         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
14935
14936         * mini-amd64.c: Fix a warning.
14937
14938 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
14939
14940         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
14941         in float_neg. Fixes #74897.
14942
14943         * mini-amd64.c (emit_call): Fix another near call bug.
14944
14945 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
14946
14947         * declsec.c: Keep the appdomain information in the structure. Added a 
14948         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
14949         value gets overwritten).
14950         * declsec.h: Set the default MonoArray for the the stack to 6. Added
14951         an MonoAppDomain member to MonoSecurityFrame.
14952         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
14953         used in the stack walk. Now use a MonoArray which grow (double) when
14954         it gets full.
14955
14956 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
14957
14958         * mini.c: Re-enabled runtime cleanup, since running threads should
14959         now properly stop when exiting.
14960
14961 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
14962
14963         * mini-codegen.c: New file contaning the arch-independent local
14964         register allocator. Not used by any architectures yet.
14965
14966         * mini.h linear-scan.c: Merge some changes from the 
14967         mini-xp-local-regalloc branch.
14968
14969 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
14970
14971         * mini-amd64.c (emit_call): Fix calls to native functions when the
14972         runtime is compiled as a shared library. Fixes #74756.
14973
14974         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
14975         on a literal field. Fixes #74751.
14976
14977 2005-04-25  Raja R Harinath  <rharinath@novell.com>
14978
14979         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
14980
14981 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
14982
14983         * objects.cs: Add missing null casting test.
14984
14985 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
14986
14987         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
14988         in wrapper methods. Also rename 'address' variable to 'offset'.
14989
14990 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
14991
14992         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
14993         warnings.
14994         
14995         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
14996
14997         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
14998         work on windows.
14999
15000 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15001
15002         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
15003
15004 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15005
15006         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
15007         just the last bytes.
15008
15009 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15010
15011         * aot.c (mono_compile_assembly): Fix warning.
15012
15013         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
15014         by the _MSC_VER stuff.
15015
15016 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
15017
15018         * inssel-long.brg: Fix #74588.
15019
15020         * cpu-amd64.md: Fix #74591.
15021
15022         * iltests.il: Add new regression tests.
15023
15024 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
15025
15026         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
15027         valuetype.
15028
15029 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
15030
15031         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
15032
15033         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
15034         from Bill Middleton <flashdict@gmail.com>.
15035
15036 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
15037
15038         * arrays.cs: Add new regression test. Fix warnings.
15039
15040 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
15041
15042         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
15043         and leakage in CKFINITE.
15044
15045         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
15046         this to a null op since it is called on amd64 too.
15047
15048         * exceptions-amd64.c (get_throw_trampoline): Align stack.
15049
15050         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
15051         body since this is not used on amd64.
15052         
15053         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
15054
15055         * mini-amd64.c: Remove obsolete fixmes.
15056
15057         * mini.c (print_method_from_ip): Fix debugging support.
15058
15059 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15060
15061         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
15062         so that expressions that don't give much gain are not reduced.
15063         * ssapre.h: Likewise.
15064
15065 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
15066
15067         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
15068
15069         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
15070
15071         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
15072
15073 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
15074
15075         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
15076
15077         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
15078
15079 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
15080
15081         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
15082         stack touching.
15083
15084         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
15085
15086         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
15087
15088         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
15089
15090         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
15091         MONO_ARCH_USE_SIGACTION. Fixes #74252.
15092
15093         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
15094
15095         * mini-x86.c: Fix up stack overflow handling.   
15096
15097         * exceptions.cs: Add new regression test.
15098
15099 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
15100
15101         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
15102         mono_jit_thread_attach.
15103
15104         * mini.c (mono_method_to_ir): Verify called method is not abstract.
15105
15106 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15107
15108         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
15109         avoid calling constructors using callvirt.
15110
15111         * inssel.brg: Fix #74073.
15112
15113 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
15114
15115         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
15116         compilation with non-GCC compilers.
15117         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
15118         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
15119
15120 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15121
15122         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
15123         klass->interface_offsets (will likely fix bug#74073).
15124
15125 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15126
15127         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
15128
15129 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
15130
15131         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
15132         to amd64_div_reg_size ().
15133         
15134         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
15135
15136 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
15137
15138         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
15139
15140 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15141
15142         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
15143
15144 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15145
15146         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
15147         
15148         * mini.c (mono_precompile_assembly): Load and precompile referenced
15149         assemblies as well. Fixes #74015.
15150
15151 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
15152
15153         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
15154
15155 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
15156
15157         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
15158         a lot of checks and (anyway) permissions cannot work until corlib is 
15159         loaded.
15160
15161 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
15162
15163         * mini-ppc.c: fixed ABI issue on sysv/ppc.
15164
15165 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
15166
15167         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
15168         calls (fixes bug#72824).
15169
15170 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15171
15172         * mini.c: fix tail recursion elimination (see test in bug#73936).
15173
15174 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
15175
15176         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
15177         some fp functions in sse2 mode.
15178
15179 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
15180
15181         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
15182
15183 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
15184
15185         * mini.h mini.c: Add mono_get_jit_tls_key ().
15186
15187         * mini-x86.c: Enable fast TLS support on windows.
15188
15189 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
15190
15191         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
15192         * mini.c: Check for p/invoke method when generating code. If a
15193         p/invoke method, or it's class, isn't decorated with [Suppress
15194         UnmanagedCodeSecurity] then generate code to call System.Security.
15195         UnmanagedDemand (only if the security manager is active).
15196
15197 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15198
15199         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
15200         last change as it seems to cause strange crashes.
15201         
15202 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15203
15204         * *.c: handle unsafe function pointers where needed.
15205
15206 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15207
15208         * mini.c (mono_jit_free_method): Remove the fixme too.
15209
15210 2005-03-15  Miguel de Icaza  <miguel@novell.com>
15211
15212         * mini.c: As discussed, make the code actually free the delegate
15213         thunk now, to enable the debugging of delegate problems, use
15214         MONO_DEBUG=1 when running Mono. 
15215
15216         This takes also care of parts of the leaks as seen by Joe.
15217
15218 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
15219
15220         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
15221         thread_tls_offset calculation.
15222
15223 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
15224
15225         * declsec.c: Reworked linkdemand checks for icall. The previous code
15226         was using the declaration code (untrusted) and didn't work as expected
15227         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
15228         specific case.
15229
15230 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
15231
15232         * iltests.il: Add new localloc test.
15233
15234         * mini-amd64.c: Handle large stack allocations the same way as on
15235         windows if stack overflow handling is working.
15236         
15237         * mini-amd64.c: Allocate the signal stack using mmap.
15238
15239         * mini.c (sigsegv_signal_handler): Fix reading of context.
15240
15241         * mini-exceptions.c: Fix up stack overflow handling.
15242
15243         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
15244
15245         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
15246
15247         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
15248
15249         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
15250
15251         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
15252         tramp_init functions as they are no longer needed.
15253
15254 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
15255
15256         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
15257         
15258         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
15259
15260         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
15261         
15262         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
15263         support that now.
15264
15265         * mini-ops.h: Add OP_LMUL_IMM.
15266
15267         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
15268         long mul/div opcodes as intrinsic.
15269
15270         * mini-amd64.c (emit_call): Handle the case when the callee might be
15271         an AOT method.
15272
15273 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
15274
15275         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
15276         extra safe.
15277         
15278         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
15279
15280         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
15281
15282 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
15283
15284         * mini.c (mono_codegen): Don't leak here, to help people running
15285         monogrind.
15286
15287 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
15288
15289         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
15290         conversions in sse2 mode.
15291
15292         * basic-float.cs: Add regression test.
15293         
15294         * mini-amd64.c: Reenable sse2.
15295
15296 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15297
15298         * mini-amd64.c: Disable sse2 until some regressions are fixed.
15299
15300 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
15301
15302         * driver.c: Copyright text should include 2005.
15303         
15304 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15305
15306         * cpu-amd64.md (load_membase): Fix more max lengths.
15307
15308 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
15309
15310         * cpu-amd64.md (load_membase): Fix max length.
15311
15312         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
15313
15314         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
15315
15316         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
15317         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
15318
15319         * basic-float.cs: Add rounding regression test.
15320
15321         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
15322
15323 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
15324
15325         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
15326         structures in registers for pinvoke wrappers.
15327
15328 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
15329
15330         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
15331
15332 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
15333
15334         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
15335         wrapper to mono_jit_thread_attach.
15336
15337         * mini.c (mini_jit_thread_attach): New jit icall.
15338
15339         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
15340         native->managed wrappers.
15341
15342         * exceptions.cs: Add new regression test.
15343
15344         * mini.c (optimize_branches): Check regions in the cbranch to throw
15345         block case as well. Fixes #73242.
15346
15347 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15348
15349         * mini.c: thread safety fixes.
15350
15351 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
15352
15353         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
15354         patching stuff, since delegates use jump trampolines so there is
15355         no caller.
15356
15357         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
15358         jump trampolines.
15359         
15360         * tramp-amd64.c: Fix build.
15361
15362         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
15363         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
15364
15365         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
15366         Rename this to mono_arch....
15367         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
15368
15369         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
15370
15371         * mini-amd64.c (emit_call): If both the caller and the callee is
15372         guaranteed to have 32 bit addresses, emit a normal call.
15373
15374         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
15375
15376         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
15377         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
15378         method_ptr inside delegates.
15379
15380 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
15381
15382         * mini.c (mono_jit_free_method): Free the method info even if the native code is
15383         invalidated. Fixes #73001.
15384
15385         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
15386
15387         * mini-x86.c: Only use stdcall for pinvokes on windows.
15388
15389 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
15390
15391         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
15392         * mini-x86.c: remove unreliable __thread var offset detection,
15393         use the correct accessors and enable by default.
15394
15395 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15396
15397         * mini.c (mono_jit_free_method): Fix memory leak.
15398
15399 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
15400
15401         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
15402
15403 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
15404
15405         * cpu-amd64.md: Fix lengths of atomic opcodes.
15406
15407 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15408
15409         * driver.c: try to not imply using ICU is any good.
15410
15411 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
15412
15413         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
15414         functions as inline ops.
15415
15416         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
15417         some Interlocked functions as inline ops.
15418
15419         * mini.c (move_basic_block_to_end): Fix bug in last patch.
15420
15421         * mini.h (MonoBasicBlock): Reorganize fields a bit.
15422
15423         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
15424
15425         * mini.c: Add support for OP_NOT_TAKEN.
15426
15427         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
15428         structures in registers for pinvoke wrappers.
15429
15430         * mini-amd64.c: Fix warnings.
15431
15432 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
15433
15434         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
15435
15436         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
15437
15438         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
15439         address instead of loading the address from it.
15440
15441         * mini-x86.c: Add support for returning small structs in registers
15442         on Win32. Fixes part of #70864.
15443         
15444 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
15445
15446         * trace.c (get_token): Improve error checking.
15447
15448 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
15449
15450         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
15451
15452 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
15453  
15454         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
15455         it can be reused for MonoClass.
15456         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
15457         _LINKDEMAND.
15458
15459 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
15460
15461         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
15462         instead of a MonoReflectionMethod. The method information wasn't used
15463         when displaying SecurityException details (but will be now).
15464
15465 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
15466
15467         * Makefile.am : windows build fix.
15468
15469 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
15470
15471         * iltests.il: Add new regression test.
15472
15473         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
15474         #72522.
15475
15476 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
15477  
15478         * mini.c: Moved linkdemand check into helper function check_linkdemand
15479         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
15480         LDFTN, LDVIRTFTN).
15481
15482 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
15483
15484         * declsec.c: Added statistics counter for different kinds of 
15485         LinkDemands.
15486         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
15487         (and commented) declaration.
15488         * mini.c: Added statistics counter for security Demand code 
15489         generation. Added display of security statistics.
15490
15491 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
15492
15493         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
15494         Fix compilation errors under gcc-2.95.
15495
15496 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
15497
15498         * mini.c, driver.c: Use the new jit trampoline hashtable
15499
15500 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15501
15502         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
15503
15504 2005-02-11  Martin Baulig  <martin@ximian.com>
15505
15506         * debug-mini.c (mono_debug_close_method): Free the line number array.
15507
15508 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15509
15510         * aot.c: Break up large methods into smaller ones. Share GOT slots for
15511         icalls.
15512
15513         * mini.h: Bump AOT file format version. 
15514
15515 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
15516
15517         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
15518         APTC and P/Invoke.
15519         * declsec.h: Added macros to get/set lazyly initialized security 
15520         informations about assemblies. Added new enum for different type of
15521         possible LinkDemand violation. Added function to check LinkDemands.
15522         * mini.h: Added a field to MonoCompile to hold any security violation
15523         detected when JITting a method (so it can be thrown later).
15524         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
15525         and CEE_CALLVIRT. Added code to throw exception at the end of
15526         mini_method_compile (note: the exception is unhandled right now).
15527
15528 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15529
15530         * mini.c, jit-icalls.c: use the managed implementation of
15531         memset for initobj and memset, to avoid managed <-> unmanaged
15532         transitions.
15533
15534 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15535
15536         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
15537         optimization if it would need a GOT var.
15538
15539         * basic.cs: Add tests for constant propagation and switch statements.
15540
15541         * ssa.c: Fix out-of-range constant propagation and switch statements.
15542
15543 2005-02-09    <vargaz@freemail.hu>
15544
15545         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
15546
15547 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
15548
15549         * cpu-amd64.md (load_membase): Fix max length of load_membase.
15550
15551 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15552
15553         * mini.c: update to new signature of mono_class_get_allocation_ftn().
15554
15555 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
15556
15557         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
15558         arithmetic operations.
15559
15560 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
15561
15562         * mini-ppc.c: add a workaround for broken user code that
15563         DllImports vararg functions with non-vararg signatures.
15564
15565 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15566
15567         * mini.c (mono_jit_compile_method_inner): Add detection and a 
15568         meaningfull error message for assemblies written in Managed C++.
15569
15570         * tramp-amd64.c mini-amd64.h: Add support for 
15571         create_trampoline_from_token ().
15572
15573         * aot.c mini-x86.c abcremoval.c: Applied patch from
15574         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
15575
15576 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15577
15578         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
15579         which takes a MonoImage/token as parameter instead of a MonoMethod.
15580
15581         * aot.c: Use the new trampoline for initializing vtables.
15582
15583         * aot.c: Add support for ldfld/stfld_remote wrappers.
15584
15585         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
15586         rules for compare <MEM>, IMM.
15587
15588         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
15589
15590         * aot.c: Handle inherited finalizers correctly.
15591
15592 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15593
15594         * inssel.brg (stmt): Add a missing _setup_... ().
15595
15596         * aot.c: Save some parts of the class state to the AOT file and use it
15597         to recompute that state when a class is initialized.
15598
15599         * mini.c: Install AOT hooks into the runtime.
15600
15601         * mini.h: Bump AOT file format version.
15602         
15603         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
15604         Fixes #72148.
15605
15606         * iltests.il: Add new test.
15607
15608 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15609
15610         * mini.c: fix typo.
15611
15612 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
15613
15614         * mini.c: setup the statistical profiler in the thread attach
15615         callback to cope with the new single thread code.
15616
15617 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
15618
15619         * mini-ppc.c: ensure we have enough room for the profiler
15620         calls (fixed bug#72084).
15621
15622 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
15623
15624         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
15625         it.
15626
15627 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15628
15629         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
15630
15631 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15632
15633         * ssapre.c: Fixed an issue with down safety (this allows IronPython
15634         to succesfully execute parrotbench).
15635         * ssapre.h: Likewise.
15636
15637 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15638
15639         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
15640         variable for stores to method arguments (fixes a SSAPRE issue).
15641
15642 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15643
15644         * mini.c: handle value types in dup, fixes gen-112.cs.
15645
15646 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
15647
15648         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
15649         sequence for calls in dynamic methods to avoid thunks.
15650
15651 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15652
15653         * mini.c: correctly remove dynamic methods from the hashtable.
15654
15655 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15656
15657         * driver.c: Disabled SSAPRE until fix the bug that appears
15658         in IronPython's parrotbench.
15659
15660 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15661
15662         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
15663
15664         * mini.c (mono_method_to_ir): Revert the previous change.
15665         
15666         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
15667         when AOT compiling.
15668
15669         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
15670         mono_jit_info_table_find () etc. when running under valgrind.
15671
15672         * inssel.brg: Fix warnings.
15673
15674         * mini-exceptions.c: Fix warnings.
15675
15676 2005-01-31  Martin Baulig  <martin@ximian.com>
15677
15678         * driver.c (compile_all_methods_thread_main): Don't try to compile
15679         generic methods or anything which has type parameters.
15680
15681 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
15682
15683         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
15684
15685         * TestDriver.cs: Add --verbose flags.
15686
15687         * graph.c ssa.c: Fix 64 bit warnings.
15688         
15689         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
15690         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
15691         Fix 64 bit warnings.
15692
15693         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
15694         variable not spotted by gcc.
15695         
15696         * mini-amd64.c inssel-amd64.brg: Applied patch from  
15697         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
15698         X86_COMPARE_MEMBASE opcodes.
15699
15700         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
15701
15702 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
15703
15704         * *: MonoMethod->signature might be NULL now. You *MUST* use
15705         mono_method_signature.
15706
15707 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15708
15709         * driver.c (compile_all_methods_thread_main): Compile the methods
15710         without invoking cctors.
15711
15712 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15713
15714         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
15715         * basic-calls.cs: test for the above.
15716
15717 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15718
15719         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
15720         MonoJitInfo changes.
15721
15722 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
15723
15724         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
15725         eagerly if it contains dynamic methods.
15726         
15727         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
15728
15729         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
15730         trace, it is now computed by an icall from trace_ips.
15731         
15732         * mini-exceptions.c: Fix a warning.
15733
15734 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
15735
15736         * mini-exceptions.c: don't bother getting stack trace info if
15737         it's not going to be used.
15738
15739 2005-01-27  Raja R Harinath  <rharinath@novell.com>
15740
15741         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
15742         ssapre-mini-ops.h.
15743
15744 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
15745
15746         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
15747
15748         * aot.c: Avoid calling mono_method_get_header () if not needed.
15749
15750         * mini.h: Bump AOT file format version.
15751         
15752         * mini.c (mono_emit_native_call): Allocate a GOT var here.
15753
15754         * mini.c (mono_print_tree): Print more info for calls.
15755
15756 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
15757
15758         * declsec.h: Remove warning by adding missing include for marshal.h
15759
15760 2005-01-26  Martin Baulig  <martin@ximian.com>
15761
15762         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
15763         `ip' twice.
15764
15765 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
15766
15767         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
15768         flags.
15769
15770         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
15771
15772         * aot.c (mono_compile_assembly): Fix a warning.
15773
15774 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
15775
15776         * declsec.c: Look for security attributes on the original MonoMethod 
15777         (and not the wrapped one). This fix permissions on icalls.
15778
15779 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15780
15781         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15782
15783         * mini.c (mono_allocate_stack_slots): Add a fixme.
15784
15785         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15786
15787 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15788
15789         * inssel.brg: optimize casts of sealed types (more
15790         optimizations waiting for fixes in remoting).
15791
15792 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15793
15794         * inssel.brg (stmt): Add another dummy rule.
15795
15796         * driver.c: Fix warnings.
15797
15798         * driver.c (mono_main): If running under valgrind, instruct glib to use
15799         the system allocation functions so valgrind can track the memory
15800         allocated by the g_... functions.
15801
15802         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
15803
15804         * mini-ops.h: Add OP_DUMMY_STORE opcode.
15805
15806         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
15807
15808         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
15809         variables in try regions.
15810
15811         * mini.c (mini_method_compile): Don't disable optimizations on large
15812         methods when AOT compiling.
15813
15814         * mini.c (mono_allocate_stack_slots): New arch independent method to 
15815         allocate stack slots. Not yet used.
15816
15817 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
15818
15819         * debug-mini.c (mono_debug_close_method): Plug some leaks.
15820
15821 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
15822
15823         * mini-ppc.c: make the branch info relative as the code
15824         buffer can be reallocated.
15825
15826 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
15827
15828         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
15829         * driver.c: Removed the AOT/security restriction. Now initialize the
15830         security manager (in metadata) if --security is used.
15831         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
15832         rather than the pointer to declarative security, when AOT is used.
15833
15834 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
15835
15836         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
15837         basic blocks, reduced intrinsic exception throwing code size.
15838
15839 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
15840
15841         * driver.c (mini_usage): Reorder the usage screen.
15842
15843 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
15844
15845         * mini.c (mono_resolve_patch_target): Fix warning.
15846
15847 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
15848
15849         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
15850         previous patch.
15851
15852         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15853
15854         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
15855         breaks the amd64 build.
15856
15857         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
15858         register allocation. Fixes #71454.
15859
15860         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15861
15862         * arrays.cs: Add new regression test.   
15863
15864 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15865
15866         * ssapre.c: Turned usage of snprintf to GString.
15867         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
15868         (I left it on by mistake in my previous commit).
15869
15870 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
15871
15872         * mini.c, cfold.c, basic-calls.cs: preserve side effects
15873         on cond branch optimization (fixes bug# 71515).
15874
15875 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15876
15877         * abcremoval.c: Fixed bug 71062.
15878         * abcremoval.h: Likewise.
15879
15880 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15881
15882         * mini.c: Added a new functionality to optimize_branches, the removal
15883         of useless basic blocks, and fixed some problem in the removal of
15884         critical edges; some utility functions added for both purposes.
15885         * ssapre.c: Added complex expression support, and fixed bug 70637.
15886         * ssapre.h: Likewise.
15887         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
15888         enabled in SSAPRE.
15889         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
15890         * driver.c: Re-enabled SSAPRE.
15891
15892 2005-01-19  Martin Baulig  <martin@ximian.com>
15893
15894         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
15895         the result of mono_get_method_constrained().
15896
15897 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
15898
15899         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
15900         manager.
15901
15902 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
15903
15904         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
15905         be detected.  Fixes #59296.
15906
15907 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15908
15909         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
15910         which can happen. Fixes #71361.
15911
15912 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15913
15914         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
15915         manager.
15916
15917 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15918
15919         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
15920         appdomain-unload.exe to fail.
15921         
15922         * mini.c: Fix some memory leaks.
15923
15924 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
15925
15926         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
15927         Fixed bug and sped up some codepaths.
15928
15929 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15930
15931         * mini.c: Fix some memory leaks.
15932
15933         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
15934         conversion.
15935
15936         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
15937
15938         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
15939         #71320.
15940
15941         * iltests.il: Add regression test for #71320.
15942
15943 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
15944
15945         * mini.c (mono_codegen): Fix installation of profiler hooks.
15946
15947         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
15948
15949 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15950
15951         * mini.h, mini.c, cfold.c: optimize access to enum
15952         readonly fields, too. Eval conditional branches if possible
15953         to perform unreachable code removal in more cases.
15954
15955 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
15956
15957         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
15958
15959         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
15960         code manager.
15961
15962         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
15963         WinXP DEP. Fixes #71244.
15964
15965 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
15966
15967         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
15968
15969 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
15970
15971         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
15972
15973 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
15974
15975         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
15976         changes.
15977
15978         * mini.h: Bump AOT version.
15979
15980         * mini.h (MonoCompile): Change exvar to a hash table.
15981
15982         * mini.c: Allocate a separate exvar for each handler block.
15983
15984         * mini.c: Get rid of the computation of filter_lengths, its not needed.
15985
15986         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
15987         ex var with the pending exception and only throw if the two are equal.
15988         Fixes #68552.
15989         
15990         * exceptions.cs: Add tests for rethrow and nested catch clauses.
15991
15992         * mini-x86.c: Fix warnings.
15993
15994         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
15995         used by all the ports now.
15996
15997         * aot.c: Add write-symbols and save-temps options.
15998
15999 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16000
16001         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
16002
16003 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
16004
16005         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
16006         operations.
16007
16008         * tramp-s390.c: Check vtable slot belongs to the domain.
16009
16010         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
16011         as per other platforms.
16012
16013         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
16014
16015 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
16016
16017         * driver.c: we don't run the Main() code in a subthread anymore.
16018
16019 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
16020
16021         * mini.c: added experimental rtc support in the statistical
16022         profiler: if the user has the permission, more accurate statistics
16023         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
16024         The MONO_RTC value must be restricted to what the linux rtc allows:
16025         power of two from 64 to 8192 Hz.
16026
16027 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16028
16029         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
16030
16031 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
16032
16033         * mini-ppc.c: better icache flush for smp.
16034
16035 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
16036
16037         * mini-amd64.c (emit_move_return_value): Fix memory leak.
16038
16039         * mini-x86.c (get_call_info): Add the get_call_info () code from the
16040         amd64 port, not yet used.
16041
16042 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16043
16044         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
16045         a struct type.
16046
16047 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16048
16049         * driver.c: Added --security option to activate the security manager.
16050         Right now this will allow code generation for declarative demands and
16051         is disabled when AOT is specified.
16052         * mini.c: Add code generation for declarative security demands.
16053         * mini.h: Add mono_use_security_manager as an extern gboolean.
16054
16055 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16056
16057         * aot.c (mono_compile_assembly): Speed up compilation a bit by
16058         emitting more dense assembly code.
16059
16060         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
16061         exception throwing stuff.
16062
16063 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
16064
16065         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
16066         dead code.
16067
16068         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
16069         left in by mistake.
16070
16071         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
16072         fixed.
16073
16074         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
16075
16076         * tramp-*.c: Only patch vtable slots if the object is in the current
16077         domain. Fixes appdomain-unload.exe.
16078
16079         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
16080         
16081         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
16082         x86 branch.
16083
16084 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16085
16086         * mini.c (reverse_branch_op): New helper function.
16087
16088         * mini.c (optimize_branches): Run the new optimization only on 
16089         platforms which support it. Also reverse all kinds of branches.
16090
16091         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
16092
16093         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
16094         a throw statement.
16095
16096         * mini.c (optimize_branches): Reverse not-equals branches if the false
16097         bblock is a throw. This happens a lot of time with argument checking in
16098         corlib.
16099
16100         * mini.c (mono_codegen): Add support for placing basic blocks after
16101         the function epilogue.
16102
16103         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
16104         function epilogue.
16105         
16106 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
16107
16108         * mini.c (setup_stat_profiler): Only set this up if the platform
16109         supports ITIMER_PROF.
16110
16111 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16112
16113         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
16114         previous patch.
16115
16116         * inssel.brg: Fix a warning.
16117
16118 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
16119
16120         * mini.c: added support for statistical profiler 
16121         (run with: --profile=default:stat).
16122
16123 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
16124
16125         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
16126
16127         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
16128
16129         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
16130         related to global registers from the amd64 port.
16131
16132 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
16133
16134         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
16135
16136         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
16137         with global registers.
16138         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
16139
16140         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
16141
16142 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
16143
16144         * debug-mini.c (encode_value): Fix off-by-one.
16145
16146         * aot.c (encode_value): Likewise.
16147
16148         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
16149
16150 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
16151
16152         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
16153         AOT.
16154
16155         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
16156         
16157         * aot.c (emit_method_info): Increase size of temp buffer.
16158
16159         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
16160         the AOT case.
16161
16162 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
16163
16164         * aot.c (emit_method_info): Fix build.
16165         
16166         * aot.c: Further rework of the AOT file format to reduce the size of
16167         the method info data.
16168
16169         * mini.h: Bump AOT file format version.
16170
16171 2004-12-27  Martin Baulig  <martin@ximian.com>
16172
16173         * mini.c (mini_get_method): New static method; call
16174         mono_get_method_full() and mono_get_inflated_method().
16175         (mono_method_to_ir): Use mini_get_method() instead of
16176         mono_get_method_full(). 
16177
16178 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
16179
16180         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
16181
16182 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
16183
16184         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
16185
16186         * inssel-amd64.brg: Add some optimization rules.
16187
16188 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
16189
16190         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
16191         standard not GC'd stuff is fine.
16192
16193 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
16194
16195         * aot.c: Rework the AOT file format to get rid of most of the global
16196         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
16197
16198         * mini.h: Bump AOT file format version.
16199         
16200 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
16201
16202         * mini.h: Bump AOT file format version.
16203
16204         * aot.c (mono_aot_is_got_entry): New function to determine if an 
16205         address is inside a GOT.
16206
16207         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
16208
16209         * cpu-pentium.md: Increase the maximum size of some instructions which
16210         might involve a got access.
16211         
16212         * mini.c (get_method_from_ip): Another debug helper function.
16213
16214         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
16215         when got var accesses are created during the decompose phase.
16216
16217         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
16218
16219         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
16220         argument mini_compile_method and to MonoCompile, and use this to
16221         determine whenever a given method is compiled for AOT. This allows the
16222         other methods compiled during AOT compilation to be free of AOT stuff,
16223         so the backends does not need to add special support for them by
16224         creating a fake GOT etc.
16225
16226         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
16227         longer needed.
16228
16229 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16230
16231         * mini.c (mono_method_to_ir): It turns out that some of the
16232         x-appdomain wrappers are lax with types, so just ignore this for
16233         all wrappers.
16234
16235         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
16236         at the vtable->klass. If it is non-shared code we can just use the
16237         vtable.
16238
16239 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
16240
16241         * mini-ppc.c: access MonoDomain from tls, too.
16242
16243 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
16244
16245         * declsec.c: Removed unused variable (and related warning ;-)
16246
16247 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16248
16249         * iltests.il: New test for LDELEMA on an array of ref types.
16250
16251         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
16252         all ldelema's on reftypes.
16253         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
16254         it was the wrong place to put it.
16255
16256         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
16257         register to pop to make this cleaner, at the request of Paolo.
16258
16259 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16260
16261         * mini-ops.h (OP_GETHASHCODE): New op.
16262
16263         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
16264
16265         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
16266         operation.
16267
16268         For a microbenchmark, this reduces the cost of Hashtable.get_Item
16269         by 25%.
16270         
16271         * mini-x86.c (mono_arch_output_basic_block): Rather than
16272
16273         add ebp, 4
16274
16275         Emit
16276
16277         pop edx
16278
16279         The first is 3 bytes while the second is 1. This saves 36 kb on
16280         mscorlib, quite a big saving. When bootstraping mcs, I was able to
16281         see a small boost because of icache locality.
16282
16283         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
16284
16285 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
16286
16287         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
16288         started code sharing with the generic code.
16289
16290 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
16291
16292         * mini-ppc.c, cpu-g4.md: added code for direct access to
16293         tls data slots.
16294
16295 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
16296
16297         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
16298          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
16299         to OP_TLS_GET.
16300
16301 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
16302
16303         * declsec.c|h: Added functions to cache the declarative stack modifiers
16304         in MonoJitInfo and to create a security frame from a MonoJitInfo 
16305         structure.
16306         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
16307         created. Register internal calls for System.Security.SecurityFrame::
16308         _GetSecurityFrame and _GetSecurityStack.
16309         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
16310         the definitions for the new stack walk/callback mechanism.
16311         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
16312         first security frame for LinkDemands and InheritanceDemands) and
16313         GetSecurityStack for Demands. Both use the new mono_walk_stack code
16314         from lupus.
16315         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
16316         walk initialization (lupus).
16317
16318 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16319
16320         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
16321         idiom.
16322         (handle_loaded_temps): Do not create a temporary variable for
16323         things that we know are temps. They will never be modified.
16324         (mono_spill_call): Set MONO_INST_IS_TEMP
16325         (mono_emulate_opcode): ditto
16326         (emit_tree): ditto
16327         (mono_method_to_ir.CEE_DUP): ditto
16328
16329 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
16330
16331         * mini.c (type_to_eval_stack_type): Make this handle the void type
16332         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
16333         (emit_tree): use ip_in_bb to special case some common idioms
16334         Update all callers to pass in the IP.
16335         (mono_method_to_ir): Make CEE_CALL* do the above as well.
16336
16337         This gives us a nice 2% speedup in mcs bootstrap.
16338
16339         * mini-x86.c (peephole_pass): Peephole pass to make
16340         mov  [foo], eax
16341         push [foo]
16342
16343         into
16344
16345         mov [foo], eax
16346         push eax
16347
16348         * mini.c (ip_in_bb): new method.
16349         (mono_method_to_ir): use this method rather than doing the hash
16350         lookup ourselves.
16351
16352         * linear-scan.c (mono_linear_scan): When expiring actives, you
16353         don't need to keep around variables that expire on this
16354         instruction. This makes it so that:
16355              a = b + 1
16356         will turn into:
16357              store (ebx add (ebx, 1))
16358         which will become
16359              add ebx, 1
16360
16361 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
16362
16363         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
16364         combination to avoid doing two copies. Fix up problems with previous
16365         patch.
16366
16367         * mini.c: Fix 64 bit warnings.
16368
16369         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
16370
16371 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
16372
16373         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
16374         changes from the x86 code.
16375
16376         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
16377
16378 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
16379
16380         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
16381         throwing code to reduce its size, unify the AOT and non-aot code and 
16382         get rid of relocations in the AOT case.
16383
16384         * mini-x86.h mini.c exceptions-x86.c 
16385         (mono_arch_get_throw_corlib_exception): New arch specific function to 
16386         raise corlib exceptions which doesn't require relocations in the 
16387         caller.
16388
16389         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
16390
16391 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
16392
16393         * mini.c (mono_emit_method_call): Only allocate the got var when it is
16394         needed.
16395
16396         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
16397         in the AOT case.
16398
16399 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16400
16401         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
16402         with add function when used from Inc/dec atomic 
16403         functions. Re-enabled optimization on x86.
16404         * mini-ops.h: renamed atomic_add functions to
16405         allow _add to match the Interlocked::Add and
16406         _add_next to match Interlocked::Inc/Dec.
16407
16408 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
16409
16410         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
16411         linking of BBs to the end BB, and enabled SSAPRE also with
16412         consprop and copyprop (which was prevented by that bug).
16413
16414 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16415
16416         * mini-x86.c: disabling the Interlocked optimizing code. 
16417
16418 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16419
16420         * aot.c (load_aot_module): Move reading of got_addr after the AOT
16421         file version check.
16422         
16423 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16424
16425         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
16426         interlocked optimization due lack of support on x86, rewrote 
16427         exchange to take into account that base may be in eax.
16428         
16429         xsp works again; activated Interlocked optimizing code.
16430         
16431 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16432
16433         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
16434
16435 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
16436
16437         * mini-ops.h: Add new opcodes.
16438
16439         * mini.h: Add new patch types. Add got_var to MonoCompile.
16440
16441         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
16442         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
16443         make it work with all kinds of patchable code.
16444
16445         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
16446         address of the GOT, and referencing entries in the GOT.
16447
16448         * mini.c: Add code to load the GOT address if needed by an opcode.
16449
16450         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
16451         independent AOT code on the x86 using an elf-style Global Offset Table.
16452
16453 2004-12-14  Raja R Harinath  <rharinath@novell.com>
16454
16455         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
16456
16457 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16458
16459         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
16460         when running xsp.
16461
16462 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
16463
16464         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
16465         of Interlocked:Increment/Decrement/Add as inline ops.
16466         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
16467
16468 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
16469
16470         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
16471         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
16472
16473 2004-12-12  Duncan Mak  <duncan@ximian.com>
16474
16475         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
16476         again. `patch_info->table_size' is no longer valid after Zoltan's
16477         commit #37636.
16478
16479 2004-12-12  Martin Baulig  <martin@ximian.com>
16480
16481         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
16482         if we are the "real" method, ie. not an inlined method inside it.
16483
16484 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
16485
16486         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
16487         before we look in the special fields table. This fixes
16488         ../tests/thread-static-init.cs.
16489
16490 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16491
16492         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
16493         for Array get_Rank and get_Length. Fixes bug #70465.
16494
16495 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
16496
16497         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
16498         separate structure to reduce the size of MonoJumpInfo.
16499
16500 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
16501
16502         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
16503
16504 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
16505
16506         * mini.c (mini_get_inst_for_method): Changed to allow ports
16507         to return a MonoInst instead of opcode 
16508         (renamed mini_get_opcode_for_method to better reflect the new functionality)
16509         
16510         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
16511         Allow ports to return a created MonoInst instead of op-code, will enable
16512         new optimizations.
16513         (renamed mini_get_opcode_for_method to better reflected the functionality)
16514
16515 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
16516
16517         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
16518
16519 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16520
16521         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
16522         Fixes #69985.
16523
16524 2004-12-08  Martin Baulig  <martin@ximian.com>
16525
16526         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
16527         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
16528
16529 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16530
16531         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
16532         correctly.
16533
16534         * exceptions.cs: Disable some tests which depend on properties of x86 fp
16535         arithmetic.
16536
16537 2004-12-08  Raja R Harinath  <rharinath@novell.com>
16538
16539         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
16540
16541 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
16542
16543         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
16544         bug introduced by the previous patch.
16545
16546 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16547
16548         * mini-ppc.c, objectc.cs: handle large structs passed by value
16549         (fixes bug #69972).
16550
16551 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
16552
16553         * mini-ppc.c: OP_ARGLIST implementation from
16554         Geoff Norton  <gnorton@customerdna.com>.
16555
16556 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16557
16558         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
16559         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
16560
16561 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16562
16563         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
16564
16565 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16566
16567         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
16568         support.
16569
16570 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
16571
16572         * mini-sparc.c: Zero out localled-ed memory.
16573
16574         * iltests.il: Add tests for zeroing out localloc-ed memory.
16575
16576 2004-12-04  Martin Baulig  <martin@ximian.com>
16577
16578         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
16579         mono_method_get_signature_full().       
16580
16581 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
16582
16583         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
16584         and some utility functions (always for SSAPRE), integrated SSAPRE.
16585         * mini.h: Likewise.
16586         * driver.c: Added ssapre option.
16587         * ssa.c: Small fix on OP_ARG handling.
16588         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
16589         * Makefile.am: Likewise.
16590
16591 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16592
16593         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
16594         now in the xp code.
16595
16596         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
16597         icall.
16598
16599 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16600
16601         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
16602         
16603         * cpu-s390.md : Increase instruction length of oparglist.
16604
16605         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
16606
16607 2004-11-30  Martin Baulig  <martin@ximian.com>
16608
16609         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
16610         virtual generic methods.  We call a special helper_compile_generic_method()
16611         icall to retrieve the method from the vtable, inflate and compile
16612         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
16613
16614         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
16615
16616 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
16617
16618         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
16619
16620 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
16621
16622         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
16623         Fixes #69929.
16624
16625 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
16626
16627         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
16628         platforms with PIC aot.
16629
16630 2004-11-28  Martin Baulig  <martin@ximian.com>
16631
16632         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
16633         Fixes gen-112.cs.
16634
16635 2004-11-28  Martin Baulig  <martin@ximian.com>
16636
16637         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
16638         the result of mono_type_get_underlying_type() to check whether
16639         we're byref.
16640
16641 2004-11-26  Martin Baulig  <martin@ximian.com>
16642
16643         * mini.c
16644         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
16645         in the g_assert().
16646
16647 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
16648
16649         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
16650         the same way as the other arguments so they won't get clobbered.
16651
16652         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
16653         calls through R11 since it is clobbered by the trampoline code.
16654
16655 2004-11-26  Raja R Harinath  <rharinath@novell.com>
16656
16657         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
16658         pick up in-tree mscorlib.dll.
16659
16660 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16661
16662         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
16663
16664         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
16665         runtime data/code are now stored in a table similar to the GOT in ELF. 
16666         This allows the code itself to be position independent.
16667
16668         * aot.c: Fix loading of referenced assemblies after the lazy assembly
16669         loading changes.
16670
16671         * aot.c: Attach ELF type (object/function) directives to all global
16672         symbols.
16673
16674         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
16675
16676         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
16677
16678         * mini-amd64.h: Turn on PIC AOT code.
16679
16680         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
16681         returning the offset within an OP_AOTCONST instruction where the GOT
16682         offset needs to be added.
16683
16684         * mini.h: Bump AOT file format version.
16685
16686 2004-11-25  Martin Baulig  <martin@ximian.com>
16687
16688         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
16689         uninflated generic methods.
16690
16691 2004-11-25  Martin Baulig  <martin@ximian.com>
16692
16693         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
16694
16695 2004-11-24  Martin Baulig  <martin@ximian.com>
16696
16697         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
16698         original klass (this only applies for generic instances).
16699
16700 2004-11-24  Martin Baulig  <martin@ximian.com>
16701
16702         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
16703         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
16704         that array).
16705
16706 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
16707
16708         * mini.c (mono_method_to_ir): Disable inlining for methods containing
16709         localloc. Fixes #69678.
16710
16711         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
16712         
16713 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
16714
16715         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
16716         used SSE registers on pinvoke calls. Fixes #69774.
16717
16718 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
16719
16720         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
16721         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
16722
16723 2004-11-23  Raja R Harinath  <rharinath@novell.com>
16724
16725         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
16726         Refer directly to the mcs/ tree.
16727
16728 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16729
16730         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
16731         Check if a trampoline for a synchronized method is required. 
16732
16733 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
16734
16735         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
16736         with localloc if needed. Throe arithmetric exception in
16737         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
16738         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
16739
16740 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
16741
16742         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
16743         types before switching on type.  Fixes #69622.
16744
16745 2004-11-19  Raja R Harinath  <rharinath@novell.com>
16746
16747         * Makefile.am (check-local): New.  Integrate into 'make check'.
16748         (MCS,RUNTIME): Define using in-tree mono and mcs.
16749         (ILASM): New.
16750         (%.exe): Use $(ILASM).
16751
16752 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
16753
16754         * mini-ppc.c: adjust initial prolog size (bug #69691).
16755
16756 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
16757
16758         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
16759         #69664.
16760
16761 2004-11-17  Raja R Harinath  <rharinath@novell.com>
16762
16763         * Makefile.am (clean-local): Rename from 'clean'.
16764
16765 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16766
16767         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
16768         to mono_arch_is_int_overflow. 
16769         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
16770         SIGFPE events.
16771
16772 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
16773
16774         * declsec.c|h: New files to support declarative security attributes.
16775         Added function to check if a method has (applicable) security.
16776         * mini.c|h: Add check for declarative security attributes in
16777         mono_method_check_inlining.
16778         * Makefile.am: Added declsec.c and declsec.h to the build.
16779
16780 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
16781
16782         * mini.c, mini.h: update to keep dynamic code info per-domain.
16783
16784 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
16785
16786         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
16787         (mini_init): Get rid of it from here too.
16788
16789 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
16790
16791         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
16792         implemented OP_RETHROW (patch by Geoff Norton
16793         <gnorton@customerdna.com>).
16794
16795 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
16796
16797         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
16798         between appdomains.  Fixes appdomain-unload on PPC.
16799
16800 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
16801
16802         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16803         mini-exceptions.c: handle the new wrapper types.
16804         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
16805         token value as a MonoClass* when compiling a wrapper.
16806         mono_jit_create_remoting_trampoline now takes an additional
16807         MonoRemotingTarget parameter.
16808         
16809 2004-11-10  Martin Baulig  <martin@localhost>
16810
16811         * mini.c (mono_method_to_ir): Use `generic_container->context'
16812         rather than creating a new one.
16813
16814 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16815
16816         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
16817
16818         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
16819
16820 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
16821
16822         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
16823         the experimental aot cache stuff.
16824
16825 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16826
16827         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16828         mini-exceptions.c: update to exception clause structure changes.
16829
16830 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16831
16832         * exceptions-x86.c (throw_exception): Fix warnings.
16833
16834         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
16835         for OP_RETHROW.
16836
16837 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16838
16839         * exceptions-sparc.c (get_throw_exception): Really fix this.
16840
16841 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
16842
16843         * tramp-*.c: we no longer support icalls without wrappers, so
16844         a bit of code can be removed here
16845
16846 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
16847
16848         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
16849         patch.
16850
16851         * cpu-sparc.md: Add op_rethrow.
16852
16853         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
16854
16855         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
16856
16857         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
16858         * mini-ops.h: Add OP_RETHROW.
16859
16860         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
16861
16862         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
16863
16864 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
16865         
16866         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
16867         Makes the output much easier to read
16868
16869 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
16870
16871         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
16872         prevents another huge leak when compiling with ssa. Secondly, the
16873         performance of doing this rather than freeing the lists is much
16874         better. GList does a lock every time you allocate a list link,
16875         so that it can use a memory pool. So, it is better to just use
16876         a memory pool of our own.
16877         
16878         * ssa.c, linear-scan.c: replace g_list_remove_link with
16879         g_list_delete.  The remove one does not free the GList, so we were
16880         leaking memory. On -O=all --compile-all with corlib, this cut down
16881         3 MB of allocations.
16882
16883 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
16884
16885         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
16886
16887         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
16888
16889         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
16890         into a new function mono_create_jit_trampoline ().
16891
16892 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
16893
16894         * trace.c (get_spec): Allow tracing of classes without a namespace.
16895
16896 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
16897
16898         * mini.c: Fix pointer overwrite in mini_method_compile.
16899
16900 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
16901
16902         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
16903         The darwin ABI needs some special handling for 1 and 2 byte structs
16904         Lets use lbz/lhz instead of lwz everywhere.
16905         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
16906         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
16907         Use stb/sth for the former, and put the latter always on stack instead of in
16908         argument registers.
16909
16910 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
16911
16912         * trace.c (is_filenamechar): Add '_'.
16913
16914 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
16915
16916         * mini-s390.c: Fix prolog length to allow for large trace requirements.
16917
16918         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
16919
16920 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
16921
16922         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
16923         depends on libmonogc. Fixes #68805.
16924
16925 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
16926
16927         * mini.c (mono_jit_free_method): Provide extra information for
16928         this error.  Currently this leaks, but will be turned into a
16929         developer option in the future.
16930
16931 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
16932
16933         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
16934
16935 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
16936
16937         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
16938         boundary. Fixes reading of PATCH_INFO_R4 and R8.
16939         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
16940
16941 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
16942
16943         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
16944         trampolines for AOT code.
16945
16946 2004-10-22    <vargaz@freemail.hu>
16947
16948         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
16949         constructed types. Fixes #68136.
16950
16951 2004-10-21  Martin Baulig  <martin@ximian.com>
16952
16953         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
16954         if it returns true, unwind the stack to the call instruction.
16955
16956 2004-10-21    <vargaz@freemail.hu>
16957
16958         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
16959
16960         * mini.h: Bump AOT version number.
16961
16962         * objects.cs: Add another test for unbox trampolines.
16963
16964         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
16965         valuetype methods.
16966
16967 2004-10-20    <vargaz@freemail.hu>
16968
16969         * driver.c: Add SHARED to the set of optimizations tested.
16970
16971         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
16972
16973         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
16974         used by CEE_NEWARR.
16975
16976         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
16977
16978 2004-10-20  Martin Baulig  <martin@ximian.com>
16979
16980         * mini-exceptions.c (mono_handle_exception): Call
16981         mono_debugger_handle_exception() to tell the debugger about
16982         catch/finally clauses.
16983
16984 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
16985
16986         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
16987
16988         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
16989         #68447.
16990
16991 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
16992
16993         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
16994         methods as their native size, fixed bug #57543, #57545.
16995         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
16996         This saves a temporary register and mullw call down into 1 (minor perf
16997         increase for cases like sum = sum * 5;  This use to translate into:
16998             li r11,5
16999             mullw r28,r28,r11
17000         It now translates to
17001             mulli r28,r28,5
17002
17003 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
17004
17005         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
17006         #68388.
17007
17008 2004-10-11  Martin Baulig  <martin@ximian.com>
17009
17010         * mini.c (mono_method_to_ir): If we're a generic method, get the
17011         MonoGenericContainer from our MonoMethodNormal and create a
17012         MonoGenericContext from it.
17013
17014 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
17015
17016         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
17017
17018         * basic-long.cs: Add test for checked i8->i2 cast.
17019
17020 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17021
17022         * inssel-ppc.brg: added a couple of speedup rules.
17023
17024 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
17025
17026         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
17027         to speed up rebuilds.
17028
17029 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17030
17031         * mini-s390.c: Minor fix to OP_OR_IMM.
17032
17033 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
17034
17035         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
17036         better. Fixes appdomain-unload.exe on sparc.
17037
17038 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
17039
17040         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
17041         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
17042         see bug 67324.
17043
17044 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
17045
17046         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
17047
17048 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
17049
17050         * mini.c: Always generate a field read/write wrapper for members
17051         of the class MarshalByRefObject since the actual instance could
17052         be a CBO.
17053
17054 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
17055
17056         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
17057
17058 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
17059
17060         * driver.c mini.h trace.c: Move the setting of the main assembly into
17061         a separate function called mono_trace_set_assembly () and call it after
17062         actually loading the main assembly. Fixes #66872.
17063
17064 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
17065
17066         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
17067         using the code manager.
17068
17069 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
17070
17071         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
17072
17073 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
17074
17075         * cpu-amd64.md: Fix bug in previous patch.
17076         
17077         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
17078         #66650.
17079
17080 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
17081
17082         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17083         mini-exceptions.c: updates for changed stack walk interface.
17084
17085 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17086
17087         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
17088
17089 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
17090
17091         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
17092
17093 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
17094
17095         * driver.c (mini_regression_list): Do not call mono_assembly_close 
17096         since assemblies can't be unloaded.
17097         
17098 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17099
17100         * cpu-amd64.md: Fix more instruction lengths.
17101
17102         * cpu-amd64.md: Fix lengths of some instructions.
17103
17104 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
17105
17106         * inssel.brg: Make the array ldelema check aot friendly.
17107
17108 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17109
17110         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
17111
17112         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
17113
17114 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
17115
17116         * mini-x86.c: Fix build.
17117
17118         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
17119         mono_type_get_underlying_type () helper function to simplify code.
17120         
17121 2004-09-09  Martin Baulig  <martin@ximian.com>
17122
17123         * mini-amd64.c: Don't access `type->data.klass' directly, call
17124         mono_class_from_mono_type() instead since the type may be a
17125         generic instance.
17126
17127 2004-09-09  Martin Baulig  <martin@ximian.com>
17128
17129         * mini-amd64.c (get_call_info): Fix support for generic instances.
17130         (add_valuetype): Use mono_class_from_mono_type() to get the class
17131         since we can be a generic instance.
17132
17133 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
17134
17135         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
17136
17137 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17138
17139         * liveness.c: reset spill costs on each scan: bug 62107
17140
17141 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
17142
17143         * exceptions-sparc.c (mono_arch_find_jit_info): remove
17144         unnecessary line that doesn't compile
17145
17146 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17147
17148         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
17149         trampolines, make them call an error function so people can fix their
17150         code.
17151
17152 2004-09-06  Martin Baulig  <martin@ximian.com>
17153
17154         * mini.c (mono_method_to_ir): When initializing locals, handle a
17155         generic instances like a valuetype if it's a valuetype and like a
17156         class if it's a class.
17157
17158 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17159
17160         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
17161         stack. Fixes #64674.
17162
17163         * exceptions.cs: Add test for unwinding of call arguments.
17164
17165 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
17166
17167         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
17168         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
17169         set the carry/borrow flag). The sparc and s390 implementations
17170         can now use optimized versions (and simplify the code). ppc bugfixes.
17171
17172 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17173
17174         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
17175
17176 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
17177
17178         * inssel-amd64.brg: Remove leftover 32 bit rule.
17179
17180         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
17181
17182 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
17183
17184         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
17185         mono_arch_find_jit_info functions into a new function. Fix a memory
17186         leak.
17187
17188         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
17189         refactored code.
17190         
17191 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17192
17193         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
17194         as well.
17195         
17196         * exceptions.cs: Add array size tests.
17197
17198         * mini.c: Allocate a separate icall wrapper for each arity of 
17199         mono_array_new_va. Fixes #59509.
17200
17201         * exceptions.cs: Add testcase for 64578.
17202
17203         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
17204
17205         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
17206         
17207 2004-09-02  Martin Baulig  <martin@ximian.com>
17208
17209         * mini.c (mono_method_to_ir): When initializing the locals, call
17210         handle_initobj() on the generic instance itself, not its
17211         underlying type.
17212
17213 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17214
17215         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
17216         MonoJitInfo for dynamic methods.
17217
17218         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
17219
17220         * mini.c: Add support for freeing JIT data for dynamic methods.
17221         
17222 2004-09-01  Martin Baulig  <martin@ximian.com>
17223
17224         * mini-x86.c (is_regsize_var): Added support for generic
17225         instances.
17226         (mono_arch_emit_prolog): Make this compile again, use
17227         `x86_push_imm_template (code)'.
17228
17229 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
17230
17231         * mini-x86.c: make all push_imm instructions that get
17232         patched always emit the long form
17233
17234 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
17235
17236         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
17237         in a per-domain hash.
17238
17239         * mini-amd64.c (merge_argument_class_from_type): Handle generic
17240         types.
17241
17242 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
17243
17244         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
17245         work.
17246         
17247         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
17248         work.
17249
17250         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
17251         Beginnings of SSE2 support.
17252
17253         * exceptions.cs: Add more tests for checked int<->uint casts.
17254
17255 2004-08-28  Martin Baulig  <martin@ximian.com>
17256
17257         * mini-x86.c (mono_arch_instrument_epilog): Added support for
17258         generic instances.
17259
17260         * mini.c
17261         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
17262         Handle generic instances recursively.
17263
17264 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17265
17266         * iltests.il: test for conv.u8 on a constant
17267
17268 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17269
17270         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
17271         LCONV_x4 (shrun_32 (membase)).
17272
17273 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17274
17275         * inssel-x86.brg: c&p rules for push/setret of long
17276
17277 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17278
17279         * inssel-x86.brg: c&p rules for compare (base, regvar) and
17280         compare (regvar, base)
17281
17282         * inssel-x86.brg: more burg love
17283
17284         * inssel.brg: more cleanup
17285
17286         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
17287
17288 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17289
17290         * basic-long.cs, basic-calls.cs: new tests for optimization.
17291
17292 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
17293
17294         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
17295         patch.
17296
17297 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17298
17299         * mini-amd64.c (read_tls_offset_from_method): Add another case.
17300         
17301 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
17302
17303         * inssel.brg (mini_emit_memcpy): use 
17304         NO_UNALIGNED_ACCESS to disable memcpy optimization
17305
17306 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17307
17308         * mini-amd64.c: Handle generic types in various places.
17309
17310         * mini.c (mono_method_to_ir): Handle generic types in init locals.
17311
17312 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
17313
17314         * mini.c (handle_box): Fix warning.
17315
17316         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
17317
17318         * mini-amd64.h: Enable the emit_state optimization.
17319
17320         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
17321
17322         * mini-amd64.c: Add some new 64 bit peephole opts.
17323
17324         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
17325
17326         * cpu-amd64.md: sreg1 of div instructions must be %rax.
17327
17328         * mini-amd64.c: Register allocator fixes.
17329
17330         * mini.c: Add an optimization to emit_state to avoid allocation of new
17331         registers on some platforms.
17332
17333 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
17334
17335         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
17336
17337         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
17338         allocation. Fixes #63085.
17339
17340         * basic-long.cs: Add new regression test.
17341
17342         * mini-amd64.c: Register allocator improvements.
17343
17344 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
17345
17346         * mini-amd64.c (read_tls_offset_from_method): Add another code
17347         sequence.
17348
17349         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
17350         instruction sequence for nullifying class init trampolines.
17351
17352         * objects.cs: Add new regalloc test.
17353
17354         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
17355
17356 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17357
17358         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
17359         
17360         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
17361         arguments.
17362
17363         * driver.c: Fix profiling after TLS changes.
17364         
17365         * driver.c (mono_main): Set mono_stats.enabled if needed.
17366
17367         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
17368         CEE_BOX.
17369
17370 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
17371
17372         * mini-x86.c: use a 1 op rather than a 2 op tls access
17373         instruction -> faster.
17374
17375 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17376
17377         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
17378         x86 backend.
17379
17380 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
17381
17382         * exceptions-sparc.c (throw_exception): fix typo
17383
17384 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17385
17386         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
17387         set tree->dreg correctly with tls. Allow any
17388         register to be used.
17389
17390         * mini-x86.c (read_tls_offset_from_method): add new code
17391         generation pattern seen with GCC.
17392
17393
17394 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17395
17396         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
17397         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17398         exceptions-sparc.c: fix some performance issues in exception
17399         handling and setting of the stack trace for exceptions that were
17400         already thrown.
17401
17402 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17403
17404         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
17405         x86 backend.
17406         
17407         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
17408         registers.
17409
17410 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17411
17412         This patch inlines tls access, when possible.
17413         
17414         * mini.h: new arch functions for TLS intrinsics.
17415         All platforms updated with a stub.
17416
17417         * mini.c: use the new intrinsics
17418
17419         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
17420         arch specific intrinsic for tls variables
17421
17422 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17423
17424         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
17425         under windows.
17426
17427 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17428
17429         * mini.c: thread local allocation
17430
17431 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
17432
17433         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
17434
17435         * Makefile.am: Link against the static version of libmonogc.
17436         
17437         * Makefile.am: Link the static versions of the convenience libraries
17438         into the mono executable.
17439
17440         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
17441
17442 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
17443
17444         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
17445         on integer overflow.
17446
17447         * mini-amd64.c: Reorganize function call code.
17448
17449         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
17450
17451 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17452
17453         * inssel-x86.brg: use xor eax,eax.
17454         
17455         * basic.cs: new tests
17456
17457 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17458
17459         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
17460         in exception throwing code.
17461         
17462 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17463
17464         * inssel-x86.brg: use xor esi,esi.
17465
17466 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17467
17468         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
17469         can trace methods compiled during mini_init () too.
17470
17471         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
17472         CEE_CONV_U4.
17473
17474 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17475
17476         * Makefile.am: static link on x86 (r=zoltan)
17477
17478 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17479
17480         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
17481         code since it causes some programs to fail.
17482
17483 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
17484
17485         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
17486
17487 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17488
17489         * mini.c: ovfops_op_map - add STACK_OBJ case for
17490         CONV_I 
17491         * basic.cs: add test_0_pin_string as test
17492         case for above.
17493
17494 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17495
17496         * Makefile.am: build C# if srcdir != builddir
17497
17498 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17499
17500         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
17501         fall-through blocks.
17502
17503 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17504
17505         * driver.c: enable loop by default again and include abcrem in -O=all.
17506
17507 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
17508
17509         * iltests.il: Add some localloc tests.
17510
17511         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
17512
17513         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
17514         Fixes #62574.
17515
17516         * inssel-amd64.brg: Add some optimizations.
17517
17518         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
17519         for gcc-3.4.
17520
17521         * Makefile.am: Statically link mono against libmono on AMD64.
17522         
17523         * mini-amd64.c inssel-amd64.brg: Optimizations.
17524
17525 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
17526
17527         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
17528
17529         * tramp-amd64.c: Patch calling code in trampolines.
17530
17531 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
17532
17533         * mini-amd64.c: pinvoke struct passing fixes.
17534
17535 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
17536
17537         * mini-sparc.c: redo change, make mono_arch_cpu_init call
17538         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
17539
17540 2004-08-05  Duncan Mak  <duncan@ximian.com>
17541
17542         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
17543         CEE_LDELEM_ANY.
17544
17545 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17546
17547         * mini-amd64.c (emit_move_return_value): Move return value for normal
17548         calls too.
17549
17550 2004-08-05  Martin Baulig  <martin@ximian.com>
17551
17552         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
17553         `type->type'; just modify `type' itself when dealing with enums
17554         and generic instances.
17555         (check_call_signature): Make `simple_type' a `MonoType *'.
17556
17557 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17558
17559         * mini.c: Use OP_PADD to add offsets to addresses.
17560
17561         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
17562
17563 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
17564
17565         * mini-sparc.c (mono_arch_emit_epilog): fix check
17566         for folding last op into restore instruction
17567
17568 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17569
17570         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
17571         helper methods using the code manager.
17572         
17573         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
17574
17575         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
17576
17577 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17578         
17579         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
17580           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
17581
17582         * mini-s390.c: fix tail processing
17583
17584 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
17585
17586         * mini-ppc.c: mul.ovf.un exception name fix.
17587
17588 2004-08-03  Martin Baulig  <martin@ximian.com>
17589
17590         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
17591         instances; before jumping to `handle_enum', also modify `ptype'.
17592
17593 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
17594
17595         * cpu-sparc.md: fcall maximal length too small.
17596
17597 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
17598
17599         * mini-amd64.c mini.h: Add initial support for passing/returning 
17600         structures to/from pinvoked methods.
17601
17602 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
17603
17604         * mini-ppc.c: reg allocator fix.
17605
17606 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
17607
17608         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
17609
17610         * inssel.brg: Optimize memset on 64 bit machines.
17611
17612         * mini-amd64.c: Fix some vararg cases.
17613
17614 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17615
17616         * mini-s390.c: Corrected macro in emit_float_to_int
17617
17618         * s390-abi.cs: Tests to exercise the s390 ABI
17619
17620 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17621
17622         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
17623         caller saved regs.
17624
17625         * basic.cs: Add a test for add.ovf.un.
17626
17627 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
17628
17629         * mini-sparc.c: add case for OP_IDIV_UN
17630
17631 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17632
17633         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
17634         
17635         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
17636
17637 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
17638
17639         * basic.cs: regression tests.
17640
17641         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
17642         regressions.
17643
17644 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17645
17646         * basic.cs: Add a new test.
17647
17648         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
17649         and AOT. Various fixes and optimizations.
17650
17651         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
17652
17653 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17654
17655         * mini-ppc.c: make sure temp regs are not used for global reg
17656         allocation.
17657
17658 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
17659
17660         * cpu-sparc.md: conv_i8 fix for 64bits
17661
17662         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
17663
17664 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
17665         
17666         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
17667         add opcode for cmp BYTE PTR [eax], imm.
17668
17669         * inssel.brg: Make memcpy and memset takes bases.
17670
17671 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17672
17673         * *-amd64.*: More AMD64 work.
17674         
17675 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17676
17677         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
17678         add a compare-not-equal opcode.
17679         
17680 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
17681
17682         * mini.c: Use mono_init_from_assembly instead of mono_init.
17683         
17684 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17685
17686         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
17687
17688         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
17689
17690         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
17691
17692         * inssel.brg: 64 bit fixes.
17693
17694         * mini.h (MonoCallInst): Add some AMD64 specific data.
17695
17696         * mini.h: Add some OP_P opcodes.
17697
17698 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17699
17700         * basic.cs: tests for 61797 and 61740
17701
17702 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
17703
17704         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
17705         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
17706
17707 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
17708
17709         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
17710
17711         * *-amd64*.*: Ongoing AMD64 work.
17712
17713 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
17714
17715         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
17716
17717         * *-amd64*: Ongoing AMD64 work.
17718
17719         * mini-arch.h: Add AMD64 support.
17720
17721         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
17722
17723         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
17724
17725         * mini-ops.h: Add new opcodes.
17726
17727         * Makefile.am: Add AMD64 support.
17728
17729         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
17730         rules into the inssel-long*.brg files.
17731
17732         * *-amd64.*: Add beginnings of AMD64 backend.
17733
17734 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
17735
17736         * mini.c (print_dfn): commenting out the code that prints
17737         the cil. With -O=deadce, this makes -v -v crash.
17738         
17739         * cpu-pentium.md: make checkthis have a length of 2
17740
17741 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
17742
17743         * mini-sparc.h: fix implementations of __builtin
17744         functions for Sun compiler for V9.
17745
17746 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
17747
17748         * mini.c: use the new stelem.ref wrapper
17749         * exceptions.cs, arrays.cs: new stelem.ref tests
17750
17751 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17752
17753         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
17754         new XSP should work with these changes).
17755
17756 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
17757         
17758         * inssel-{long32,x86,}.brg: trivial optimizations.
17759         
17760 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
17761
17762         * mini.c: load value when emitting box operation in
17763         constrained calls.
17764
17765 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
17766
17767         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
17768         is one byte shorter than cmp DWORD PTR [eax], 0.
17769
17770 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17771
17772         * inssel-ppc.brg: arguments on the stack are always
17773         relative to the stack pointer (spotted by Neale Ferguson).
17774
17775 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17776
17777         * exceptions-x86.c: delay appending the method name to the trace until
17778         after mono_jit_info_table_find is called, as this gets the real
17779         MonoMethod.
17780
17781 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
17782
17783         * aot.c: register roots
17784
17785 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17786
17787         * aot.c : I could just use PLATFORM_WIN32 flag.
17788
17789 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17790
17791         * aot.c : Reverting the previous fix. This time it broke linux build.
17792
17793 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17794
17795         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
17796
17797 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
17798
17799         * mini.c (handle_stack_args): Remove some more debugging code.
17800         
17801         * mini.c (handle_stack_args): Remove debug output left in by mistake.
17802
17803         * driver.c mini.h aot.c: Allow additional options to be specified with
17804         --aot and pass them to mono_compile_assembly.
17805
17806         * aot.c: Add experimental code to AOT compile all loaded assemblies
17807         on demand and save the code into a cache in the filesystem.
17808
17809         * aot.c: Add support for more wrapper methods.
17810         
17811         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
17812         58863.
17813
17814         * cpu-*.md: Remove removed opcodes.
17815
17816         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
17817         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
17818         related icalls to marshal.c.
17819
17820 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
17821
17822         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
17823
17824         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
17825
17826         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
17827
17828 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
17829         * liveness.c: If liveness is recomputated we need to reset the information
17830         for each variable. This way, if the liveness range has been narrowed
17831         by optimizations that happened after the last computation, we can return
17832         a smaller range.
17833         
17834         For example, if you have
17835         
17836         {
17837                 int i = 0;
17838                 
17839                 // Tons of code that does not affect i
17840                 
17841                 i = foo ();
17842                 ...
17843         }
17844         
17845         i = 0 is dead code and will be removed by SSA. However, when
17846         linear scan gets to the code, i will still appear to be live
17847         throughout the entire block. This prevents good register allocation.
17848
17849 2004-07-06  Martin Baulig  <martin@ximian.com>
17850
17851         * debug-mini.c (mono_debug_init_method): Allow
17852         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
17853         (mono_debug_add_icall_wrapper): New method.
17854
17855         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
17856
17857 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
17858
17859         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
17860         optimization.
17861
17862 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
17863
17864         * aot.c (mono_aot_load_method): Fix loading of debug info.
17865
17866 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17867
17868         * aot.c: Add logging support.
17869
17870 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17871
17872         * mini.h: Add prototype for mono_print_method_from_ip.
17873
17874         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
17875
17876         * inssel.brg: 64 bit fixes.
17877
17878         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
17879         inssel-long32.brg.
17880
17881         * Makefile.am: Add SPARC64 support.
17882
17883 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17884
17885         * aot.c: Fix alignment problems on 32 bit platforms.
17886
17887 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17888
17889         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
17890         SPARC64.
17891
17892         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
17893         problems.
17894
17895         * mini.h: Bump AOT file version. Some 64 bit fixes.
17896
17897 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17898
17899         * inssel-sparc.brg: Add new rule to avoid register moves.
17900
17901         * inssel.brg: Add ldind_to_load_membase helper function.
17902
17903 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
17904
17905         * mini.c: OffsetToStringData intrinsic.
17906         
17907 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17908
17909         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
17910
17911         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
17912         regression tests.
17913
17914         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
17915 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17916
17917         * mini.c: reinstated mono_compile_get_interface_var()
17918         on x86, too, since the change breaks the Gtk# build there as well.
17919
17920 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17921
17922         * driver.c: remove loop from the default optimizations: it seems to
17923         interact badly with some of the other options (see bug #60613).
17924
17925 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
17926
17927         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
17928         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
17929
17930 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
17931
17932         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
17933         vararg-using methods.
17934
17935 2004-06-21  Martin Baulig  <martin@ximian.com>
17936
17937         * mini/mini-exceptions.c
17938         (mono_handle_exception): Added `gpointer original_ip' argument.
17939         After calling mono_unhandled_exception(), call
17940         mono_debugger_unhandled_exception() and if that returns true,
17941         restore the context and return.
17942
17943 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17944
17945         * mini-ppc.c: prefer the use of relative branches so
17946         they won't need to be patched in aot code (patch from Patrick Beard).
17947
17948 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17949
17950         * aot.c: patch from Patrick Beard to make the output assembly
17951         more correct for the MacOSX assembler. Small tweak to
17952         generate sane images on Linux/PPC, too.
17953
17954 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17955
17956         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
17957         case until bug #59509 is fixed (shows up in #60332).
17958
17959 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17960
17961         * mini.c: make sure the needed wrappers are compiled, too, with
17962         precomp.
17963
17964 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
17965
17966         * driver.c: remove NPTL reference in --version output.
17967
17968 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17969
17970         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
17971         generate valid assembly for the Mach-O assembler.
17972
17973 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17974
17975         * driver.c: don't include abcrem in the all optimization specifier
17976         since it slows down jit compilation too much for now.
17977
17978 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
17979
17980         * mini.c: use BIGMUL only if both operands have the same signage.
17981         * iltests.il: Test for bug 60056. (errors related to signage in
17982         BIGMUL).
17983
17984         r=lupus.
17985
17986 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
17987
17988         * mini.c, aot.c: memory leak fixes.
17989
17990 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17991
17992         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
17993
17994 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
17995
17996         * Makefile.am: remove the -static hack completely, it links in
17997         statically glib as well.
17998
17999 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
18000
18001         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
18002         * exceptions.cs: make it compile with new mcs/csc.
18003
18004 2004-06-03 Massimiliano Mantione <massi@ximian.com>
18005         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
18006         and added relevant test case.
18007
18008 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18009
18010         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
18011         regressions in gtk-sharp.
18012
18013 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
18014
18015         * exceptions.cs: New regression tests.
18016
18017         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
18018
18019 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
18020
18021         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
18022
18023 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
18024
18025         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
18026
18027         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
18028
18029 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
18030
18031         * mini.c (mono_jit_runtime_invoke): Init class in this
18032         method instead of trusting mono_jit_compile_method to
18033         do the work (because wrappers can be in object class)
18034
18035 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
18036
18037         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
18038
18039         * basic-long.cs: New regression test.
18040
18041 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
18042
18043         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
18044         and div/rem checks.
18045
18046 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
18047
18048         * Makefile.am: fix miguel's change to build mono statically against
18049         libmono (track build dependencies).
18050
18051 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18052
18053         * cfold.c: Some glib versions do not have G_MININT32.
18054
18055 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
18056
18057         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
18058         with precision of tan, atan, sin and cos, and implemented related
18059         regressions tests (fixes bug 54467, but one new problem appeared and
18060         is not fixed yet).
18061
18062 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18063
18064         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
18065
18066         * exceptions.cs: Add test for constant folding && division by zero.
18067
18068         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
18069         since driver.c is in libmono too, so the optimization was useless.
18070
18071         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
18072         variable to driver.c so the compiler can emit more efficient code to
18073         access them.
18074
18075 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18076
18077         * Makefile.am: don't distribute generated inssel.[ch] files.
18078
18079 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
18080
18081         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
18082         into the default appdomain. Fixes #58707.
18083
18084         * jit-icalls.c: Remove the broken approximation for truncl, doing
18085         no conversion is better.
18086
18087         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
18088         Fixes #58863.
18089
18090 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18091
18092         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
18093         of the mcrxr instruction which is not available on some processors
18094         even if it's documented to be. Implement add and sub overflow correctly
18095         (still not complete for long unsigned). Speed up icalls a bit.
18096
18097 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
18098
18099         * mini.c (mono_jit_compile_method_with_opt): Make sure that
18100         we run .cctor in the current domain instead of target_domain.
18101         
18102         Fixes bug #58558, .cctor not being called in -O=shared.
18103
18104 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18105
18106         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
18107
18108 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
18109
18110         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
18111         which can be done with an imm8, do it that way.
18112         (mono_arch_output_basic_block): ditto for a jmp
18113         (mono_arch_emit_prolog): Computate maximum offset of a label.
18114
18115 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
18116
18117         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
18118         now tries to allocate prefered physical reg's for virtual
18119         regs. This reduces the number of emited spills/loads with
18120         20-30% on our core assemblies.
18121
18122 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18123
18124         * jit-icalls.c: truncl() is not needed and trunc() is
18125         the correct thing to do anyway (bug #58287).
18126
18127 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
18128
18129         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
18130         if available.
18131
18132 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18133
18134         * driver.c: enable loop optimizations by default.
18135
18136 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18137
18138         * mini-x86.c: fix calc of max loop size when aligning loops start.
18139
18140 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
18141
18142         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
18143         the stack.
18144
18145 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
18146
18147         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
18148         should set carry.
18149
18150         * basic-long.cs: Add tests for add/subtract of immediates with carry.
18151
18152         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
18153         
18154         * mini.c (inline_method): Allways inline some wrappers even if the cost
18155         is too large. Fixes #58785.
18156
18157         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
18158         
18159 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
18160
18161         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
18162         (crichton@gimp.org). Beginning of support for sparc/linux.
18163
18164         * mini-sparc.c: Optimize retrieval of LMF address.
18165
18166 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
18167
18168         * exceptions-ppc.c:  handle alloca in methods with clauses.
18169
18170 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
18171
18172         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
18173
18174 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
18175
18176         * mini.c: Delegate most of the abort signal work to 
18177           mono_thread_request_interruption, which also handles Stop and Suspend
18178           states.
18179
18180 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
18181
18182         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
18183         supports the save/restore lmf opcodes.
18184
18185 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
18186
18187         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
18188         by gcc-3.4 as well.
18189
18190         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
18191
18192 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18193
18194         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
18195         methods which contain array accesses.
18196
18197         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
18198         boundaries. Fixes #58537.
18199
18200         * iltests.il: Add regression test for #58537.
18201
18202 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18203
18204         * mini-x86.c (mono_arch_local_regalloc): Last part of
18205         fix for bug #58633 (releasing register to early).
18206
18207 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
18208
18209         * basic-long.cs: Add new regression test.
18210
18211 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18212
18213         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
18214         register too early on the chain.
18215
18216 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18217
18218         * mini.c (create_helper_signature): Use a helper function to reduce
18219         the code which needs to be written. Also set the calling convention of
18220         icalls on windows. Fixes #57840.
18221
18222 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18223
18224         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
18225         exceptions-ppc.c: added helper function to get the instruction address
18226         from a signal handler context.
18227
18228 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18229
18230         * helpers.c: use g_get_tmp_dir. Invokes happyness 
18231         from gonzalo.
18232
18233 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18234
18235         * helpers.c: Add new env variable to pass args to objdump.
18236         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
18237
18238 2004-05-17  Radek Doulik  <rodo@ximian.com>
18239
18240         * Makefile.am (common_sources): added abcremoval.h so it get
18241         disted and daily mono packages on go-mono.com will build again
18242
18243 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
18244
18245         * abcremoval.c: Fixed coding style, added copyright header.
18246
18247         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
18248
18249         * mini.h: Added prototype for abc removal main function.
18250
18251         * build_relations_propagation_table.pl: Added copyright header.
18252
18253 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18254
18255         * basic-long.cs: reg test for complex ceq_long bug.
18256
18257 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18258
18259         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
18260         reg in long and clob case (bug #58343). Fixed/added comments.
18261
18262 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
18263
18264         * mini.c (mono_jit_runtime_invoke): Follow new convention
18265         of calling the invoke method with an function pointer.
18266
18267 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
18268
18269         * ChangeLog: Fix author of memory leak patch.
18270
18271 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
18272
18273         * Makefile.am: fix make dist as well...
18274
18275
18276 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
18277
18278         * cfold.c: Made so that conversions from pointer to int4 are no-ops
18279         on archs where pointers are 4 bytes long.
18280
18281         * Makefile.am: Added abcremoval.c source file.
18282
18283         * abcremoval.c: Added abcremoval.c.
18284
18285         * abcremoval.h: Added abcremoval.h.
18286
18287         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
18288
18289         * inssel.brg: Enabled bounds check removal.
18290
18291         * mini.c: Added support for abcrem optimization.
18292
18293         * mini.h: Added abcrem optimization label.
18294
18295         * driver.c: Added support for abcrem optimization.
18296
18297         * propagated_relations_table.def: Added propagated_relations_table.def.
18298
18299 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
18300
18301         * mini.c, cfold.c: fix style.
18302
18303 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18304
18305         * mini.c: handle issue with the low-level implementation of
18306         some long opcodes (bug #54209).
18307
18308 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
18309
18310         * basic.cs: test for my new cmov stuff.
18311
18312 2004-05-13      Patrik Torstensson
18313
18314         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
18315         opt and added peephole documentation.
18316
18317 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
18318
18319         * tramp-ppc.c: rewrote the generic trampoline code.
18320
18321 2004-05-11      Patrik Torstensson
18322
18323         * mini-x86.c: optimize long shl/shr asm code (one less branch)
18324
18325 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
18326
18327         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
18328
18329         * mini.h mini.c dominators.c: Applied patch from Derek Woo
18330         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
18331
18332         * mini.c: Add new icalls for AsAny marshalling.
18333
18334 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18335
18336         * tramp-ppc.c, mini-ppc.c: more cleanups.
18337
18338 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18339
18340         * mini.c: no warnings.
18341
18342 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18343
18344         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
18345
18346 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
18347
18348         * mini.c: In the thread abort signal handler, if the thread is in the
18349         process of being stoped, don't throw the Abort exception, just stop the
18350         thread.
18351
18352 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
18353
18354         * tramp-ppc.c: removed old code.
18355
18356 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18357
18358         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
18359         do some simple speed optimizations on ppc.
18360
18361 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18362
18363         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
18364         and large offsets in load/store.
18365
18366 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18367
18368         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
18369         it causes regressions.
18370
18371 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18372
18373         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
18374         support.
18375
18376 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18377
18378         * jit-icalls.c: remove warnings.
18379         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
18380         speedups for unsafe code.
18381
18382 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18383
18384         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
18385
18386 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
18387
18388         * basic-calls.cs: Add new regression test.
18389
18390         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
18391         more portable.
18392
18393         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
18394
18395         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
18396         is no longer used.
18397
18398 2004-05-06      Patrik Torstensson
18399
18400         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
18401         long reg allocation in any reg (not only eax:edx) and implemented 
18402         long shl/shr ops in asm instead of helpers.
18403
18404 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
18405
18406         * mini-sparc.h: Fix warnings.
18407
18408         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
18409         stack.
18410
18411         * mini-exceptions.c (mono_handle_exception): Call the filter in a
18412         separate statement for clarity.
18413
18414         * mini-sparc.c: Update status.
18415
18416 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
18417
18418         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
18419         here.
18420
18421 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18422
18423         * inssel-ppc.brg: another small pre-release workaround:
18424         we don't do overflow detection for long_sub_un.
18425
18426 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18427
18428         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
18429         (also works around a weird ppc bug: 57957).
18430
18431 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
18432
18433         * tramp-ppc.c: trampoline fixes.
18434
18435 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
18436
18437         * mini-ppc.c: fixed typos.
18438
18439 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18440
18441         * mini-ppc.c, exceptions-ppc.c: more code saves registers
18442         at the top of the stack. Fixed typos. Use a frame registers
18443         for all the methods with exception clauses.
18444
18445 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18446
18447         * exceptions-ppc.c: restore fp registers.
18448
18449 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18450
18451         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
18452         order from the stack top (moved the stack room to save the
18453         return value for trace after the param area). Fixed corruption
18454         in restoring registers on unwind.
18455
18456 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18457
18458         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
18459
18460 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18461
18462         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
18463         and prolog/epilog for methods that use it. Allow
18464         enough param area room for varargs methods. Fix miguel's
18465         breakage in exception handling.
18466
18467 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18468
18469         * Makefile.am: run genmdesc only on current arch.
18470
18471 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18472
18473         * exceptions-x86.c:
18474         * mini-x86.h: fix the build on windows.
18475
18476 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
18477
18478         * 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.
18479
18480         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
18481
18482         * mini-exceptions.c: New file.
18483         
18484         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
18485         Move some parts of the x86 exception handling code to an 
18486         arch-independent file so it can be shared with other ports.
18487
18488 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
18489
18490         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
18491
18492 2004-04-26  David Waite  <mass@akuma.org>
18493
18494         * driver.c: remove comma from end of enumeration declaration
18495
18496 2004-04-26  Jackson Harper  <jackson@ximian.com>
18497
18498         * driver.c: parse config file before loading first assembly. This
18499         allows the user gac to be enabled/disabled. 
18500         
18501 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
18502
18503         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
18504         simpler mechanism: we do not care what is encoded initially
18505         (branch absolute or relative), we care about the code and its
18506         target.  I kept the old code for reference for now.
18507
18508         The new code tries first to determine if the jump is anywhere in
18509         the -/+32 absolute meg range, if it succeeds, it encodes using the
18510         absolute branch;  If not, it tried to find something in the
18511         relative range, if not, it uses the handle_thunk code. 
18512
18513 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
18514
18515         * exceptions-ppc.c: use the correct ip register on macosx.
18516
18517 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
18518
18519         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
18520
18521 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
18522
18523         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
18524         Raise exception on integer divide by zero by hand since the hw
18525         doesn't support it. Handle NaNs in FP compares.
18526
18527 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
18528
18529         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
18530         code reducing duplication between the platforms and enabled
18531         signal exception handling (on linux for now).
18532
18533 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
18534
18535         * exceptions-ppc.c: more macosx support.
18536
18537 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18538
18539         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
18540
18541 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
18542
18543         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
18544
18545 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18546
18547         * iltests.il: more tests.
18548
18549 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18550
18551         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
18552         vars as well.
18553
18554 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18555
18556         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
18557
18558 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18559
18560         * liveness.c: Mark variables as volatile in all basic blocks reachable
18561         from exception clauses.
18562
18563 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18564
18565         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
18566         inlining.
18567
18568 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18569
18570         * iltests.il, basic.cs: more tests for regalloc.
18571
18572 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18573
18574         * iltests.il: Some tests for register allocation modifications
18575         I have locally.
18576
18577 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
18578
18579         * exceptions.cs: Add regression test for bug #56782.
18580
18581         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
18582         original stack trace if an exception is rethrown. Fixes #56782. Oh,
18583         the beauty of fixing the same thing in 5 different files...
18584
18585 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
18586
18587         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
18588         methods.
18589
18590 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
18591
18592         * mini.c: Add support for STRWLPARRAY marshalling convention.
18593
18594 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18595
18596         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
18597         to init the context to setup the regs pointer).
18598
18599 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18600
18601         * exceptions-ppc.c: more exceptions work.
18602
18603 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18604
18605         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
18606         not allowed.
18607
18608 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18609
18610         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
18611         can use the memory directly.
18612
18613         * cpu-pentium.md: Update documentation from a post from Zoltan. 
18614
18615         add x86_add_membase, x86_sub_membase, x86_mul_membase
18616
18617 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18618
18619         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
18620         GENERAL_REGS they were also hardcoded for all PPC ports.
18621
18622         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
18623
18624         Remove hard-coded limit for floating point registers, use
18625         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
18626
18627         Notice that in MacOS X calling conventions you can fit a lot more
18628         floating point values in registers, so I should update the PInvoke
18629         test to excercise the passing of floating point values on the
18630         stack (currently broken).
18631         
18632 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
18633
18634         * tramp-ppc.c (create_trampoline_code): Added
18635         JUMP_TRAMPOLINE_SIZE. 
18636         (ppc_magic_trampoline): Follow the pattern from
18637         x86_magic_trampoline: if code is set to zero, return. 
18638         (create_trampoline_code): Always pass MonoMethod to the jump
18639         trampoline, before it was passing a null.
18640         (mono_arch_create_jump_trampoline): Implement the jump stub, could
18641         share the code with mono_arch_create_jit_trampoline. 
18642
18643         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
18644         implemented.
18645         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
18646         implemented.  
18647
18648         * cpu-g4.md: Added length for jmp instruction, the worst case
18649         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
18650         for save_lmf).
18651
18652 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
18653
18654         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
18655
18656 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
18657
18658         * mini.c: Only set bblock->real_offset when adding a new bblock, and
18659         before each IL instruction.
18660
18661         * mini.c (CEE_BOX): Fix warnings.
18662
18663 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18664
18665         * mini.c: removed a few unused vars and extra whitespace.
18666
18667 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
18668
18669         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
18670         checks.
18671         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
18672         index.
18673         (OP_GETCHR): use the above
18674         (CEE_LDELEMA): use the above.
18675
18676         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
18677         version of the generic impl.
18678         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
18679         (CEE_LDELEMA): use the above.
18680
18681 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18682
18683         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
18684         Fixes #56317.
18685
18686         * iltests.il: Added new regression test for #56317.
18687
18688 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18689
18690         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
18691         under NetBSD. Fixes #56450.
18692
18693         * liveness.c (update_gen_kill_set): Fix previous patch.
18694
18695 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18696
18697         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
18698
18699 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
18700
18701         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
18702         ldsfld and ldsflda.
18703
18704         * inssel-sparc.brg: Add more optimizations.
18705
18706         * mini-sparc.c: Replace multiply/divide with shifts if possible.
18707
18708 2004-04-01  Martin Baulig  <martin@ximian.com>
18709
18710         * mini.c (handle_box): New static function; moved the
18711         implementation of CEE_BOX here.
18712         (mono_method_to_ir): Added `constrained_call' variable.
18713         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
18714         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
18715         mono_method_get_constrained() to get the method.
18716
18717 2004-04-01  Martin Baulig  <martin@ximian.com>
18718
18719         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
18720         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
18721         (mono_method_to_ir): We don't need these macros anymore since
18722         mono_class_get_full() already takes care of it. 
18723
18724 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18725
18726         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
18727         use @function (as doesn't accept #function here) and check the return
18728         value of system and stop if fails.
18729
18730 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18731
18732         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
18733
18734 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
18735
18736         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
18737
18738         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
18739
18740         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
18741         #56223.
18742
18743         * basic-long.cs: Add test for negation of Int64.MinValue.
18744
18745 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
18746
18747         * mini-sparc.c: Update status.
18748
18749         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
18750
18751         * exceptions-sparc.c: Fix return value in filters.
18752
18753         * inssel-sparc.brg: Fix register allocation in some rules.
18754
18755 2004-03-28  Martin Baulig  <martin@ximian.com>
18756
18757         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
18758         if neccessary.  
18759
18760 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
18761
18762         * mini-x86.c (mono_arch_patch_code): Fix warnings.
18763         
18764         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
18765         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
18766         remove unused conv_u4 opcode.
18767
18768         * mini-x86.c: Remove valgrind workaround since it slows down things
18769         even when mono is not run under valgrind.
18770
18771 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
18772
18773         * mini-sparc.c: Update status.
18774
18775         * inssel-sparc.brg: Add some optimizations.
18776
18777         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
18778         future delay slot filling. Add support for varargs, tail calls and JMP.
18779
18780         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
18781         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
18782
18783         * inssel.brg: Fix register allocation in OP_ARGLIST.
18784
18785         * inssel.brg: Fix warnings.
18786
18787 2004-03-25  Martin Baulig  <martin@ximian.com>
18788
18789         * mini.c (inflate_generic_field): Removed.
18790         (mini_get_method): Removed, use mono_get_method_full(),
18791         (mini_get_class): Removed, use mono_class_get_full().
18792         (mono_method_to_ir): Pass our generic context to
18793         mono_field_from_token().        
18794
18795 2004-03-25  Martin Baulig  <martin@ximian.com>
18796
18797         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
18798         of a `MonoMethod *'.
18799         (mini_get_method): Take a `MonoGenericContext *' instead
18800         of a `MonoMethod *'.
18801         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
18802         a new local variable called `generic_context' which holds the
18803         current `MonoGenericContext *'; use it to lookup things.
18804
18805 2004-03-24  Martin Baulig  <martin@ximian.com>
18806
18807         * mini.c (mini_get_class): New static method; if we're inside a
18808         generic instance, inflate the class if neccessary.
18809         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
18810
18811 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
18812
18813         * iltests.il: New regression test for #55976.
18814
18815         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
18816         #55976.
18817
18818 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18819
18820         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
18821         output.
18822
18823 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18824
18825         * liveness.c: Consider SSA stores as well as loads when making vars
18826         volatile.
18827
18828         * exceptions.cs: New regression tests for register allocation.
18829         
18830 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
18831
18832         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
18833         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
18834           domain lock only to protect puntual access to data structures.
18835           Added access lock for sighash, jit_icall_hash_name, 
18836           jit_icall_hash_addr and domain->code_mp.
18837
18838 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
18839
18840         * driver.c: Print SIGSEGV handling method.
18841
18842         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
18843
18844         * mini.c (setup_jit_tls_data): Handle case when this is called
18845         multiple times for a thread.
18846
18847         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
18848         is different from fbxx_un. Fixes #54303. Also use constants instead of
18849         magic numbers in a lot of places.
18850
18851 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
18852
18853         * exceptions.cs: Fix cctor test when --regression is used.
18854
18855 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
18856
18857         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
18858         for Linux/ppc.
18859
18860 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18861
18862         * inssel-ppc.brg: fixed register assignments for some rules.
18863
18864 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18865
18866         * exceptions.cs: Add test for exceptions in static constructors.
18867
18868         * mini.c (mono_jit_compile_method_with_out): Move the calling of
18869         static constructors outside the domain lock. Fixes #55720.
18870
18871 2004-03-17  Martin Baulig  <martin@ximian.com>
18872
18873         * mini.c (get_generic_field_inst): Removed, this'll never happen.
18874         (inflate_generic_field): Take the `MonoMethod *' instead of the
18875         `MonoClass *' and added support for generic method.
18876         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
18877         have a `field->parent->gen_params', only inflate the field if it's
18878         an open constructed type.
18879
18880 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18881
18882         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
18883         exception object instead of the preconstructed ones.
18884
18885 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18886
18887         * mini.c: reverted changed to sigsegv_signal_handler commited
18888         accidentally in the previous patch.
18889
18890 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18891
18892         * mini.c:
18893         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
18894         running --aot with an old assembly.
18895
18896 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
18897
18898         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
18899         point values.
18900
18901         * mini-sparc.c: Add support for v9 branches with prediction.
18902
18903 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
18904
18905         * mini.c (mini_init): #warning is GNUC only
18906
18907         * mini-sparc.h: implement __builtin_frame_address
18908         and __builtin_return_address for Sun C compiler
18909
18910 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
18911
18912         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
18913
18914 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
18915
18916         * basic-calls.cs: Add test for unaligned byref long argument passing.
18917
18918         * mini-ops.h: Add sparcv9 compare and branch instructions.
18919
18920         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
18921         v9 instructions if we have a v9 cpu.
18922
18923         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
18924         registers for global allocation.
18925
18926         * exceptions-sparc.c: Fixes.
18927         
18928 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
18929
18930         * liveness.c (mono_analyze_liveness): Optimized version.
18931
18932         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
18933
18934         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
18935         sparc work.
18936
18937         * basic-float.cs basic-calls.cs: New regression tests.
18938
18939 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
18940
18941         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
18942         sigaltstack implementation.
18943
18944         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
18945         
18946         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
18947         stuff if SIGSEGV_ON_ALTSTACK is not defined.
18948
18949 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18950
18951         * mini.c: Fix warnings.
18952         
18953         * mini.c (mono_resolve_patch_target): New function which contains the
18954         arch independent part of the patching process.
18955
18956         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
18957         patching code to a separate function.
18958
18959 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
18960
18961         * mini.c (add_signal_handler): ifdef out on Windows
18962
18963 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
18964
18965         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
18966         cpu-sparc.md: Add exception handling support + other fixes.
18967
18968         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
18969         typed GC detection in --version.
18970
18971         * basic.cs exceptions.cs: New regression tests.
18972
18973         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
18974         the arch specific code can store data during a compilation.
18975
18976         * mini-ops.h: Add OP_SETFRET.
18977
18978         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
18979         function, register a separate icall for each arity, so the icalls can
18980         get a wrapper.
18981         
18982         * mini.c (mono_print_tree): Print negative offsets in a more readable
18983         form.
18984         
18985         * mini.c: Make signal handling work on sparc.
18986         
18987         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
18988
18989         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
18990
18991         * jit-icalls.c: Emulate truncl by aintl on solaris.
18992
18993         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
18994
18995 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
18996
18997         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
18998
18999 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
19000
19001         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
19002         a MarshalByRef type, inline a method that performs the check, taking into
19003         account that the object can be a proxy. Also implemented tow new opcodes:
19004         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19005         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
19006         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19007
19008 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19009
19010         * mini-ppc.c: if a relative branch displacement is too big
19011         but it points to and area reachable with an absolute branch, 
19012         avoid the thunks.
19013
19014 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
19015
19016         * mini.c: optimize small copies in cpblk.
19017
19018 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
19019
19020         * basic-calls.cs basic-float.cs: New regression tests.
19021
19022         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
19023         negative offsets from %fp. Implement localloc. Fix local register 
19024         allocation. Fix the case when the this argument needs to be saved to
19025         the stack. Implement some missing opcodes.
19026
19027 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
19028
19029         * mini.c (mini_method_compile): Reenable global regalloc in methods
19030         with exception handlers.
19031
19032         * linear-scan.c (mono_varlist_sort): Fix warning.
19033
19034         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
19035
19036         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
19037         regalloc costs.
19038
19039         * liveness.c: Make all variables uses in exception clauses volatile, to
19040         prevent them from being allocated to registers. Fixes #42136.
19041
19042 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
19043
19044         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
19045         causes regressions.
19046
19047         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
19048         argument to mono_arch_regalloc_cost.
19049
19050         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
19051         precisely.
19052
19053 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
19054
19055         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
19056         Make the cost of allocating a variable to a register arch dependent.
19057
19058         * basic-calls.cs: Fix compilation of tests.
19059         
19060         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
19061         helper function to cut back on the number of #ifdefs needed.
19062
19063         * mini-ppc.c: Fix compilation.
19064
19065         * basic-calls.cs: New regression tests.
19066
19067         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
19068
19069         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
19070         of l0 since that is callee saved.
19071
19072         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
19073         to virtual calls.
19074
19075         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
19076         of delay instruction.
19077
19078         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
19079
19080         * mini.h (MonoCallInst): Add 'virtual' flag.
19081
19082         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
19083
19084 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
19085
19086         * *.cs: New regression tests.
19087
19088         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
19089         work.
19090
19091         * mini.c (mono_runtime_install_handlers): Fix build.
19092
19093         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
19094         'signal_stack_size' members.
19095
19096         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
19097         alternate signal stack.
19098
19099         * exceptions-x86.c: Add stack overflow handling.
19100
19101         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
19102         functions to arch independent code.
19103
19104         * mini.c (mono_print_tree): Print more detailed info for load_membase
19105         opcodes.
19106         
19107 2004-02-23  Martin Baulig  <martin@ximian.com>
19108
19109         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
19110
19111 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19112
19113         * mini-x86.c: fixed reg allocation for div/rem.
19114
19115 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
19116
19117         * driver.c (mono_main): Report some configuratio options on --version.
19118
19119 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
19120
19121         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
19122         low in the address space. Correctly flush memory in thunks where we
19123         output native code.
19124
19125 2004-02-20  Martin Baulig  <martin@ximian.com>
19126
19127         * mini.c (mini_get_method): New static method; inflate all generic
19128         methods and methods in open generic instances.
19129         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
19130         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
19131
19132 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19133
19134         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
19135
19136         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
19137
19138 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
19139
19140         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
19141
19142         * mini-sparc.c (flushi mono_arch_output_basic_block): make
19143         it compile using Sun's compiler.
19144
19145 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19146
19147         * 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.
19148
19149         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
19150
19151 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19152
19153         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
19154         code.
19155         * mini-ppc.c: handle calls outside of the allowed range with thunks
19156         allocated using the code manager.
19157         * tramp-ppc.c: use the code manager to hold generated native code.
19158         Fixed the magic trampoline to just patch vtable entries.
19159
19160 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
19161
19162         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
19163         independent file.
19164
19165 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
19166
19167         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
19168         PPC.
19169
19170         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
19171         if we have a working __thread implementation.
19172
19173         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
19174         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
19175
19176 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
19177
19178         * mini-x86.c: Fix compilation under gcc 2.
19179         
19180 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
19183         contains a call to the wrapped function.
19184
19185         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
19186         OP_<CALL>_IMM opcodes, and use them under X86.
19187         
19188         * mini.c (mono_jit_find_compiled_method): Fix warning.
19189
19190         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
19191
19192         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
19193
19194         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
19195         functionality to mini.c.
19196
19197         * mini.c (mono_create_jump_trampoline): New function to create a jump
19198         trampoline. Return a compiled method instead of a trampoline if it
19199         exists. Add a cache for jump trampolines.
19200
19201         * mini.c (mono_jit_find_compiled_method): New function to return a
19202         compiled method if it exists.
19203
19204         * mini-x86.c: Call mono_create_jump_trampoline instead of 
19205         mono_arch_create_jit_trampoline.
19206
19207         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
19208         a jump trampoline. Fixes #52092.
19209         
19210 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
19211
19212         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
19213         which is not up-to-date. Add check_corlib_version () instead.
19214
19215         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
19216         have to call it.
19217         
19218         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
19219         since newer valgrind versions do not need it.
19220
19221         * mini.c (mono_jit_compile_method_with_opt): New helper function to
19222         compile a method with a given set of optimizations.
19223
19224         * mini.c: Compile icall wrappers on-demand instead of at startup.
19225
19226         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
19227         wrapper for an icall.
19228
19229 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
19230
19231         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
19232         #54063.
19233
19234         * iltests.il: Add test for non-empty stack before switch instruction.
19235
19236 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
19237
19238         * mini.c: Add support for new stringbuilder marshalling conventions.
19239
19240         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
19241
19242 2004-02-01  Martin Baulig  <martin@ximian.com>
19243
19244         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
19245         in `ginst->mtype_argv'.
19246
19247 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
19248
19249         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
19250         facilitate grepping.
19251
19252 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
19253
19254         * mini.c: fixed buglet in initobj generic implementation for references.
19255
19256 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
19257
19258         * Makefile.am: make the version script conditional.
19259         * jit-icalls.c: handle missing truncl().
19260
19261 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19262
19263         * exceptions.cs: Add more tests for double->int conversion.
19264
19265         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
19266         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
19267
19268 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
19269
19270         * driver.c: make --verbose --version emit an error
19271         if the loaded corlib doesn't match the runtime version.
19272
19273 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19274
19275         * mini-ppc.h: export ppc_patch().
19276         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
19277         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
19278         on par or better than on MacOSX.
19279
19280 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19281
19282         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
19283         mono_lookup_pinvoke_call.
19284
19285         * mini-x86.c: Under windows, the default pinvoke calling convention is
19286         stdcall. Fixes #52834.
19287
19288         * mini.c (optimize_branches): Add an upper bound to the number of
19289         iterations to prevent infinite loops on strange loops. Fixes #53003.
19290
19291 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19292
19293         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
19294         and ISINST. Fixes #52093.
19295
19296         * objects.cs (test_0_vector_array_cast): New tests.
19297         
19298 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
19299
19300         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
19301         checking in Array.Set ().
19302
19303         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
19304         #52590.
19305
19306         * object.cs (test_0_multi_array_cast): New regression test.
19307
19308 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
19309
19310         * exceptions-ppc.c: fix build on Linux/PPC.
19311
19312 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
19313
19314         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
19315         running under valgrind.
19316         (x86_magic_trampoline): Fix build bustage.
19317
19318         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
19319         negative values as well. This is needed for the encoding of the line number
19320         info, since sometimes the line numbers are not in increasing order.
19321
19322 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19323
19324         * cpu-pentium.md (localloc): Increase the size of the localloc 
19325         instruction since it is a loop under Win32.
19326
19327         * debug-mini.c (record_line_number): Get rid of unneccesary memory
19328         allocation.
19329
19330 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19331
19332         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
19333         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
19334         Max Horn (max@quendi.de). Fix file names in comments.
19335
19336 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
19337
19338         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
19339         avoid stack overflow.
19340         (replace_usage): Avoid uninitialized variable warnings.
19341
19342         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
19343         and taking the address of valuetype variables.
19344
19345 2004-01-03  Patrik Torstensson
19346
19347         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
19348         for other purposes than FP later on.
19349
19350 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
19351
19352         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
19353         of tail calls.
19354
19355 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19356
19357         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
19358
19359 2003-12-30  Patrik Torstensson <p@rxc.se>
19360
19361         * mini-x86.h: Decreased number of availiable fp regs.
19362         Solves corner cases with FP spilling.
19363
19364 2003-12-23  Patrik Torstensson <p@rxc.se>
19365
19366         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
19367         for floating point stack tracking / spilling on x86. 
19368         Fixes bug #49012.
19369         
19370         * basic-float.cs: added float mul overflow test.
19371
19372 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
19373
19374         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
19375
19376 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19377
19378         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
19379         supports for cond branches that overflow the immediate
19380         overflow offset. mcs can compile simple programs.
19381
19382 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19383
19384         * exceptions-ppc.c: exception handling support wip:
19385         finally handlers get run on exception.
19386
19387 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19388
19389         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
19390         profiling.
19391
19392 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19393
19394         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
19395         initial support for stack walking and unwinding.
19396
19397 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
19398
19399         * driver.c (mono_main): Make corlib-out-of-sync message more 
19400         descriptive. Also remove verify_corlib call.
19401
19402 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19403
19404         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
19405         not overlap with other call's arguments, too.
19406
19407 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
19408
19409         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
19410         move to arch-specific code the choice of arch-specific
19411         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
19412         * mini.c: ensure emulation calls will not interleave
19413         with other calls.
19414
19415 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
19416
19417         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
19418         the magic trampoline stack frame is dropped before executing
19419         the new method.
19420
19421 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
19422
19423         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
19424         and integer to fp conversions. Added support for overflowing
19425         arguments on the stack. Reserve a couple more registers as temps.
19426         Added support for aot compilation (as output still needs to be
19427         tweaked, though).
19428
19429 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19430
19431         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
19432         Don't overwrite return register in some corner cases.
19433
19434 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19435
19436         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
19437         static constructors when AOT compiling.
19438
19439         * driver.c (mono_main): Call mono_check_corlib_version.
19440
19441 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19442
19443         * cpu-g4.md, basic.cs: fixed div target register.
19444
19445 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
19446
19447         * mini-ppc.c, basic.cs: shl_imm fix with test.
19448
19449 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19450
19451         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
19452         structures by value. Misc fixes.
19453         * objects.cs: more tests.
19454
19455 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
19456
19457         * mini-ppc.c: lconv.ovf.i implemented.
19458
19459 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19460
19461         * mini.c:
19462         (mini_init): don't error out if someone already called g_thread_init.
19463
19464 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19465
19466         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
19467         to be any type per the spec. Fix abnormal memory usage when
19468         the same object is repeatedly thrown.
19469
19470 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
19471
19472         * mini.c: check for overruns in IL code.
19473
19474 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19475
19476         * TODO: Add/remove some todo entries.
19477
19478 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19479
19480         * driver.c (mono_main): Call mono_verify_corlib.
19481
19482 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19483
19484         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
19485         This has been moved to mini.c
19486         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
19487         type being casted is marshalbyref it could be a proxy, so instead of
19488         emitting the type check code, emit a call to a runtime method that will
19489         perform the check by calling CanCastTo if needed.
19490
19491 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
19492
19493         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
19494         methods with large stack frames under Win32.
19495
19496 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19497
19498         * Makefile.am: Distribute regression tests.
19499
19500         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
19501         at the end instead of inserting each variable into the sorted list.
19502
19503         * linear-scan.c (mono_varlist_sort): New helper function.
19504         
19505 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19506
19507         * mini.c: ensure arguments and locals are within bounds.
19508
19509 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19510
19511         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
19512         related fixes.
19513
19514 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19515
19516         * mini.c (mono_cprop_copy_values): Fix crash.
19517
19518         * aot.c: Set verbosity back to 0.
19519         
19520 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19521
19522         * regalloc.c: complete memory leak fix by Laurent Morichetti
19523         (l_m@pacbell.net).
19524
19525 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19526
19527         * driver.c (main_thread_handler): Revert the previous patch.
19528
19529         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
19530         under valgrind.
19531
19532         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
19533         memory from the memory pool.
19534
19535         * driver.c (main_thread_handler): Turn on all optimizations when
19536         --aot is used.
19537
19538         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
19539         an array for better performance.
19540
19541         * regalloc.c (mono_regstate_assign): Fix memory leak.
19542
19543         * debug-mini.c (mono_debug_serialize_debug_info): New function to
19544         serialize the debug info.
19545
19546         * debug-mini.c (mono_debug_add_aot_method): New function to load the
19547         debug info from the serialized representation.
19548
19549         * aot.c: Save debug info into the generated file and load it when 
19550         loading a method.
19551
19552         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19553
19554 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19555
19556         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
19557         More FP-related fixes.
19558
19559 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
19560
19561         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
19562         and register allocation buglet. Hello world now runs.
19563
19564 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19565
19566         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
19567         * tramp-ppc.c: fixed class init trampoline.
19568         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
19569
19570 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19571
19572         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
19573         mini.c: more ppc changes/fixes.
19574
19575 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
19578         Also optimize the case when the arguments are the same in the caller 
19579         and in the callee.
19580
19581         * iltests.il: Add tests for tail calls with valuetype arguments.
19582
19583 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19584
19585         * mini-ppc.c: fixes for struct return type.
19586
19587 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
19588
19589         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
19590         mono_spillvar_offset() to arch-specific code.
19591
19592 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
19593
19594         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
19595
19596 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19597
19598         * exceptions-x86.c: Fix stack space leaks.
19599         
19600         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
19601         registers from the lmf if the method has save_lmf set.
19602
19603 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19604
19605         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
19606         of icall wrappers into InvokeInDomain, since these are now per-domain.
19607
19608 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
19609
19610         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
19611         make some opcode emulation and intrinsic ops enabled/disabled 
19612         according to the architecture. More fixes.
19613
19614 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
19615
19616         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
19617
19618 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19619
19620         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
19621         arch-specific handling for 'this' and struct return type to
19622         arch-specific code.
19623
19624 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19625
19626         * aot.c: prevent divide by zero error when reporting (it happened with
19627         Accessibility.dll).
19628
19629 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
19630
19631         * mini.h (inst_switch): Remove unused macro.
19632
19633 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19634
19635         * aot.c:
19636         (load_aot_module): free 'info->methods' and 'info' properly. No more
19637         "free(): invalid pointer blah" messages when you have an old aot
19638         compiled assembly.
19639
19640 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
19641
19642         * jit-icalls.c, mini.c: Added support for context static fields.
19643
19644 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19645
19646         * mini.c (mono_method_blittable): Methods which set LastError are not 
19647         blittable either. Fixes #51108.
19648         
19649 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19650
19651         * mini.c: flush icache.
19652         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
19653
19654 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19655
19656         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
19657
19658 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19659
19660         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
19661         safe on IA32.
19662
19663         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
19664         vararg calls.
19665
19666         * inssel.brg (CEE_MKREFANY): Fix AOT case.
19667
19668 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19669
19670         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
19671         instruction when the result is discarded.
19672
19673         * iltests.il (test_0_div_regalloc): New regression test.
19674
19675         * arrays.cs: Fix compilation error.
19676
19677 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
19678
19679         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
19680         float rules to inssel-x86.brg: sane architectures with FP registers
19681         don't need to implement these rules.
19682
19683 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19684
19685         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
19686
19687 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19688
19689         * mini.h, inssel-long32.brg: fixed endianess issues in int64
19690         implementation of 32 bit systems.
19691
19692 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19693
19694         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
19695         (Jeroen Zwartepoorte).
19696
19697 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19698
19699         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
19700         the caller and the callee matches.
19701         
19702         * mini.c (mono_method_to_ir): Add comment.
19703
19704         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
19705         signbit is missing on some platforms.
19706
19707 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19708
19709         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
19710
19711         * mini.c (setup_jit_tls_data): Call the new function.
19712         
19713         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
19714
19715         * mini-x86.c: Add experimental support for fast access to the lmf
19716         structure under NPTL/Linux 2.6.x.
19717
19718 2003-11-06  Martin Baulig  <martin@ximian.com>
19719
19720         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
19721         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
19722         the debugger.
19723
19724 2003-11-02  Martin Baulig  <martin@ximian.com>
19725
19726         * mini.c (inflate_generic_field): New static method.
19727         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
19728         generic instance and the field is declared in a generic type, call
19729         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
19730
19731 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
19732
19733         * mini.h mini.c (mono_method_same_domain): New function to return
19734         whenever the caller and the callee are in the same domain.
19735
19736         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
19737
19738 2003-10-30  Martin Baulig  <martin@ximian.com>
19739
19740         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
19741         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
19742         method parameters.
19743         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
19744         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
19745
19746 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
19747
19748         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
19749         propagation.
19750
19751         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
19752         object here, so it is in the correct appdomain etc.
19753
19754 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
19755
19756         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
19757         already done.
19758         (mono_method_to_ir): Avoid freeing the type created returned from
19759         mono_type_create_from_typespec, since it is put into an internal cache
19760         by the function. Fixes pointer.exe.
19761
19762         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
19763         trampolines for icalls and pinvokes as well. Fixes #33569.
19764
19765 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
19766
19767         * mini.c: Update after appdomain changes.
19768
19769         * mini.c (mono_jit_compile_method_inner): Allways compile native
19770         method wrappers in the root domain, since there can only be one
19771         instance of them, whose address is stored in method->info.
19772
19773 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
19774
19775         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
19776         environment variable. Instead detect automatically whenever running
19777         under valgrind using the magic macro RUNNING_ON_VALGRIND from
19778         valgrind.h.
19779
19780 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
19781
19782         * trace.c, trace.h: New files that implement the new trace option
19783         parsing. 
19784
19785         * driver.c: Document new --trace options.
19786
19787         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
19788         mini-x86.c: Apply:
19789
19790         -       if (mono_jit_trace_calls)
19791         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
19792
19793         * mini.h: prototypes.
19794         
19795 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
19796
19797         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
19798
19799         * mini.c inssel.brg: Implement typedefbyref opcodes.
19800
19801         * mini.c (mono_jit_compile_method): Remove unused local variable.
19802
19803         * mini.c (mono_jit_compile_method_inner): Ditto.
19804         
19805 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
19806
19807         * tramp-x86.c (x86_class_init_trampoline): Fix build.
19808         
19809         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
19810
19811 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
19812
19813         * mini.c (mono_no_aot): Remove unused global variable.
19814
19815         * mini.c: Thread safety fixes.
19816
19817 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
19818
19819         * mini.c (mono_create_class_init_trampoline): Add a lock around
19820         class_init_hash_addr.
19821
19822         * arrays.cs (test_0_newarr_emulation): Add new regression test for
19823         #30073.
19824
19825         * mini.c: Decompose the NEWARR instruction before decomposing its
19826         arguments. Fixes #30073.
19827
19828 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
19829
19830         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
19831         convention.
19832
19833 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
19834
19835         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
19836
19837         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
19838
19839         * driver.c: Add support for compiling icall wrappers to --compile.
19840
19841 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
19842
19843         * inssel.brg: The empty value in class->interface_offsets is -1, not
19844         0. Fixes #49287.
19845
19846 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
19847
19848         * objects.cs: New test for 'is' operator on an array of interfaces.
19849
19850 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19851
19852         * tramp-ppc.c: update trampoline code to support jumps
19853         and class initialization.
19854
19855 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
19856
19857         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
19858
19859         * inssel.brg (OP_UNBOXCAST): Fix #46027.
19860
19861         * inssel.brg (OP_UNBOX): Remove unused rule.
19862
19863         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
19864         region instead of one for each method. Fixes #47813.
19865
19866 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
19867
19868         * exceptions.cs (test_0_nested_finally): New regression test for
19869         nested exception handlers.
19870
19871         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
19872
19873         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
19874
19875         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
19876         inlining.
19877
19878         * mini.c (mono_method_check_inlining): Make the inlining limit 
19879         configurable by an environment variable.
19880         
19881         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
19882
19883         * mini.h: Bump AOT file version.
19884
19885         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
19886         token, store the image along with the token, since the token might not 
19887         refer to the same image as the method containing the relocation, 
19888         because of inlining.
19889
19890 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
19891
19892         * mini.c (mono_precompile_assemblies): New function to compile
19893         all methods in all loaded assemblies.
19894
19895         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
19896
19897         * regalloc.h regalloc.c (MonoRegState): Change the type of 
19898         iassign and fassign to int*, since they can contain large negative
19899         values if the register is spilled. Also added some comments. Fixes
19900         #45817.
19901
19902         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
19903         under Win32. Fixes #42964.
19904
19905 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
19906
19907         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
19908
19909         * aot.c: Added support for AOT compiling methods which contain calls
19910         to wrappers. Currently, only remoting-invoke-with-check wrappers are
19911         handled.
19912         
19913         * driver.c (compile_all_methods): Run the compilation in a thread
19914         managed by mono. Fixes #44023.
19915
19916         * mini.c (mono_codegen): Print full method name in verbose output.
19917
19918         * mini-x86.c (mono_arch_patch_code): Fix warning.
19919         
19920         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
19921         jumps, since the method we are jumping to might be domain-specific.
19922
19923         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
19924
19925 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19926
19927         * inssel.brg: string chars are unsigned.
19928
19929 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
19930
19931         * TODO: New todo item.
19932
19933         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
19934         which calls mono_runtime_class_init and patches the call site to
19935         avoid further calls.
19936         (mono_arch_create_class_init_trampoline): New arch specific function 
19937         to create a class init trampoline.
19938         (create_trampoline_code): Generalized so it can create
19939         class init trampolines as well.
19940
19941         * mini.c (helper_sig_class_init_trampoline): New helper variable.
19942         (mono_create_class_init_trampoline): New function to create and cache
19943         class init trampolines.
19944         (mono_find_class_init_trampoline_by_addr): New function to lookup the
19945         vtable given the address of a class init trampoline. Used by the
19946         patching process.
19947         (mono_codegen): Generate a call to a trampoline instead of
19948         mono_runtime_class_init in LDSFLD[A].
19949         (mono_codegen): Add relocations for the new trampoline.
19950         
19951         * mini.h mini-x86.c aot.c: Added a new relocation type: 
19952         MONO_PATCH_INFO_CLASS_INIT.
19953
19954         * mini.h: Bump AOT version number.
19955
19956         * aot.c: Create a copy of the loaded code instead of using the original
19957         so methods which call each other will be close in memory, improving
19958         cache behaviour.
19959         
19960         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
19961         patch since it breaks the regression tests.
19962         
19963         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
19964         for the register saving instruction sequence since the 
19965         frame_state_for function in glibc 2.3.2 don't seem to detect it.
19966
19967 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
19968
19969         * TODO: Fix todo item && remove another.
19970
19971 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
19972
19973         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
19974         previous checkin.
19975
19976         * aot.c: Moved the check for MONO_LASTAOT into the initialization
19977         function of the module.
19978
19979         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
19980         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
19981         --no-aot command line option.
19982
19983 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
19984
19985         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
19986         by Bernie Solomon (bernard@ugsolutions.com).
19987
19988         * inssel.brg: Refactor the interface offset table related code into
19989         its separate functions and add support for the AOT case.
19990
19991 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
19992
19993         * aot.c (mono_aot_get_method_inner): Fix memory leak.
19994         
19995         * aot.c: Added mono_aot_verbose variable and made all debugging
19996         output depend on the value of this variable.
19997
19998         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
19999         method_label and info_label.
20000
20001         * mini.h mini-x86.c aot.c: Added a new relocation type 
20002         MONO_PATCH_INFO_IID for klass->interface_id.
20003
20004         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
20005         the MonoJitInfo structure.
20006
20007         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
20008         a non-root appdomain in shared mode.
20009
20010 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20011
20012         * aot.c: make aot loader less verbose. Remove free of unused variable.
20013
20014 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20015
20016         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
20017
20018         * .cvsignore: Added *.dll.
20019
20020         * mini.c (mono_print_tree_nl): New function callable while debugging.
20021
20022         * mini.c (mono_print_code): Export this.
20023
20024         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
20025         patched code.
20026
20027 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
20028
20029         * mini.h (MonoCompile): Added 'jit_info' field.
20030
20031         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
20032         the cfg structure, since it is needed by the AOT compiler.
20033
20034         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20035
20036         * aot.c: A major rewrite. Changes include:
20037         - save exception tables for methods which have them.
20038         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
20039         to g_module_symbol.
20040         - reworked the file format so it is now much smaller and needs
20041         fewer relocation entries.
20042         
20043 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20044
20045         * aot.c (load_aot_module): Fix build bustage on platforms without
20046         Boehm GC.
20047
20048 2003-09-04  Martin Baulig  <martin@ximian.com>
20049
20050         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
20051
20052 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20053
20054         * TODO: Some new optimization ideas.
20055
20056         * aot.c: Move AOT module loading logic here from mono_assembly_open.
20057
20058         * aot.c: Save the optimization flags used to compile the code into
20059         the AOT module.
20060
20061         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
20062         support emitting domain specific code.
20063         
20064         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
20065         no longer domain neutral. It can be made domain neutral by compiling 
20066         with --optimize=shared.
20067
20068         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
20069         between appdomains.
20070
20071         * driver.c mini.h mini.c: New --no-aot debugging option which disables
20072         loading of AOT code.
20073
20074         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
20075         
20076         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
20077         if there is no domain neutrality information.
20078
20079 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20080
20081         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
20082         format version into the generated library.
20083
20084         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
20085         callee method into the caller since one of them could be shared.
20086
20087         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
20088         system exceptions from AOT code now works.
20089
20090         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
20091         method if it is domain neutral and the callee is not.
20092
20093         * graph.c (cfg_emit_one_loop_level): Fix warning.
20094
20095 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20096
20097         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
20098         last checkin.
20099
20100 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20101
20102         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
20103         is needed  by code which is executed before mono_runtime_init ().
20104         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
20105         
20106         * mini.c (mono_thread_abort): Fix warning.
20107         (mono_jit_compile_method): Call static constructor in the AOT case too.
20108
20109         * aot.c (mono_compile_assembly): Fix warning.
20110
20111 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20112
20113         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
20114
20115 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
20116
20117         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
20118
20119         * cpu-pentium.md: Fix the length of call opcodes so they include the
20120         ESP restoring instruction. Fixes #47968.
20121
20122 2003-08-28  Martin Baulig  <martin@ximian.com>
20123
20124         * mini-x86.c (mono_arch_call_opcode): Added support for
20125         MONO_TYPE_GENERICINST.
20126
20127         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
20128
20129 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20130
20131         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
20132         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
20133
20134         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
20135         metadata_section.
20136
20137 2003-08-26  Martin Baulig  <martin@ximian.com>
20138
20139         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
20140         when reporting an error, set this to the actual error location.
20141         (mono_method_to_ir): Report the correct error location if
20142         get_basic_blocks() returned an error.
20143
20144 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20145
20146         * mini.c (mono_type_blittable): OBJECT is not blittable.
20147         (mono_method_blittable): Methods which have marshalling descriptors
20148         are not blittable either. Fixes #47842.
20149
20150 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
20151
20152         * driver.c mini.c: Use an environment variable instead of a global 
20153         variable. Also fix the build.
20154
20155         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
20156         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
20157         reporting this. 
20158
20159         * driver.c mini.c: Added --with-valgrind option to turn off some
20160         code which prevents mono from running under valgrind.
20161
20162         * mini.c (mono_emit_call_args): Fixed warning.
20163
20164         * mini.c (mono_emulate_opcode): Fixed warning.
20165
20166 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20167
20168         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
20169         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
20170         regalloc.c, regalloc.h: specify available registers in arch-specific
20171         code and support floats in the regallocator (patch by Laurent Morichetti 
20172         <l_m@pacbell.net>)
20173
20174 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20175
20176         * mini.c: mono_thread_current() can be called only after
20177         mono_runtime_init(): rearrange code to not call it early on.
20178
20179 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20180
20181         * mini.c: allocate jump tables in the code mempools.
20182
20183 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20184
20185         * mini.c, mini.h: make sure per-thread data allocated by the jit is
20186         freed.
20187
20188 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
20189
20190         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
20191         12 to 16.  This fixes bug #47453.
20192
20193
20194 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20195
20196         * mini-ppc.c: fixed indexed load and unsigned compares.
20197
20198 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
20199
20200         * mini.c: reenabled installation of handler for
20201           thread abort signal.
20202
20203 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20204
20205         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
20206         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
20207         until it's fixed and actually useful.
20208
20209 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20210
20211         * inssel-long32.brg: couple more opcodes implemented.
20212
20213 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20214         
20215         * mini-sparc.c: Even more opcodes implemeted.
20216
20217 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
20218
20219         * mini-sparc.c: More opcodes implemented.
20220
20221 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
20222
20223         * mini-sparc.c: More opcodes implemented.
20224
20225 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20226
20227         * inssel-sparc.brg: Add some needed rules.  Direct
20228         copy from PPC.
20229         * Makefile.am: Use inssel-sparc.brg
20230         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
20231         an assert happy for now.
20232
20233 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
20234
20235         * mini-sparc.c: Fixed compile errors.
20236         * exceptions-sparc.c: Same.  We now produce a mono binary 
20237         on sparc-linux.  Yea.
20238
20239 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
20240
20241         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
20242         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
20243         They compile, but do not work.
20244
20245 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20246
20247         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
20248         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
20249         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
20250         (ct@gentoo.org).
20251
20252 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20253
20254         * mini.c: more opcodes implemented and better support for generics.
20255
20256 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20257
20258         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
20259         * mini.c, mini.h: first cut at generics support: some new instructions 
20260         added and changed the behaviour of some of the existing ones.
20261
20262 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20263
20264         * mini.c: Removed definition of metadata_shared mutex here.
20265
20266 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20267
20268         * mini-x86.c: make vararg calls work for instance methods.
20269
20270 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20271
20272         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
20273         returns the arguments in a separte list, now.
20274
20275 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20276
20277         * aot.c, mini.c: updates for array type representation changes.
20278
20279 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
20280
20281         * mini.c: register function to perform jit shutdown.
20282
20283 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20284
20285         * mini.c: use a faster allocator if possible.
20286
20287 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20288
20289         * aot.c: some cleanups and portability changes.
20290
20291 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20292
20293         * mini.c: use faster allocation for CEE_BOX if possible.
20294
20295 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20296
20297         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
20298         Moved inlined mempcy code to its own function so that is can be
20299         reused. Added an inline memset function as well (optimized initobj).
20300         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
20301
20302 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20303
20304         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
20305
20306 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20307
20308         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
20309         arch code can setup the cpu for CLR execution, if needed.
20310         We use it on x86 to set the precision of FP operations.
20311
20312 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20313
20314         * mini.c: disable some optimizations if we can guess they'll cost too
20315         much for a given method.
20316
20317 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20318
20319         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
20320         
20321 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20322         * mini.h mini.c mini-x86.c: Added instruction level coverage 
20323         info collection support.
20324
20325 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20326
20327         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
20328         is now implemented in the profiling API. Get rid of a couple of
20329         unnecessary global variables.
20330
20331 2003-06-15  Nick Drochak <ndrochak@gol.com>
20332
20333         * basic-long.cs: tests for negative values for bigmul, and unsigned.
20334         * cpu-g4.md: add op_bigmul and op_bigmul_un
20335         * cpu_pentium.md: add op_bigmul_un
20336         * inssel-long32.brg: add rule for unsigned bigmul
20337         * mini-ops.h: define OP_BIGMUL_UN
20338         * mini-x86.c: THE BUG: handle (un)signed properly
20339         * mini.c: choose unsigned opcode if needed.
20340         This set of patches fixes bug #44291
20341
20342 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
20343
20344         * mini.c (optimize_branches): improved to handle all kinds of
20345         conditional branches.
20346
20347 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20348
20349         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
20350         don't raise exceptions.
20351
20352 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20353
20354         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
20355         to arch-specific files.
20356
20357 2003-06-09  Martin Baulig  <martin@ximian.com>
20358
20359         * Makefile.am (libs): Added $(LIBGC_LIBS).
20360
20361 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
20362
20363         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
20364         and OP_ATAN (fixes bug#44293).
20365
20366 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
20367
20368         * Makefile.am, mini-x86.c: rename cpu description array to
20369         pentium_desc, since some compilers define the 'pentium' preprocessor
20370         symbol.
20371
20372 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
20373
20374         * mini.c (mini_select_instructions): add explicit branch if the
20375         following block is not the false target of a conditional branch -
20376         we need this with any optimization that reorder or remove bblocks
20377
20378         * mini.c (optimize_branches): bug fixes
20379
20380 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
20381
20382         * mini.c (mono_method_to_ir): inline static readonly fields
20383
20384         * ssa.c (fold_tree): start cfold support for long (very simple
20385         cases only)
20386
20387         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
20388
20389 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20390
20391         * inssel.brg: fixed memcpy (bug #44219).
20392
20393 2003-06-05  Dick Porter  <dick@ximian.com>
20394
20395         * driver.c: Set the glib log levels to not abort if g_message
20396         recurses.
20397
20398         g_set_prgname() has to happen before mini_init() so that the
20399         process handle gets the info.
20400         
20401 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20402
20403         * driver.c: add intrins to the default optimizations to get wider
20404         exposure.
20405
20406 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20407
20408         * mini.h: some large basic blocks will overflow a 16-bit
20409         integers for symbolic registers.
20410
20411 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20412
20413         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
20414         (mono_arch_output_basic_block): fix bug 43499 
20415
20416 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20417
20418         * mini.c: kill duplicated definition of mono_debug_format.
20419
20420 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
20421
20422         * mini-x86.c, arrays.cs: fixed register allocation bug.
20423
20424 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20425
20426         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
20427
20428         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
20429
20430 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20431
20432         * mini.c:
20433         (print_method_from_ip): also print source location information if
20434         available.
20435
20436 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
20437
20438         * mini.c (mono_find_block_region): bug fix in region code
20439         (mini_method_compile): enable removing unreachable code again, but
20440         only in methods without exception clauses.
20441
20442 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20443
20444         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
20445         Implemented arglist opcode and handling of TypedReference type.
20446         Fixed x86 call convention when a structure is returned.
20447         Minimal support for calling static vararg methods.
20448
20449 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
20450
20451         * mini.c (mini_method_compile):  always remove unreachable code,
20452         because the code in them may be inconsistent  (access to dead
20453         variables for example).
20454
20455 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20456
20457         * driver.c, debug-mini.c: warning fixes.
20458
20459 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
20460
20461         * Makefile.am, jit.h, mini.h: install header for embedding mono.
20462
20463 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
20464
20465         * mini.c: thread-static fields are registered in mono_class_vtable(),
20466         so ensure the function is called before checking for them.
20467
20468 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
20469
20470         * mini.c (optimize_branches): fix for bug 43586
20471
20472         * jit-icalls.c (mono_llmult_ovf): added an additional check for
20473         overflow (fixes Bug #43639)
20474
20475 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20476
20477         * mini.c, objects.cs: allow the use of stobj for primitive types.
20478
20479 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20480
20481         * mini.c: be less strict about argument checking until we support
20482         running the verifier.
20483
20484 2003-05-27  Nick Drochak <ndrochak@gol.com>
20485
20486         * basic-long.cs: tests for (ulong)int * (ulong)int also
20487         * mini.c: use the same trick for (ulong)int * (ulong)int
20488
20489 2003-05-27  Nick Drochak <ndrochak@gol.com>
20490
20491         * basic-long.cs: add regression test for (long)int * (long)int
20492         * cpu-pentium.md: add op_bigmul specification
20493         * inssel-long32.brg: add OP_BIGMUL rule
20494         * mini-ops.h: add OP_BIGMUL
20495         * mini-x86.c: register allocator: handle case where src1 needs to be
20496         in EAX.
20497         * mini.c: substitute special BIGMUL opcode in the tree for 
20498         (long)int * (long)int
20499
20500 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20501
20502         * jit-icalls.c: call the type ctor on field access if needed.
20503
20504 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20505
20506         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
20507         to a method (including results of ldelema, bug#43207).
20508
20509 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20510
20511         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
20512         colors to show exception handler blocks.
20513
20514         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
20515         (fix for pinvoke7.cs).
20516
20517 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20518
20519         * mini.h, mini.c: ensure correct initialization order for types that
20520         require it. Prepare for lazy compilation of jit icall wrappers.
20521         Provide a name for opcode emulation to reduce unneeded mallocing.
20522
20523 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20524
20525         * mini-x86.c: better register restoring code and profiling
20526         support for tail calls.
20527
20528 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20529
20530         * mini.h, driver.c: prepare for leaf methods optimization.
20531
20532 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20533
20534         * mini.c: get targets of branches before converting a method.
20535
20536 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
20537
20538         * mini.c (optimize_branches): added some experimental code (disbaled) 
20539
20540 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
20541
20542         * mini.c (optimize_branches): fix branch to branch optimization 
20543
20544         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
20545
20546         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
20547
20548         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
20549
20550         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
20551         if needed.
20552
20553 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20554
20555         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
20556         enable use of interface variables again.
20557
20558         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
20559         I1 to registers because there is no simply way to sign extend 8bit
20560         quantities in caller saved registers on x86.
20561
20562         * inssel-float.brg: set costs of some rules to 2 so
20563         that monobure always select the arch. specific ones if supplied,
20564         regardless of the order we pass the files to monoburg.
20565
20566 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20567
20568         * mini.c, mini-x86.c: since the magic trampoline for jumps
20569         can't patch the code directly, we do it as soon as the
20570         method gets compiled.
20571
20572 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20573
20574         * mini-x86.c, mini.h: introduce a new patching method
20575         to support CEE_JMP and tail calls.
20576         * mini.c: obey tail.call. Don't precompile methods target
20577         of CEE_JMP.
20578         * tramp-x86.c: new trampoline code to handle methods
20579         reached through a jump.
20580
20581 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
20582
20583         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
20584         bit values to registers
20585
20586 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
20587
20588         * mini.c (mono_compile_get_interface_var): share interface
20589         variables if possible.
20590
20591 2003-05-16  Martin Baulig  <martin@ximian.com>
20592
20593         * debug-mini.c (mono_init_debugger): New function to initialize
20594         the debugger.  This is not in the debugger since it needs to
20595         access some of mini's internals.
20596
20597 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20598
20599         * mini.c (mono_method_to_ir): inlining fixes/cleanups
20600
20601 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
20602
20603         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
20604         for value type handling.
20605
20606 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20607
20608         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
20609         (mono_method_check_inlining): enable inlining of all kinds of wrappers
20610
20611 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
20612
20613         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
20614           the constructor through a proxy.
20615
20616 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20617
20618         * jit-icalls.c, inssel.brg: fixes to array element address
20619         calculations.
20620
20621 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
20622
20623         * mini-x86.c (is_regsize_var): allocate pointer to registers
20624
20625 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20626
20627         * driver.c: fixed typo, added intrins to the set of optimizations
20628         tested with regressions.
20629
20630 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20631
20632         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
20633         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
20634         test case.
20635
20636 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
20637
20638         * inssel.brg: remove some common pop instructions without side effects
20639
20640 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20641
20642         * inssel-x86.brg: fixed thinko in int to double conversions.
20643
20644 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20645
20646         * mini.c, jit-icalls.c: added runtime thread-static variable support.
20647
20648 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20649
20650         * inssel-long32.brg: two more missing instructions.
20651
20652 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
20653
20654         * mini.c (mono_emit_call_args): set the cil_code for all arguments
20655         if not already set.
20656
20657 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
20658
20659         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
20660         correctly.
20661
20662         * basic-float.cs: Added tests for negative zero.
20663
20664 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20665
20666         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
20667         a couple of missing operations for long casts, with test cases.
20668
20669 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20670
20671         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
20672
20673 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
20674
20675         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
20676         code size estimation.
20677
20678 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
20679
20680         * mini.c (mono_jit_create_remoting_trampoline): make it work with
20681         abstract methods (fix bug 42542)
20682
20683         * aot.c: add ability to handle array types
20684         
20685 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
20686
20687         * mini.c: Call the _specific versions of the object allocation
20688         functions if possible.
20689
20690 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20691
20692         * driver.c: call setlocale ().
20693
20694 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20695
20696         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
20697         windows build.
20698
20699 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
20700
20701         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
20702
20703         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
20704         wrappers (fix bug 42122)
20705
20706 2003-05-04  Martin Baulig  <martin@ximian.com>
20707
20708         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
20709
20710         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
20711         s/mini_set_defaults/mono_set_defaults/g.
20712
20713 2003-05-04  Martin Baulig  <martin@ximian.com>
20714
20715         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
20716
20717 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20718
20719         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
20720         (reported by Don Roberts).
20721
20722 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20723
20724         * mini.c: temporarily work around two bugs for this release.
20725
20726 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20727
20728         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
20729         that contains -export-dynamic and it makes using the ld script
20730         useless.
20731         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
20732
20733 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20734
20735         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
20736         specific cpu.
20737
20738 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20739
20740         * mini.c: make sure leave calls all the needed finally blocks,
20741         even when the target jumps out of multiple exception clauses.
20742
20743 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20744
20745         * ldscript, Makefile.am: add linker script to reduce the number of
20746         exported symbols (should also fix the issues with libwine defining
20747         some of the same symbols in io-layer).
20748
20749 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
20750
20751         * driver.c (mini_main): Avoid assertion when no file name is given on 
20752         the command line.
20753
20754 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
20755
20756         * driver.c: added --version/-V command line option.
20757         Added the inline optimization in the regression tests.
20758
20759 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20760
20761         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
20762         to the type in the method signature (fixes bug#42134).
20763
20764 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
20765
20766         * mini.c: when inlining, check this is not null only when needed (bug #42135).
20767
20768 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
20769
20770         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
20771
20772 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20773
20774         * driver.c: fixed bug #42100.
20775
20776 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
20777
20778         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
20779
20780 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20781
20782         * mini.c: moved most of the code required to do inlining to its own
20783         function so it can be reused. Inline also ctors if appropriate.
20784
20785 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
20786
20787         * Makefile.am: Link with -export-dynamic so shared libs loaded by
20788         the runtime can call mono API functions.
20789
20790 2003-04-27  Martin Baulig  <martin@ximian.com>
20791
20792         * debug-mini.c (mono_debug_init_method): Added
20793         `guint32 breakpoint_id' argument; if the method has a breakpoint,
20794         send a notification to the debugger.
20795
20796         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
20797         running in the Mono Debugger, just pass the breakpoint number to
20798         mono_debug_init_method().
20799
20800         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
20801
20802 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
20803
20804         * mini.c: allow some more unsafe compares.
20805
20806 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20807
20808         * mini-x86.c, Makefile.am: make distcheck works (partially from
20809         a patch by Richard Lee <r.h.lee@attbi.com>).
20810         * regset.c, regset.h: removed, they are unused.
20811
20812 2003-04-25  Dick Porter  <dick@ximian.com>
20813
20814         * driver.c: Usage reports the name as 'mono' not 'mini'
20815         * exceptions-x86.c: Build and run on freebsd
20816
20817 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
20818
20819         * Makefile.am: install the program with the 'mono' name and
20820         the library as libmono instead of mini and libmini.
20821
20822 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20823
20824         * driver.c: provide the APIs for the embedding interface of the old jit.
20825
20826 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
20827
20828         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
20829
20830 2003-04-23  Martin Baulig  <martin@ximian.com>
20831
20832         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
20833
20834         * driver.c: Added `--debug' command line argument to enable
20835         debugging support.
20836
20837 2003-04-23  Martin Baulig  <martin@ximian.com>
20838
20839         * debug.[ch]: Removed.  The code is now in
20840         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
20841
20842         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
20843         last six months.
20844
20845 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
20846
20847         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
20848
20849 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20850
20851         * mini.c:
20852         (mini_cleanup): moved mono_runtime_cleanup call after the call to
20853         mono_domain_finalize.
20854         (mini_method_compile): use mono_method_profile* if the the option is
20855         enabled.
20856
20857 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
20858
20859         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20860         methods with their wrapper.
20861
20862         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20863         methods with their wrapper.
20864
20865         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
20866         their wrapper.
20867
20868         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
20869         wrapper.
20870
20871         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
20872         methods.
20873
20874 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
20875
20876         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
20877
20878 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
20879
20880         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
20881         of the mempool. This is slightly faster and uses less memory
20882
20883 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20884
20885         * mini.c: avoid O(n) allocation for variables.
20886
20887 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20888
20889         * mini.c: handle items on the stack after inlining methods.
20890
20891 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20892
20893         * mini.c: make the method->opcode optimization dependent
20894         on MONO_OPT_INSTRINS and do it lazily.
20895
20896 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20897
20898         * driver.c: print overall results at the end of regression run.
20899
20900 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
20901
20902         * inssel.brg: don't overwrite symbolic registers.
20903
20904 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20905
20906         * inssel-x86.brg: fix conversion from long to float.
20907
20908 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
20909
20910         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
20911
20912 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
20913
20914         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
20915
20916         * driver.c: Added --print-vtable option as in the old JIT.
20917
20918 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20919
20920         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
20921
20922 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
20923
20924         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
20925
20926 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
20927
20928         * mini.c regalloc.c regalloc.h: Fix memory leak.
20929
20930 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
20931
20932         * aot.c (mono_aot_get_method): register all used strings
20933
20934 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20935
20936         * mini.c: always intern strings references with ldstr at compile time.
20937
20938 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20939
20940         * Makefile.am: add BUILT_SOURCES.
20941
20942 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20943
20944         * driver.c: give a better error message when the assembly to execute
20945         doesn't have an entry point.
20946
20947 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
20948
20949         * Makefile.am: added hack for automake
20950
20951         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
20952         correct sematics.
20953
20954         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
20955
20956 22003-04-07  Martin Baulig  <martin@ximian.com>
20957
20958         * Makefile.am: Added Makefile.am.
20959
20960         * debugger-main.c: Removed, this is now in the debugger where it
20961         belongs.
20962
20963         * mini.pc.in: Call this package `mini' for the moment.
20964
20965
20966
20967
20968
20969
20970
20971
20972
20973
20974
20975
20976
20977
20978