2009-06-08 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2
3         * image-writer.c: Improve support for the osx assembler.
4
5         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
6         support them.
7
8 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
9
10         * image-writer.c (append_subsection): Don't align subsections of the
11         debug_line section as a workaround.
12
13         * dwarfwriter.c: Emit line number info in the AOT case as well.
14
15 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
16
17         This patch is contributed under the terms of the MIT/X11 license
18
19        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
20        code_len <= code_size
21
22 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
23
24         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
25
26 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
27
28         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
29         invoke wrappers, we now use trampolines instead.
30
31 2009-06-04  Mark Probst  <mark.probst@gmail.com>
32
33         * mini-darwin.c: The exception thread must not be registered with
34         the GC.
35
36 2009-06-04  Mark Probst  <mark.probst@gmail.com>
37
38         * mini-gc.c: Disable the code because it makes SGen crash.
39
40 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
41
42         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
43         instead of asserting.
44
45 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
46
47         * aot-compiler.c (mono_compile_assembly): Move the creation of the
48         output file after the code has been compiled.
49
50 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
51
52         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
53
54 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
55
56         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
57         entries distinction to simplify the code.
58
59         * mini.h: Bump AOT file format version.
60         
61 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
62
63         * objects.cs: Fix the signature of one of the tests.
64
65         * mini.c (mini_create_ftnptr): New helper function, moved here from
66         object.c.
67         (mini_get_addr_from_ftnptr): Ditto.
68         (mini_init): Install the new helpers.
69
70 2009-05-28  Martin Baulig  <martin@ximian.com>
71
72         Correctly initialize the debugger when embedding Mono.
73
74         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
75         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
76         see documentation in mini_debug_running_inside_mdb().
77
78         * debug-debugger.c
79         (mini_debug_running_inside_mdb): New function to check whether
80         we're running inside mdb.
81
82         * mini.c (mini_init): Call mini_debugger_init() if we're running
83         inside the debugger.
84
85         * driver.c (mono_main): Moved the call to mini_debugger_init()
86         into mini_init() to make this work when embedding Mono.
87
88         * debug-debugger.c (mini_debugger_init): Warn about duplicate
89         calls to mini_debugger_init().
90
91         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
92         mono_debugger_main() -> mini_debugger_main() and put them inside a
93         `MONO_DEBUGGER_SUPPORTED' conditional.
94
95 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
96
97         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
98         this is no longer in use.
99         * mini.h: Same.
100
101 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
102
103         * mini-sparc.c (add_outarg_load): Fix the sparc build.
104
105         * aot-compiler.c (emit_method_code): Always write out C style symbols for
106         methods.
107
108 2009-05-27  Martin Baulig  <martin@ximian.com>
109
110 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
111
112         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
113         long_conv_to_r_un to 64 bits.
114
115         * cpu-x86.md: Increase the instruction size due to the changes.
116
117         * iltests.il.in: Add regression test.
118
119         Fixes #467201.
120
121 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
122
123         * objects.cs: Move the previous test from basic.cs to here.
124
125 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
126
127         * basic.cs: Add regression test for #506915.
128
129 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
130
131         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
132         optimization we must check the bb of the first byte of stobj as
133         it's the only one set in cil_offset_to_bb.
134
135         Fixes #506915.  
136
137 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
138
139         * image-writer.c: Fix pointer directive on ppc64.
140
141 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
142
143         * image-writer.c (asm_writer_emit_section_change): Avoid using
144         .bss subsections on ppc too.
145
146 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
147
148         * image-writer.c: Fix the definition of TARGET_ASM_....
149         
150         * image-writer.c: Fix the emission of assembler directives in the last
151         change.
152
153         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
154         exception throwing code to accomodate ppc64.
155
156         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
157         size to work on ppc64 too.
158
159         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
160         too.
161
162         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
163         the assembler dialect instead of using platform specific defines.
164
165 2009-05-22  Geoff Norton  <gnorton@novell.com>
166
167         * mini-arm.c (get_call_info): If a structure is split between the stack
168         and argument registers, we should not advance the stack pointer by the entire
169         native size, but just by the amount that spilled.
170
171 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
172
173         * mini-arm.c (get_call_info): Handle structures with alignment requirements
174         correctly.
175
176 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
177
178         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
179         wrappers normally.
180         
181         * aot-compiler.c (add_extra_method): Fix up the collection of extra
182         methods so wrapper don't get added twice.
183         (add_generic_instances): Don't add methods of arrays.
184
185         * generics.cs: Mark one test as !FULLAOT.
186
187 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
188
189         * mini-x86.c (emit_move_return_value): Remove unused vars.
190
191 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
192
193         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
194         decomposing 8 bytes structs into a LCALL.
195
196         * mini-x86.c (emit_move_return_value): We no longer push the vtype
197         pointer for where to store the returned regs.
198
199         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
200         state the concern.
201
202         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
203
204 2009-05-20  Miguel de Icaza  <miguel@novell.com>
205
206         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
207         without getenv.
208
209 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
210
211         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
212
213         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
214         generics.
215
216 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
217
218         * local-propagation.c (mono_local_cprop): Avoid local propagation
219         across paired add/sub if the first instruction dest reg is it's
220         source reg. For example:
221
222         int_add_imm R12 <- R12 [1] clobbers: 1
223         int_sub_imm R42 <- R12 [1] clobbers: 1
224
225         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
226         maintain the math identify.
227
228         Fixes #505375.
229
230 2009-05-20  Andreia Gaita  <avidigal@novell.com>
231
232         * Makefile.am: avoid going on the network just to get the revision,
233         use git log instead
234
235 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
236
237         Fixed estimate for short branches on amd64 (they were off mark, and
238         enabling call prolog-epilog instrumentations caused assertions).
239         * mini.h (struct MonoBasicBlock): added max_length field to hold the
240         estimate for the maximum length of this basic block.
241         * mini-amd64.c:
242         - mono_arch_emit_prolog: compute max_length for each basic block
243           (instead of max_offset), and inflate size estimate also for entry bb
244           in case of code instrumentation.
245         - mono_arch_output_basic_block: get rid of "cpos" (the current
246           estimated "position" in the code), and always use "offset" instead,
247           which is accurate; at the beginning of the function quickly recompute
248           max_offset for all the remaining blocks, starting from the current
249           cfg->code_len (which is correct, and not estimated) and using the
250           estimated block lengths computed previously.
251
252 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
253
254         * exceptions-ppc.c: Remove the caching from the trampoline creation 
255         functions, it is already done in the caller.
256
257         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
258
259         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
260         MONO_ARCH_GSHARED_SUPPORTED define.
261
262         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
263
264         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
265         function.
266
267 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
268
269         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
270         call to mono_marshal_get_rgctx_invoke ().
271
272         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
273         mono_marshal_get_static_rgctx_invoke (), all platforms which support
274         gshared use the static rgctx trampolines now.
275         
276         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
277         platform supports it.
278
279 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
280
281         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
282
283         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
284
285 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
286
287         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
288
289         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
290         for ppc.
291
292 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
293
294         Made it possible for mono_arch_instrument_epilog to preserve
295         argument registers, otherwise instrumenting the "epilogue" before
296         a tail call would clobber them.
297         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
298         if like mono_arch_instrument_epilog but with an additional parameter
299         that states if argument registers must be preserved.
300         * mini.c: implemented mono_arch_instrument_epilog as a call to
301         mono_arch_instrument_epilog_full without asking to preserve argument
302         registers (this makes the existing code work as usual).
303         * mini-amd64.c:
304         - mono_arch_instrument_epilog: add parameter to transform it into
305         mono_arch_instrument_epilog_full, and preserve argument registers
306         when required.
307         - mono_arch_output_basic_block, OP_TAILCALL case: call
308         mono_arch_instrument_epilog_full.
309         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
310         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
311         only transformed mono_arch_instrument_epilog into
312         mono_arch_instrument_epilog_full.
313
314 2009-05-15  Geoff Norton  <gnorton@novell.com>
315
316         * mini-darwin.c: This works on arm now.
317
318 2009-05-14  Geoff Norton  <gnorton@novell.com>
319
320         * jit.h, driver.c: Allow full-aot to be decided programatically by the
321         embedding api.
322
323 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
324
325         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
326         label names.
327
328         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
329         wrappers during full aot mode correctly.
330
331         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
332         methods correctly.
333
334         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
335         mono_metadata_type_hash ().
336
337 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
338
339         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
340         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
341         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
342         Removed MONO_INST_BRLABEL from the instruction flags, and the
343         remaining code that used it, because we do not support branches inside
344         basic blocks (and branch target labels) anymore.
345         * Makefile.am: As part of the above cleanup, remove reference to
346         BURG files which don't exist anymore.
347
348 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
349
350         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
351         osx.
352
353         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
354         to use mono_arch_throw_corlib_exception.
355
356         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
357         mono_arch_throw_corlib_exception for throwing corlib exceptions.
358
359         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
360         domain mempool.
361
362         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
363
364         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
365         for the got to make debugging easier and to avoid confusing it with the
366         system got.
367         
368         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
369         method so a breakpoint can be set when using gdb.
370
371 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
372
373         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
374         on mono_method_get_imt_slot ().
375
376         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
377         num_decodes variables.
378
379         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
380         change as it doesn't seem to work.
381         
382         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
383         wrappers.
384
385 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
386
387         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
388         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
389
390         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
391         builder when using full aot.
392
393         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
394         here, it is already handled.
395         
396         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
397         correctly for IMT.
398
399         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
400
401         * mini-arm.h: Enable IMT for full aot.
402         
403         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
404         arch doesn't support it.
405
406         * mini.c (mini_init): Don't disable IMT for full aot if the
407         architecture supports it.
408
409         * mini.h (MonoAotTrampoline): New enum containing the different types
410         of 'numerous' trampolines.
411         (MONO_AOT_FILE_VERSION): Bump this.
412
413         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
414         static rgctx trampolines. Add support for full-aot IMT thunks.
415
416         * mini-amd64.h: Enable IMT for full aot.
417
418         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
419         to exclude tests belonging to a category.
420
421         * generics.cs: Mark some tests with a !FULLAOT category.
422
423         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
424         generics tests.
425
426 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
427
428         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
429         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
430         (emit_plt): Fix a warning.
431
432 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
433
434         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
435         back into aot-compiler.c to a place where the other functions shared by
436         the runtime and aot compiler are.
437         
438         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
439         as done previously, instead of in MonoAotFileInfo, since pointers might have
440         alignment requirements.
441
442         * mini.h: Bump AOT file format version.
443
444 2009-05-10  Miguel de Icaza  <miguel@novell.com>
445
446         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
447         that is used at runtime from the aot-compiler.c, this makes it
448         work on setups that remove the AOT compiler from the output
449         image. 
450
451 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
452
453         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
454         PPC.
455
456         * mini-ppc.h: Enable static rgctx trampolines for ppc.
457
458         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
459
460         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
461         stuff to mono_arch_decompose_long_opts ().
462         (mono_decompose_opcode): Remove some dead code.
463
464 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
465
466         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
467         cmethod can be null for quite a some reasons.
468
469 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
470
471         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
472
473 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
474
475         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
476
477 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
478
479         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
480         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
481         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
482         calls returning structures by addr on amd64.
483
484         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
485
486         * iltests.il.in: Restructure the tail call tests a bit.
487         
488 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
489
490         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
491         for virtual methods too.
492
493 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
494
495         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
496         due to regression in verifying System.dll.
497
498 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
499
500         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
501         in dynamic methods.
502
503         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
504         instances.
505
506         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
507         g_str_hash () which can change.
508
509         * driver.c (mini_regression): Disable optimizations not supported by
510         the cpu. Fixes #500019.
511
512         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
513         build.
514
515 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
516
517         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
518         to the latest LLVM code.
519
520 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
521
522         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
523
524 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
525
526         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
527         x86/amd64.
528
529         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
530         no longer saving offsets, so just save the patch types along with the other
531         info.
532         * aot-runtime.c (load_patch_info): Update after the changes to 
533         encode_patch_list ().
534         (decode_got_entry): Removed, merged into load_patch_info ().
535         (is_shared_got_patch): Removed, call the same function from
536         aot-compiler.c.
537
538         * mini.h: Bump aot file format version.
539         
540         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
541         half-finished no-dlsym code.
542
543         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
544         option.
545
546         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
547         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
548
549 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
550
551         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
552         buffer length to work with AOT code.
553
554         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
555         ldfld/stfld opcodes.
556
557         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
558         as it is not used.
559
560         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
561
562         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
563
564         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
565         LLVM API.
566
567         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
568         if needed. Don't decompose long operations when using llvm.
569
570 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
571
572         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
573         PAGESIZE constant.
574
575         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
576
577 2009-05-03  Martin Baulig  <martin@ximian.com>
578
579         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
580         mono_debugger_insert_method_breakpoint() since the class init
581         handler we're inserting at the top of the method already gives us
582         a notification.
583
584 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
585
586         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
587         to mono_arch_decompose_long_opts () for x86 and arm.
588
589 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
590
591         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
592         TARGET_AMD64 here.
593
594 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
595
596         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
597         JIT code.
598
599 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
600
601         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
602         number of trampolines used in full-aot mode.
603
604         * aot-compiler.c: Add an ntrampolines option to set the number of 
605         trampolines emitted in full-aot mode.
606
607 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
608
609         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
610         a volatile load. Get rid of get_tempname (), llvm assigns names
611         automatically.
612
613         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
614         builder function.
615
616         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
617         a value.
618
619         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
620         level 1.
621
622         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
623         to the same register as a fixed sreg2. Fixes #497271.
624
625         * iltests.il.in: Add a new test.
626
627 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
628
629         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
630         stack, since pushes complicate exception handling.
631
632         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
633         the stack if they are passed using moves.
634
635         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
636
637         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
638         when using llvm.
639
640         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
641         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
642         of FMOVE if it is an R4.
643
644 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
645
646         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
647
648         * mini.h (LLVMCallInfo): New structure to store calling convention 
649         information for the LLVM back end similar to the CallInfo structures in 
650         the back-ends.
651
652         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
653         call information in a format usable by LLVM.
654         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
655
656         * method-to-ir.c (mono_emit_call_args): Emit calls using 
657         mono_llvm_emit_call () when compiling using LLVM.
658
659         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
660         comments to all functions. Fix memory leaks. Add a public init/cleanup
661         function.
662
663         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
664
665         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
666         mono_array_new_va () jit icall.
667         
668 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
669
670         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
671         multiple machine description files to be specified.
672         * mini-ops.h: fixes for cross-compilation.
673
674 2009-04-22  Miguel de Icaza  <miguel@novell.com>
675
676         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
677         some porting work.
678
679 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
680
681         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
682         to prevent asserts in various passes. Fixes #497220.
683
684 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
685
686         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
687         a racy assert.
688
689         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
690         table to avoid duplicates.
691
692         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
693         
694         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
695         option is used.
696
697 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
698
699         * mini.c (mini_method_verify): Fail fulltrust code if the exception
700         is for method or field access.
701
702 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
703
704         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
705         a Value to stdout.
706
707         * mini-llvm.c (mono_llvm_emit_method): Use it.
708         
709         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
710         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
711         on volatile values.
712
713         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
714         synchronized methods.
715
716         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
717
718         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
719
720         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
721         OP_LOADI8_MEM.
722
723         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
724         allowing some options to be set dynamically.
725
726 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
727
728         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
729         unconditional branch.
730
731         * mini.h (MonoTrampolineType): Add new trampoline type 
732         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
733         compiled code.
734
735         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
736         function.
737
738         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
739         creation function.
740
741         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
742         is enabled. Instead, use the llvm vcall trampoline.
743         
744         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
745
746         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
747         
748         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
749         functions.
750
751         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
752         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
753
754         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
755         OP_IA64_CSET opcode.
756
757         * mini.c: Fix a warning.
758
759         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
760         THROW to the appropriate llvm type.
761
762 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
763
764         * mini.c (mini_method_compile): Add statistics for methods JITted
765         with/without LLVM.
766
767 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
768
769         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
770         OP_IA64_CMP_<cond>_IMM opcodes.
771
772 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
773
774         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
775         corlib exceptions.
776
777         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
778         correctly.
779
780         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
781         GENERICINST.
782
783 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
784
785         * mini-exceptions.c : add thread id to EXCEPTION trace message.
786
787 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
788
789         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
790         support.
791
792         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
793         rgctx invoke trampolines for x86.
794
795         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
796         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
797         (mono_arch_get_vcall_slot): Simplify this.
798
799 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
800
801         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
802         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
803
804 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
805
806         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
807         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
808
809         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
810
811         * liveness.c (visit_bb): Remove a needless assert.
812
813 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
814
815         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
816         full aot support to the arch specific code.
817
818         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
819
820         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
821
822         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
823         
824         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
825         collect information about the delegate invoke impl trampolines.
826
827         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
828         to save trampolines during full-aot mode.
829
830         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
831         creation function which returns a trampoline which sets the rgctx
832         argument.
833         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
834         wrapper if possible.
835         (mono_delegate_trampoline): Ditto.
836
837         * mini.c (mono_jit_runtime_invoke): Ditto.
838
839         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
840         
841         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
842
843         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
844         
845 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
846
847         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
848         just setting the opcode to OP_NOP.
849
850 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
851
852         * mini.c (mini_method_compile): Put the last change inside an 
853         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
854         
855         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
856         and extend live ranges to cover the whole method when using xdb.
857
858         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
859         do it in the trampolines.
860
861         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
862         needed.
863
864         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
865         
866         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
867         call code in full-aot mode since IMT is disabled there.
868         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
869         new JIT no longer has that restriction.
870
871         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
872
873         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
874         a more compact format.
875         (mono_aot_wrapper_name): New function to return a unique name for a
876         wrapper method, also used by the AOT runtime.
877
878         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
879         aot-compiler.c.
880
881         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
882         when a ICollection<T> etc is encountered.
883         (add_generic_instances): Process method arguments/locals too.
884         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
885         trampoline names.
886
887         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
888         
889 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
890
891         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
892
893         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
894
895         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
896         representing the result of the decomposition. Nullify instructions
897         instead of setting them to OP_NOP since nops can't have registers
898         set.
899
900 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
901
902         * aot-compiler.c (mono_compile_assembly): Split this huge function into
903         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
904         info. Strip 'mapping symbols' on ARM.
905
906         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
907         
908         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
909         this with the native genmdesc.
910
911 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
912
913         * aot-runtime.c:  Fixing the MSVC build.
914
915         Code is contributed under MIT/X11 license.
916
917 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
918
919         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
920         JITted code depends on it.
921
922 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
923
924         * aot-compiler.c: Use new MonoGenericParam accessors.
925
926 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
927
928         Reduce memory usage and improve correctness wrt MonoGenericParam
929         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
930         handing.  Avoid allocating MonoGenericParams, but use the ones in
931         the container itself.
932
933 2009-04-07  Miguel de Icaza  <miguel@novell.com>
934
935         * tasklets.c: Return exceptions in the out argument.
936
937 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
938
939         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
940         opcode. Use pointer types in more places instead of casting them to 
941         integers.
942
943         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
944         optimizations.
945         (mono_llvm_optimize_method): New helper function to optimize a method.
946
947         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
948         widening code so it could be called from more places.
949         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
950         code paths in the call opcodes.
951
952 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
953
954         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
955
956 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
957
958         * dwarfwriter.c: Use _ to separate class name 
959         components as gdb can't handle '.'. Represent reference variables
960         as 'class <NAME>&'.
961         
962         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
963
964         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
965         
966         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
967
968         * gc-test.cs: New file with GC stack marking tests.
969         
970         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
971         negative numbers for vfp.
972
973         * basic-float.cs: Add a test.
974         
975 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
976
977         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
978
979 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
980
981         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
982         part of tasklet/continuation support.
983
984 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
985
986         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
987         amd64 opcodes inside an ifdef.
988
989         * dwarfwriter.c: Emit inheritance information for classes, emit fields
990         of complex types.
991         
992         * dwarfwriter.c (emit_type): Emit the class info for classes.
993
994 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
995
996         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
997
998         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
999
1000         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
1001
1002         * ssa.c (mono_ssa_compute): Fix some memory leaks.
1003
1004 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
1005
1006         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
1007
1008         * mini-llvm.c: Update comments.
1009
1010         * mini.h (COMPILE_LLVM): New macro.
1011
1012         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
1013
1014         * ssa.c (mono_ssa_compute): Ditto.
1015         
1016         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
1017         the unwind ops from a DWARF FDE.
1018
1019         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
1020         methods by extracting the dwarf unwind ops from the unwind info generated
1021         by LLVM.
1022         
1023         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
1024         calls.
1025
1026         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
1027         addressing modes.
1028
1029 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
1030
1031         * Makefile.am (llvm_sources): Enable this.
1032
1033         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
1034         failing back to the JIT if something cannot be handled.
1035
1036         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
1037         compiling with LLVM.
1038
1039         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
1040         compiling with LLVM.
1041
1042         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
1043         compiling with LLVM.
1044
1045         * mini-ops.h: Add a few opcodes needed by LLVM.
1046
1047         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
1048         has no unwind info.
1049
1050         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
1051         backend.
1052
1053         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
1054
1055         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
1056
1057 2009-04-01  Mark Probst  <mark.probst@gmail.com>
1058
1059         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
1060         ridiculously large methods.
1061
1062 2009-03-31  Martin Baulig  <martin@ximian.com>
1063
1064         * debug-debugger.c (debugger_remove_breakpoint): Call
1065         mono_debugger_remove_class_init_callback ().
1066
1067 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
1068
1069         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
1070         right before emitting code, not at the start.
1071
1072         * mini.c (mono_postprocess_patches): Extract this into a separate function
1073         from mono_codegen ().
1074
1075         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
1076         byref types correctly.
1077
1078 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1079
1080         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
1081         by the last change.
1082
1083 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
1084
1085         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
1086         indirect calls, this avoids problems where get_vcall_slot () would get
1087         confused by the native code for the instruction preceeding the call.
1088         (mono_arch_get_vcall_slot): Simplify this.
1089         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
1090
1091         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
1092         register allocator now seems to depend on them instead of the data in
1093         cpu-<ARCH>.md.
1094
1095         * mini.c (mini_method_compile): Throw the correct type of exception if
1096         mono_method_get_header () fails because of a loading error.
1097
1098 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1099
1100         * mini.c (mini_method_compile): Clear the loader error if the method
1101         header cannot be decoded.
1102
1103         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
1104         interface methods on proxies correctly.
1105
1106         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
1107         this argument for vtype methods. Add precise liveness info for arguments.
1108
1109         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
1110         LIVERANGE_START/END opcodes.
1111
1112         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
1113         for arguments and values in registers.
1114
1115 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1116
1117         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
1118         return a valuetype. Fixes #487518.
1119
1120         * iltests.il: Add a test.
1121         
1122         * aot-compiler.c: Use mono_thread_create () to create helper threads.
1123
1124         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
1125         closed over a null reference correctly.
1126
1127 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1128
1129         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
1130
1131 2009-03-25  Mark Probst  <mark.probst@gmail.com>
1132
1133         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
1134         allocated to the same registers as fixed sregs.
1135
1136 2009-03-24  Mark Probst  <mark.probst@gmail.com>
1137
1138         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
1139         ATOMIC_CAS_IMM ops.
1140
1141         * method-to-ir.c: Handle more cases for
1142         Interlocked.CompareExchange.
1143
1144         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
1145         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
1146         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
1147
1148 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1149
1150         * aot-runtime.c (decode_method_ref): Fix a warning.
1151
1152         * unwind.c (mono_unwind_frame): Ditto.  
1153
1154 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1155
1156         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
1157         (mono_compile_assembly): Enable the binary writer for full-aot as well.
1158
1159         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
1160         fix the handling of large values in the ALU_PC_G0_NC relocation.
1161
1162 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1163
1164         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
1165
1166 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1167
1168         * method-to-ir.c (mono_spill_global_vars): Support for ternary
1169         ops.
1170
1171 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1172
1173         * method-to-ir.c: MINI_OP3 needs a comma.
1174
1175         * method-to-ir.c, mini.h, mini.c: Remove
1176         mono_init_op_sreg_counts ().
1177
1178 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1179
1180         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
1181         OP_JMP.
1182         
1183         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
1184         assertion.
1185
1186         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
1187
1188         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
1189         code somewhat.
1190
1191 2009-03-21  Mark Probst  <mark.probst@gmail.com>
1192
1193         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
1194         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
1195         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
1196         operations.
1197
1198 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1199
1200         * driver.c: Change location of gc_wrapper.h.
1201
1202         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
1203         inside finally clauses correctly. Fixes #485721.
1204
1205         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
1206         after the change above.
1207
1208         * exceptions.cs: Add a test.
1209         
1210 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1211
1212         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
1213
1214         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
1215         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
1216         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
1217
1218         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
1219         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
1220
1221 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
1222
1223         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
1224         Simplify logic for ensure_method_is_allowed_to_call_method. 
1225         Handle wrappers on callers.
1226
1227 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1228
1229         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
1230         them don't run yet.
1231
1232         * basic-simd.cs: Fix the names of some test methods.
1233
1234 2009-03-18  Geoff Norton  <gnorton@novell.com>
1235
1236         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
1237
1238 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1239
1240         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
1241
1242 2009-03-17  Jb Evain  <jbevain@novell.com>
1243
1244         * driver.c: remove now uneeded call to mono_gc_base_init before
1245         mono_profiler_load.
1246
1247 2009-03-17  Jb Evain  <jbevain@novell.com>
1248
1249         * dwarfwriter.c (token_handler): handle more cases.
1250
1251 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
1252
1253         * method-to-ir.c: Remove more dead code (that was required only
1254         because of method_is_safe). Fix compiler warnings.
1255
1256 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1257
1258         * method-to-ir.c: Remove unneeded/useless method_is_safe
1259         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
1260
1261 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1262
1263         * mini.c (mini_method_compile): Print the method been compiled with
1264         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
1265         for people not familiar with the runtime.
1266
1267 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
1270         a managed object which is later put into a GList. Return its class instead.
1271
1272         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
1273         stack slots when using sgen.
1274
1275 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
1276
1277         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
1278
1279 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
1280
1281         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
1282         > so it works on the first vreg as well.
1283
1284 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
1285
1286         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
1287         trigger randomly.
1288
1289         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
1290         
1291         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
1292         implement GArray.
1293
1294 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1295
1296         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
1297         native->IL offset mapping.
1298
1299 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
1300
1301         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
1302
1303         * basic.cs: Add a test.
1304
1305 2009-03-11  Mark Probst  <mark.probst@gmail.com>
1306
1307         * mini-x86.c (mono_arch_output_basic_block): Use different
1308         registers in case the ones we want to overwrite are used by the
1309         other operand.  Fixes regression in #480807.
1310
1311 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1312
1313         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
1314
1315         * dwarfwriter.c (emit_line_number_info): The line number info for
1316         IL code was off by one. Fix that.
1317
1318         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
1319         stack.
1320
1321 2009-03-09  Mark Probst  <mark.probst@gmail.com>
1322
1323         Contributed under the terms of the MIT/X11 license by Steven
1324         Munroe <munroesj@us.ibm.com>.
1325
1326         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
1327         Fixes #483462.
1328
1329 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1330
1331         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
1332         as well.
1333
1334 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1335
1336         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
1337         the delegate ctor handling code. Fixes #482638.
1338         
1339         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
1340         #481458.
1341
1342         * iltests.il.in: Add a test.
1343         
1344         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
1345         mini-posix.c.
1346
1347 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1348
1349         * mini-trampolines.c (mono_create_jump_trampoline): If the method
1350         is shared generic code, return the trampoline, even if the method
1351         has already been compiled.  Fixes #479763.
1352
1353         * mini.c, mini.h: New function
1354         mono_jit_find_compiled_method_with_jit_info() which is the same as
1355         mono_jit_find_compiled_method() but also returns the jit info.
1356
1357 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1358
1359         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
1360         for methods which actually have one.  For all other methods, make
1361         sure the this argument var is live the whole method.
1362
1363         * mini.c (mini_method_compile): Every shared method has a
1364         this/vtable/mrgctx info.  Fixes #480807.
1365
1366 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1367
1368         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
1369         generic/imt thunks where some entries branch through the vtable,
1370         while other entries branch directly.
1371
1372 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1373
1374         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
1375
1376         * mini-windows.c: Ditto.
1377         
1378         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
1379         ctors.
1380
1381 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
1382
1383         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
1384         down an assert.
1385
1386 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1387
1388         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
1389         #481403.
1390
1391 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1392
1393         * exceptions-x86.c: Include debug-mini.h - fixes build.
1394
1395 2009-03-04  Martin Baulig  <martin@ximian.com>
1396
1397         * debug-mini.c: Clean up the exception API and add documentation.
1398         (mono_debugger_handle_exception): New public method; this is
1399         called when throwing an exception or encountering an unhandled one.
1400         (mono_debugger_call_exception_handler): Formerly known as
1401         mono_debugger_handle_exception(); this is used to tell the
1402         debugger that we're about to invoke an exception handler.
1403
1404 2009-03-04  Martin Baulig  <martin@ximian.com>
1405
1406         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
1407         ../metadata/mono-debug-debugger.c; save and reset exception state.
1408
1409 2009-03-02  Martin Baulig  <martin@ximian.com>
1410
1411         * debug-mini.c: Moved the debugger exception handling here from
1412         ../metadata/mono-debug-debugger.c.
1413
1414         * debug-mini.h
1415         (MonoDebuggerExceptionAction): New exception typedef.
1416
1417         * debug-mini.c
1418         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
1419
1420         * exceptions-amd64.c
1421         (mono_amd64_throw_exception): Use the new debugger exception
1422         handling code.
1423
1424         * mini-exceptions.c
1425         (mono_handle_exception_internal): Don't call
1426         mono_debugger_unhandled_exception() here.
1427
1428 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * mini.c aot-compiler.c: Update after the changes to 
1431         mono_marshal_get_runtime_invoke ().
1432
1433         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
1434         Virtual generic methods might not have method->slot set, work around
1435         that.
1436
1437         * generics.cs: Add a test.
1438
1439 2009-03-02  Geoff Norton  <gnorton@novell.com>
1440
1441         * mini.c:
1442         * driver.c: Allow signal chaining of SIGFPE as well.
1443
1444 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1445
1446         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
1447         this since it now receives the method not its generic context in the
1448         IMT reg.
1449
1450         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
1451         generic/imt thunks where some entries branch through the vtable, while
1452         other entries branch directly.
1453
1454         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
1455
1456         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
1457         support for interface methods as well.
1458
1459         * mini-trampolines.c: Add support for virtual generic methods in interfaces
1460         using the normal IMT thunks.
1461
1462         generics.cs: Add new tests.
1463         
1464         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
1465         the generic inst to the generic imt thunks. This fixes AOT support, 
1466         improves consistency with the normal IMT thunks, and makes it easier to
1467         add support for interface generic virtual methods later.
1468
1469         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
1470         
1471 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
1472
1473         * driver.c (mono_set_signal_chaining): New public API function to enable
1474         signal chaining on POSIX platforms.
1475
1476         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
1477         (si@lindenlab.com) to implement signal chaining. The original patch was
1478         contributed under the MIT X/11 license:
1479         https://bugzilla.novell.com/show_bug.cgi?id=318894
1480
1481 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
1484         too until it can be made to run on amd64.
1485
1486 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1487
1488         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
1489         to  get_generic_context_from_code () + get_call_info () if possible.
1490
1491 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1492
1493         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
1494         suspend-on-sigsegv functionality.
1495
1496         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
1497         to suspend when a native SIGSEGV is received. This is useful for debugging
1498         crashes which don't happen under gdb, since a live process contains more
1499         information than a core file.
1500
1501         * mini-exceptions.c (mono_print_thread_dump): Use 
1502         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
1503
1504         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
1505
1506         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
1507         
1508         * basic-float.cs: Disable the tests which currently fail on amd64.
1509
1510         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
1511         value to mono_arch_patch_callsite () to fix crashes.
1512         
1513         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
1514
1515 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1516
1517         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
1518         nop code by patching the call address to point to the nullified class init
1519         trampoline, as the former does not seem to be safe on SMP machines.
1520
1521 2009-02-23  Mark Probst  <mark.probst@gmail.com>
1522
1523         * mini-ops.h: Fix the argument types for a few x86 opcodes where
1524         they were wrong.
1525
1526 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1527
1528         * basic-float.cs basic-calls.cs: Fix warnings.
1529
1530 2009-02-22  Mark Probst  <mark.probst@gmail.com>
1531
1532         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
1533         correct frame pointer in the LMF.  Should fix #478394.
1534
1535 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1536
1537         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
1538
1539         * image-writer.c: Make the binary writer less verbose.
1540
1541 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1542
1543         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
1544         are called from runtime invoke wrappers.
1545
1546 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1547
1548         * cpu-ppc.md (store_memindex): Increase the size of this.
1549
1550 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1551
1552         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1553
1554         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
1555
1556         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
1557         OP_LCONV_TO_R_UN.
1558
1559         Last fix for of #467201.
1560
1561
1562 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1563
1564         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1565
1566         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
1567         and long_conv_to_r8_2:
1568
1569         Fixed part of #467201.
1570
1571 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1572
1573         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1574
1575         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
1576         conversion to 32 bits.
1577
1578         * cpu-x86.md: Increase the size of int_conv_to_r4.
1579
1580         * basic-float.cs: Add a test for this.
1581
1582         Fixed part of #467201.
1583
1584 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1585
1586         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1587
1588         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
1589         conversion to 64 bits.
1590
1591         * basic-float.cs: Add a test for this.
1592
1593         Fixed part of #467201.
1594
1595 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1596
1597         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1598
1599         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
1600         This behavior is compatible with MS.
1601
1602         * iltest.il.in: Add a test for this.
1603
1604         Fixed part of #467201.
1605
1606 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1607
1608         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1609
1610         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
1611         change the precision of the value.
1612
1613         * cpu-x86.md: Define len for float_conv_to_r4.
1614
1615         * basic-float.cs: Add a test for this.
1616
1617         Fixed part of #467201.
1618
1619 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1620
1621         * mini.c: Adjust locking order to the new semantics where the loader lock
1622         comes first.
1623
1624 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1625
1626         * aot-runtime.c:
1627         * mini-amd64.c:
1628         * mini-arm.c:
1629         * mini-ia64.c:
1630         * mini-mips.c:
1631         * mini-ppc.c:
1632         * mini-sparc.c:
1633         * mini-trampolines.c:
1634         * mini-x86.c:
1635         * mini.c:
1636         * tramp-alpha.c:
1637         * tramp-amd64.c:
1638         * tramp-arm.c:
1639         * tramp-hppa.c:
1640         * tramp-ia64.c:
1641         * tramp-mips.c:
1642         * tramp-ppc.c:
1643         * tramp-s390.c:
1644         * tramp-s390x.c:
1645         * tramp-sparc.c:
1646         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
1647
1648 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
1651         as it is incorrect.
1652
1653 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1654
1655         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
1656         for cctors if needed.
1657
1658 2009-02-17  Mark Probst  <mark.probst@gmail.com>
1659
1660         * mini-ppc.c: Fix build on Darwin.
1661
1662 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1663
1664         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
1665         version instead of 3 as valgrind doesn't like version 3.
1666
1667         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1668
1669         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
1670         usable for hashing methods.
1671         (emit_extra_methods): Use the new hash to avoid putting every method in the
1672         same hash bucket.
1673
1674         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
1675
1676         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
1677         whenever a method ref could match a method.
1678         
1679         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
1680         test to fail.
1681         
1682         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
1683         methods refs.
1684
1685         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
1686
1687         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
1688         the encoding buffer.
1689
1690         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
1691         mono_method_get_header () on inflated methods as an optimization.
1692
1693 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1694
1695         * ssa.c (fold_ins): Fix another crash if the instruction following the
1696         switch was optimized away.
1697
1698 2009-02-16  Mark Probst  <mark.probst@gmail.com>
1699
1700         Contributed under the terms of the MIT/X11 license by Steven
1701         Munroe <munroesj@us.ibm.com>.
1702
1703         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
1704
1705 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1706
1707         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
1708         around the mono_domain_alloc calls, it is now done by the functions
1709         themselves.
1710
1711         * aot-compiler.c (compile_method): Only add wrappers referenced by
1712         the method if compiling with full AOT.
1713         (mono_compile_assembly): Error out if --aot=full is specified on
1714         a platform where it is not supported.
1715
1716         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
1717         on ARM too.
1718
1719         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
1720         AOT support.
1721
1722         * aot-runtime.c (load_named_code): Handle 
1723         mono_arm_throw_exception_by_token.
1724
1725         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
1726
1727         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
1728         unaligned.
1729
1730         * Makefile.am (fullaotcheck): Exit if a test fails.
1731
1732         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
1733         on ARM.
1734         (mono_compile_assembly): Handle the assembler failing.
1735
1736         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
1737         accepting subsections of .bss.
1738
1739         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
1740         was optimized away.
1741
1742         * aot-compiler.c: Remove some unused includes.
1743         
1744         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
1745         now in MonoImageWriter.
1746
1747         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
1748         code sequence which matches a non-virtual call. Fixes #472654.
1749
1750 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1751
1752         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
1753         xdebug code.
1754         
1755         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
1756         use the image/dwarf writers directly.
1757
1758         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
1759         field.
1760
1761         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
1762         MonoDwarfWriter.
1763
1764         * image-writer.h: Fix some typos.
1765
1766         * dwarfwriter.h dwarfwriter.c: New files.
1767         
1768         * aot-compiler.c: Extract the DWARF info writing functionality into a 
1769         separate module.
1770
1771         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
1772         argument to return unwind info.
1773
1774         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
1775
1776         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
1777         
1778         * aot-runtime.c (decode_method_ref): Add a case for 
1779         MONO_AOT_METHODREF_WRAPPER_NAME.
1780
1781         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
1782         for AOT.
1783
1784         * aot-compiler.c (encode_method_ref): Use the new constants.
1785
1786         * aot-runtime.c (decode_method_ref): Ditto.
1787
1788         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
1789         be compiled, not the icall itself.
1790
1791 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
1792
1793         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
1794         using decode_method_ref ().
1795
1796         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
1797         convert it to an in32. Fixes #475859.
1798
1799         * arrays.cs: Add a test.
1800
1801 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1802
1803         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
1804         OP_LCONV_TO_U2.
1805
1806         * basic-long.cs: Add a test.
1807
1808 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1809
1810         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
1811         remove the frame pointer in leaf methods which don't receive any
1812         arguments, don't throw exceptions and don't do dynamic stack
1813         allocations.
1814
1815 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1816
1817         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
1818         the fail_tramp changes. Hopefully fixes #475132.
1819
1820 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1821
1822         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
1823         instead of mono_metadata_signature_dup_full.
1824
1825 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
1828         for processing jump tables. Fixes #473787.
1829
1830 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1831
1832         * mini-generic-sharing.c: mini_method_get_context() just calls
1833         mono_method_get_context_general() now.
1834
1835         * mini.c, mini.h: Moved get_object_generic_inst(),
1836         construct_object_context_for_method() and
1837         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
1838
1839 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1840
1841         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
1842         basic block fell through to its successor bblock without a branch. Fixes
1843         #474718.
1844
1845         * iltests.il.in: Add a test.
1846         
1847         * aot-compiler.c (encode_method_ref): Encode methods of array types.
1848         (can_encode_patch): We can now handle arrays of generic parameters and
1849         array methods.
1850
1851         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
1852
1853         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
1854         the AOT file to avoid some #ifdefs in aot-runtime.c
1855
1856         * mini.h: Bump AOT file format version.
1857
1858 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1859
1860         * Makefile.am (fullaotcheck): Make this run the tests.
1861
1862         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
1863
1864 2009-02-10  Mark Probst  <mark.probst@gmail.com>
1865
1866         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
1867         individually.  Fixes #473482.
1868
1869 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1870
1871         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
1872
1873 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
1874
1875         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
1876         (mono_compile_assembly): Hush compile warnings about
1877         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
1878         code path.
1879
1880 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1881
1882         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
1883
1884         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
1885
1886         * aot-compiler.c: Fix arm support.
1887
1888         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
1889         img_writer_emit_unset_mode () function.
1890
1891         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
1892         (mono_unwind_get_dwarf_pc_reg): Ditto.
1893
1894         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
1895         Move almost all platform specific code to a set of arch_ functions, 
1896         and document them to ease porting.
1897         
1898         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
1899
1900         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
1901
1902         * aot-compiler.c: Extract the image writing functionality into a separate
1903         module to reduce the size of this file.
1904
1905 2009-02-09  Geoff Norton  <gnorton@novell.com>
1906
1907         * mini-s390.c: Fix the signature of emit_sig_cookie.
1908
1909 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
1910
1911         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
1912
1913         * aot-runtime.c (is_shared_got_patch): Ditto.
1914
1915         * aot-runtime.c (load_named_code): Cope with the fact that 
1916         decode_got_entry () won't decode the patch fully if its corresponding got
1917         entry is already filled.
1918         
1919         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
1920         Initialize *ji.
1921         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1922
1923         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
1924         as the moving pointer instead of 'buf' for consistency with the rest of the
1925         codebase.
1926         (mono_arch_create_monitor_exit_trampoline): Ditto.
1927
1928         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
1929         generic_class_init trampolines.
1930         (add_generic_class): Extract some code from add_generic_instances () into a
1931         separate function so it can be called from other places too.
1932         (compile_method): Call add_generic_class () for the classes of inflated methods
1933         referenced by the method.
1934         (can_encode_patch): Allow references to generic parameters.
1935
1936         * aot-runtime.c: Add support the patches required by the new trampolines.
1937         
1938         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
1939         support.
1940
1941         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
1942         full-aot support.
1943
1944         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
1945         this from get_throw_pending_exception, make the signature full aot compatible.
1946
1947         * Makefile.am (fullaotcheck): New target to run full-aot tests.
1948
1949         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
1950
1951         * exceptions.cs: Add a test.
1952
1953 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1954
1955         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
1956         use the DWARF_DATA_ALIGN constant instead.
1957
1958         * exception-<ARCH>.c: Update after the above change.
1959
1960         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
1961         dwarf unwinder.
1962
1963         * mini-arm.c: Enable the dwarf unwinder.
1964
1965         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
1966         instead of mono_class_setup_vtable ().
1967
1968 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
1971         dwarf unwinder.
1972
1973         * mini-x86.h: Enable the dwarf unwinder.
1974
1975 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
1976
1977         Fix mcs/tests/test-7.cs
1978         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
1979         2009-02-03.
1980
1981 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1982
1983         * mini.c (print_jit_stats): Remove some unused statistics.
1984
1985 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1986
1987         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
1988
1989 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1990
1991         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
1992         the method we get from mono_object_get_virtual_method() because
1993         that function does it properly, now.
1994
1995 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1996
1997         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
1998         opcodes. Fixes #472775.
1999
2000 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2001
2002         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
2003         fact that mono_find_jit_info() sometimes returns the context
2004         corresponding to the jit info in new_ctx.  Fixes #472600.
2005
2006 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2007
2008         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
2009         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
2010         klass->enum_basetype directly.
2011
2012         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
2013         enum subtypes.
2014
2015         * unwind.c: Avoid 0 sized arrays.
2016
2017 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2018
2019         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
2020         size on systems with 64k pages. Fixes #471389.
2021
2022 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2023
2024         Contributed under the terms of the MIT/X11 license by Steven
2025         Munroe <munroesj@us.ibm.com>.
2026
2027         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
2028         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
2029         necessary.
2030
2031 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2032
2033         Contributed under the terms of the MIT/X11 license by Steven
2034         Munroe <munroesj@us.ibm.com>.
2035
2036         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
2037         comparison fix.
2038
2039         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
2040         The trampoline can be longer on PPC64.
2041
2042 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2043
2044         Contributed under the terms of the MIT/X11 license by Steven
2045         Munroe <munroesj@us.ibm.com>.
2046
2047         * mini-ppc.c: Compiler warning fixes and trivial code
2048         simplifications.
2049
2050 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
2053         ins->dreg which could be a hardware register, not a vreg.
2054
2055         * aot-compiler.c (emit_method_dwarf_info): Ditto.
2056         
2057         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
2058         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
2059
2060         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
2061         
2062         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
2063         ->dreg, that is not the vreg we are looking for.
2064
2065         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
2066
2067         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
2068         LIVERANGE_END.
2069
2070         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
2071         strange crashes.
2072
2073 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2074
2075         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
2076
2077         * aot-compiler.c (emit_line_number_info): Fix line number emission when
2078         the line diff is 0.
2079
2080         * aot-compiler.c: Add xdebug support on x86.
2081
2082         * unwind.c: Add x86 support.
2083         
2084         * aot-compiler.c (emit_exception_debug_info): Control the emission of
2085         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
2086
2087         * mini.c (mini_method_compile): Ditto.
2088         
2089         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
2090         the variable index.
2091
2092         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
2093         which mimic .push_section/.pop_section in GAS.
2094         
2095         * aot-compiler.c: Emit precise live range information for variables.
2096
2097         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
2098
2099         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
2100         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
2101         them.
2102
2103         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
2104         the live ranges of variables.
2105
2106         * mini.h (struct MonoMethodVar): Add two fields containing the live range
2107         of the variable in terms of native offsets.
2108
2109 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
2110
2111         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
2112         
2113 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2114
2115         Contributed under the terms of the MIT/X11 license by Steven
2116         Munroe <munroesj@us.ibm.com>.
2117
2118         * exceptions-ppc.c (restore_regs_from_context): Correct operand
2119         order (offset then base reg) for ppc_load_multiple_regs.
2120         (emit_save_saved_regs) Correct operand order for
2121         ppc_store_multiple_regs.
2122         (mono_arch_get_call_filter): Correct operand order for
2123         ppc_load_multiple_regs.
2124
2125         * mini-ppc.c (emit_memcpy): Fix operand order for
2126         ppc_load_reg_update and ppc_store_reg_update.
2127         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
2128         (mono_arch_emit_epilog): Correct operand order for
2129         ppc_load_multiple_regs.
2130
2131         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
2132         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
2133
2134 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2135
2136         * cpu-ppc64.md: Fixed storer4_memindex length.
2137
2138 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2139
2140         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
2141         line number info.
2142         
2143         * aot-compiler.c (emit_line_number_info): Optimize this.
2144
2145 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2146
2147         * aot-compiler.c: Disassemble tokens in the IL disassembly.
2148         
2149         * aot-compiler.c: Add debug info for methods without debug info by
2150         emitting an IL file and having the line number info referencing that file.
2151
2152         * aot-compiler.c: Optimize the size of the generated line number info.
2153
2154         * aot-compiler.c: Emit line number info in xdebug mode.
2155
2156         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
2157         million arguments.
2158
2159 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2160
2161         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
2162
2163         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
2164         is used.
2165
2166 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2167
2168         * basic-calls.cs: Test for the weird crash found on arm.
2169         
2170 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2171
2172         * cpu-arm.md: Increase the size of storer8_membase_reg and
2173         loadr8_membase_reg to 24 bytes to accomodate the extra add.
2174
2175         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
2176         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
2177         reg to LR otherwise we'll be loading/storing from just the offset.
2178
2179 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2180
2181         Question: if we are storing gint32's inside the "*native_offset",
2182         should we change the signature to "gint32 *native_offset" to
2183         ensure that we do not have type definition problems?
2184         
2185         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
2186         an int * as this is what the other function expects, causes
2187         problems with Freescale's compiler that defined int32_t to be a
2188         long and makes int incompatible 
2189
2190 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2191
2192         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
2193         filename conflict with bjam.
2194
2195 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2196
2197         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
2198         as it might use decomposed ops.
2199
2200 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2201
2202         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
2203
2204         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
2205         is defined.
2206
2207         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
2208
2209         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
2210         offsets.
2211
2212         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
2213         way registers are stored in MonoContext on arm.
2214
2215         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
2216         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
2217
2218         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
2219
2220         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
2221
2222         * mini.c (mini_init): Register mono_isfinite.
2223
2224         * jit-icalls.c (mono_isfinite): New jit icall.
2225
2226         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
2227         
2228         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
2229         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
2230         the parent frame.
2231
2232 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2233
2234         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
2235         separate frame and stack pointers, so we must use FP to find the register
2236         spill area.
2237         The FP reg is retrieved from the MonoContext::regs array.
2238
2239 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2240
2241         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
2242         as FPA requires it.
2243
2244 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2245
2246         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
2247         return R4 and R8 when not running under softfloat.
2248
2249         Fixes basic-calls.exe
2250
2251 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2252
2253         * mini-arm.c: Implement some overflow opcodes.
2254
2255 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2256
2257         * ssa.c: handle another alloca.h
2258
2259         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
2260         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
2261         MONO_ARCH_USE_SIGACTION. 
2262
2263         * aot-runtime.c, mini-exceptions.c: Replace platform define with
2264         capability defines.
2265
2266         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
2267
2268         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
2269         PPC targets as sigaction does not exist on all platforms, define
2270         this on a per-platform basis.
2271
2272         Instead of erroring out if the platform is not defined, include
2273         mini-ppc-os.h, and expect that the OS specific setting provides
2274         the required information.   
2275
2276 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * aot-compiler.c: Fix --enable-minimal=aot.
2279
2280 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
2283         previous change.
2284
2285 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * exceptions-arm.c: Fix warnings.
2288
2289         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
2290         ARM.
2291
2292         * mini-x86.c: Fix --enable-minimal=jit build.
2293
2294         * mini.c: Really fix --enable-minimal=jit build.
2295         
2296         * mini.c (construct_object_context_for_method): Move this outside
2297         the DISABLE_JIT block to fix the --enable-minimal=jit build.
2298
2299         "Backported" of r124984 from 2.0 branch.
2300         
2301         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
2302
2303         "Backport" of r124977 + r124978 from 2.0 branch.
2304         
2305         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
2306         to avoid calling mono_exception_from_token () from the throw trampoline.
2307         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
2308         for throwing corlib exceptions, this fixes full-aot support for corlib
2309         exceptions.
2310
2311         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
2312
2313 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2314
2315         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
2316         part of the changes to split the code in mini into operating
2317         system specific files.
2318
2319         This patch was done by copying mini.c to the respective files to
2320         preserve SVN history.
2321
2322 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
2325
2326 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2327
2328         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
2329         remoting-invoke-with-check wrappers of shared methods.
2330
2331         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
2332
2333 2009-01-27  Mark Probst  <mark.probst@gmail.com>
2334
2335         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
2336         optimization if the top of stack is the last instruction in the
2337         bblock.  Otherwise it might have been used after its definition.
2338         Fixes #469742.
2339
2340 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2341
2342         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
2343         method as well when get_vcall_slot () fails to match a code sequence.
2344
2345         * mini-arm.c: Fix the android build, which doesn't have
2346         __aeabi_read_tp.
2347
2348 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2349
2350         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
2351         the s390x build.
2352
2353 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
2354
2355         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
2356
2357 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2358
2359         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
2360         and put its id into jinfo->used_regs. This is only used on amd64,
2361         which is currently the only platform generating unwind info.
2362
2363         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
2364         the dwarf unwinder. This is required to correctly handle async exceptions
2365         like thread abort and stack overflows, which can happen while a method
2366         is in the middle of its prolog or epilog.
2367         
2368         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
2369         the unwind info belonging to an AOTed method.
2370
2371         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
2372         into cfg->unwind_ops.
2373         
2374         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
2375
2376         * mini.c (mini_init): Call mono_unwind_init ().
2377         (mini_cleanup): Call mono_unwind_cleanup ().
2378
2379         * unwind.c: Add functions for managing a set of unwind info entries, allowing
2380         unwind info to be shared between methods.
2381
2382         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
2383         saved in the LMF.
2384
2385         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
2386         get_throw_pending_exception () to avoid initialization races.
2387
2388         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
2389         mono_arch_exceptions_init () function.
2390
2391         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
2392
2393 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
2394
2395         * mini.c (mono_get_domain_intrinsic): New helper function.
2396         (mono_get_thread_intrinsic): Ditto.
2397
2398         * mini-arm.c mini-ia64.c: Use the new helper functions.
2399         
2400         * method-to-ir.c (mono_method_to_ir): Fix the comment for
2401         the last constrained_call change, since it is needed in the non-AOT
2402         case as well.
2403
2404         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
2405         
2406         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
2407         mono_get_lmf_addr () on arm eabi linux.
2408
2409 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
2410
2411         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
2412         code sequence which matches a non-virtual call.
2413
2414 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2415
2416         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
2417         stack pointer (r1).
2418
2419 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
2422         runtime-invoke wrappers, since they are also shared based on signature.
2423
2424 2009-01-22  Mark Probst  <mark.probst@gmail.com>
2425
2426         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
2427         info from the (correct) context.
2428
2429 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
2430
2431         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
2432         
2433         * unwind.c (mono_unwind_frame): New function to unwind through a frame
2434         using dwarf unwinding info. Not yet used.
2435
2436         * mini.c (mini_init): When using xdebug, disable freeing of domains.
2437
2438 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2439
2440         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
2441         descriptors.
2442
2443         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
2444         special case and handle mono_arch_delegate_invoke_impl() returning
2445         function descriptors.
2446
2447         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
2448         trampolines return function descriptors, too.
2449
2450 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * method-to-ir.c (handle_alloc): Avoid generic instances in the
2453         out_of_line optimization.
2454
2455 2009-01-21  Martin Baulig  <martin@ximian.com>
2456
2457         * mini.h
2458         (MonoCompile): Added `disable_deadce_vars' to disable removing
2459         unused variables.
2460
2461         * mini.c
2462         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
2463         inside the debugger.
2464
2465         * liveness.c (mono_analyze_liveness): Don't remove any unused
2466         variables if `cfg->disable_deadce_vars' is set.
2467
2468 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2469
2470         * method-to-ir.c: Only apply exception constructor optimization if
2471         the the method actually belongs to an exception class.  Fixes
2472         #467456.
2473
2474 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2475
2476         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
2477         change inside a #ifdef __mono_ppc64__.
2478
2479         * aot-compiler.c (compile_method): Remove the previous limitation.
2480
2481         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
2482         on type variables in AOTed code.
2483         
2484         * aot-compiler.c (compile_method): Skip generic methods having type 
2485         constraints on their generic parameters.
2486
2487         * aot-compiler.c (compile_method): Check for methods which cannot be
2488         encoded inside RGCTX_FETCH patches as well.
2489
2490         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
2491         build.
2492
2493 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2494
2495         * method-to-ir.c: Force the vtable variable in shared generic code
2496         for the case that they might show up on a stack trace where they
2497         are needed.
2498
2499         * mini-exceptions.c: Save and use generic sharing info as well as
2500         IP in stack traces to resolve shared generic instantiations.
2501
2502 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
2503
2504         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
2505         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
2506
2507 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2508
2509         * method-to-ir.c: Do generic sharing for array constructors.
2510
2511 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
2512
2513         * mini-exceptions.c (mono_print_thread_dump): Add information
2514         about the thread state using wapi_current_thread_desc.
2515
2516 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2517
2518         * basic-simd.cs: Tests for the new constructors. 
2519
2520 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2521
2522         * mini-ops.h: Added OP_EXPAND_*
2523
2524         * cpu-x86.md: Same.
2525
2526         * mini-x86.c (mono_arch_output_basic_block): Same.
2527         
2528         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
2529
2530 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * iltests.il.in: Add a test for #467385.
2533
2534 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2535
2536         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
2537         thread been cleaned up is not the same currently in execution.
2538
2539         Fixes appdomain-unload crashes on windows, osx and linux variants
2540         without the __thread keyword.
2541
2542 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
2545         (koush@koushikdutta.com). Implement this for android.
2546
2547         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
2548         begins with a digit.
2549
2550         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
2551         mono_marshal_get_write_barrier ().
2552
2553 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2554
2555         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
2556         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
2557         that pass them on a register pair.
2558
2559         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
2560         test was crashing due to that.
2561
2562 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
2563
2564         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
2565         trampoline code. Include ucontext.h only if available.
2566
2567 2009-01-15  Mark Probst  <mark.probst@gmail.com>
2568
2569         * mini.c: mono_domain_lookup_shared_generic() takes an open method
2570         and doesn't check whether it's sharable, like it was before
2571         removing the shared generics hash.  This brings IronPython
2572         performance back to what it was before that change.
2573
2574 2009-01-14  Mark Probst  <mark.probst@gmail.com>
2575
2576         * method-to-ir.c: Handle delegate invocation optimization earlier,
2577         otherwise it would be handled (much more slowly) by the
2578         final/sealed optimization.
2579
2580 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2581
2582         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
2583         domain is not set. Fixes #465864.
2584
2585 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2586
2587         * method-to-ir.c: Don't stop sharing of generic methods with catch
2588         clauses - we already handle those.
2589
2590 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2591
2592         * mini.c, mini.h: lookup_generic_method() is now
2593         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
2594         making the shared_generics_hash obsolete.
2595
2596 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2597
2598         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
2599         use the red zone.  Make room on the stack first and then use it,
2600         not the other way around.
2601
2602 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2603
2604         * mini.c (mini_init): Call mono_xdebug_init ().
2605
2606         * aot-compiler.c (mono_xdebug_init): Make this non-static.
2607
2608 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * TestDriver.cs: Add an --iter argument to run tests multiple times.
2611
2612         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
2613         trampolines.
2614
2615         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
2616         debug+unwind info for trampolines.
2617
2618         * mini.c (mono_create_unwind_op): New helper function.
2619
2620         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
2621
2622 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2623
2624         * aot-compiler.c: Fix the build.
2625
2626 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * Makefile.am: Update dtrace-prelink.sh location.
2629
2630 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
2631
2632         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
2633         optimization. Fixes #464520.
2634
2635 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
2636
2637         * mini-amd64.c : Adding code to save/restore non-volatile registers
2638            on Winx64.
2639
2640         * exceptions-amd64.c : Adding code to save/restore non-volatile 
2641           registers on Winx64.
2642
2643         Contributed under MIT/X11 license.
2644
2645 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
2646
2647         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
2648         __GNUC_MINOR__ which can break when the major version changes.
2649
2650 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2651
2652         * basic-simd.cs: Add tests for usage of the sizeof opcode.
2653
2654 2009-01-07  Geoff Norton  <gnorton@novell.com>
2655
2656         * helpers.c:  Allow mono -v -v -v to work on darwin.
2657
2658 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
2659
2660         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
2661           pattern. 
2662
2663         Contributed under MIT/X11 license.
2664
2665 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
2666
2667         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
2668         instead of directly accessing type->data.klass. Fixes #462016.
2669         (mono_allocate_stack_slots_full): Ditto.
2670
2671         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
2672         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
2673
2674         * aot-compiler.c (emit_plt): Fix ARM build.
2675
2676 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
2679         
2680         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
2681         change.
2682
2683         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
2684         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
2685         #463357.
2686
2687         * iltests.il.in: Add a regression test.
2688
2689 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2690
2691         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
2692
2693 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2694
2695         * basic-simd.cs: Add a regression test for #462457.
2696
2697 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2698
2699         * mini-ops.h: Add a definition of XPHI.
2700
2701         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
2702
2703         * ssa.c (op_phi_to_move): Handle XPHI.
2704
2705         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
2706
2707         Fixes #462457
2708
2709 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2710
2711         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
2712
2713 2008-12-31  Geoff Norton  <gnorton@novell.com>
2714
2715         * mini-ppc.c: The prolog size allocated can be too small for darwin
2716         ppc32 under certain circumstances.  Also fix a small logic bug.
2717
2718 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
2719
2720         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
2721         while loading AOT methods.
2722
2723         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
2724         since only the former is nulled out after a successful cast. This prevents
2725         crashes with rethrown exceptions when using --debug=casts.
2726
2727 2008-12-24  Mark Probst  <mark.probst@gmail.com>
2728
2729         * mini.h: New macro for checking whether a method is final,
2730         i.e. whether the method or its class is marked final.
2731
2732         * method-to-ir.c: Use the new macro for all final-checks
2733         consistently.  Fixes the crash in the System.ServiceModel tests.
2734
2735 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2736
2737         * mini-exceptions.c (get_exception_catch_class): Corrected another
2738         overly strict assertion.
2739
2740 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2741
2742         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
2743         Clobbering it is not allowed because the caller might use it as
2744         the vtable register in the interface call.
2745
2746 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2747
2748         * mini-exceptions.c (get_exception_catch_class): Corrected an
2749         overly strict assertion.
2750
2751 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
2752         
2753         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
2754
2755         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
2756
2757         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
2758
2759         * cpu-mips.md: correct lengths for certain long_ opcodes.
2760
2761         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
2762
2763         * 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().
2764         
2765 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2766
2767         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
2768         
2769 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2770         
2771         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
2772         
2773 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2774
2775         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
2776         next basic block.
2777         
2778 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
2779
2780         * 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
2781
2782         * 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)
2783         
2784 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
2785         
2786         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
2787         
2788 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
2789
2790         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
2791         gshared code. Fixes #458947.
2792
2793         * generics.cs: Add a test.
2794
2795 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2796         
2797         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2798         
2799         * mini-mips.c: first pass n32 code generation.
2800
2801         * mini-mips.h: datatypes and defines for n32 support.
2802
2803         * exceptions-mips.c: first pass n32 code generation.
2804         
2805         * tramp-mips.c: first pass n32 code generation.
2806         
2807         * cpu-mips.md: add long_ opcodes.
2808         
2809 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2810
2811         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2812
2813         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2814         
2815         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2816         
2817         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2818
2819         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2820
2821         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2822
2823         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2824
2825         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2826
2827         * helpers.c: for mips/n32, don't pass -mips32 to objdump
2828
2829 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
2830
2831         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
2832
2833 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
2834
2835         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
2836
2837 2008-12-12  Mark Probst  <mark.probst@gmail.com>
2838
2839         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
2840         descriptors for helper functions directly in front of the code.
2841
2842 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2843
2844         * method-to-ir.c: Removed an unnecessary assertion.
2845
2846 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * method-to-ir.c: Merge SGEN changes from the old JIT.
2849
2850 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2851
2852         * driver.c (compile_all_methods_thread_main): Handle failure of
2853         mono_get_method ().
2854
2855 2008-12-10  Mark Probst  <mark.probst@gmail.com>
2856
2857         * mini-ppc.c: Merged with mini-ppc64.c.
2858
2859         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
2860
2861         * Makefile.am: Use the same sources for PPC and PPC64.
2862
2863         * mini-ppc64.c: Removed.
2864
2865 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2866
2867         * branch-opts.c (remove_block_if_useless): Extract fall through detection
2868         code to mono_bb_is_fall_through.
2869         
2870         * branch-opts.c (mono_remove_critical_edges): Same.
2871
2872 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2873
2874         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
2875         expect that an OP_BR_REG will be there.
2876
2877 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2878
2879         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
2880         for the many branch ops. The original check miss OP_BR_REG.
2881
2882         Fixes #457574.
2883         
2884 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2885
2886         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
2887
2888 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2889
2890         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
2891         while holding the aot lock.
2892
2893 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2894
2895         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
2896         
2897 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2898
2899         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
2900           to release all runtime callable wrappers held by the runtime.
2901
2902         Contributed under MIT/X11 license.
2903
2904 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2905
2906         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
2907           for Winx64.
2908
2909         Contributed under MIT/X11 license.
2910
2911 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2912
2913         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
2914         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
2915
2916 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2917
2918         * cpu-mips.md: fix ckfinite length
2919
2920         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
2921         (mono_arch_lowering_pass): cleanup, rearrange for clarity
2922         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
2923         
2924 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
2925
2926         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
2927         
2928 2008-12-08  Geoff Norton  <gnorton@novell.com>
2929
2930         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
2931         size by 8 bytes as well.
2932
2933 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2934
2935         * basic-simd.cs: Fix method names for Vector16b.
2936         
2937 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2938
2939         * basic-simd.cs: Fix method names for Vector16sb.
2940
2941 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2942
2943         * basic-simd.cs: Fix method names for Vector8us.
2944         
2945 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2946
2947         * basic-simd.cs: Fix method names for Vector8s.
2948         
2949 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2950
2951         * basic-simd.cs: Fix method names for Vector4ui.
2952
2953 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2954
2955         * basic-simd.cs: Fix method names for Vector2l.
2956
2957 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2958
2959         * basic-simd.cs: Fix method names for Vector2d.
2960
2961 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2962
2963         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
2964         that are extension methods.
2965
2966 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2967
2968         * basic-simd.cs: Fix method names for Vector4f.
2969
2970 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
2971
2972         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
2973         as such. Fixes #456669.
2974
2975 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2976
2977         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
2978         
2979 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2980
2981         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
2982         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
2983         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
2984         (mips_adjust_stackframe): handle FP spills
2985                 
2986         * mini-ops.h: add mips_mtc1_s2
2987         
2988         * cpu-mips.md: add mips_mtc1_s2
2989         
2990 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
2991
2992         * unwind.c: New file, move the unwind info encoding functions here from
2993         aot-compiler.c, so they could be used at runtime too.
2994
2995 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2996
2997         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
2998         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
2999         
3000 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3001
3002         * mini-mips.c: cleanup warnings
3003         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
3004         (mips_adjust_stackframe): handle case of taking the address of stack locals
3005         
3006 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3007
3008         * aot-compiler.c: Implement a few functions missing from the asm writer.
3009         (emit_method_code): Only write symbols for methods when using the bin
3010         writer, since the assembler can't deal with the characters in our method
3011         names.
3012
3013         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
3014
3015         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
3016         call.
3017
3018         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
3019         a bit to also restore %rax.
3020
3021 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3022
3023         * mini-ppc.c: Some simple merges from mini-ppc64.c.
3024
3025 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3026
3027         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
3028         arguments.
3029
3030 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3031
3032         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
3033
3034         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
3035         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
3036
3037         * exceptions-ppc64.c: Removed.
3038
3039         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
3040
3041 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3042
3043         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
3044         tramp-ppc64.c.
3045
3046         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
3047
3048         * tramp-ppc64.c: Removed.
3049
3050 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3051
3052         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
3053         the TYPESPEC table.
3054
3055 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3056
3057         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
3058
3059         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
3060         mini-ppc.h instead of mini-ppc64.h.
3061
3062         * mini-ppc64.h: Removed.
3063
3064 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3065
3066         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
3067         
3068         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
3069         
3070 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3071
3072         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
3073         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
3074         code easier.
3075
3076 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3077
3078         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
3079
3080 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3081
3082         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
3083
3084 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3085
3086         * basic-simd.cs: Tests for operator == and != on Vector4f.
3087
3088 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3089
3090         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
3091
3092         * simd-intrinsics.c: Kill useless enum.
3093
3094 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3095
3096         * cpu-mips.md: add long_conv_to_ovf_i4_2
3097         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
3098
3099 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3100
3101         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
3102         
3103         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
3104
3105 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3106
3107         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
3108         
3109 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3110
3111         * basic-simd.cs: Add tests for new methods.
3112
3113 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3114
3115         * simd-intrinsics.c: Add support for operator == and !=
3116         on Vector4(u)i.
3117
3118         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
3119
3120 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3121
3122         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
3123
3124 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
3127
3128         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
3129         MONO_PATCH_INFO_ICALL_ADDR.
3130
3131         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
3132
3133         * aot-compiler.c: Resurrect full-aot support.
3134
3135 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3136
3137         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
3138         
3139 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3140
3141         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
3142         
3143 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3144
3145         * basic-simd.cs: Fix tests to work under ppc.
3146         Remove tests for methods that will be removed.
3147
3148 2008-12-03  Mark Probst  <mark.probst@gmail.com>
3149
3150         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
3151         generic type (via a typedef or typeref) correctly.
3152
3153 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3154
3155         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
3156         diagnose an assertion failure.
3157
3158 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3159
3160         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
3161         Fix trampoline size.
3162
3163         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
3164         conversion opcodes are implemented natively instead via emulation.
3165
3166 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3167
3168         * cpu-mips.md: remove mips_xori
3169
3170         * mini-ops.h:  remove mips_xori
3171
3172         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
3173
3174         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
3175         
3176         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
3177         
3178 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3179
3180         * cpu-mips.md: fix instruction lengths.
3181
3182         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
3183
3184         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
3185
3186         * mini-ops.h: fix slti / sltiu op profiles.
3187         
3188 2008-12-02  Martin Baulig  <martin@ximian.com>
3189
3190         * method-to-ir.c (mono_method_to_ir): Disable debugging
3191         information for the init locals block to make the debugger stop
3192         after all locals have been initalized.
3193
3194 2008-12-02  Martin Baulig  <martin@ximian.com>
3195
3196         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
3197         running inside the debugger.
3198
3199 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
3200
3201         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
3202         is enabled.
3203
3204         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
3205         alu->alu imm optimization which only shows if deadce is disabled.
3206
3207         * aot-compiler.c: Rename the function names for the binary and asm writers
3208         so they can coexist in the same process. Rework the xdebug code to use the
3209         asm writer. This avoids the need to call into the runtime to dump the
3210         debugging info. Add more debugging info for types.
3211
3212         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
3213
3214         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
3215         cpu description tables, they can't occur in cpu-<ARCH>.md.
3216
3217         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
3218         the stack in CEE_LDFLDA. Fixes #450542.
3219
3220         * generics.cs: Add a new test.
3221
3222 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3223
3224         * mini-ops.h: updated MIPS opcodes
3225         * mini-mips.c: decompose long opts
3226         * mini-mips.h: decompose long opts
3227         
3228 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
3229
3230         * cpu-mips.md: fix length on int_rem_un
3231         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
3232         
3233 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
3234
3235         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
3236
3237         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
3238
3239 2008-11-29  Martin Baulig  <martin@ximian.com>
3240
3241         * mini-exceptions.c (mono_handle_native_sigsegv): Check
3242         mono_debug_using_mono_debugger() in addition to the
3243         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
3244
3245 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3246
3247         * mini-ops.h: updated more MIPS opcodes
3248         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
3249         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
3250         
3251 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3252
3253         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
3254
3255 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3256
3257         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
3258         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
3259         * mini-ops.h: correct selected mips opcode entries
3260         
3261 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3262
3263         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
3264         make them work.
3265
3266 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3267
3268         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
3269
3270 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3271
3272         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
3273         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
3274         * mini-mips.h: disable IMT
3275         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
3276         
3277 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3278
3279         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
3280
3281 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3282
3283         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
3284
3285 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
3286
3287         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
3288         consistency.
3289
3290 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3291
3292         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3293         for Set/GetVector aligned versions.
3294
3295 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3296
3297         * basic-simd.cs: Add tests for Get/SetVector.
3298
3299 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3300
3301         * mini.c: Removed g_slist_append_mempool().  Now in
3302         metadata/mempool.c.
3303
3304 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3305
3306         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
3307         size properly and make the bounds check optional.
3308
3309         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3310         for SetVector and IsAligned.
3311
3312 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
3313
3314         * mini.c: Remove unused mono_normalize_opcodes () function.
3315
3316 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3317
3318         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
3319         using the new atomic add ops now.
3320
3321         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
3322         add.
3323
3324 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3325
3326         * mini-ppc64.c: Several fixes.
3327
3328 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3329
3330         * cpu-mips.md: added jump_table
3331         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
3332
3333 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3334
3335         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
3336
3337 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3338
3339         * mini-ops.h: corrected a handful of MIPS opcodes.
3340
3341 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3342
3343         * aot-compiler.c: MIPS to use ELF writer
3344
3345 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3346
3347         * mini-codegen.c: remove MIPS specific assert.
3348
3349 2008-11-25  Mark Probst  <mark.probst@gmail.com>
3350
3351         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
3352         fixes.  PPC64 now passes most of the runtime regressions.
3353
3354 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
3355
3356         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
3357         volatile intervals a bit.
3358
3359 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3360
3361         * basic-long.cs: New test case.
3362
3363 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3364
3365         * mini.c (mini_method_compile): Disable globalra for large methods for 
3366         now.
3367
3368         * regalloc2.c (order_moves): Add fp support.
3369
3370         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
3371         source bblock ends with an OP_BR_REG.
3372
3373         * ratests.cs: Add a new test.
3374
3375 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3376
3377         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
3378         sharing.  PPC64 now passes generics.exe.
3379
3380 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3381
3382         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
3383
3384 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3385
3386         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
3387         memory when mono_jit_info_table_find () can't find the method in the
3388         LMF case.
3389
3390         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
3391         AOTed code too.
3392         
3393         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
3394         writer too.
3395
3396 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3397
3398         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
3399         Several fixes.  PPC64 now runs exceptions.exe and
3400         devirtualization.exe.
3401
3402 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3403
3404         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
3405         arrays.exe and basic-math.exe.
3406
3407 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3408
3409         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
3410         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
3411
3412 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3413
3414         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
3415
3416 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3417
3418         * method-to-ir.c: Move bounds checking macros to ir-emit.h
3419
3420         * ir-emit.h: Move macros from method-to-ir.c to here.
3421
3422 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3423
3424         * mini-ops.h: Correct the long simd ops to use LREG.
3425
3426 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
3427
3428         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
3429         
3430         * mini-ops.h: Correct the dreg type of a few long opcodes.
3431
3432         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
3433         Add netbsd support.
3434
3435 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
3436
3437         * mini-ppc.c: remove negative stack references in epilog
3438         for platforms that don't support the red zone.
3439
3440 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3441
3442         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
3443         point regs.  Now PPC64 passes basic-calls.exe.
3444
3445 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3446
3447         * basic-simd.cs: Add tests for accessors of Vector2l.
3448
3449 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3450
3451         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
3452
3453         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
3454         
3455         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
3456
3457 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3458
3459         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
3460         PPC64 passes basic-long.exe.
3461
3462 2008-11-20  Mark Probst  <mark.probst@gmail.com>
3463
3464         * decompose.c: Decompose carry and overflow add on PPC64 like on
3465         other 64 bit archs.  Don't decompose sub at all on PPC64.
3466
3467         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
3468         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
3469         basic-long.exe.
3470
3471 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3472
3473         * basic-simd.cs: Add tests for accessors of Vector2d.
3474
3475 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3476
3477         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
3478
3479         * cpu-x86.md: Same.
3480
3481         * mini-x86.c (mono_arch_output_basic_block): Same.
3482         
3483         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
3484
3485 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3486
3487         * basic-simd.cs: Add tests for accessors of Vector4f.
3488
3489 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3490
3491         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
3492
3493         * cpu-x86.md: Same.
3494
3495         * mini-x86.c (mono_arch_output_basic_block): Same.
3496         
3497         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
3498
3499 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3500
3501         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
3502
3503 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3504
3505         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
3506
3507         * cpu-x86.md: Same.
3508
3509         * mini-x86.c (mono_arch_output_basic_block): Same.
3510         
3511         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
3512
3513 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3514
3515         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
3516
3517 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3518
3519         * simd-intrinsics.c: Enable setters for Vector16sb.
3520
3521 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3522
3523         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
3524
3525         * cpu-x86.md: Same.
3526
3527         * mini-x86.c (mono_arch_output_basic_block): Same.
3528         
3529         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
3530
3531 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
3532
3533         * simd-intrinsics.c: Implement setter for Vector8us.
3534
3535 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3536
3537         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
3538         for dead variables.
3539
3540 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3541
3542         * mini-ppc.c: remove references to the red zone in the prolog
3543         (for systems that don't support it).
3544
3545 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3546
3547         * cpu-ppc64.md: Fixed a few instruction lengths.
3548
3549         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
3550         now.
3551
3552 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3553
3554         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
3555         basic.exe now.
3556
3557 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3558
3559         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
3560
3561 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
3562
3563         * mini-ops.h: Added OP_INSERT_I2.
3564
3565         * cpu-x86.md: Same.
3566
3567         * mini-x86.c (mono_arch_output_basic_block): Same.
3568         
3569         * simd-intrinsics.c: Implement setter for Vector8s.
3570
3571         * simd-methods.h: Add the names of get setters of Vector8s.
3572
3573 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3574
3575         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
3576         
3577         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
3578         parameters.
3579
3580         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3581
3582 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3583
3584         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
3585         for PPC64.  An empty program runs now.
3586
3587 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3588
3589         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3590
3591         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
3592         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
3593         info for JITted code is emitted into a shared library, loadable into gdb.
3594
3595 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3596
3597         * Makefile.am: Changes to build PPC64.
3598
3599         * mini-arch.h: Include mini-ppc64.h on PPC64.
3600
3601 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3602
3603         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
3604         in PPC code up to r119147.
3605
3606 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3607
3608         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3609         cpu-ppc64.md: Changes for PPC64.
3610
3611         Based on code submitted by andreas.faerber@web.de at
3612         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
3613         X11/MIT license.
3614
3615 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3616
3617         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3618         cpu-ppc64.md: Copied from the corresponding PPC files from
3619         r118846.
3620
3621 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
3622
3623         * mini-ops.h: Added OP_ROUND.
3624
3625         * cpu-x86.md: Added round.
3626
3627         * mini-x86.c: Added support for intrinsicing Math.Round (double).
3628
3629         * basic-math.cs: Added test_0_round to test rounding.
3630
3631         Contributed under MIT/X11 license.
3632
3633 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3634
3635         * aot-compiler.c : Fix the Winx64 build.
3636
3637         Contributed under MIT/X11 license.
3638
3639 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3640
3641         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
3642         in OP_EXTRACT_R8 to avoid possible stack corruption.
3643
3644 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3645
3646         * mini-ops.h: Added OP_EXTRACT_R8/I8.
3647
3648         * cpu-x86.md: Added extract_r8.
3649
3650         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
3651         
3652         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
3653         a couple of OP_EXTRACT_I4.
3654
3655         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
3656
3657         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
3658
3659 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3660
3661         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
3662         and not 4.1. 
3663
3664 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3665
3666         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
3667         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
3668
3669         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
3670         are not needed any more.
3671
3672         * mini.h: Remove the unused INS_LIST macros.
3673
3674         * mini.c (mini_method_compile): Remove a disable globalra case which is no
3675         longer needed.
3676
3677         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
3678         ir-emit.h.
3679
3680         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
3681         mono_alloc_ireg () instead.
3682
3683         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
3684         macros.
3685
3686         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
3687         on amd64.
3688
3689         * aot-runtime.c (load_aot_module): Disable AOT when running under
3690         CAS.
3691
3692         * mini-amd64.h: Change the monitor fastpath defines to check for
3693         !PLATFORM_WIN32 so they work on *bsd too.
3694
3695         * mini.h mini.c mini-hhpa.c: Remove more unused code.
3696
3697         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
3698
3699         * mini.h (MonoCompile): Remove new_ir flag.
3700
3701         * regalloc.h regalloc.c: Remove unused code.
3702
3703         * cpu-*.md: Remove more unused opcodes.
3704
3705         * simple-cee-ops.h simple-mini-ops.h: Removed.
3706
3707         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
3708         
3709 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3710
3711         * aliasing.h: Removed.
3712
3713         * *.c: Remove references to aliasing.h and inssel.h.
3714
3715         * mini.c: Remove additional unused functions.
3716
3717         * mini-ops.h cpu-*.md: Remove unused opcodes.
3718
3719 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3720
3721         Remove the old JIT code.
3722
3723         * inssel*.brg: Removed.
3724
3725         * ssa.c abcremoval.c aliasing.c: Removed.
3726
3727         * ssa2.c: Renamed to ssa.c.
3728
3729         * abcremoval2.c: Renamed to abcremoval.c.
3730
3731         * *.c: Removed all !cfg->new_ir code.
3732
3733         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
3734         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
3735
3736         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
3737         
3738 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3739
3740         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
3741         to simplify the code and cut back on the number of global symbols in the AOT
3742         file.
3743         
3744         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
3745
3746 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
3747
3748         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
3749         with the got/got_info tables.
3750
3751         * mini.h: Bump AOT file format version.
3752         
3753         * unwind.h: New file, contains definitions for stack unwinding.
3754
3755         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
3756         to cfg->unwind_ops.
3757         
3758         * aot-compiler.c: Generalize the emitting of unwind information to use the
3759         information in cfg->unwind_ops.
3760
3761         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
3762
3763         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
3764         AOT method frames. Enable writing symbols for methods by default.
3765
3766 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
3767
3768         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
3769         and make it work with vectors of element sizes 1, 2 and 4.
3770
3771         * simd-intrinsics.c: Enable getter for all vectors with element size
3772         1, 2 or 4.
3773
3774         * simd-methods.h: Add the names of other getters.
3775
3776         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
3777
3778         * cpu-x86.md: Same.
3779
3780         * mini-x86.c: Same.
3781
3782 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
3783
3784         * mini-ppc.h: portability fix.
3785
3786 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3787
3788         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
3789         buggy and will overwrite it.
3790
3791 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3792
3793         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
3794         Use it to emit local symbols for all methods so AOTed methods show up with
3795         their full name in gdb/valgrind output.
3796
3797 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
3798
3799         * mini-ppc.c: portability fixes.
3800
3801 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3802
3803         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
3804         entries out of the if (!generic_shared...) code so it is always done.
3805         (mono_class_init_trampoline): Do the patching when running under valgrind
3806         too, newer versions of valgrind have no problems with it.
3807
3808 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3809
3810         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
3811         further sections.
3812
3813 2008-11-13  Mark Probst  <mark.probst@gmail.com>
3814
3815         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
3816         filters.
3817
3818 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3819
3820         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
3821
3822 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3823
3824         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
3825
3826         * cpu-x86.md: Same.
3827
3828         * mini-x86.c: Same.
3829
3830         * simd-intrinsics.c: Same.
3831
3832 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3833
3834         * simd-intrinsics.c: Enable constructor intrinsics for all types.
3835
3836 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3837
3838         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
3839         to work with more Vector types.
3840
3841 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3842
3843         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
3844         store the elemens directly instead of using and intermediate.
3845
3846 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3847
3848         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
3849
3850         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
3851         to preserve %eax for aot plt trampolines.
3852
3853         * aot-compiler.c (compile_method): Don't skip synchronized methods.
3854         (encode_method_ref): Flag synchronized methods so they won't go through
3855         the AOT trampoline.
3856
3857         * aot-compiler.c: Additional work to support AOTing synchronized methods/
3858         wrappers.
3859
3860         * cpu-ia64.md (jmp): Increase max length.
3861
3862 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
3865         open generic classes.
3866
3867         * aot-compiler.c: Enable the ELF writer on ELF platforms.
3868
3869         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
3870         box+brtrue optimization since it causes test failures on x86.
3871
3872 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3873
3874         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
3875
3876         * cpu-x86.md: Same.
3877
3878         * mini-x86.c: Same.
3879
3880         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
3881         for simd ctor values. 
3882
3883         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
3884         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
3885
3886 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3887
3888         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
3889         LogicalRightShift.
3890
3891         * simd-instrincs.c: Same.
3892
3893         * basic-simd.cs: Same.
3894
3895 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3896
3897         * ratests.cs: Add more tests.
3898
3899         * regalloc2.c (add_spill_code): Handle more corner cases.
3900
3901 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3902
3903         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
3904         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
3905         both the source an destination of an instruction.
3906
3907 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3908
3909         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
3910         wapihandles.c: more portability changes.
3911
3912 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
3913
3914         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
3915         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
3916         safe to execute in a signal handler and the kernel provides better
3917         the info in /proc/self/smaps. Avoid the assert on sigaction during
3918         cleanup.
3919
3920 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3921
3922         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
3923         do the bblock linking hack if it is actually needed.
3924
3925         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
3926         up linking.
3927
3928         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
3929         crash problem is fixed.
3930
3931         * branch-opts.c (mono_remove_critical_edges): Link up newly added
3932         bblocks.
3933
3934         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
3935         for catch clauses.
3936         (mini_method_compile): Set the starting value of next_vreg to 
3937         MAX_IREGS + MAX_FREGS when using globalra.
3938
3939         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
3940         filter clauses with BB_EXCEPTION_HANDLER.
3941
3942         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
3943
3944 2008-11-10  Mark Probst  <mark.probst@gmail.com>
3945
3946         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
3947         space for stdcall.  Fixes regressions on Win32.
3948
3949 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
3950
3951         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
3952         bblocks.
3953         (linear_scan): Remove an assert which doesn't seem to be needed.
3954
3955         * local-propagation.c (mono_local_deadce): Avoid a call to
3956         MONO_DELETE_INS which would screw up the instruction linking.
3957
3958         * mini.c (mono_decompose_op_imm): Make this work with globalra.
3959
3960         * regalloc2.c: Upgrade to work the current JIT code.
3961
3962 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
3963
3964         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
3965         case.
3966
3967         * aot-runtime.c: Remove some dead code.
3968
3969         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
3970         consistency.
3971         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
3972
3973         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
3974         trampolines using sscanf since atoi doesn't work on large unsigned values.
3975
3976         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
3977         Initialize code_size.
3978
3979 2008-11-08  Mark Probst  <mark.probst@gmail.com>
3980
3981         * method-to-ir.c (mini_emit_inst_for_method): Make
3982         Interlocked.CompareExchange work for Int arguments on 32 bit
3983         archs, as well.
3984
3985 2008-11-07  Mark Probst  <mark.probst@gmail.com>
3986
3987         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
3988
3989 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
3990
3991         * main.c Fix MSVC build.
3992
3993         Contributed under MIT/X11 license.
3994
3995 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3996
3997         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
3998         alignment larger than 8 bytes are aligned correctly, too.
3999
4000         * mini.c: Honor the min_align field of MonoClass when laying out
4001         the stack.
4002
4003 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
4004
4005         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
4006
4007         * aot-compiler.c (emit_plt): Fix a warning.
4008         
4009         * aot-compiler.c: Implement ARM support in the binary writer.
4010
4011 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4012
4013         * basic-simd.cs: Add test for getter with byref arg.
4014         Fix the naming of a few tests.
4015         Add missing checks to a test.
4016
4017 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4018
4019         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
4020
4021         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
4022         most of the full-aot support for monitor enter/exit trampolines.
4023
4024         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
4025         enter/exit trampoline creation functions.
4026
4027         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
4028         make dist.
4029
4030 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
4031
4032         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
4033         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
4034         implement the needed functionality without adding crap to the runtime.
4035
4036 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4037
4038         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
4039         non-x86 builds.
4040
4041         * mini.c (mono_build_date): New global version holding the build date in
4042         string format.
4043         
4044         * Makefile.am (buildver.c): Generate a file containing the build date.
4045
4046         * main.c: Set the build date from the generated file.
4047
4048         * mini.c (mono_get_runtime_build_info): New helper function returning build
4049         information in a string format.
4050         
4051         * driver.c (mono_main): Print the build date in --version.
4052
4053         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
4054         file when the bind-to-runtime-version option is used.
4055
4056 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4057
4058         * simd-intrinsics.c: Fix bug when using getters and byref args. 
4059
4060 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4061
4062         * simd-methods.h: Rename prefetch methods.
4063
4064         * simd-intrinsics.c: Same.      
4065
4066 2008-11-05  Mark Probst  <mark.probst@gmail.com>
4067
4068         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
4069         sizes.
4070
4071 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4072
4073         * aot-compiler.c: Use the bundled elf header files instead of depending on
4074         the system one.
4075         
4076         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
4077         mempool.
4078
4079         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
4080         on every call.
4081
4082 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
4083
4084         * cpu-x86.md: Add store nta ops.
4085
4086         * mini-ops.h: Same.
4087
4088         * mini-x86.c: Same.
4089
4090         * mini.h: Add an enum for simd prefetch modes.
4091
4092         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
4093         of store. Use the changed code to support store nta.
4094
4095         * simd-intrinsics.c: Add prefetch ops for all vector types.
4096
4097 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4098
4099         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
4100         threads.
4101         
4102         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
4103         names.
4104
4105         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
4106         trampolines.
4107
4108 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4109
4110         * mini-x86.c: Fixed commit.
4111
4112 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4113
4114         * aot-compiler.c (emit_plt): Align the plt section only on x86.
4115
4116 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4117
4118         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
4119         and MONITOR_EXIT, for the ASM fastpaths.
4120
4121         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
4122         available.
4123
4124         * mini.c, patch-info.h: Signature and patch infos for
4125         Monitor.Enter/Exit trampolines.
4126
4127         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
4128
4129         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
4130         Monitor.Enter/Exit ASM fastpath for Linux.
4131
4132 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4133
4134         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
4135
4136         * objects.cs: Add a new test.
4137         
4138         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
4139
4140         * aot-runtime.c (load_method): Run class initialization in the PLT case even
4141         if MONO_LOG_LEVEL is set.
4142
4143         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
4144
4145         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
4146
4147         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
4148         
4149         * aot-compiler.c: Change the relocation code to use virtual addresses instead
4150         of file offsets. Align the sections belonging to the data segment to 
4151         PAGESIZE.
4152
4153 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
4156         elf.h. Port it to amd64.
4157
4158 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4159
4160         * driver.c: Enable SIMD by default.
4161
4162 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4163
4164         * cpu-x86.md: Add prefetch op.
4165
4166         * mini-ops.h: Same.
4167
4168         * mini-x86.c: Same.
4169
4170         * mini.h: Add an enum for simd prefetch modes.
4171
4172         * simd-methods.h: Add prefetch function names.
4173
4174         * simd-intrinsics.c: Add prefetch ops for all vector types.
4175
4176 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4177
4178         * aot-compiler.c (emit_bytes): Speed this up a little.
4179
4180 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
4181
4182         * aot-compiler.c: Add JIT time etc. statistics.
4183         
4184         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
4185
4186         * mini.h (MonoCompile): Add 'got_offset' field.
4187
4188         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
4189         method_got_offsets array.
4190
4191         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
4192         wrappers.
4193
4194         * aot-compiler.c (compile_method): Add generic method instances referenced
4195         by the method to the list of methods to be compiled, this is required so if
4196         A<T> references B<T>, and another assembly references A<int>, then it will
4197         also get a copy of B<int>.
4198
4199         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
4200         when checking for monitor enter/exit.
4201
4202 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4203
4204         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
4205         for Monitor.Enter and Monitor.Exit if enabled.
4206
4207         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
4208         Solaris.
4209
4210 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
4211
4212         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
4213         of an OP_MOVE. Fixes #440046.
4214
4215         * basic-long.cs: Add a new test.
4216
4217 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4218
4219         * mini.h: Add synchronization note for the managed counter-part.
4220
4221         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
4222         returns the simd caps of the current cpu.
4223
4224 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4225
4226         * basic-simd.cs: Remove Console.WriteLine.
4227
4228 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4229
4230         * basic-simd.cs: New tests for Vector2ul.
4231
4232 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4233
4234         * simd-intrinsics.c: Add new vector type Vector2ul.
4235
4236 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4237
4238         * basic-simd.cs: New tests for Vector2l.
4239
4240 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4241
4242         * cpu-x86.md: Add long version of most packed int ops.
4243
4244         * mini-ops.h: Same.
4245
4246         * mini-x86.h: Same.
4247
4248         * simd-intrinsics.c: Add new vector type Vector2l.
4249
4250 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4251
4252         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
4253
4254         * simd-methods.h: Remove SN_op_BitwiseXor.
4255
4256 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4257
4258         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
4259         alignment.
4260
4261 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4262
4263         * basic-simd.cs: Test for Vector2d.
4264
4265         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
4266         value.
4267
4268 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4269
4270         * cpu-x86.md: Add double version of all packed float ops.
4271
4272         * mini-ops.h: Same.
4273
4274         * mini-x86.h: Same.
4275
4276         * simd-intrinsics.c: Add new vector type Vector2d.
4277
4278         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
4279
4280         * simd-methods.h: Add Duplicate.
4281
4282 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4283
4284         * basic-simd.cs: Test for packing with signed saturation.
4285
4286 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4287
4288         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
4289         found in the TYPESPEC table.
4290
4291 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4292
4293         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
4294         too.
4295
4296         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4297
4298         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
4299         instead of the RVA, since the RVA can be changed by tools like the cil 
4300         stripper.
4301
4302         * method-to-ir.c (mono_method_to_ir2): Ditto.
4303
4304         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
4305         (deserialize_variable): Ditto.
4306
4307 2008-10-25  Martin Baulig  <martin@ximian.com>
4308
4309         * debug-mini.c (write_variable): Use
4310         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
4311
4312 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4313
4314         * cpu-x86.md: Add unsigned variants of packd and packw.
4315
4316         * mini-ops.h: Same.
4317
4318         * mini-x86.h: Emit the right instruction for packd and packw.
4319         Add unsigned variants of packd and packw.
4320
4321         * simd-intrinsics.c: Packd and packw were used in place of their
4322         unsigned variants. Change that.
4323         Add intrinsics for (Signed)PackWithSignedSaturation.
4324
4325         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
4326
4327 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4328
4329         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
4330
4331 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4332
4333         * mini-ops.h: Remove dword packed add/sub with saturation ops.
4334
4335         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
4336
4337         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
4338         sse instructions.
4339
4340         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
4341
4342 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4343
4344         * method-to-ir.c, mini.c: Special casing for the synchronized
4345         wrapper for the ldtoken+GetTypeFromHandle case.
4346
4347 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4348
4349         * mini.c (mono_replace_ins): Move this to branch-opts.c.
4350
4351         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
4352         created/split bblocks.
4353
4354 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4355
4356         * mini-ops.h: Add packed signed mul high.
4357         
4358         * cpu-x86.md: Same.
4359
4360         * mini-x86.c (mono_arch_output_basic_block): Same.
4361
4362         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
4363
4364         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
4365
4366 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4367
4368         * basic-simd.cs: Tests for Vector16sb.
4369
4370 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4371
4372         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
4373
4374 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4375
4376         * mini-ops.h: Add packed signed min, max and compare greater.
4377         
4378         * cpu-x86.md: Same.
4379
4380         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
4381         saturation.
4382
4383         * simd-methods.h: Add CompareGreaterThan.
4384
4385         * simd-methods.h: Remove CompareEquals.
4386
4387         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
4388
4389         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
4390
4391         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
4392         CompareEqual.
4393
4394 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4395
4396         * basic-simd.cs: Fix tests due to change in the API.
4397
4398 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4399
4400         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
4401
4402 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4403
4404         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
4405
4406         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
4407         inst_offset as this has invalid values for LDADDR.
4408
4409 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4410
4411         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4412
4413         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
4414
4415 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4416
4417         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
4418         for accessing field->data.
4419
4420 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4421
4422         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4423
4424 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4425
4426         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
4427
4428         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
4429
4430 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4431
4432         * dominators.c (mono_compute_natural_loops): Allocate GList enties
4433         from the cfg mempool.
4434
4435 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4436
4437         * basic-simd.cs: Tests for new methods in Vector8us.
4438
4439 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4440
4441         * mini-ops.h: Add multiply and store high.
4442         
4443         * cpu-x86.md: Same.
4444
4445         * mini-x86.c (mono_arch_output_basic_block): Same.
4446
4447         * simd-methods.h: Same.
4448
4449         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
4450         and CompareEqual.
4451
4452 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4453
4454         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
4455         mono_class_setup_vtable ().
4456
4457         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
4458         mono_class_get_vtable_entry () for accessing klass->vtable.
4459
4460         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
4461
4462         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
4463         found.
4464
4465         * method-to-ir.c (mono_save_token_info): Don't save references made from
4466         wrappers.
4467
4468         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
4469         of generic instances.
4470
4471         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
4472
4473 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4474
4475         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
4476         OP_JMP depends on the method signature.  Calculate it properly.
4477
4478 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4479         
4480         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
4481         called directly.
4482
4483         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
4484         instances.
4485         (emit_extra_methods): Add another table mapping method indexes to 
4486         offsets in the extra_method_info table.
4487
4488         * mini.h: Bump AOT file format version.
4489         
4490         * aot-runtime.c: Merge most of the code from mono_aot_get_method
4491         and mono_aot_get_method_from_token () into one function.
4492
4493 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4494
4495         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
4496         separate counter.
4497
4498 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
4499
4500         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
4501         methods.
4502
4503         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
4504         disable_aot.
4505
4506         * mini.c (mono_patch_info_equal): Compare the generic context as well.
4507
4508         * mini.h: Bump aot file format version.
4509
4510         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
4511         AOT file can contain native code for methods which are not in the METHOD
4512         table. Generate code for non-sharable generic instances of generic methods
4513         found in the METHODSPEC table.
4514         
4515         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
4516         encoding generic type handles.
4517
4518         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
4519         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
4520
4521         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
4522         macros + MONO_ADD_INS.
4523
4524         * mini.c (mono_jump_info_token_new2): New function which takes a generic
4525         context as well.
4526
4527         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
4528
4529         * mini.h: Bump aot file format version.
4530
4531         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
4532
4533 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4534
4535         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
4536         platforms, with definable stack alignment value.  Set to 16 now
4537         for all platforms.
4538
4539         * mini.c, mini.h, driver.c: Command line option for disabling
4540         stack alignment.
4541
4542 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4543
4544         * basic-simd.cs: Tests for new methods in Vector4ui.
4545
4546 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4547
4548         * mini-ops.h: Add packed int shuffle.
4549         
4550         * cpu-x86.md: Same.
4551
4552         * mini-x86.c (mono_arch_output_basic_block): Same.
4553
4554         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
4555         extract mask, max, min, shuffle.
4556
4557         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
4558
4559 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4560
4561         * basic-simd.cs: Tests for new methods in Vector8us.
4562
4563 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4564
4565         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
4566         RuntimeTypeHandle, not a TypedReference.
4567
4568 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
4569
4570         * simd-intrinsics.c: remove relocations.
4571
4572 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
4573
4574         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
4575         optimizations from the x86 backend.
4576
4577 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
4578
4579         * simd-methods.h, simd-intrinsics.c: debloat method names and
4580         prepare for no relocations.
4581
4582 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4583
4584         * mini-ops.h: Add packed min/equal and sum of absolute differences.
4585         
4586         * cpu-x86.md: Same.
4587
4588         * mini-x86.c (mono_arch_output_basic_block): Same.
4589
4590         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
4591         extract mask, max, min and sum of absolute differences.
4592
4593         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
4594         method name.
4595
4596 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4597
4598         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
4599         Renamed one test for consistency.
4600
4601 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4602
4603         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
4604         fix to the code that deal with other blocks.
4605
4606 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4607
4608         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
4609
4610 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4611
4612         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
4613         that deals with vreg interference. Explicitly check for OP_LDADDR to be
4614         able to process the source reg.
4615
4616 2008-10-16  Martin Baulig  <martin@ximian.com>
4617
4618         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
4619
4620         * inssel.brg: Add `OP_HARD_NOP'.
4621
4622         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
4623
4624         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
4625         `OP_HARD_NOP' instruction when running inside the debugger.
4626
4627         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
4628         `OP_HARD_NOP' instruction when running inside the debugger.
4629
4630 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4631
4632         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
4633         now works. The issue with the regalloc tripping up no longer
4634         happens.
4635
4636         * simd-intrinsics.c (load_simd_vreg): Same.
4637
4638 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4639         
4640         * basic-simd.cs: Tests for new Vector8ui methods.
4641
4642 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4643
4644         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
4645         only for type. This fixes crashes where MonoInst::klass is checked
4646         for ops of type != VTYPE or OBJ.
4647
4648         * simd-intrinsics.c (load_simd_vreg): Same.
4649
4650 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4651
4652         * mini-ops.h: Add ops for packed shuffle/max/avg and
4653         extract mask.
4654         
4655         * cpu-x86.md: Same.
4656
4657         * mini-x86.c (mono_arch_output_basic_block): Same.
4658
4659         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
4660         extract mask.
4661
4662         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
4663         to emit extract mask op.
4664
4665         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
4666         to emit word shuffles.
4667
4668 2008-10-15  Mark Probst  <mark.probst@gmail.com>
4669
4670         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
4671         the largest alignment needed by a variable, but at least
4672         sizeof(gpointer).
4673
4674 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4675
4676         * basic-simd.cs: Tests for the fixes in the last commit.
4677
4678 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4679
4680         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
4681         no longer handles STACK_PTR input.
4682
4683         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
4684
4685         * simd-intrinsics.c (load_simd_vreg): New function that works like 
4686         get_simd_vreg   but handles STACK_PTR input.
4687
4688         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
4689         as the input can be an arbitrary pointer.
4690
4691         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
4692         LDADDR local optimization directly otherwise use a store op.
4693
4694 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4695
4696         * basic-simd.cs: Tests for dup low and dup high.
4697
4698 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4699
4700         * mini-ops.h: Add dup low and dup high ops.
4701         
4702         * cpu-x86.md: Same.
4703
4704         * mini-x86.c (mono_arch_output_basic_block): Same.
4705
4706         * simd-intrinsics.c (vector4f_intrinsics): Same.
4707
4708 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4709
4710         * basic-simd.cs: Tests for recently added functionality.
4711
4712 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4713
4714         * mini-ops.h: Add remaining sse1 fp ops.
4715         
4716         * cpu-x86.md: Add remaining sse1 fp ops.
4717
4718         * mini-x86.c (mono_arch_output_basic_block): Same.
4719
4720         * mini.h: Add enum for simd FP compare conditions.
4721
4722         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
4723
4724         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
4725         so the backed can generate the appropriate op.
4726
4727 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4728         This patch squeese one more byte from the SimdIntrinsc struct.
4729
4730         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
4731         a a shift amount intead of simply or'ing it.
4732
4733         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
4734
4735         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
4736         byte so we can have an aditional flags field without increasing struct size.
4737
4738         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
4739         against the simd_supported_versions bitmask.
4740
4741         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
4742
4743 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
4744
4745         * mini.c: remove rawbuffer code (the only use here is unsafe because
4746         it takes locks during signal handling and the kernel now provides much
4747         better info in proc/pid/smaps these days).
4748
4749 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
4750
4751         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
4752         OP_X86_PUSH_OBJ. Fixes #434620.
4753
4754         * objects.cs: Add a test.
4755         
4756 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
4757
4758         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
4759         that the packuswb/packusdw don't work with unsigned numbers for what
4760         would be negative numbers in signed format.
4761
4762         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
4763         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
4764
4765         * mini-ops.h: Add doubleword forms of many ops and packing ones.
4766
4767         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
4768
4769         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
4770
4771         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
4772
4773         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
4774         add more ops.
4775
4776         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
4777         version as the enum in mini.h.
4778
4779         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
4780         for sse3 ops, check the simd_version field if present. This way the code
4781         works with all versions of sse.
4782
4783 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4784
4785         * simd-intrinsics.c: Fixed intrinsic name typo.
4786
4787         * mini.h: Added missing simd exported function.
4788
4789         * basic-simd.cs: Added tests for Vector4ui.
4790         Fixed broken test for Vector16b.
4791
4792 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
4793
4794         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
4795         the max length to 64.
4796
4797 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4798
4799         * method-to-ir.c: Only do the fast virtual generic method call for
4800         non-wrapper methods.
4801
4802         * mini.h, mini-trampolines.c: The new generic virtual remoting
4803         trampoline handles virtual method calls via the vtable (as done by
4804         the fast virtual generic method calls) to remoting proxies.
4805
4806         * mini.c (mono_jit_create_remoting_trampoline): For generic
4807         methods reate a generic virtual remoting trampoline.
4808
4809         * mini-amd64.h: Enable fast virtual generic method calls again.
4810
4811 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4812
4813         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
4814         restore registers when doing tail calls.
4815
4816 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4817
4818         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
4819         Vector4ui.
4820
4821 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4822
4823         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
4824
4825 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4826
4827         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
4828
4829 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4830
4831         * basic-simd.cs: Retrofit for API changes.
4832
4833 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4834
4835         * mini-ppc.c: Handle integer stack arguments for tail calls.
4836
4837 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4838
4839         * optflags-def.h: Removed sse3 optimization.
4840
4841         * driver.c: Same.
4842
4843         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
4844         sse3.
4845
4846         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
4847
4848         * mini.h: Added enumeration with simd versions.
4849
4850         * simd-intrinsics.c (emit_intrinsics): Use the new static var
4851         for detecting SSE3.
4852
4853         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
4854
4855         * mini.c (mini_init): Call mono_simd_intrinsics_init.
4856
4857 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4858
4859         * basic-simd.cs: Added tests for Vector8u and Vector16u.
4860
4861         * basic-simd.cs: Fixed test naming.
4862
4863 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4864
4865         * mini-ops.h: Added ops for packed and saturated math, shifts
4866         and packing/unpacking.
4867
4868         * cpu-x86.md: Added descriptors for the above ops.
4869
4870         * mini-x86.c: Added code to emmit the above ops.
4871
4872         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
4873
4874 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
4875
4876         * aot-compiler.c (compile_method): Enable AOT for generic code.
4877
4878         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
4879
4880 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
4881
4882         * mini.c: add a workaround for a common screwup that ends up blamed
4883         to mono (other processes blocking signal delivery).
4884
4885 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4886
4887         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
4888         in the LDFLD/STFLD opcodes. Fixes #432673.
4889
4890         * iltests.il.in: Add a new test.
4891
4892 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
4893
4894         * mini-arm.c: attach the thread in unmanaged->managed transitions
4895         using delegates (bug #433148).
4896
4897 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4898
4899        * basic-simd.cs: Use new ShuffleSel constants.
4900
4901 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4902
4903         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
4904
4905         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
4906         only disable simd intrinsics if no sse2 is detected.
4907
4908         * optflags-def.h: Added sse3.
4909
4910         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
4911         is disabled.
4912
4913 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4914
4915         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
4916         when adding delegate-invoke wrappers.
4917
4918 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4919
4920         * Makefile.am: Reenable the simd tests.
4921
4922 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4923
4924         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
4925           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
4926           other vreg is allocated to that hreg.
4927
4928         Contributed under MIT/X11 license.
4929
4930 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4931
4932         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
4933         yet checked in.
4934
4935 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4936
4937         * basic-simd.cs: New test suite for SIMD intrinsics.
4938
4939         * Makefile.am: Added new tests.
4940
4941 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
4942
4943         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
4944
4945         * mini-ops.h: Same.
4946
4947         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
4948
4949         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
4950         using SSE2 aware opcodes.
4951
4952         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
4953         is enabled, this code path is only reachable if conversion ops are emmited after
4954         mono_method_to_ir.
4955
4956         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
4957
4958         This optimization saves 6 bytes per conversion against the old version.
4959
4960 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * aot-compiler.c (compile_method): Don't skip methods referencing 
4963         generic methods without a corresponding entry in token_info_hash, since
4964         encode_method_ref () can handle all generic methods now.
4965
4966         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
4967         generic context is set.
4968         
4969         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
4970         generic sharing of LDTOKEN.
4971
4972 2008-10-06  Mark Probst  <mark.probst@gmail.com>
4973
4974         * mini-amd64.h: Temporarily disabled fast virtual generic method
4975         calls because it breaks the System.Runtime.Remoting tests.
4976
4977 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4978
4979         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
4980
4981         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
4982         so inlining actually works.
4983         (check_inline_caller_method_name_limit): Ditto.
4984
4985 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
4986
4987         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
4988         64 bit safety (from Olaf Hering and Andreas Farber).
4989
4990 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4991         
4992         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
4993         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
4994         unused virtual call support code.
4995
4996         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
4997         
4998         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
4999         which can't use aot trampolines.
5000         (decode_patch): Don't create aot trampolines for methods which can't use
5001         them.
5002
5003         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
5004         use aot trampolines.
5005
5006         * mini.h: Bump AOT image format version.
5007         
5008 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
5009
5010         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
5011         to save_token_info () since cmethod is inflated for constrained calls.
5012
5013         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
5014
5015 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
5016
5017         * Makefile.am: Add build rules for ppc64.
5018         This avoids the build failing at pedump with unresolved symbols
5019         due to lack of arch_sources. Instead it will now fail earlier
5020         due to lack of cpu-ppc64.md.
5021
5022         Contributed under MIT/X11 license.
5023
5024 2008-10-04  Mark Probst  <mark.probst@gmail.com>
5025
5026         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
5027         tail calls.
5028
5029         * iltests.il.in: Add test case for tail call with many arguments.
5030
5031 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5032
5033         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
5034         to the fast virtual generic method code until the aot case is fixed.
5035
5036 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5037
5038         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
5039
5040 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5041
5042         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
5043         thunks.
5044
5045 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5046         
5047         * simd-intrinsics.c: Forgot to add this one.
5048
5049         * mini-codegen.c: Fix macro in case SIMD is not supported.
5050
5051 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5052         
5053         This patch land initial JIT support for simd intrinsics.
5054
5055         * mini-x86.h: Added new define to make --enable_minimal work on x86.
5056
5057         * Makefile.am: Added simd-intrinsics.c
5058
5059         * simd-intrinsics.c: New file with simd instrinsic related
5060         code.
5061
5062         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
5063
5064         * cpu-x86.md: Add simd related instructions.
5065
5066         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
5067
5068         * driver.c: Added two new --regression variants.
5069
5070         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
5071
5072         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
5073
5074         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
5075         extract some complicated logic to helper functions.
5076
5077         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
5078
5079         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
5080
5081         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
5082         the specialized simplification pass.
5083
5084         * method-to-ir.c (mono_spill_global_vars): Use new macro.
5085
5086         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
5087
5088         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
5089         table.
5090
5091         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
5092         if MONO_ARCH_NEED_SIMD_BANK is defined.
5093
5094         * mini-ops.h: Added the new simd ops.
5095
5096         * mini-x86.c: Added mono_arch_xregname.
5097
5098         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
5099
5100         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
5101
5102         * mini-x86.h: Define simd related MONO_ARCH macros.
5103
5104         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
5105
5106         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
5107
5108         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
5109         MONO_CLASS_IS_SIMD to deal with simd related IR.
5110
5111         * mini.h (MonoInst): Added spill_var to the backend union.
5112
5113         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
5114
5115         * mini.h: Added forward declarations of the new simd fuctions.
5116
5117         * optflags-def.h: Added new optimization names SIMD.
5118
5119         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
5120
5121         * regalloc.h: Added support for working with 3 register banks.
5122
5123         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
5124
5125         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
5126
5127 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
5128
5129         * mini-exceptions.c: remove 64 bit related ifdef clutter.
5130
5131 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5132
5133         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
5134         instead of one on 64 bit systems.
5135
5136         * method-to-ir.c: Remove unused includes.
5137
5138 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
5139
5140         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
5141         cfg->used_int_regs, since the two are different on arm.
5142
5143 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5144
5145         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
5146         mono_method_get_vtable_index() to get the vtable index.
5147
5148 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5149
5150         * method-to-ir.c (mono_method_to_ir2): Don't create native
5151         wrappers for array methods, because they're never called (and if
5152         they were called they wouldn't work).
5153
5154 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5155
5156         * method-to-ir.c (mono_method_to_ir2): Array methods are
5157         special-cased and must not be invoked indirectly via the (M)RGCTX
5158         when generic sharing is turned on.  Fixes #431413.
5159
5160 2008-10-01  Mark Probst  <mark.probst@gmail.com>
5161
5162         * method-to-ir.c: When generic sharing is active, call
5163         non-interface virtual generic methods via the standard trampoline.
5164
5165         * mini-trampolines.c: Handle virtual generic shared methods.
5166
5167         * mini.h, mini-x86.c, mini-x86.h: New argument for
5168         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
5169         method thunks and which is the trampoline to call if the lookup
5170         fails.  Enable the virtual generic method thunk for x86.
5171
5172         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
5173         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
5174         argument but assert that it's NULL, because these archs don't yet
5175         implement the virtual generic method thunk.  Changes in the IMT
5176         thunk data structures.
5177
5178 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
5179
5180         * aot-compiler.c (emit_globals): Avoid invalid characters in
5181         the static linking symbol.
5182
5183         * objects.cs: Add a test for the range check optimization. Fix warnings.
5184
5185         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
5186         optimization from the current JIT.
5187
5188         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
5189         later in decompose_array_access_opts () to allow more optimizations.
5190
5191         * method-to-ir.c (mono_handle_soft_float): Rename this to 
5192         mono_decompose_soft_float () for consistency.
5193
5194         * mini-ops.h: Fix arguments of OP_STRLEN.
5195
5196         * method-to-ir.c (save_cast_details): Extract the cast details saving code
5197         into a separate function.
5198         (reset_cast_details): Ditto.
5199         (handle_unbox): Save cast details. Fixes #431254.
5200
5201         * method-to-ir.c: Remove some obsolete FIXMEs.
5202
5203 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5204
5205         * ir-emit.h (alloc_dreg): Write a warning before crashing.
5206
5207 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5208
5209         * mini-codegen.c: More work on macros to make them
5210         ready for multiple regbanks.
5211
5212 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5213
5214         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
5215
5216         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
5217
5218 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5219
5220         * mini-codegen.c (mono_spillvar_offset): Proper support for
5221         multiple regbanks.
5222
5223 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5224
5225         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
5226         the stack overflow changes.
5227
5228 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5229
5230         * mini-codegen.c: Make all bank macros depend on reg_bank.
5231
5232         * mini-codegen.c (mono_local_regalloc): Make free mask
5233         initialization regbank aware.
5234
5235 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5236
5237         * mini-codegen.c (mono_local_regalloc): Extract callee
5238         mask selection to a function and make it regbank aware.
5239
5240 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5241
5242         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
5243         code to deal with many regbanks.
5244
5245 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5246
5247         * mini-codegen.c: More fp->regbank changes.
5248
5249 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5250
5251         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
5252         of a hardcoded constant.
5253
5254 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5255
5256         * method-to-ir.c (type_from_stack_type): Fix typo.
5257
5258 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
5259
5260         * mini-ia64.c (emit_move_return_value): Convert float return values to
5261         double.
5262
5263         * objects.cs: Add a new test.
5264         
5265         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
5266         VARARG methods to fix an assert later.
5267
5268         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
5269         end so it at least compiles.
5270
5271 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5272
5273         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
5274
5275 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
5276
5277         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
5278         optimization to a new function (emit_optimized_ldloca_ir) and enable
5279         it for both ldloca and ldloca_s.
5280
5281 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5282
5283         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
5284         gshared CASTCLASS code.
5285
5286         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
5287         amd64, where the libc stack unwinder encounters stack frames referring to
5288         native code in unmapped memory.
5289
5290         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
5291         sharing.
5292
5293         * generics.cs: Add new test.
5294
5295 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
5296
5297         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
5298         add a check that one of the ARM_FPU_ constants is defined.
5299
5300         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
5301         
5302         * mini-exceptions.c: Fix build on non-altstack platforms.
5303
5304         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
5305         sharing of vtypes.
5306
5307         * ir-emit.h: Add a comment to NEW_PCONST.
5308
5309         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
5310
5311         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
5312
5313         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
5314         after the changes to MonoJitDomainInfo.
5315
5316 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5317
5318         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
5319
5320 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5321
5322         * mini-ppc.c: Compiler warning fixes.
5323
5324 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5325
5326         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
5327         for pinvokes.
5328
5329 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5330
5331         * exceptions-ppc.c, mini-ppc.h: Compile
5332         mono_arch_handle_altstack_exception() on Darwin, too.
5333
5334 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5335
5336         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
5337         work on archs which don't have generic sharing implemented, only
5338         without the vtable_arg.
5339
5340 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5341
5342         * mini.c: Added comment explaining why delegate ctor icall
5343         wrappers are compiled.
5344
5345 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5346
5347         * mini.c: Don't produce trampolines to delegate ctor icall
5348         wrappers but compile them upfront.
5349
5350 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
5351
5352         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 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:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
5358
5359         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
5360         runtime-set function when going back to managed code. Currently this
5361         is used to set back the protection on the soft ovf pages and/or to
5362         throw the stack overflow exception that happened in unmanaged code.
5363
5364 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5365
5366         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
5367         the support code for restoring stack protection after stack overflows
5368         that happen in unmanaged code. Don't set the exec permission on the
5369         soft overflow area.
5370
5371 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
5372
5373         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
5374         delegate->method_ptr is set. Fixes #428054.
5375
5376 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5377
5378         * tests.cs: Rename to ratests.cs.
5379
5380         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
5381         emit_get_rgctx_... functions.
5382
5383 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5384
5385         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
5386
5387 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5388
5389         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
5390         before asserting that method is sharable.
5391
5392 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5393
5394         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
5395         whether method needs a static RGCTX wrapper used instead of
5396         complex conditions.
5397
5398         * generic-sharing.c, mini.h: A few functions moved to
5399         metadata/generic-sharing.c.
5400
5401 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5402
5403         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
5404         Generic code sharing for value types, which essentially means
5405         treating value type methods like static methods.  The RGCTX is
5406         passed in the same way.
5407
5408 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5409
5410         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
5411         opcode when creating multi-dimensional arrays of open types.
5412
5413         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
5414         open generic types.
5415
5416         * generics.cs: Add a test.
5417
5418         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
5419
5420 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5421
5422         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
5423
5424         * mini.c (mini_method_compile): Set it when running under the debugger. 
5425
5426         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
5427         vreg optimization if the flag is set.
5428
5429         * driver.c (mono_main): Add --attach= option to pass options to
5430         the attach agent.
5431
5432         * mini.c (sigquit_signal_handler): Start the attach agent.
5433
5434         * ssapre.c: Disable this to save space since it is not yet ported to
5435         linear IR.
5436
5437         * regalloc2.c: Disable this to save space.
5438
5439         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
5440
5441 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
5442
5443         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
5444         the -v option useful again.
5445
5446 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5447
5448         * mini-amd64.c (mono_arch_output_basic_block): Add support for
5449         --break-at-bb.
5450
5451         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
5452         arrays of arrays. Fixes #428406.
5453
5454         * method-to-ir.c (mini_emit_castclass): Ditto.
5455
5456         * objects.cs: Add new test.
5457         
5458 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
5459
5460         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
5461         was wrong at it choked against target_type_is_incompatible for byref types.
5462
5463 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5464
5465         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
5466         places.
5467
5468 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
5469
5470         * mini-exceptions.c: update a few more exceptions-related counters.
5471
5472 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
5473
5474         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
5475         new functions to allocate from persistent mempools.
5476
5477 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5478
5479         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
5480         multiple register banks in the future.
5481
5482         * mini-codegen.c (mono_local_regalloc): Fix a warning.
5483
5484 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
5485
5486         * mini.c (type_to_eval_stack_type): Remove duplicated function.
5487
5488         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
5489
5490         * mini.h: Export type_to_eval_stack_type.
5491
5492         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
5493         is only ins->klass of byref types.
5494
5495 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
5496
5497         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
5498         (mini_emit_memcpy2): Ditto.
5499
5500         * mini-amd64.c: Fix a warning.
5501
5502 2008-09-21  Mark Probst  <mark.probst@gmail.com>
5503
5504         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
5505         linking.
5506
5507 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
5508
5509         * method-to-ir.c: Extract stloc micro-optimization to a
5510         function and apply it to all cases.
5511
5512 2008-09-19  Mark Probst  <mark.probst@gmail.com>
5513
5514         * method-to-ir.c: Don't fail generic code sharing in cases we
5515         already support.
5516
5517 2008-09-18  Mark Probst  <mark.probst@gmail.com>
5518
5519         * mini-ppc.c: Handle structs in tailcalls on Darwin.
5520
5521 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
5522
5523         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
5524         implementation.
5525
5526 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
5527
5528         * trace.c: make tracing more useful and correct, with per-thread
5529         id and indent info.
5530
5531 2008-09-15  Mark Probst  <mark.probst@gmail.com>
5532
5533         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
5534         doing a method call and the argument is an R4.
5535
5536 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
5537
5538         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
5539         generic methods.
5540
5541 2008-09-13  Mark Probst  <mark.probst@gmail.com>
5542
5543         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
5544
5545 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
5546
5547         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
5548         (MONO_JUMP_TABLE_FROM_INS): Ditto.
5549
5550 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5551
5552         * driver.c: Add a --agent argument (not supported yet) to load managed
5553         agent assemblies before loading the main assembly, similarly to how the
5554         Java VM handles agents.
5555
5556 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5557
5558         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
5559         function to do stack layout of local variables.
5560
5561 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5562
5563         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
5564         calculation.
5565
5566 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5567
5568         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
5569         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
5570         JIT if DISABLE_JIT is defined.
5571
5572         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
5573         defined.
5574
5575 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5576
5577         * iltests.il.in: Disable the fconv test on PPC (the result is
5578         undefined according to ECMA).
5579
5580 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5581
5582         * iltests.il.in: Enable tail call tests for PPC.
5583
5584         * mini.h: Add variable for storing incoming valuetype argument
5585         addresses for tail calls.
5586
5587         * mini-ppc.c: Implement valuetype arguments and return values for
5588         tailcalls on Linux.
5589
5590 2008-09-09  Mark Probst  <mark.probst@gmail.com>
5591
5592         * mini-ppc.c: Partially implement tail calls (struct arguments and
5593         return values not supported).
5594
5595         * method-to-ir.c: Enable tail calls on PPC.
5596
5597 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
5598
5599         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
5600         runtime-invoke wrappers to work around the problem of them getting
5601         assigned to a random class.
5602
5603         * aot-runtime.c (mono_aot_get_method): Ditto.
5604         
5605 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
5606
5607         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
5608         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
5609
5610 2008-09-07  Mark Probst  <mark.probst@gmail.com>
5611
5612         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
5613         until they're implemented properly.
5614
5615         * exceptions-ppc.c: Use arch-independent exception-handling code
5616         instead of custom one.
5617
5618         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
5619         for Linear IR.
5620
5621         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
5622
5623         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
5624         applies when __powerpc__ is defined.
5625
5626 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
5627
5628         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
5629         methods to their code to avoid computing the full name of wrappers and
5630         doing a lookup in a string hash table.
5631
5632 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5633
5634         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
5635         we identify bblocks before method_to_ir () is ran.
5636
5637         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
5638         Also avoid optimizing branches pointing to themselves.
5639
5640         * mini.c (mini_method_compile): Ditto. Fixes #422947.
5641
5642 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
5643
5644         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
5645
5646 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5647
5648         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
5649         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
5650         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
5651         'buf'.
5652
5653         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
5654         jumped to the same entry in plt_jump_table.
5655
5656 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
5657
5658         * method-to-ir.c (initialize_array_data): Handle field with RVA from
5659         dynamic images.
5660
5661 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
5662
5663         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
5664         other assignment can be if converted. Saves 1.5% on corlib size and fixes
5665         #421807.
5666
5667 2008-08-29  Geoff Norton  <gnorton@novell.com>
5668
5669         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
5670         segment, and doesn't properly handle .space as .text.  Fixes
5671         AOT Mach/ARM
5672
5673 2008-08-29  Geoff Norton  <gnorton@novell.com>
5674
5675         * mini.c: Disable the mach exception handler when running on 
5676         ARM
5677
5678 2008-08-29  Geoff Norton  <gnorton@novell.com>
5679
5680         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
5681         globals on Darwin/ARM
5682
5683 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
5684
5685         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
5686         since too many things depend on it. Instead, call 
5687         mono_runtime_set_no_exec ().
5688         
5689         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
5690         the new JIT.
5691
5692         * aot-compiler.c: Add an 'asm-only' AOT option.
5693
5694         * mini.c: Avoid initializing the runtime when doing AOT compilation.
5695                 
5696         * aot-compiler.c (compile_method): Disable gshared support for now as it
5697         doesn't yet work.
5698
5699 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5700
5701         * mini-amd64.h : Fix a compiler warning.
5702
5703         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
5704           Changed to use a callback function to retrieve the unwind info.
5705           This avoids problems observed when code blocks were removed by
5706           unloading an app domain.
5707
5708         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
5709           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
5710           to work properly.
5711
5712         Contributed under MIT/X11 license.
5713
5714 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5715
5716         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
5717           case to keep the stack aligned to 8.
5718
5719         Contributed under MIT/X11 license.
5720
5721 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
5722
5723         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
5724         avoid repeated linear searches.
5725
5726 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
5727
5728         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
5729         methods it can't handle.
5730         
5731         * aot-compiler.c (add_method): Avoid adding a method twice.
5732         (add_wrappers): Add runtime invoke wrappers for all methods.
5733
5734         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
5735         function to create an aot-compatible version of this trampoline.
5736
5737         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
5738
5739 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5740
5741         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
5742
5743         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
5744         with a generic sharing failure.
5745
5746         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
5747
5748         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
5749         CEE_RETHROW. Fixes #419634.
5750
5751         * mini.c (mono_method_to_ir): Ditto.
5752
5753         * exceptions.cs: Add a new test.
5754         
5755         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
5756         to mono_type_stack_size_internal () since some callers might not pass in
5757         an rgctx.
5758
5759         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
5760         instrument_prolog. Fixes #419878.
5761
5762         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
5763         doubles in soft float mode volatile.
5764
5765 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
5766
5767         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
5768
5769         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
5770         to handle soft float correctly.
5771
5772         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
5773         the fast path.
5774
5775         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
5776
5777         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
5778         to sp, since the generics catch code requires it.
5779
5780         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
5781         copying.
5782
5783         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
5784         mono_arch_emit_imt_argument ().
5785
5786         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
5787
5788         * mini-arm.c tramp-arm.c: Generic sharing updates.
5789
5790 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
5791
5792         * mini-arm.c: Fix the arm build.
5793
5794         * generic-sharing.c (mini_type_get_underlying_type): New helper function
5795         handling enums, generic instances and generic sharing.
5796         (mini_type_stack_size_full): Ditto.
5797
5798         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
5799         
5800         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
5801
5802         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
5803
5804         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
5805         trampolines.
5806
5807         * mini-arm.c: Various small generic sharing changes.
5808
5809         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
5810         this for x86.
5811         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
5812         custom code.
5813
5814         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
5815         helper function to return a generic class init trampoline.
5816
5817         * method-to-ir.c mini.c: Use it.
5818         
5819         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
5820         arch-specfic function to return a generic class init trampoline.
5821
5822         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
5823         the GENERIC_CLASS_INIT custom code.
5824
5825         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
5826         a fatal error, not a sharing failure.
5827
5828         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
5829         needed.
5830
5831         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
5832         trampoline argument from MONO_ARCH_VTABLE_REG.
5833
5834         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5835         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5836         argument, and pass the vtable in VTABLE_REG.
5837
5838         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5839         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5840         argument, and pass the vtable in VTABLE_REG.
5841         (mono_arch_create_trampoline_code_full): Remove some special casing for
5842         the rgctx fetch trampoline.
5843
5844         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
5845         Fixes #419273.
5846
5847         * iltests.il: Add a test for it.
5848
5849 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
5852
5853         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
5854         no longer needed.
5855
5856         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
5857         use mono_jit_info_table_find () to avoid recursion.
5858         (mono_delegate_trampoline): Add a sync wrapper here.
5859
5860         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
5861         here.
5862
5863         * mini.c (mono_method_to_ir): Ditto.
5864         
5865         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
5866         add_sync_wrapper argument. Don't add a sync wrapper here.
5867         (mono_create_jump_trampoline): Don't add a sync wrapper here.
5868
5869         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
5870         
5871 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5872
5873         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
5874           of nonvolatile registers back from MonoContext to CONTEXT.
5875
5876         Contributed under MIT/X11 license.
5877
5878 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5879
5880         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
5881           arguments on Winx64 there are only 4 argument registers.  For this
5882           logic to work the last argument must be pulled from the stack.  
5883
5884         Contributed under MIT/X11 license.
5885
5886 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
5887
5888         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5889
5890         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
5891         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
5892         encode/decode_method_ref ().
5893
5894         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
5895
5896         * aot-runtime.c (decode_patch): Ditto.  
5897
5898         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
5899         MONO_PATCH_INFO_METHOD.
5900
5901         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
5902         MonoGenericJitInfo.
5903
5904         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
5905         MonoGenericJitInfo.
5906
5907         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
5908
5909         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
5910         one from the caller.
5911
5912         * aot-runtime.c (decode_generic_inst): New function to decode and
5913         return a interned generic inst.
5914         (decode_klass_ref): Use it.
5915         (decode_method_ref): Ditto.
5916
5917         * aot-compiler.c (emit_exception_debug_info): Save 
5918         jinfo->has_generic_jit_info too.
5919
5920 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5921
5922         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
5923
5924         * iltests.il.in: Add a test for fconv_to_i.
5925
5926         * liveness.c: Disable the liveness2 pass for now to save space.
5927
5928         * regalloc2.c: Include mempool-internals.h to fix warnings.
5929
5930         * aot-compiler.c (encode_method_ref): Encode the context of generic
5931         instance methods.
5932
5933         * aot-runtime.c (decode_method_ref): Inflate generic methods using
5934         the context saved in the aot file.
5935
5936         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5937
5938         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5939
5940         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
5941         volatile so they won't be optimized away.
5942
5943 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
5944
5945         * ssa.c:
5946         * ssa2.c:
5947         * mini.c:
5948         * regalloc2.c:
5949         * dominators.c: Remove duplicated functions that now are in
5950         mempool-internals.h.
5951
5952 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
5953
5954         * aot-compiler.c: Fix warnings.
5955
5956         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
5957
5958         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
5959
5960         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
5961         as the patch type.
5962
5963         * mini.c (mono_resolve_patch_target): Ditto.
5964         
5965         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
5966         (encode_klass_ref): Add support for encoding VARs/MVARs.
5967
5968         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
5969
5970         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
5971         the handling of the got entries into a separate 'decode_got_entry' function.
5972         Add support for RGCTX_FETCH.
5973
5974         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
5975         clobbered by the trampoline code.
5976
5977         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
5978         not clobbered by the indirect calling code.
5979
5980 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5981
5982         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
5983         to fix the build.
5984
5985 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
5986
5987         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
5988         signature using the compilation mempool otherwise we would leak it.
5989
5990 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5991
5992         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
5993         mono_emit_abs_call ().
5994
5995         * patch-info.h: Add GENERIC_CLASS_INIT.
5996
5997         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
5998
5999         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
6000         as their target as a near call.
6001
6002         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
6003         ABS handling code.
6004         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
6005
6006         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
6007         call to a runtime function described by a patch.
6008
6009         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
6010         mono_emit_abs_call, this has the advantage that the ABS handling code in
6011         mono_codegen () can handle them both, and can handle other stuff in the
6012         future without additional code.
6013
6014         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
6015         entry.
6016         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
6017         abs addresses.
6018
6019         * mini.h: Add missing bblock related prototypes.
6020
6021         * mini.h (MonoCompile): Remove unused reverse_inst_list and
6022         reverse_inst_list_len fields.
6023
6024         * mini.c: Refactor this file a bit by moving branch optimizations to 
6025         branch-opts.c.
6026
6027         * method-to-ir.c: Merge generic sharing changes missed earlier.
6028
6029         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
6030
6031         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
6032         shared patches. Process METHODCONST as a shared patch.
6033
6034         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
6035         as it crashes on the 2.0 mscorlib.
6036
6037         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
6038         to cause crashes.
6039         
6040         * aot-compiler.c: Use is_plt_patch () in a few additional places.
6041         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
6042         by IMT.
6043
6044         * aot-compiler.c: Reorganize the got handling code to be a bit more
6045         understandable.
6046
6047 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6048
6049         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
6050         mono_patch_info_equals/hash, and use it to massively simplify
6051         get_plt_index ().
6052
6053         * mini.c (mono_patch_info_hash): Simplify this and add support for
6054         more patch types.
6055
6056         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
6057
6058         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
6059         handling code, since an offset is not enough to identify a trampoline.
6060
6061         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
6062
6063 2008-08-17  Mark Probst  <mark.probst@gmail.com>
6064
6065         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
6066
6067         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
6068
6069         * mini-ops.h: Argument and result types for OVF_CARRY ops.
6070
6071         * decompose.c: PPC decompositions for various ops.
6072
6073         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
6074
6075 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6076
6077         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
6078         call the generic trampoline code using a call, instead of a jump, to
6079         remove some special casing from the generic trampoline code.
6080
6081         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
6082         (mono_codegen): Ditto.
6083
6084         * aot-compiler.c aot-runtime.c: Ditto.
6085
6086         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
6087
6088         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
6089         helper function to find the offset corresponding to a lazy fetch trampoline.
6090
6091         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
6092         when doing generic sharing.
6093
6094         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
6095         places.
6096         
6097         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
6098         mini-trampolines.c to be with the other trampoline creation functions.
6099
6100         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
6101         as it is equal to method->signature in most cases, add a 
6102         mono_emit_method_call_full variant which takes a signature and an imt
6103         argument as well.
6104
6105 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
6108         to this function, since it could be computed easily from the method 
6109         argument.
6110         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
6111         more.
6112
6113         * method-to-ir.c mini.c: Remove references to 
6114         compile_generic_method_wo_context.
6115
6116         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
6117         generic method calls.
6118         
6119         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
6120         dimensional non-szarrays.
6121
6122         * mini.c (mini_init): Register mono_array_new_1.
6123
6124         * jit-icalls.c (mono_array_new_1): New jit icall.
6125
6126         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
6127         pointing to the method.
6128
6129         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
6130         method addresses belonging to METHOD_JUMP patches in the 
6131         jump_target_got_slot_hash.
6132         (mono_aot_load_method): Ditto.
6133
6134         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
6135         METHOD_JUMP patches.
6136
6137         * mini.c (mini_create_jit_domain_info): New helper function which 
6138         initializes/frees domain->runtime_info.
6139         (mini_free_jit_domain_info): Ditto.
6140         (mini_init): Install the domain hook functions with the runtime.
6141
6142         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
6143         information maintained by the JIT.
6144
6145         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
6146         insertion into jump_table_hash into mono_codegen (), also implement proper
6147         locking.
6148
6149         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
6150         tail calls, it is already done by the aot code.
6151         
6152         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
6153         mechanism on amd64.
6154
6155         * iltests.il.in: Make the jmp test a bit more complex.
6156
6157         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
6158         generic instances which doesn't have a token.
6159
6160         * aot-runtime.c (decode_method_ref): Ditto.
6161         
6162         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
6163         can handle this case now.
6164         (handle_box): Ditto.
6165
6166 2008-08-15  Geoff Norton  <gnorton@novell.com>
6167
6168         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
6169         debugging check.
6170
6171 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
6172
6173         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
6174         calling generic methods.
6175
6176         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
6177
6178         * aot-runtime.c (decode_patch_info): Ditto.
6179
6180         * mini.c (mono_resolve_patch_target): Ditto.
6181         
6182         * patch-info.h: Add METHOD_RGCTX.
6183
6184         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
6185
6186 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
6187
6188         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
6189         arguments in registers.
6190
6191         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
6192         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
6193
6194         * mini.c (mini_method_compile): Abort aot compilation for generic
6195         methods if generic sharing is disabled.
6196         
6197         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
6198         an mrgctx.
6199
6200         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
6201         requiring an mrgctx.
6202
6203         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
6204         store instructions when converting a vcall to a normal call.
6205
6206         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
6207         mono_arch_find_jit_info.
6208
6209 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
6210
6211         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
6212         avoid calling mono_method_full_name () for every method even if the
6213         env var is not set.
6214         (check_inline_caller_method_name_limit): Ditto.
6215
6216 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6217
6218         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
6219         assemblies in one run.
6220
6221         * aot-compiler.c (mono_compile_assembly): Only print out a count of
6222         skipped methods if it is not 0.
6223
6224         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
6225
6226 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6227
6228         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
6229           MONO_ARCH_HAVE_UNWIND_TABLE.
6230
6231         Contributed under MIT/X11 license.
6232
6233 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6234
6235         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
6236           from default optimizaton list on Winx64.
6237
6238         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
6239
6240         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
6241           the LMF from the MonoJitTlsData structure.
6242
6243         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
6244
6245         Contributed under MIT/X11 license.
6246
6247 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6248
6249         * mini.c (sigsegv_signal_handler): Fix the build.
6250
6251         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
6252         assembly->aot_module.
6253
6254         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
6255         hash table. This simplifies and speeds up a lot of code, and fixes support
6256         for .netmodules.
6257
6258         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
6259         with the runtime.
6260
6261         * mini-exceptions.c: Ditto.
6262         
6263         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
6264         'native_offset' argument, since these are computed in the 
6265         mono_find_jit_info () function.
6266
6267         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
6268         is used by exceptions-ppc.c.
6269
6270         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
6271         mono_arch_find_jit_info ().
6272         
6273         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
6274         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
6275         generic code in mini-exceptions.c.
6276
6277 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
6278
6279         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
6280
6281         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
6282         
6283         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
6284         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
6285         called while holding the loader lock. Fixes #415608.
6286         (mono_aot_get_method_from_token_inner): Ditto.
6287
6288 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6289
6290         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
6291         to reduce differences between this and the generic implementation in
6292         mini-exceptions.c.
6293         (ves_icall_get_frame_info): Ditto.
6294
6295         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
6296
6297         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
6298         longer neccesarry.
6299
6300         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
6301         mono_arch_get_call_filter () and make it non-static, for consistency with the
6302         other architectures.
6303
6304 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
6305
6306         * mini.c:
6307         * local-propagation.c:
6308         * mini-x86.c: Correct the name of arch defines.
6309
6310 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6311
6312         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
6313         NO_EMULATE_LONG_SHIFT_OPS define.
6314
6315 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
6318         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
6319
6320         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
6321         MACH fixes. Merged from the 2.0 branch.
6322
6323         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
6324
6325         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
6326         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
6327
6328         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
6329
6330         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
6331         mono_marshal_get_native_wrapper () signature changes.
6332
6333 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
6334
6335         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
6336         conversion bug under arm.
6337
6338 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
6339
6340         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
6341
6342         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
6343         with overflow checking.
6344
6345 2008-08-05  Marek Habersack  <mhabersack@novell.com>
6346
6347         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
6348         to the genmdesc.pl file
6349
6350 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
6351
6352         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
6353         arg_array in the soft-float versions of the LOAD/STORE macros.
6354
6355         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
6356         implementation.
6357
6358         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
6359
6360 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6361
6362         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
6363         a float HFA. Fixes #413621.
6364
6365 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
6366
6367         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
6368         frame_size to args_size. Fixes build.
6369
6370 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6371
6372         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
6373         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
6374
6375         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
6376         the stack are not unaligned. Fixes #413247.
6377         
6378 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
6379
6380         * mini.c: update jitted methods performance counters.
6381
6382 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6383
6384         * mini-exceptions.c: increase the exceptions thrown performance
6385         counter in mono_handle_exception ().
6386
6387 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
6388
6389         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
6390         can work with netmodules.
6391
6392 2008-07-28  Geoff Norton  <gnorton@novell.com>
6393
6394         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
6395         regression tests.
6396
6397 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6398
6399         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
6400         correct place.
6401
6402 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
6403
6404         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6405           The float param registers and other param registers must be the 
6406           same index on Windows x64.
6407
6408         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
6409           ArgValuetypeAddrInIReg argument case.  Setting the argument
6410           op to OP_VTARG_ADDR (OP_REGOFFSET)).
6411
6412         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
6413           variable computed above as the copy length for arguments of storage
6414           type ArgValuetypeAddrInIReg.
6415
6416         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
6417           ArgValuetypeAddrInIReg argument case.  This case will rely on
6418           mono_arch_emit_outarg_vt to emit the correct code later in the process.
6419
6420         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
6421           a 32 byte stack allocation for all calls.  We will omit the adjustment for
6422           jump and tail call instructoins as they do not follow the typical call behavior.
6423
6424         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
6425           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6426           local variable and pass the local variable by reference to the called method.
6427
6428         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
6429           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
6430           of a struct is passed in a register it must be saved with the other
6431           volatile argument on the stack.
6432
6433         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
6434           frame pointer the stack adjustment value must be saved to the unwind 
6435           info structure.
6436
6437         Contributed under MIT/X11 license.
6438
6439 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6440
6441         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
6442         which got lost in the merge.
6443
6444 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6445
6446         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
6447         build.
6448
6449         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
6450         
6451         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
6452         icalls, since they won't be patched.
6453
6454         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
6455         different code sequence when running under valgrind to prevent some valgrind
6456         errors.
6457
6458         * iltests.il.in: Add new regression test.
6459
6460         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
6461         end with a throw.
6462
6463         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
6464         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
6465
6466         * iltests.il.in: Add new test.
6467
6468         * aot-compiler.c: Fix some warnings.
6469
6470         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
6471         Fixes #412494.
6472
6473 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6474
6475         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
6476         (mini_usage_jitdeveloper): Add a missing --wapi option.
6477
6478 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6479
6480         * mini-codegen.c: Simplify the is_fp macros.
6481         (free_up_ireg): Remove, use free_up_reg instead.
6482         (free_up_reg): Fix the fp case.
6483
6484 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6485
6486         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
6487         lowered earlier.
6488
6489         * exceptions-x86.c: Merge some changes which seemed to have got lost
6490         in the linear-ir merge.
6491
6492         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
6493
6494         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
6495         long vreg volatile even if the variable was already created.
6496
6497         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
6498         volatile variables.
6499
6500 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6501
6502         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
6503
6504         * mini.c (mono_jit_compile_method_inner): Add support for 
6505         MONO_EXCEPTION_BAD_IMAGE.
6506
6507         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
6508         mini_method_get_context () returns NULL. Fixes #356531.
6509
6510         * mini.c (mono_method_to_ir): Ditto.
6511         
6512         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
6513         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
6514
6515 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6516
6517         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
6518         in the LDFTN implementation.
6519
6520 2008-07-25  Mark Probst  <mark.probst@gmail.com>
6521
6522         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
6523         code, patch calls to icalls, too, even if they're not in the
6524         shared generic code hash.  Fixes #411962.
6525
6526 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6527
6528         * cpu-x86.md: Increase the length of the fcall opcodes.
6529
6530         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
6531         calls returning floats.
6532
6533         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
6534         on NEWARR.
6535         
6536         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
6537         missed earlier.
6538
6539         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
6540         into the domain->method_code_hash.
6541
6542         * aot-compiler.c: Fix win32 build.
6543
6544         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
6545         
6546         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
6547         gshared NEWARR implementation.
6548
6549         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
6550
6551         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
6552         can be used outside of method_to_ir.
6553
6554         * mini.h (MonoCompile): Add arg_types field.
6555
6556         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
6557         
6558         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
6559         the values of the local arg_array and param_types array.
6560
6561 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6562
6563         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
6564         got accesses might only get generated later when NEWOBJ is decomposed.
6565         
6566         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
6567         looking up the native code of the target method when a delegate is called
6568         for the first time.
6569
6570         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
6571         optimization.
6572
6573         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
6574
6575         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
6576         AOT work on platforms without a working dlsym implementation.
6577
6578         * mini.h: Bump AOT image format version.
6579         
6580 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6581
6582         * mini-exceptions.c: Free a MonoType with
6583         mono_metadata_free_type() instead of g_free().
6584
6585         * aot-runtime.c: Free a MonoType.
6586
6587 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6588
6589         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
6590         optimization.
6591
6592         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
6593         fp stack on x86.
6594
6595 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
6596         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
6597         profiler hook.
6598
6599 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6600
6601         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
6602         NEWOBJ calls on valuetypes.
6603
6604         * iltests.il.in: Add new test.
6605
6606         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
6607
6608 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6609
6610         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
6611         is no longer needed.
6612
6613         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
6614         non register sized integer arguments.
6615         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
6616         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
6617         emit_memcpy2 ().
6618
6619         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
6620         CEE_MONO_RETOBJ.
6621         
6622         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
6623         two a binop with different sized arguments is emitted.
6624
6625         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
6626         instruction in the ins==NULL case.
6627
6628 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6629
6630         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
6631
6632         * mini-x86.c: Fix osx build.
6633
6634         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
6635         opcodes as well.
6636
6637         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
6638         instruction for non int sized variables.
6639
6640         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
6641         implementation.
6642
6643 2008-07-23  Robert Jordan  <robertj@gmx.net>
6644
6645         * method-to-ir.c: Fix MSVC build.
6646
6647 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6648
6649         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
6650         a non int sized type, widen it to an int since newer versions of gcc seem to
6651         generate code which needs this.
6652
6653         * ssa2.c abcremoval2.c: Fix warnings.
6654
6655         * *: Merge the Linear IR branch.
6656
6657         The original branch is at trunk/branches/vargaz/mini-linear-il, and
6658         the ChangeLog file there describes all the changes done over the years. 
6659         Further documentation can be found at www.mono-project.com/Linear_IL.
6660
6661 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6662
6663         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6664           The float param registers and other param registers must be the 
6665           same index on Windows x64.
6666
6667         Contributed under MIT/X11 license.
6668
6669 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
6670
6671         * mini.c: Make the previous fix GC safe.
6672
6673 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
6674
6675         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
6676
6677 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6678
6679         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
6680           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
6681           ArgValuetypeAddrInIReg instead.
6682
6683         Contributed under MIT/X11 license.
6684
6685 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
6686
6687         * mini-codegen.c (get_register_spilling): Fix a warning.
6688
6689 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
6690
6691         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
6692         for types which the initialization fails. Raises the provided exception
6693         at the right stop after cleanup.
6694
6695 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
6696
6697         * aot-compiler.c: Free most of the memory allocated during compilation.
6698
6699         * mini.c (mini_parse_debug_options): Fix a leak.
6700         
6701         * mini.c (mini_method_compile): Don't add the method to the jit info tables
6702         during aot compilation.
6703
6704 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
6705
6706         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
6707         it has too much register pressure.
6708
6709 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
6710
6711         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
6712
6713 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6714
6715         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6716         on x86.
6717
6718         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6719         on amd64 similar to the way it is done on arm.
6720
6721         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6722
6723         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
6724         consistency, normalize error messages, avoid loading aot-only modules in
6725         normal mode.
6726
6727         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
6728         for consistency.
6729
6730         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
6731
6732 2008-07-11  Martin Baulig  <martin@ximian.com>
6733
6734         * debug-debugger.h
6735         (MonoDebuggerInfo): Add `interruption_request'.
6736
6737 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6738
6739         * aot-compiler.c (emit_plt): Remove some dead code.
6740
6741         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
6742
6743         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
6744         return the plt info offset belonging to a given plt entry.
6745
6746         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
6747         mono_aot_get_plt_info_offset.
6748         
6749         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
6750         similar to the amd64 code by makeing jumps through a separate jump table 
6751         instead of embedding the jump addresses into the code.
6752
6753 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
6754
6755         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
6756         method.
6757
6758 2008-07-10  Martin Baulig  <martin@ximian.com>
6759
6760         * mini.c (mini_method_compile): Disable generics sharing when
6761         running in the debugger.
6762
6763 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6764
6765         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
6766
6767         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
6768         the local register allocator from running out of registers on x86 when 
6769         using aot.
6770
6771 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
6772
6773         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
6774         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
6775         C4146.
6776
6777         Contributed under MIT/X11 license.
6778
6779 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6780
6781         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
6782         speed up the assembler.
6783
6784 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6785
6786         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
6787         support.
6788
6789         * mini.c: Move the soft float handling macros a bit earlier, add 
6790         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
6791         place.
6792
6793         * mini.h: Add prototype for mono_arch_fixup_jinfo.
6794
6795         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
6796         read-only to help catch code allocation requests.
6797         
6798         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
6799         and turn it off when using --aot-only or when compiling with --aot=full.
6800
6801         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
6802         jump table for switches from the normal domain mempool, not the code
6803         manager.
6804
6805         * mini-trampolines.c (get_unbox_trampoline): New function to return an
6806         unbox trampoline which handles aot-only mode too.
6807
6808         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
6809         an AOTed unbox trampoline.
6810
6811         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
6812
6813 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6814
6815         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
6816         ""
6817
6818         Contributed under MIT/X11 license.
6819
6820 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6821
6822         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
6823           the unwind information for the method at the end of the allocated block.
6824           
6825         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
6826           MonoCompileArch to hold the unwind info for SEH on Winx64
6827         
6828         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
6829           frame pointer info for the method being compiled.
6830           
6831         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
6832           the call to mono_exception_from_token.
6833           
6834         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
6835           storing the method prolog information in a format that the Winx64 SEH can understand.  This
6836           information is stored a the end of the method block because it is all 32-bit offset based.
6837
6838         Contributed under MIT/X11 license.
6839
6840 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6841
6842         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
6843
6844         * wapihandles.c: Fix warnings.
6845
6846         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
6847         mode.
6848
6849         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
6850         mono_jit_compile_method in aot-only mode since that calls the type 
6851         initializer.
6852         
6853         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
6854         get_delegate_invoke_impl in aot-only mode.
6855
6856         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
6857
6858 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
6859
6860         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
6861
6862         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
6863         is on by default.
6864
6865         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
6866
6867         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
6868         init trampoline from the AOT file as well.
6869
6870         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
6871         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
6872         code.
6873
6874         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
6875         mono_init.
6876
6877         * exceptions-amd64.c: Add _full variants for the remaining exception code
6878         creation functions as well, allow emission of relocatable code, remove
6879         caching since that is now done by the caller.
6880
6881         * mini-exceptions.c: Add _full variants for the remaining exception code
6882         creation functions as well, add aot-only support.
6883
6884         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
6885         if we can determine a proper token for them.
6886         (add_wrappers): Add a few more wrappers.
6887         (emit_method_code): Remove some dead code.
6888         (emit_trampolines): Emit exception code too.
6889
6890         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
6891
6892         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
6893         mono_array_new_va which avoids varargs.
6894
6895         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
6896
6897         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
6898         mono_arch_create_specific_trampoline () in all places.
6899
6900         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
6901         a bit so it can be used for other things as well.
6902         
6903         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
6904         on demand as well.
6905
6906         * exceptions-amd64.c: Rename the caching from the exception code creation
6907         functions, it is done by the caller instead.
6908         
6909         * exceptions-amd64.c: Change the signature of the exception code creation 
6910         functions to allow the creation of relocatable code later.
6911
6912         * mini-exceptions.c: Add a set of functions to query the various 
6913         runtime-generated exception functions.
6914
6915         * mini.c mini-exceptions.c: Use the newly added functions instead of the
6916         mono_arch_.. () functions.
6917         
6918 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6919
6920         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
6921
6922         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
6923
6924         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
6925         (mini_get_vtable_trampoline): Ditto.
6926
6927         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
6928         code in the AOT case by returning the code size and a list of relocations to
6929         the caller.
6930
6931         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
6932
6933 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
6934
6935         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
6936           clean the stack.
6937
6938         Contributed under MIT/X11 license.
6939
6940 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
6941
6942         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
6943         so the buffer size can be computed correctly. Fixes #404735.
6944
6945         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
6946         normally as cfg->debug_info is already freed.
6947
6948 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
6949
6950         * mini-amd64.c: For calls returning vtypes in registers, don't store
6951         the return address on the stack, instead allocate a separate local for
6952         it. Fixes #404729.
6953
6954 2008-07-05  Mark Probst  <mark.probst@gmail.com>
6955
6956         * mini-trampolines.c, mini.h: Add an argument to
6957         mono_create_jit_trampoline_in_domain() for turning off the adding
6958         of the sync wrapper.
6959
6960         * mini.c: Use the JIT trampoline without sync instead of
6961         ldftn_nosync in static RGCTX invoke wrappers so that the call can
6962         be patched.
6963
6964 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6965
6966         * driver.c: Turn on GSHARED optimization by default.
6967
6968 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
6969
6970         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
6971         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
6972
6973         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
6974         create a variant of the generic trampoline code callable from AOTed trampolines.
6975
6976         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
6977         trampoline code callable from AOTed trampolines.
6978
6979         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
6980
6981 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6982
6983         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
6984         pass-through manner.
6985
6986         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
6987         and don't fail sharing for them anymore.
6988
6989         * mini-exceptions.c: Handle exceptions in shared generic methods.
6990
6991         * generic-sharing.c: When checking the context of a generic
6992         method, also check its class's context.  Don't treat wrappers as
6993         sharable.
6994
6995         * mini-trampolines.c: Some code factored out to
6996         metadata/generic-sharing.c.  Handle the MRGCTX case.
6997
6998         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
6999         we must deal with the method being of another instantiation of the
7000         class.  Add static rgctx invoke wrappers to generic methods.
7001
7002 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7003
7004         * mini.c: Provide all jit infos of generic shared methods with a
7005         generic jit info.
7006
7007         * mini-exceptions.c: Handle the new situation that a generic info
7008         might be available, but not info about the this/vtable/mrgctx
7009         variable.
7010
7011 2008-07-03  Mark Probst  <mark.probst@gmail.com>
7012
7013         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
7014         generic methods.
7015
7016 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
7017
7018         * dominators.c (check_dominance_frontier): Fix a warning.
7019
7020         * mini.h: Add some missing prototypes.
7021
7022         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
7023
7024         * driver.c (mono_jit_init_version): Correct the comments since the first
7025         argument should be the name of the root domain, not a filename.
7026
7027         * aot-runtime.c (make_writable): Error out if this is called while running
7028         with --aot-only.
7029         (load_aot_module): Ditto.
7030
7031         * aot-compiler.c: Really fix the computation of method indexes.
7032
7033         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
7034         optimizations as this is no longer called frequently.
7035
7036         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
7037         method and the invoke impl code and pass it to the delegate trampoline instead of
7038         just the delegate class.
7039
7040 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
7041
7042         * aot-compiler.c: Fixup the computation of method indexes.
7043         (add_wrappers): Create the base methods of the runtime invoke wrappers using
7044         the method builder infrastructure.
7045
7046         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
7047         has no header.
7048
7049         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
7050         mode, load the method right away instead of creating a trampoline.
7051
7052         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
7053
7054         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
7055         some checks a bit.
7056
7057 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
7060         (mono_aot_load_method): Use method_index instead of method->token.
7061
7062         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
7063         can handle icalls etc. properly.
7064
7065         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7066
7067         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
7068
7069         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
7070         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
7071         JIT_ICALL_ADDR patch type.
7072
7073         * patch-info.h: Add JIT_ICALL_ADDR patch type.
7074
7075         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
7076         request flag.
7077         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
7078
7079         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
7080
7081 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
7082
7083         * mini.c: Use domain->jit_code_hash_lock for controlling access to
7084         domain->jit_code_hash.
7085
7086 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
7087
7088         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
7089
7090 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
7091
7092         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
7093         get_this_arg_from_call, let it compute it when needed.
7094
7095         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
7096         gsctx from code only when needed.
7097
7098         * mini-trampolines.c (get_generic_context): Rename this to 
7099         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
7100         it can be called by the arch backends.
7101
7102         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
7103
7104 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
7105
7106         * driver.c (mono_main): Add experimental --aot-only command line option.
7107
7108         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
7109         set.
7110
7111 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
7112
7113         * driver.c (DllMain): Remove mono_module_handle.
7114
7115         Contributed under MIT/X11 license.
7116
7117 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
7118
7119         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
7120         for emitting methods which are not in the source assembly. Detect and report
7121         failure of assembling+linking.
7122         
7123         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
7124
7125         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
7126
7127 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
7128
7129         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
7130
7131 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
7132
7133         * mini.h: Remove some obsolete prototypes.
7134
7135         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
7136
7137 2008-06-24  Mark Probst  <mark.probst@gmail.com>
7138
7139         * mini.c (get_object_generic_inst): Variable-sized arrays are not
7140         supported by Visual Studio, so use alloca().
7141
7142 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
7143
7144         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
7145         Fixes #402585.
7146
7147 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7148
7149         * mini.c: Fail sharing of a generic method if it contains an open
7150         catch clause (because we don't pass MRGCTXs yet).
7151
7152 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7153
7154         * mini.c: When compiling a method with generic sharing, insert the
7155         method instantiated with an all-Object generic context into the
7156         jit info table, instead of the context of the first instantiation
7157         of the method we happen to compile.
7158
7159 2008-06-18  Martin Baulig  <martin@ximian.com>
7160
7161         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
7162         `major_version' and `minor_version'.
7163
7164 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7165
7166         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
7167         mono_method_is_generic_sharable_impl() takes an additional
7168         argument specifying whether to treat type variables as reference
7169         types.
7170
7171 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7172
7173         * mini.h: Removed obsolete prototypes.
7174
7175 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7176
7177         * mini.c: Don't fail generic sharing for initobj and sizeof - we
7178         already handle them.
7179
7180 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7181
7182         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
7183         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
7184         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
7185         tramp-x86.c: Added a MonoGenericContext* argument to
7186         mono_arch_get_unbox_trampoline() so that it can call other
7187         functions which require it.
7188
7189 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7190
7191         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
7192         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
7193         mono_arch_get_this_arg_from_call() takes a
7194         MonoGenericSharingContext* as well.
7195
7196 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7197
7198         * mini.c: Factor out code for emitting unbox into emit_unbox() and
7199         implement generic sharing of unbox.
7200
7201 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7202
7203         * mini.c: Don't compute the vtable to determine whether a field is
7204         special static, because it might not work for open types.
7205
7206 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7207
7208         * mini.c: Removed the unused token_type and token_source arguments
7209         from get_runtime_generic_context_ptr().
7210
7211 2008-06-17  Marek Habersack  <mhabersack@novell.com>
7212
7213         * mini.c (ADD_BINOP): fix the build
7214
7215 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
7216
7217         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
7218         a widening op.
7219
7220 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7221
7222         * mini.h: Removed class relations enum that's not used anymore.
7223
7224 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7225
7226         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
7227
7228         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
7229         the lazy fetch trampoline access code.
7230
7231 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
7232
7233         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
7234
7235 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
7236
7237         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
7238
7239         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
7240
7241         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
7242
7243 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7244
7245         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
7246         intrinsics.
7247
7248         * mini-ops.h: Add MIN/MAX_UN opcodes.
7249
7250         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
7251         intrinsics.
7252
7253         * basic-math.cs: Add more min/max tests.
7254
7255         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7256
7257 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7258
7259         * mini.c: Small fix in the prologue of emit_castclass.
7260
7261 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7262
7263         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7264
7265         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
7266         do not work even for unsigned types. Fixes #400014.
7267
7268         * basic-math.cs: Add regression tests for unsigned Min/Max.
7269
7270 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7271
7272         * mini.c: Added additional context_used argument to several
7273         functions, which will be needed for sharing generic methods.  Use
7274         GET_RGCTX macro wherever appropriate.  Declare only one
7275         context_used in mono_method_to_ir().
7276
7277 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7278
7279         * mini.c, generic-sharing.c: Removed generic class relations.
7280
7281         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
7282         functions due to MRGCTX changes.
7283
7284 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7285
7286         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
7287         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
7288         with calculated IMT.
7289
7290         * mini.c: Generic sharing of calls via generic interfaces.
7291
7292         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
7293         generic method with non-constant MonoGenericContext*.  Instead,
7294         the context is taken out of the method itself.
7295
7296 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7297
7298         * mini.c: Generic sharing of ldvirtftn.
7299
7300 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7301
7302         * mini.c: Generic sharing of ldftn.
7303
7304 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7305
7306         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
7307
7308 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7309
7310         * mini.c: Generic sharing of the special case of ldtoken followed
7311         by a call to GetTypeFromHandle.
7312
7313 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7314
7315         * mini.c: Generic sharing of box for nullable types.
7316
7317 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7318
7319         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
7320         are passed on the stack. Fixes #324807.
7321
7322 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
7323
7324         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
7325         for the ArgValuetypeAddrInIReg case.
7326
7327         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
7328         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
7329
7330         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
7331         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7332         local variable and pass the local variable by reference to the called method.
7333           
7334         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
7335         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
7336
7337         Contributed under MIT/X11 license.
7338
7339 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
7340
7341         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
7342
7343         * debug-mini.c (mono_debug_print_vars): Release memory after printing
7344         everything.
7345
7346 2008-06-10  Martin Baulig  <martin@ximian.com>
7347
7348         * debug-mini.c
7349         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
7350
7351 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
7352
7353         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
7354         possible error when no arguments are passed.
7355
7356         Contributed under MIT/X11 license.
7357
7358 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
7359
7360         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
7361         where the file name is NULL.
7362
7363 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7364
7365         * mini.c: Fix s390 build.
7366
7367 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
7368
7369         * trace.c (mono_trace_parse_options): Fix warnings.
7370
7371         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
7372
7373 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7374
7375         * mini.c (remove_block_if_useless): Avoid printing the method name.
7376         
7377         * mini.c: Remove needless setting of ins->cil_code which is now done by 
7378         MONO_INST_NEW.
7379
7380         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
7381         LMF. Not yet used.
7382
7383         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
7384         translated code after it has been patched.
7385
7386 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7387
7388         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
7389         avoid problems during code patching on SMP systems.
7390         (emit_call): Avoid adding a patch info which is already added by 
7391         emit_call_body.
7392         (mono_arch_emit_exceptions): Ditto.
7393
7394 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
7395
7396         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
7397         MONO_TYPE_ISSTRUCT already checks for it.
7398
7399 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
7400
7401         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
7402           structs with floats on Winx64 the float registers are not used.  
7403           The integer registers are always used..
7404         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
7405           only one register will be used and only if the size of the struct 
7406           is 1,2,4, or 8 bytes.
7407
7408         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
7409           to work for Winx64.
7410
7411         Contributed under MIT/X11 license.
7412
7413 2008-06-05  Martin Baulig  <martin@ximian.com>
7414
7415         * debug-debugger.c (debugger_lookup_class): Also call
7416         mono_class_setup_methods() here; we're only called from RTI.
7417
7418 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
7419
7420         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
7421         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
7422         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
7423         Post-process object files and add dtrace-generated object, if necessary.
7424
7425         Contributed under MIT/X11 license.
7426
7427 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7428
7429         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
7430         element class.
7431
7432         * mini.c: Generic sharing for unbox.any and castclass.
7433
7434 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7435
7436         * mini.c: Ignore tailcall prefix in shared generic code and when
7437         doing calls which require a vtable/rgctx argument.
7438
7439 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7440
7441         * mini.c: Don't free the JIT info.
7442
7443         * driver.c: Changes in the JIT info table testing code.
7444
7445 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7446
7447         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
7448         interruption. Fix some warnings.
7449
7450         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
7451         interruption_checkpoint.
7452
7453 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
7454
7455         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
7456         from embedding applications.
7457
7458 2008-06-02  William Holmes  <billholmes54@gmail.com>
7459
7460         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
7461           reserving 32 bytes on the stack when making calls. 
7462
7463         Contributed under MIT/X11 license.
7464
7465 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
7466
7467         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
7468         the linear IL branch.
7469
7470         * driver.c: Print out more information for --version on arm.
7471
7472 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
7473
7474         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
7475         bb_exit instead, since out of line bblocks might not actually be emitted
7476         out-of-line.
7477         
7478         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
7479         maximum epilog size for out of line bblocks if tracing is enabled.
7480
7481         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
7482
7483 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
7484
7485         * arrays.cs: Regression tests for allocating arrays with negative sizes.
7486
7487 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
7488
7489         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
7490         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
7491         opcodes.
7492
7493 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
7494
7495         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
7496         the 'value' to store is a constant.
7497
7498         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
7499
7500         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
7501         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
7502
7503 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
7504
7505         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
7506         for accessing method->generic_container.
7507
7508 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
7509
7510         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
7511         
7512         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
7513
7514         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
7515
7516         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
7517         fails.
7518
7519 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
7520
7521         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
7522
7523         * mini.c: Handle the case when mono_class_vtable () fails.
7524
7525 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
7526         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
7527         the stat profiler.
7528
7529 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7530
7531         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
7532         together with domain sharing.
7533
7534 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7535
7536         * mini.c: Treat callvirts to final methods like non-virtual calls
7537         when doing generic sharing, i.e. look them up in the runtime
7538         generic context.
7539
7540 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7541
7542         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
7543         with computed types (for generic sharing).
7544
7545         * mini.c: Generic sharing for mkrefany and refanyval.
7546
7547 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
7548
7549         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
7550         possible.
7551
7552         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
7553         the generic sharing code.
7554         
7555         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
7556         when needed.
7557
7558 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7559
7560         * mini.h: Remove the declaration of mono_aot_init_vtable ().
7561
7562 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
7563
7564         * driver.c: updated copyright date
7565
7566 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7567
7568         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
7569         needed.
7570
7571 2008-05-19  Martin Baulig  <martin@ximian.com>
7572
7573         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
7574         pointing to the new `_mono_debug_using_mono_debugger' variable.
7575
7576         * driver.c
7577         (mono_main): Check mono_debug_using_mono_debugger() rather than
7578         the `MONO_INSIDE_MDB' environment variable to check whether we're
7579         inside the debugger.
7580
7581 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
7582
7583         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
7584         argument.
7585
7586 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
7587
7588         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
7589
7590         * mini.c: Added mini_assembly_can_skip_verification. This
7591         function checks if the assembly requested to skip verification. 
7592         Fixes part of #387274.
7593
7594 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7595
7596         * mini.c (mini_get_method): Disable the check for open generic classes when
7597         using generic sharing.
7598
7599         * generics.cs: Add a test for #387034.
7600
7601         * mini.c (mini_get_method): Check whenever the method class is an open generic
7602         type, and return NULL in that case, causing a verification error. Fixes
7603         #384123.
7604
7605 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7606
7607         * driver.c (mono_main): Revert r102623. The right
7608         thing to do is to enable the verifier under verifiable
7609         unless a --security flag was passed.
7610
7611         We need this non-trivial behavior for --verify-all otherwise
7612         mcs-compileall won't be able to use it. As it needs everything to
7613         be verified under validil.
7614
7615 2008-05-06  Martin Baulig  <martin@ximian.com>
7616
7617         Fix #383749.
7618
7619         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
7620         (mono_debugger_thread_cleanup): Likewise.
7621         (mono_debugger_extended_notification): Likewise.
7622
7623 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7624
7625         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
7626         against both inflated and non-inflated methods. We need to check against the
7627         generic definition for cases where the instantiated method is not visible.
7628         We need to check against the inflated types for cases where the instantiation
7629         changes any super type. This fixes #382986.
7630
7631         Note that this doesn't need to be applied to other parts of mono_method_to_ir
7632         that check for visibiliy as generic params only appears as the type subject
7633         of tokens on call opcodes. Field manipulation and ldftn must always
7634         target an exact type.
7635
7636 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7637
7638         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
7639         if no related --security flag is passed.
7640
7641 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7642
7643         * mini-arch.h: Prepare support for ppc64.
7644
7645         Contributed under MIT/X11 license.
7646
7647 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7648
7649         * aot-runtime.c: Prepare support for ppc64.
7650
7651         Contributed under MIT/X11 license.
7652
7653 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7654
7655         * mini-ops.h: Prepare support for ppc64.
7656
7657         Contributed under MIT/X11 license.
7658
7659 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
7660
7661         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
7662
7663         Contributed under MIT/X11 license.
7664
7665 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
7666
7667         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
7668         assemblies, since aot_name is not a full path, causing us to load MS.NET 
7669         assemblies on windows.
7670
7671 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
7672
7673         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
7674         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
7675         * main.c: Use UTF-8 encoded command line instead of Windows default code
7676         page on Windows to support Unicode.
7677         * driver.c (DllMain): New function for mixed-mode assembly support.
7678         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
7679         export __stdcall functions without decoration.
7680
7681         Contributed under MIT/X11 license.
7682
7683 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7684
7685         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
7686         saving it very early.
7687
7688 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7689
7690         * mini.h, mini.c: Lots of code for accessing the old RGCTX
7691         deleted.  The only way to access the new RGCTX is via the
7692         trampline.
7693
7694         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
7695         vtable instead of the RGCTX to static methods.
7696
7697         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
7698         accessing the new RGCTX.
7699
7700         * generic-sharing.c: There is no separation between self, type
7701         arguments and other types in the RGCTX anymore.
7702
7703 2008-04-25  Jonathan Chambers <joncham@gmail.com>
7704
7705         * mini-amd64.c (add_general): Remove previous stack adjustment.
7706         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
7707         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
7708         for 32 bytes of stack space reserved for all calls.
7709         
7710         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
7711         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
7712         adjustment.
7713         
7714         Code contributed under MIT/X11 license.
7715
7716 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
7717
7718         * mini.c (mini_method_verify): Only verify non-inflated methods, check
7719         against the root definition, peeling out method and type instantiations.
7720         Cache verify success results, code that fails verification is still
7721         checked multiple times.
7722
7723 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
7724
7725         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
7726
7727 2008-04-23  Jonathan Chambers <joncham@gmail.com>
7728
7729         * mini-amd64.c (add_general): Always increment stack on Win64.
7730         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
7731         on Win64.
7732         
7733         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
7734         stack based argument handling on Win64.
7735         
7736         Code contributed under MIT/X11 license.
7737
7738 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
7739
7740         * Makefile.am (version.h): Add support for git-svn.
7741
7742 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
7743
7744         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
7745         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
7746         avoiding allocations and libc functions which might deadlock.
7747         
7748         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
7749         'no-gdb-backtrace' option is set.
7750
7751         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
7752
7753         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
7754
7755 2008-04-21  Martin Baulig  <martin@ximian.com>
7756
7757         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
7758         and `get_lmf_addr'; `notification_address' is no longer a pointer.
7759
7760 2008-04-21  Martin Baulig  <martin@ximian.com>
7761
7762         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
7763         `thread_vtable', `event_handler_ptr' and `event_handler'.
7764
7765 2008-04-21  Martin Baulig  <martin@ximian.com>
7766
7767         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
7768         allows delayed initialization of the `executable_code_buffer' when
7769         attaching.
7770
7771 2008-04-21  Martin Baulig  <martin@ximian.com>
7772
7773         * mini.h (mono_debugger_create_notification_function): Removed.
7774         * tramp-*.c (mono_debugger_create_notification_function): Removed.
7775
7776         * mdb-debug-info64.s
7777         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7778
7779         * mdb-debug-info32.s
7780         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7781
7782         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
7783         currently only works on x86 and x86_64, so don't create it on ppc.
7784
7785 2008-04-21  Martin Baulig  <martin@ximian.com>
7786
7787         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
7788
7789         * mini.c
7790         (mini_method_compile): In the fp elimination check, check
7791         `debug_options.mdb_optimizations' in addition to
7792         mono_debug_using_mono_debugger().       
7793
7794         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
7795         disable some JIT optimizations which are only disabled when
7796         running inside the debugger.
7797         Added `--help-debug' option to describe the debugging options.
7798         (parse_debug_options): New static function to parse the `--debug'
7799         options, so we can easily add more stuff in future.
7800
7801 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
7802
7803         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
7804         the method has no body.
7805
7806 2008-04-19  Jonathan Chambers <joncham@gmail.com>
7807
7808         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
7809         assembly is not allowed in MSVC 64-bit compiler. 
7810         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
7811         as we get floating point exceptions everywhere.
7812         
7813         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
7814         correctly align arguments for call to throw_exception.
7815         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
7816         
7817         Code contributed under MIT/X11 license.
7818
7819 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
7820
7821         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
7822
7823 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
7824
7825         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
7826
7827         * mini-amd64.c (NEW_INS): Set cil_code.
7828
7829         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
7830         from mini-amd64.c so all debugger related logic is in one place.
7831
7832         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
7833         later won't have a random ip assigned to them.
7834
7835 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
7836
7837         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
7838         the arch specific function initializes code_size.
7839         (mono_create_delegate_trampoline): Ditto.
7840
7841         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
7842         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
7843         platforms.
7844
7845         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
7846         running under the debugger.
7847
7848         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
7849         debugger.
7850
7851         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
7852         debugger. Also move the disabling of optimizations here from driver.c.
7853         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
7854         debugger.
7855
7856         * mini.h (MonoCompile): Add a few new flags.
7857
7858 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
7859
7860         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
7861         so the cil_code field of created MonoInst's is properly set.
7862         (mini_select_instructions): Ditto.
7863
7864         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
7865         (MONO_INST_NEW_CALL): Ditto.
7866
7867         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
7868         in many places so the ins->cil_code field is properly initialized.
7869
7870         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
7871         place.
7872
7873 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
7874
7875         * mini.c (mini_method_compile): Print a different message when compiling a 
7876         shared method.
7877         
7878         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
7879         > 1.
7880
7881 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7882
7883         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
7884         SSE2 instructions.
7885
7886         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
7887         
7888 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7889
7890         * mini.c (handle_stack_args): Make this return void since its return value was
7891         never used. Also set cfg->unverifiable for invalid IL instead of calling
7892         G_BREAKPOINT ().
7893
7894 2008-04-10  Mark Probst  <mark.probst@gmail.com>
7895
7896         * mini.c: Make sure "this" is live in catch clauses with type
7897         variables in shared generic code.
7898
7899 2008-04-08  Mark Probst  <mark.probst@gmail.com>
7900
7901         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
7902         generic_class_is_reference_type() to ensure the proper behaviour
7903         when sharing generic code and the type in question is a type
7904         argument.
7905
7906 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7907
7908         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
7909         race conditions when printing thread dumps. Fixes #377738.
7910
7911 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
7912         
7913         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
7914         shows up when both MonoInst arguments can cause aliasig.
7915         There is likely no way in the current JIT to trigger this problem, but
7916         it showed up in the development of generics sharing, when in a new
7917         opcode both args of an OP_GROUP can be aliases (addresses of a local).
7918         When the generics sharing code will be committed, its tests will be
7919         valid also for this bug.
7920
7921 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7922
7923         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
7924         PATCH_INFO_METHOD.
7925
7926         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
7927         NULL.
7928
7929 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
7930
7931         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
7932         use a more detailed exception message for InvalidCastException.
7933
7934         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
7935
7936         * driver.c (mono_main): Add --debug=casts option to turn on better 
7937         InvalidCastException message details.
7938
7939         * mini.c (mini_get_debug_options): New helper function to return the address of
7940         the debug_options variable.
7941
7942         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
7943         the jit_tls TLS variable.
7944
7945         * mini.c (mono_jit_tls): New TLS variable.
7946
7947         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
7948         option is used.
7949
7950 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
7951
7952         * mini.h: Removed verifer related stuff. This code was moved to verify.c
7953
7954         * mini.c: Removed verifer related stuff, code moved to verify.c.
7955
7956         * driver.c: Using code from verify.c instead of mini.c.
7957
7958 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
7959
7960         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
7961         longer valid.
7962
7963 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
7964
7965         * mini.c (check_for_method_verify): Enabling verification of
7966         corlib if mono_verify_all is set. Bugs in the verifier preventing that
7967         have been fixed.
7968
7969 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
7970
7971         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
7972         caller saved registers as well.
7973         
7974         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
7975         saved registers as well.
7976
7977 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
7978
7979         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
7980
7981         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
7982         code.
7983
7984 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
7985
7986         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
7987         to get_call_info.
7988         (get_call_info): Take a gsctx argument instead of 'cfg'.
7989
7990 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
7991
7992         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
7993         mono_verify_all is set.
7994
7995         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
7996
7997         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
7998
7999 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
8000
8001         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
8002         an exception.
8003
8004         * driver.c mini.c mini.h: Add a --verify-all development option to test the
8005         verifier and the code generated by the compiler.
8006
8007 2008-03-25  Mark Probst  <mark.probst@gmail.com>
8008
8009         * mini.c: Generic sharing of the non-nullable case of the box
8010         instruction.
8011
8012 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
8013
8014         * inssel.brg: Fix the build.
8015
8016         * iltests.il.in: Add a test for lconv.ovf.u8.un.
8017
8018 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
8019
8020         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
8021         Array:Address. Fixes #372410.
8022
8023         * iltests.il.in: New tests for readonly prefix.
8024
8025 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
8026
8027         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
8028         mini-trampolines.c.
8029
8030         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
8031         mini-exceptions.c.
8032
8033         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
8034         
8035         * mini.c (mono_decompose_op_imm): New helper function.
8036
8037         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
8038         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8039         return value.
8040
8041         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8042         mono_arch_output_basic_block. Fix warnings.
8043
8044         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
8045         for now.
8046
8047 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
8048
8049         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
8050         since the extra frame is now detected automatically inside the loop.
8051
8052         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
8053         opts which are now in mono_peephole_ins ().
8054         
8055         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
8056
8057         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
8058         frames and skip duplicate managed-to-native frames. Fixes #367665.
8059
8060         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8061         opts which are now in mono_peephole_ins ().
8062         (mono_arch_peephole_pass_2): Ditto.
8063
8064         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
8065
8066         * mini-codegen.c (mono_peephole_ins): New helper function containing the
8067         arch independent peephole optimizations.
8068
8069         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8070         opts which are now in mono_peephole_ins ().
8071
8072         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
8073         
8074         * mini-s390.c (mono_arch_output_basic_block): Fix build.
8075
8076         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
8077         pattern.
8078
8079         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
8080         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
8081         opcode. 
8082
8083 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
8084
8085         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
8086         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8087         return value.
8088
8089         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8090         mono_arch_output_basic_block. Fix warnings.
8091
8092 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8093
8094         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8095         conv.ovf.u.un.
8096
8097 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8098
8099         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8100         conv.ovf.u.un.
8101
8102         * iltests.il: Add new tests.
8103
8104 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
8105
8106         * mini.c: Removed Windows version macros.
8107
8108 2008-03-20  Mark Probst  <mark.probst@gmail.com>
8109
8110         * generic-sharing.c: Put reflection types in the extensible part
8111         of the runtime generic context.
8112
8113         * mini.c: Generic sharing of the GetTypeHandle special case of the
8114         ldtoken instruction.
8115
8116 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8117
8118         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
8119
8120         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
8121         
8122         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
8123         consistency with the other version on the linear IR branch.
8124
8125         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
8126
8127         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
8128
8129         * iltests.il.in: Add new tests.
8130
8131 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
8132
8133         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
8134
8135         * iltests.il.in: Add new tests.
8136
8137 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8138
8139         * mini.c: Two variables with the same name were declared in
8140         nesting contexts and one wasn't initialized.  Fixed.
8141
8142 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8143
8144         * mini.c: Generic sharing of the initobj instruction.
8145
8146 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
8147
8148         * mini.c: make the test to optimize ldtoken from typeof() more
8149         precise.
8150
8151 2008-03-18  Mark Probst  <mark.probst@gmail.com>
8152
8153         * mini.c: Generic sharing of the initobj instruction for reference
8154         types.
8155
8156 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8157
8158         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
8159         the mono_breakpoint_clean_code() code to perform bound checks.
8160
8161 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
8162
8163         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
8164         mono_arch_patch_callsite() to include the start of the managed method
8165         to be able to perform bound checks.
8166
8167 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8168
8169         * mini.c: Generic sharing for the isinst instruction.
8170
8171 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8172
8173         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8174         inssel-long32-mips.brg: Added opcodes for doing indirect calls
8175         with the runtime generic context argument.
8176
8177         * mini.c: Share calls to several types of unsharable methods by
8178         putting the address of the method code in the runtime generic
8179         context and doing an indirect call.
8180
8181         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8182         to switches.
8183
8184 2008-03-16  Mark Probst  <mark.probst@gmail.com>
8185
8186         * generic-sharing.c: Change due to a change in the runtime genric
8187         context API.
8188
8189 2008-03-15  Martin Baulig  <martin@ximian.com>
8190
8191         * tramp-x86.c
8192         (mono_arch_nullify_class_init_trampoline): Add call to
8193         mono_breakpoint_clean_code() to make things work when running
8194         inside the debugger.
8195
8196         * tramp-amd64.c
8197         (mono_arch_nullify_class_init_trampoline): Add call to
8198         mono_breakpoint_clean_code() to make things work when running
8199         inside the debugger.
8200
8201 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8202
8203         * inssel-long.brg (reg): Fix 64 bit build.
8204
8205 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8206
8207         * mini.c, mini.h: Share static generic code by passing it an
8208         implicit argument pointing to the runtime generic context.
8209
8210         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8211         inssel-long32-mips.brg: New opcodes for calling shared static,
8212         which need to be passed the runtime generic context.
8213
8214         * mini-amd64.c, mini-x86.c: Save the runtime generic context
8215         argument on the stack in the prologue if needed.  New function for
8216         finding the runtime generic context argument from the registers
8217         saved by the trampoline.
8218
8219         * mini-amd64.h, mini-x86.h: Specify which register to use for the
8220         runtime generic context argument.
8221
8222         * tramp-amd64.c: Also restore the register used for the runtime
8223         generic context argument.
8224
8225         * mini-trampoline.c: Resolve shared static calls by consulting the
8226         runtime generic context via the new argument.
8227
8228         * generic-sharing.c: Add an argument to sharability-checking
8229         functions that specifies whether type variables should be treated
8230         as sharable type arguments.
8231
8232         * inssel-x86.brg: Removed a superfluous, buggy rule.
8233
8234         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8235         to switches.
8236
8237 2008-03-14  Martin Baulig  <martin@ximian.com>
8238
8239         * debug-debugger.c (main_thread_handler): Call
8240         mono_runtime_run_main() without sending any notifications.
8241
8242         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
8243
8244 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8245
8246         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
8247
8248 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8249
8250         * tramp-x86.c: Fixed register restore offsets in the trampoline
8251         code for ECX and EDX.
8252
8253 2008-03-12  Geoff Norton  <gnorton@novell.com>
8254
8255         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
8256         different ucontext_t implementations.
8257         * exceptions-arm.c: Use the above defines to get exceptions working on 
8258         iPhone (based on a patch by Luke Howard lukeh@padl.com)
8259         * mini-arm.c: Implement iPhone icache support (based on a patch by
8260         Luke Howard lukeh@padl.com)
8261
8262 2008-03-12  Mark Probst  <mark.probst@gmail.com>
8263
8264         * mini.c: Enable generic sharing of calls to non-static
8265         non-interface non-generic non-value-type methods.
8266
8267         * mini-trampolines.c: Resolve calls from shared generic code.
8268
8269 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
8270
8271         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
8272
8273         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
8274
8275 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
8276
8277         * mini.c: some fixes for the AOT compiler.
8278
8279 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8280
8281         * cpu-amd64.md: Add clob:1 to some float opcodes.
8282
8283 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
8284
8285         * mini.h: Added MiniVerifierMode enumeration.
8286
8287         * mini.c: Added mini_verifier_set_mode to control
8288         the usage of the new verifier.
8289
8290         * mini.c (mono_method): Integrated the new verifier.
8291
8292         * driver.c: Extended --security option with validil and
8293         verifiable options to activate the new verifier.
8294
8295 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8296
8297         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
8298         optimization to ctors taking 0 or 2 arguments too.
8299
8300         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
8301         a bit.
8302
8303         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
8304
8305         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
8306
8307 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8308
8309         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
8310         non-aot case as well.
8311
8312         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
8313
8314         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
8315         changes.
8316
8317         * aot-compiler.c (encode_patch): Ditto.
8318
8319         * mini.h (G_MININT32): Fix the definition of this.
8320
8321 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
8322
8323         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
8324
8325         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
8326
8327 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8328
8329         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
8330         methods returning vtypes in registers.
8331         (mono_arch_allocate_vars): Ditto.
8332
8333         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
8334
8335         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
8336
8337         * generics.cs: Add a test from the linear IR branch.
8338
8339         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
8340
8341         * mini.c (inline_method): Cache failed inline attempts.
8342
8343 2008-03-04  Mark Probst  <mark.probst@gmail.com>
8344
8345         * mini.c: For shared methods of generic classes put the location
8346         of "this" into the MonoGenericJitInfo.
8347
8348         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
8349         register out of a MonoContext by register number.  Add the generic
8350         sharing context as an argument to mono_arch_find_this_argument().
8351
8352         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
8353         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
8354         for new arch function.
8355
8356         * mini-exception.c: Handle open exception clauses in shared
8357         generic code.
8358
8359         * mini-trampolines.c: Supply additional argument to
8360         mono_arch_find_this_argument().
8361
8362 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8363
8364         * Makefile.am (regtests): Run the bench.exe tests last.
8365
8366 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
8367
8368         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
8369         a bit.
8370
8371 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
8372
8373         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
8374         with MS.
8375
8376         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
8377         
8378         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
8379
8380         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
8381         whose class has no cctor.
8382
8383         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
8384
8385 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
8386
8387         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
8388         unverified.
8389
8390 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
8391
8392         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
8393         to be in sync with the code on the linear IR branch.
8394
8395         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
8396
8397         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
8398
8399 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
8400
8401         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
8402
8403         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
8404
8405         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
8406
8407         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
8408
8409         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
8410         
8411         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
8412         body.
8413
8414 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
8415
8416         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
8417         OP_LOADR4_MEMBASE emission.
8418
8419         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
8420         (mono_spillvar_offset_float): Ditto.
8421
8422         * mini-mips.c (mono_arch_emit_prolog): Ditto.
8423
8424         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
8425         emission.
8426
8427         * basic-long.cs: Add regression tests for them.
8428
8429         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
8430         use.
8431         (mono_arch_allocate_vars): Fix representation of single-precision float
8432         argument.
8433         (mono_arch_output_basic_block): Ditto.
8434
8435         * inssel-mips.brg: Ditto, remove duplicate items.
8436
8437         * mini-mips.c (emit_load_volatile_arguments): New function to handle
8438         arguments of tail calls as on other platforms.
8439         (mono_arch_output_basic_block): Handle tail calls.
8440
8441         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
8442         register.
8443
8444         * objects.cs (test_5_pass_static_struct): Add test for it.
8445
8446         Contributed under MIT/X11 license.
8447
8448 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
8449
8450         * Makefile.am: Use gmcs for compiling the regression tests.
8451
8452         * *.2.cs *.2.il: Rename to *.cs and *.il.
8453
8454 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
8455
8456         * regalloc.h: Make the vassign array smaller.
8457
8458         * mini.c (mini_method_compile): Remove an unused field in cfg.
8459
8460         * mini-codegen.c: Add a bunch of micro optimizations.
8461
8462 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
8463
8464         * regalloc.h: Remove some unused fields.
8465
8466 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
8467
8468         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
8469
8470         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
8471
8472 2008-02-22  Mark Probst  <mark.probst@gmail.com>
8473
8474         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
8475
8476         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
8477         trampoline: Fetch an entry from the runtime generic context.  If
8478         it's NULL, jump to the actual trampoline to fill the runtime
8479         generic context.  Otherwise, return it.
8480
8481         * mini.c: Call the lazy fetch trampoline to get entries out of the
8482         runtime generic context.
8483
8484         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
8485         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
8486         tramp-sparc.c: Stubs for the lazy fetch trampoline.
8487
8488 2008-02-21  Mark Probst  <mark.probst@gmail.com>
8489
8490         * mini.c: Fetch data out of the extensible part of the runtime
8491         generic context instead of calling a helper function.
8492
8493         * generic-sharing.c: Some functions moved into
8494         metadata/generic-sharing.c.  Helper function for fetching other
8495         types now checks and asserts against extensible rgctx (just for
8496         debugging purposes - the helper function isn't called anymore
8497         unless for debugging).
8498
8499 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8500
8501         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
8502         for tail calls up to the point that the tests in iltests.exe run. Also add a
8503         dummy CKFINITE implementation.
8504         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
8505         needed for trampoline LMF frames.
8506
8507         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
8508         trampoline LMF frames.
8509
8510 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
8511
8512         * mini.c (inline_method): clean any pending loader error when inlining fail.
8513         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
8514
8515 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8516
8517         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
8518
8519         * aot-runtime.c (decode_patch_info): Ditto.
8520
8521         * mini.c (mono_resolve_patch_target): Ditto.
8522         
8523         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
8524         icall wrappers.
8525
8526         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
8527         
8528         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
8529         if it references an icall address.
8530
8531 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
8532
8533         * cpu-s390x.md: Remove some more unused opcodes.
8534         
8535         * cpu-s390x.md: Remove some unused opcodes.
8536
8537         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
8538         mono_op_imm_to_op ().
8539
8540         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
8541         instead of a switch statement.
8542         
8543         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
8544         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
8545
8546         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
8547         
8548         * mini-codegen.c: Remove unused mono_regstate2_... functions.
8549
8550         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
8551         -1.
8552
8553 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
8554
8555         * driver.c (mono_main): Improve error reporting when an assembly cannot be
8556         opened. Fixes #362607.
8557
8558         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
8559
8560         * iltests.il.in: Add a test for static methods in interfaces.
8561
8562 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
8563
8564         * genmdesc.c (build_table): Fix a crash on older glib versions.
8565
8566         * cpu-sparc.md: Remove some unused opcodes.
8567         
8568         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
8569         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
8570
8571         * cpu-amd64.md: Remove some unused opcodes.
8572
8573         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
8574         like the other opcodes.
8575
8576 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
8577
8578         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
8579
8580         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
8581
8582         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
8583         variables 'cfg' instead of 'm' for consistency.
8584
8585         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
8586
8587         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
8588         argument holding the vtype return address, to avoid the ambigious use of
8589         cfg->ret for this purpose.
8590
8591         * mini.c (NEW_RETLOADA): Use vret_addr if set.
8592
8593         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
8594         
8595         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
8596         new mono_print_ins () function which only takes one argument.
8597
8598 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
8599
8600         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
8601         macro arguments.
8602
8603 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
8604
8605         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
8606
8607         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
8608
8609         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
8610         opcodes and other small changes.
8611
8612         * mini-ops.h: Add some new opcodes from the linear IR branch.
8613
8614         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
8615
8616         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
8617         opcodes, use the REG_MEMBASE opcodes instead.
8618         
8619         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
8620         opcodes, use the REG_MEMBASE opcodes instead.
8621         
8622         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
8623         linear IR branch.
8624
8625         * mini.c (mono_op_imm_to_op): New helper function.
8626
8627         * mini-ops.h: Add some opcodes from linear IR branch.
8628
8629 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
8630
8631         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
8632         <tsv@solvo.ru>.
8633
8634 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
8635
8636         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
8637         OP_ICONV_TO_R4/R8.
8638
8639         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
8640
8641 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
8642
8643         * aot-compiler.c (emit_method_code): Add an assert.
8644
8645         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
8646         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
8647         methods.
8648
8649 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
8650
8651         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
8652         some load/store opcodes so they are consistent. 
8653         (mono_arch_emit_prolog): Simplify some code.
8654
8655         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
8656
8657         * objects.cs: Add tests for large argument offsets on ARM.
8658
8659         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
8660         stack offsets. Fixes #359651.
8661
8662         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
8663
8664         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
8665
8666         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
8667
8668         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
8669
8670         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
8671
8672         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
8673         rid of CEE_CONV_R_UN.
8674
8675         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
8676
8677 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
8678
8679         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
8680
8681         * mini.c (mono_normalize_opcodes): Add some more opcodes.
8682
8683         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
8684
8685         * cpu-amd64.md: Remove some unused opcodes.
8686
8687         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
8688
8689         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
8690
8691         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
8692         arch specific functions for its parts. Call the peephole pass after local
8693         regalloc so the prolog can compute a more accurate max_offset.
8694         
8695         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
8696         the corresponding OP_I/OP_L opcodes.
8697
8698         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
8699
8700         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
8701
8702 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8703
8704         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
8705         as they are handled in mini.c.
8706
8707         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
8708         
8709         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
8710         case since it is handled in mini.c.
8711
8712         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
8713
8714         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
8715
8716         * *.c: Use the new opcodes in the IR and back end code.
8717
8718         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
8719
8720         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
8721
8722 2008-02-06  Mark Probst  <mark.probst@gmail.com>
8723
8724         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
8725         an assert because it has a race condition.
8726
8727 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8728
8729         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
8730
8731         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
8732
8733         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
8734
8735         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
8736         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
8737
8738 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
8739
8740         * cpu-amd64.md (move): Correct the maximum size of move.
8741
8742 2008-02-05  Mark Probst  <mark.probst@gmail.com>
8743
8744         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
8745         the generic class init trampoline to return quickly if the class
8746         is already inited.
8747
8748 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
8749
8750         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
8751         issues where an 32 bit callsite cannot be patched by a 64 bit address.
8752
8753 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
8754
8755         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
8756         branch.
8757
8758 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
8759
8760         * objects.cs: Add some soft-float tests.
8761
8762         * mini.c: Fix a couple more soft-float issues.
8763
8764         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
8765
8766         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
8767         avoid a REX prefix.
8768
8769 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
8770
8771         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
8772         exception happens while compiling a virtual method.
8773
8774 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
8775
8776         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
8777         
8778         * mini-sparc.c: Fix build.
8779
8780         * mini-sparc.c (get_call_info): Add support for generic sharing.
8781
8782         * mini-exceptions.c: Add a FIXME.
8783
8784 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
8785
8786         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
8787         altstack handling code.
8788
8789         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
8790         
8791         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
8792
8793         * mini-s390.c: Add support for generic sharing.
8794
8795         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8796         Fix CAS on s390.
8797         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8798
8799         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
8800
8801         * mini-s390x.c: Add support for generic sharing.
8802         
8803         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8804         Fix CAS on ia64.
8805         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8806
8807         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
8808         can be used since it takes a 16 bit signed immediate.
8809
8810         * inssel-s390x.brg: Fix OP_SETRET.
8811
8812         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
8813
8814         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
8815
8816         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
8817
8818         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
8819
8820         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
8821         in one place.
8822
8823         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
8824         stuff.
8825
8826         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
8827         of the unused mono_arch_patch_delegate_trampoline stuff.
8828
8829 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
8830
8831         * basic-long.cs: Move the fp related tests to basic-float.cs.
8832
8833         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
8834
8835         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
8836
8837         * basic-calls.cs: Add a test for proper float argument passing.
8838
8839         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
8840         if the context corresponds to an exception received through a signal.
8841
8842         * exceptions.cs: Add a test for nullref handling at the start of a try
8843         clause.
8844
8845         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
8846
8847         * jit-icalls.c (mono_break): New JIT icall.
8848
8849         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
8850
8851         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
8852
8853 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
8854
8855         * cpu-*.md: Get rid of unused opcodes.
8856
8857         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
8858
8859         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
8860         by all platforms.
8861
8862         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
8863         define.
8864
8865         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
8866         the arch independent trampoline code in mini-trampolines.c.
8867
8868         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
8869
8870         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
8871
8872         * mini-s390.h: Remove an unused define.
8873         
8874         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
8875         the arch independent trampoline code in mini-trampolines.c.
8876
8877         * mini-arm.c (mono_arch_emit_prolog): Fix build.
8878
8879 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
8880
8881         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
8882
8883         * mini-s390.c (mono_arch_emit_prolog): Fix build.
8884
8885         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
8886
8887         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
8888
8889         * cpu-amd64.md: Use smaller sizes for int opcodes.
8890
8891         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
8892
8893         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
8894         objects.cs.
8895
8896         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
8897         debugging.
8898
8899         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
8900         instead of though a pointer to save an indirection when accessing elements of
8901         the array.
8902
8903         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
8904         some typos.
8905         (NOT_IMPLEMENTED): New helper macro.
8906         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
8907         of a bb.
8908
8909         * *.c: Use the new helper macro.
8910
8911 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
8912
8913         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
8914
8915 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
8916
8917         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
8918         stack slots.
8919
8920 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
8921
8922         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
8923         profiling is enabled.
8924         
8925         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
8926         the end.
8927         (mono_arch_emit_prolog): Add more first bblock optimizations.
8928
8929         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
8930         in order if possible.
8931         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
8932         bblock, since the arguments are still in their original registers.
8933
8934         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
8935
8936 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
8937
8938         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
8939         as well.
8940
8941         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
8942         offset 0.
8943
8944         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
8945
8946         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
8947         process async exceptions received while in unmanaged code.
8948
8949         * mini.c (mini_init): Install a callback with the runtime which will be called
8950         when a thread receives an async exception while in unmanaged code.
8951
8952         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
8953
8954         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
8955
8956 2008-01-16  Wade Berrier  <wberrier@novell.com>
8957
8958         * cpu-g4.md:
8959         * cpu-arm.md:
8960         * cpu-s390x.md:
8961         fix build
8962
8963 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8964
8965         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
8966         compilation with sun cc.
8967
8968         * cpu-*.md: Fix the build.
8969
8970         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
8971
8972         * mini-amd64.h: Add some comments to the MonoLMF structure.
8973
8974         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
8975         
8976         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
8977         in the LMF structure if possible. This saves two instructions in the
8978         managed->native wrappers.
8979
8980         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
8981
8982 2008-01-16  Mark Probst  <mark.probst@gmail.com>
8983
8984         * generic-sharing.c: New type argument lookup code which uses the
8985         runtime generic context template.
8986
8987 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
8988
8989         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
8990
8991         * mini-arm.c (add_general): Fix arm eabi parameter passing.
8992         (mono_arch_output_basic_block): Fix localloc implementation.
8993
8994         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
8995
8996         * mini-ia64.c (peephole_pass): Fix ia64 build.
8997
8998         * mini-amd64.c (peephole_pass): Fix a warning.
8999         
9000         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
9001         at a constant offset from sp/fp.
9002
9003         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
9004         instead of obtaining it from *lmf in the managed method case.
9005
9006 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
9007
9008         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
9009
9010 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
9011
9012         * mini.h (MonoInstList): New type.
9013         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
9014         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
9015         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
9016         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
9017         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
9018         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
9019         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
9020         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
9021         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
9022         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
9023         MONO_INST_LIST_FOR_EACH_ENTRY,
9024         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
9025         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
9026         mono_inst_list_first, mono_inst_list_last,
9027         mono_inst_list_next, mono_inst_list_prev): New instruction
9028         list handling interfaces.
9029         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
9030         list head 'ins_list'.
9031         (MonoInst): Replace next pointer with list head 'node'.
9032         (MonoCallInst): Make 'out_args' a MonoInstList.
9033         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
9034         (MonoCompile): Delete reverse_inst_list and
9035         reverse_inst_list_len.
9036         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
9037         mono_arch_lowering_pass, mono_arch_local_regalloc,
9038         mono_arch_output_basic_block, mono_arch_emit_prolog):
9039         Convert to new instruction lists.
9040         (insert_after_ins): Delete.
9041         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
9042         instruction lists.
9043         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
9044         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
9045         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
9046         mono_emulate_opcode, mono_emit_load_got_addr,
9047         inline_method, mono_method_to_ir, mono_print_bb_code,
9048         print_dfn, decompose_pass, nullify_basic_block,
9049         replace_out_block_in_code, remove_block_if_useless,
9050         merge_basic_blocks, move_basic_block_to_end,
9051         try_unsigned_compare, optimize_branches, mono_print_code,
9052         mini_select_instructions, remove_critical_edges): Likewise.
9053         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
9054         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
9055         mono_arch_output_basic_block, mono_arch_emit_prolog):
9056         Likewise.
9057         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
9058         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9059         mono_arch_output_basic_block): Likewise.
9060         (inst_list_prepend, insert_after_ins): Delete.
9061         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
9062         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
9063         instruction lists.
9064         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
9065         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
9066         mono_arch_emit_prolog): Likewise.
9067         * cfold.c (mono_constant_fold): Likewise.
9068         * liveness.c (visit_bb, mono_analyze_liveness,
9069         optimize_initlocals): Likewise.
9070         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
9071         * graph.c (mono_draw_code_cfg): Likewise.
9072         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
9073         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
9074         mono_ssa_cprop): Likewise.
9075         * abcremoval (get_relations_from_previous_bb, process_block):
9076         Likewise.
9077         * local-propagation (mono_cprop_invalidate_values,
9078         mono_local_cprop_bb): Likewise.
9079         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
9080         peephole_pass, mono_arch_output_basic_block,
9081         mono_arch_emit_prolog): Likewise.
9082         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
9083         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9084         mono_arch_emit_prolog): Likewise.
9085         (insert_after_ins): Delete.
9086         * aliasing.c (print_code_with_aliasing_information,
9087         mono_build_aliasing_information, mono_aliasing_deadce):
9088         Convert to new instruction lists.
9089         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
9090         peephole_pass, NEW_INS, mono_arch_lowering_pass,
9091         mono_arch_local_regalloc, mono_arch_output_basic_block):
9092         Likewise.
9093         (insert_after_ins): Delete.
9094         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
9095         peephole_pass, mono_arch_output_basic_block): Convert to
9096         new instruction lists.
9097         * mini-codegen (InstList, inst_list_prepend,
9098         insert_after_ins): Delete.
9099         (insert_before_ins, get_register_force_spilling,
9100         get_register_spilling, free_up_ireg, free_up_reg,
9101         create_copy_ins, create_spilled_store, alloc_int_reg,
9102         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
9103         to new instruction lists.
9104         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
9105         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9106         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
9107         (insert_after_ins): Delete.
9108         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
9109         mono_arch_local_regalloc, mono_arch_output_basic_block,
9110         mono_arch_call_opcode): Convert to new instruction lists.
9111         (insert_after_ins): Delete.
9112         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
9113         peephole_pass, mono_arch_output_basic_block,
9114         mono_arch_emit_prolog): Convert to new instruction lists.
9115
9116 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
9117
9118         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
9119
9120         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
9121         Fixes #353182.
9122
9123         * Makefile.am (version.h): Make this work with non-bash shells.
9124
9125 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
9126
9127         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
9128
9129 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
9130
9131         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
9132         the InitializeArray optimization.
9133
9134 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
9135
9136         * mini.c driver.c: Don't include os/gc_wrapper.h.
9137
9138 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
9139
9140         * mini.c (print_jit_stats): Print GC statistics if available.
9141
9142 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
9143
9144         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
9145
9146 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
9147
9148         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
9149
9150 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
9151
9152         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
9153         
9154         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
9155
9156         * driver.c (mono_main): Ditto.
9157
9158 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
9159
9160         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
9161
9162         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
9163         in the vtable can't be encoded.
9164         (compile_method): Ditto.
9165
9166 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
9167
9168         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
9169         defined.
9170
9171         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
9172         lmf->rbp.
9173
9174         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
9175         the top LMF entry belongs to the current method.
9176
9177         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
9178
9179 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
9180
9181         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
9182         
9183         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
9184
9185         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
9186
9187         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
9188
9189         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
9190
9191         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
9192         implementation.
9193
9194         * basic-float.cs: Add an ulong->double cast test.
9195
9196 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
9197
9198         * mini.c (mono_method_to_ir): Fix a warning.
9199
9200 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
9201
9202         * mini-ops.h: Add OP_SWITCH.
9203
9204         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
9205         CEE_SWITCH in back-end code, use OP_SWITCH instead.
9206
9207 2007-12-11  Geoff Norton  <gnorton@novell.com>
9208
9209         * mini-s390x.c: Minor change to the MAX() define to allow
9210         it to compile with other gcc versions.
9211
9212 2007-12-11  Geoff Norton  <gnorton@novell.com>
9213
9214         * cpu-s390x.md:
9215         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
9216
9217 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9218
9219         exceptions-arm.c (mono_arch_get_restore_context): Restore
9220         the frame pointer.
9221
9222         exceptions-arm.c (throw_exception): Save the frame pointer.
9223         This is a partial fix for #323747. Only the client side is
9224         fixed.
9225
9226 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9227
9228         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
9229         was using an unrelated variable to log the class which
9230         needed the cctor to be called. This was crashing on arm.
9231
9232 2007-12-09  Robert Jordan  <robertj@gmx.net>
9233
9234         * mini-x86.c (mono_arch_emit_epilog):
9235         Consider all kinds of 64-bit types. Fixes #323114.
9236
9237 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
9238
9239         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
9240
9241 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9242
9243         * mini-amd64.c (peephole_pass): Add a missing instruction check.
9244
9245 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9246
9247         * mini.c: run type ctor before allocating an object, not only
9248         when running it's constructor method (fixes at least part of bug #342507).
9249
9250 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9251         
9252         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
9253         
9254         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
9255         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
9256         function.
9257
9258         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
9259         mono_generic_class_init_trampoline () the same as it is done with the other
9260         trampolines.
9261
9262         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
9263         aot-runtime.c aot-compiler.c: Implement AOT support.    
9264
9265 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9266
9267         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
9268         build for archs which don't have the vtable trampoline defined
9269         yet.
9270
9271 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9272
9273         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
9274
9275         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
9276
9277         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
9278
9279         * tramp-<ARCH>.c: Use the new helper function.
9280
9281 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9282
9283         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
9284         trampoline call, which takes a vtable argument.
9285
9286         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
9287         OP_TRAMPCALL_VTABLEs like other calls.
9288
9289         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
9290         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
9291         call.  Implemented a support function which fetches the vtable
9292         from a register set.
9293
9294         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
9295         Implemented a generic class init trampoline, using the
9296         OP_TRAMPCALL_VTABLE opcode.
9297
9298         * mini.c: Implemented static field access when sharing generic
9299         code.  This implies initing the class using the new
9300         OP_TRAMPCALL_VTABLE call.
9301
9302 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9303
9304         * mini.c: Don't compile methods with sharing enabled if their
9305         classes are disabled for sharing.
9306
9307 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9308
9309         * inssel.brg: Add a missing sign extension to the GETCHR and array access
9310         opcodes. Fixes #346563.
9311
9312         * objects.cs: Add a new test.
9313
9314         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
9315
9316         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
9317         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
9318
9319 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9320
9321         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
9322
9323 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
9324
9325         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
9326         code stream.
9327
9328 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
9329
9330         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
9331
9332         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
9333         optimization in the AOT case.
9334         
9335 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
9336
9337         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
9338         
9339         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
9340
9341         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
9342
9343         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
9344
9345         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
9346         is created by the inlined delegate ctor.
9347
9348         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
9349
9350         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
9351
9352 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
9353
9354         * cpu-x86.md: Fix the length of ckfinite.
9355
9356 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
9357
9358         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
9359         
9360         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
9361         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
9362
9363         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
9364
9365         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
9366         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
9367
9368 2007-11-28  Martin Baulig  <martin@ximian.com>
9369
9370         * mini-x86.c
9371         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
9372         after creating the trampoline.
9373
9374 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
9375
9376         * aot-runtime.c (load_aot_module): Check runtime version if needed.
9377
9378         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
9379         the same version.
9380
9381         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
9382         instead of the calling method to help AOT.
9383
9384         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
9385
9386 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
9387
9388         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
9389         is defined.
9390
9391 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9392
9393         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
9394         
9395         * aot-compiler.c (compile_method): Correct check for generic method definitions.
9396         (encode_method_ref): No need to handle generic method definitions specially.
9397
9398         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
9399
9400         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
9401         decode_klass_info.
9402
9403         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
9404         encode_klass_info.
9405         (compile_method): Enable generic sharing.
9406
9407 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
9408
9409         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
9410         (mini_method_compile): Add preliminary support for AOTing shared generic code.
9411
9412         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
9413         generic code.
9414
9415         * mini-trampolines.c: Fix a warning.
9416
9417         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
9418         NEW_PCONST.
9419         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
9420         (generic_class_is_reference_type): Remove unused function.
9421
9422         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
9423         in the generic vtable trampoline case.
9424
9425         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
9426         
9427         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
9428         return an AOT method based on a vtable slot.
9429
9430         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
9431
9432         * mini.c (mini_get_vtable_trampoline): Export this.
9433
9434 2007-11-22  Martin Baulig  <martin@ximian.com>
9435
9436         * debug-debugger.h
9437         (MonoDebuggerInfo): Move `debugger_version' up.
9438
9439 2007-11-22  Martin Baulig  <martin@ximian.com>
9440
9441         * mini-amd64.c
9442         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
9443
9444         * mini-trampolines.c
9445         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
9446         after compiling the method.
9447
9448 2007-11-20  Martin Baulig  <martin@ximian.com>
9449
9450         * debug-mini.c
9451         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
9452         (mono_debugger_remove_breakpoint): Likewise.
9453         (mono_debugger_check_breakpoints): Likewise.
9454
9455         * debug-debugger.c: Implement the new breakpoint interface here.
9456
9457 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
9458
9459         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
9460         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
9461
9462         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
9463
9464 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
9465
9466         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
9467
9468         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
9469         mini.c.
9470
9471         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
9472         mini.c.
9473
9474         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
9475         returning a vtype in a register.
9476
9477         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
9478         here from the arch specific code.
9479
9480         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
9481         mini.c.
9482
9483         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
9484         (mono_arch_emit_prolog): Increment maximum prolog size.
9485
9486         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
9487         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
9488
9489         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
9490         MonoGenericSharingContext.
9491
9492         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
9493         MonoGenericSharingContext. Allocate memory from the cfg mempool.
9494
9495 2007-11-15  Mark Probst  <mark.probst@gmail.com>
9496
9497         * mini.c, mini.h, generic-sharing.c: Functions for producing code
9498         which extract fields out of the runtime generic context.  Full
9499         sharing of the NEWARR opcode.
9500
9501 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9502
9503         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
9504         --enable-minimal=ssa.
9505
9506 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
9507
9508         * mini-trampolines.c (mono_delegate_trampoline): Update after 
9509         mono_marshal_get_delegate_invoke () signature change.
9510
9511 2007-11-13  Mark Probst  <mark.probst@gmail.com>
9512
9513         * mini.c: Removed the shared context in favor of the generic
9514         sharing context.  Allocate the MonoJitInfo structure with room for
9515         the generic sharing context if it's needed.
9516
9517         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
9518         domain-internals.h now.
9519
9520         * mini-x86.c: Pass the generic sharing context to get_call_info ().
9521
9522         * generic-sharing.c: Several changes for working without a shared
9523         context and instead operating on open types instead.
9524
9525 2007-11-12  David S. Miller  <davem@davemloft.net>
9526
9527        * inssel-sparc.brg: Fix double instruction emit.
9528
9529 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9530
9531         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
9532         Get/Set/Address methods.
9533         
9534         * mini.c debug-debugger.c mini-trampolines.c: Update after 
9535         mono_marshal_get_delegate_invoke signature change.
9536
9537 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9538
9539         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
9540         This can happens with dynamic methods. Fixes the other bug in #322722.
9541
9542 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9543
9544         * tramp-arm.c (mono_arch_patch_callsite): Support patching
9545         BX call sequence.
9546
9547         * mini-arm.c (arm_patch): Implement patching of BX call
9548         sequence. Fixes one of the bugs in #322722.
9549
9550 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
9551
9552        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
9553        under Linux.  We only need to flush every 32-byte cache line.    
9554
9555 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9556
9557         * mini.c:
9558         move_basic_block_to_end: Add branches when needed, eventually creating
9559         a new BB.
9560         optimize_branches: added a parameter that tells if it's ok to create
9561         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
9562         and avoid calling move_basic_block_to_end when it's not ok.
9563         Fixes bug 318677.
9564
9565 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9566
9567         * mini.c: Abort inlining call to InitializeArray if something
9568         looks wrong.  Let the icall handle it, which now has proper safety
9569         checks.
9570
9571 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9572
9573         * mini.c (mono_spill_call): add support for soft-float.
9574
9575         * mini.c (mono_method_to_ir): add support for soft-float
9576         to inlined functions that return float.
9577
9578         * mini.c (mono_method_to_ir): add support for soft-float
9579         to cee_stsfld opcode on float fields.
9580
9581 2007-11-05  Geoff Norton  <gnorton@novell.com>
9582
9583         * mini-x86.h: Fix the structure access for X86 Leopard.
9584
9585
9586 2007-11-05  Martin Baulig  <martin@ximian.com>
9587
9588         * mini-trampolines.c
9589         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
9590         after compiling the method to notify the debugger.
9591
9592 2007-11-05  Martin Baulig  <martin@ximian.com>
9593
9594         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
9595
9596 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
9597
9598         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
9599         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
9600
9601 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
9602
9603         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
9604         native-to-managed wrappers.
9605         
9606 2007-11-01  Geoff Norton  <gnorton@novell.com>
9607
9608         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
9609         members.
9610
9611 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
9612
9613         * mini.c, mini-x86.c: when getting back from unmanaged code
9614         to managed via a marshaled delegate we also need to set the
9615         right domain.
9616
9617 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9618
9619         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
9620         for amd64.
9621
9622 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9623
9624         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
9625         let the debugger or other external agents to tell the JIT when
9626         a sw breakpoint has been inserted in the code that the JIT needs
9627         to be able to inspect.
9628
9629 2007-10-31  Martin Baulig  <martin@ximian.com>
9630
9631         * debug-debugger.h
9632         (MonoDebuggerInfo): Remove `runtime_class_init'.
9633
9634 2007-10-30  Martin Baulig  <martin@ximian.com>
9635
9636         * debug-mini.h
9637         (mono_debugger_thread_created): Added `MonoThread *' argument.
9638         (mono_debugger_extended_notification): New public method.
9639         (mono_debugger_trampoline_compiled): New public method.
9640
9641         * debug-mini.c
9642         (MonoDebuggerThreadInfo): Added `thread' and
9643         `extended_notifications' fields.
9644
9645         * debug-debugger.c
9646         (debugger_executable_code_buffer): New static variable.
9647
9648         * debug-debugger.h
9649         (MonoDebuggerInfo): Added `executable_code_buffer',
9650         `executable_code_buffer_size', `breakpoint_info_area',
9651         `breakpoint_table' and `breakpoint_table_size'.
9652
9653 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
9654
9655         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
9656         that IP  either is an unused value or the vtable pointer. IMT 
9657         calls use vtable + offset now. Reduced by almost half the size
9658         of IMT entries.
9659
9660 2007-10-26  Jonathan Chambers <joncham@gmail.com>
9661
9662         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
9663         defines to access param registers. Replace long usage with
9664         gsize as sizeof(long) != sizeof(void*) on Win64.
9665
9666         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
9667         on Win64. Fix intrinsic, use _AddressOfReturnAddress
9668         instead of non-existant _GetAddressOfReturnAddress.
9669
9670         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
9671         param registers. Save/restore %rdi and %rsi in MonoLMF.
9672
9673         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
9674         param registers. Modify (throw_exception) signature to take 
9675         %rdi and %rsi on Win64. 
9676
9677         Code is contributed under MIT/X11 license.
9678
9679 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9680
9681         * helpers.c: unlink debugging output files.
9682
9683 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
9684
9685         * mini.c: Move mono_create_ftnptr () to object.c.
9686
9687 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9688
9689         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
9690         optional. This function can now be used to disassemble code generated
9691         outside the JIT such as trampolines and IMT thunks.
9692
9693         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
9694
9695         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
9696         vtable pointer from a ldr instruction.
9697
9698         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
9699         new IMT call sequence.
9700
9701         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
9702         call sequence for interface invocations.
9703
9704         * mini-arm.c (mono_arch_emit_imt_argument): added, required
9705         for imt support. This function is empty since IMT on ARM requires no
9706         special handling on the IR side.
9707
9708         * mini-arm.c (mono_arch_find_imt_method): added, required for
9709         imt support.
9710
9711         * mini-arm.c (mono_arch_find_this_argument): added, required
9712         for imt support.
9713
9714         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
9715         a ldr instruction to load a value stored in the code stream.
9716
9717         * mini-arm.c (mono_arch_build_imt_thunk):added, required
9718         for imt support.
9719
9720
9721 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
9722
9723         * mini.c (mini_init): Install the jump trampoline callback.
9724
9725 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9726
9727         * mini-trampolines.c: handle synchronized methods with the common
9728         vtable trampoline (bug #335601).
9729
9730 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
9731
9732         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
9733
9734         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
9735         64 bit platforms.
9736
9737         * mini-ia64.h mini-ia64.c: Add support for IMT.
9738
9739         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
9740         prolog. Fixes #331958.
9741
9742 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
9743
9744         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
9745
9746 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9747
9748         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
9749         trampoline.
9750
9751 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9752
9753         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
9754         trampoline.
9755
9756 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
9757
9758         * mini-x86.c, mini-x86.h: x86 support for the common vtable
9759         trampoline.
9760
9761 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
9762
9763         * mini-trampolines.c: changed the magic rampoline to understand
9764         the common vtable trampoline method: the method to invoke is
9765         determined by the vtable displacement of the call.
9766
9767 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9768
9769         * mini.c, mini.h: register the common vtable trampoline if the
9770         architecture supports it.
9771
9772 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9773
9774         * cpu-amd64.md: use the correct max length for tls_get.
9775
9776 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
9777
9778         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
9779         CEE_STELEM_ANY. Fixes #333696.
9780
9781 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9782
9783         * exceptions-x86.c: provide more graceful handling of the case where
9784         we followed a bogus function pointer from managed code (bug #332866).
9785
9786 2007-10-11  Mark Probst  <mark.probst@gmail.com>
9787
9788         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
9789         replaces the generic_shared flag and will carry more information
9790         in the future.
9791
9792         * generic-sharing.c: Added mini_type_stack_size() which allows
9793         allows open types if given a generic sharing context.
9794         mini_get_basic_type_from_generic() takes a
9795         MonoGenericSharingContext* instead of a MonoCompile* now.
9796
9797         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
9798         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
9799         mini-sparc.c, mini-x86.c: Trivial changes required by the two
9800         changes above.  Just passing arguments through to the right
9801         places.
9802
9803 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9804
9805         * mini-arm.c: unify the call emission to emit_code_seq().
9806
9807 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
9808
9809         * tramp-arm.c: reduced the trampoline size.
9810
9811 2007-10-10  Mark Probst  <mark.probst@gmail.com>
9812
9813         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
9814         variable handling out of arch-specific code.
9815
9816 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
9817
9818         * mini-arm.c: implemented fast delegate dispatch.
9819
9820 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9821
9822         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
9823         that fp elimination is turned off if the space required by locals is too
9824         big. Fixes #331958.
9825
9826 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9827
9828         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
9829         ARM to the new style trampoline.
9830
9831 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9832
9833         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
9834
9835         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
9836
9837 2007-10-09  Martin Baulig  <martin@ximian.com>
9838
9839         * debug-debugger.h
9840         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
9841         `field_info_offset_offset'.     
9842
9843 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9844
9845         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
9846         removed more internal usage of the r11 register and made it available
9847         to the register allocator.
9848
9849 2007-10-08  Mark Probst  <mark.probst@gmail.com>
9850
9851         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
9852         when sharing generics and treat type variables as references.
9853
9854 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9855
9856         * mini-ppc.c: started removing the internal uses of register r11
9857         to eventually allow the register allocator to manage it as an
9858         additional available register.
9859
9860 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9861
9862         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
9863
9864 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9865
9866         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
9867         specific trampolines as they are not performance critical as a jump
9868         target (maybe align as before only for AOT code?). This saves about
9869         200 KB of native code on x86 for monodevelop startup.
9870
9871 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9872
9873         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
9874         monodevelop startup.
9875
9876 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
9877
9878         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
9879
9880         * mini-sparc.h mini-sparc.c: Implement IMT support.
9881
9882         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
9883         its smaller and doesn't clobber sparc_g1.
9884
9885         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
9886
9887 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9888
9889         * mini-ppc.c: optimized the size of the IMT thunks a bit.
9890
9891 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9892
9893         * mini-ppc.c: implemented fast delegate invocation.
9894
9895 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
9896
9897         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
9898
9899 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9900
9901         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
9902         code to the new style trampoline in preparation for IMT support.
9903
9904 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
9905
9906         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
9907         systems already. This also reduces the specific trampiline sizes and
9908         prepares for the use of r12 as the IMT identifier register.
9909
9910 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9911
9912         * mini-mips.h: endianess fix (simplified from a patch by
9913         Thomas Kunze <thommy@tabao.de>, bug #323737).
9914
9915 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9916
9917         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
9918         to access ucontext fields and enable netbsd support
9919         (partially from Magnus Henoch <mange@freemail.hu>).
9920
9921 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9922
9923         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
9924         use the preprocessor from the CPP env var if it is set.
9925
9926 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9927
9928         * mini-trampolines.c: fixed an assertion and moved it earlier in the
9929         code, before interface_offset gets used.
9930
9931 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
9932
9933         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
9934         mono_class_setup_vtable () before accessing klass->vtable.
9935
9936 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
9937
9938         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
9939         hackish.
9940
9941 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9942
9943         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
9944         IMT slots (this saves hundreds of KB of memory in programs like
9945         IronPython and Monodevelop).
9946
9947 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9948
9949         * mini.c: print the delegate counter.
9950
9951 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
9952
9953         * mini-x86.c: make it easier to enable the debugging code for IMT
9954         slots.
9955
9956 2007-09-28  Martin Baulig  <martin@ximian.com>
9957
9958         * debug-debugger.h
9959         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
9960         `mono_method_klass_offset' and `mono_method_token_offset'.
9961
9962 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9963
9964         * mini.c: First generics sharing implementation.  Can only share
9965         in very simple cases.  If sharing doesn't work it falls back to
9966         dedicated compilation.
9967
9968         * mini.h: Flag in MonoCompile to specify whether generic
9969         compilation is shared.  Flags enum for marking which generic inst
9970         of a context is used.  Prototypes for helper functions.
9971
9972         * generic-sharing.c: Helper functions for generic method sharing.
9973
9974         * optflags-def.h: Optimization flag (gshared) for enabling generic
9975         method sharing added.
9976
9977         * Makefile.am: generic-sharing.c added.
9978
9979 2007-09-19 Daniel Nauck <dna@mono-project.de>
9980
9981         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
9982
9983 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
9984         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
9985         fixes bug 325507.
9986
9987 2007-09-19  Martin Baulig  <martin@ximian.com>
9988
9989         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
9990         mono_debug_cleanup() is now part of mono_cleanup().
9991
9992 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9993
9994         * driver.c (mono_main): Fix a warning.
9995
9996 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9997
9998         * aot-compiler.c: Optimize various parts when processing large assemblies.
9999         Fixes ##325568.
10000
10001         * mini.c (mono_patch_info_hash): Improve hash function.
10002
10003 2007-09-14  Jonathan Chambers <joncham@gmail.com>
10004
10005         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
10006         
10007         Code is contributed under MIT/X11 license.
10008
10009 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10010
10011         * mini.c (mini_init): Fix a leak.
10012
10013         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
10014
10015 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10016
10017         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
10018
10019 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10020
10021         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
10022
10023 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10024
10025         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
10026         variance tests.
10027
10028         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
10029
10030         * mini.c (handle_alloc): Enable managed allocators in AOT code.
10031
10032         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
10033
10034         * aot-runtime.c (decode_patch_info): Ditto.
10035
10036 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10037
10038         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
10039         static case. Cache delegates in architecture specific code, 
10040         based on number of parameters.
10041         
10042         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
10043         in architecture specific code, based on number of parameters.
10044         
10045         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
10046         caching happen in architecture specific code now.
10047         
10048         Code is contributed under MIT/X11 license.
10049
10050 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10051
10052         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
10053         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
10054         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
10055
10056         Code is contributed under MIT/X11 license.
10057
10058 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10059         * mini.c: (mono_thread_abort) Fixed bug #82416.
10060
10061 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10062
10063         * mini.: hook the new managed GC allocation feature into the JIT.
10064
10065 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10066
10067         * mini.c: implementation for the new runtime tls opcode.
10068
10069 2007-09-11  Martin Baulig  <martin@ximian.com>
10070
10071         * debug-debugger.h
10072         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
10073         `mono_method_inflated_offset'.
10074
10075 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
10076
10077         * driver.c mini.h mini.c: Add a new devel command line option for injecting
10078         async exceptions into a method.
10079
10080         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
10081         purpose of testing whenever the unwinder works at every instruction.
10082
10083 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10084
10085         * mini.c: check accessibility of method used in ldftn (fixes
10086         bug #82635).
10087
10088 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
10089
10090         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
10091
10092         * inssel.brg: Fix a warning.
10093
10094 2007-09-03  Martin Baulig  <martin@ximian.com>
10095
10096         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
10097         now takes the `main_method' as argument.
10098
10099 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
10100
10101         * cpu-sparc.md (endfilter): Add missing src1:i argument.
10102
10103 2007-08-30  Jonathan Chambers <joncham@gmail.com>
10104
10105         * driver.c: include the cil-coff.h header on Windows.
10106         
10107         Code is contributed under MIT/X11 license.
10108
10109 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10110
10111         * mini.c, driver.c: don't include the cil-coff.h header.
10112
10113 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10114
10115         * mini.c: flag places that needs fixes fo soft-float support.
10116
10117 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
10118
10119         * mini.h, inssel-float.brg: fix soft-float constant loads on big
10120         endian systems (partially from Dean Jenkins, bug #81924).
10121
10122 2007-08-28  Mark Probst  <mark.probst@gmail.com>
10123
10124         * mini.c (check_linkdemand): Remove embedded reference object in
10125         call to LinkDemandSecurityException.
10126         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
10127         with an IntPtr instead of a reference object.
10128
10129 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10130
10131         * mini.c (handle_initobj): Handle alignment properly.
10132
10133         * inssel.brg (mini_emit_memset): Ditto. 
10134
10135         * inssel.brg (mini_emit_memcpy): Ditto. 
10136
10137         * inssel-sparc.brg: Ditto.              
10138
10139         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
10140
10141 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
10142
10143         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
10144         exceptions raised in unmanaged code. Fixes part of #82594.
10145
10146 2007-08-24  Mark Probst  <mark.probst@gmail.com>
10147
10148         * mini.c (mono_method_to_ir), declsec.c
10149         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
10150
10151 2007-08-22  Martin Baulig  <martin@ximian.com>
10152
10153         * debug-mini.h
10154         (MonoDebuggerThreadInfo): New typedef.
10155         (mono_debugger_thread_table): New global variable.
10156         (mono_debugger_thread_created): New public function.
10157         (mono_debugger_thread_cleanup): New public function.
10158
10159         * debug-debugger.h
10160         (MonoDebuggerInfo):
10161         - removed `get_current_thread' and `lookup_assembly'.
10162         - removed `data_table'.
10163         - added `thread_table'.
10164
10165         * mini.c
10166         (mono_thread_start_cb): Call mono_debugger_thread_created().
10167         (mono_thread_attach_cb): Likewise.
10168         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
10169         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
10170         initial domain.
10171
10172         * driver.c (mono_main): Move mono_debug_init() up, before calling
10173         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
10174
10175 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10176
10177         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
10178         together when passing several arguments of type double (gives a small
10179         speedup and saves a few bytes of generated code).
10180
10181 2007-08-20  Jb Evain  <jbevain@novell.com>
10182
10183         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
10184
10185 2007-08-20  Jb Evain  <jbevain@novell.com>
10186
10187         * mini.c (mono_method_to_ir): throw MethodAccessException
10188         and FieldAccessException instead of InvalidProgramException.
10189
10190 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10191
10192         * mini.c: CoreCLR security checks.
10193
10194         * mini.h: Removed MonoSecurityMode (moved to
10195         metadata/security-manager.h) and mono_security_mode global var
10196         (replaced by set/get functions in security-manager.h).
10197
10198         * driver.c: Added "core-clr-test" security mode for testing.  Used
10199         set-function for setting security mode.
10200
10201 2007-08-17  Mark Probst  <mark.probst@gmail.com>
10202
10203         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
10204         the new jit_info_table.
10205
10206         * driver.c: Test code for the new jit_info_table (enabled by the
10207         define MONO_JIT_INFO_TABLE_TEST).
10208
10209 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
10210
10211         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
10212         detection of call <REG> instruction sequence. Fixes build on freebsd.
10213
10214 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
10215
10216         * mini-exceptions.c: Fix a warning.
10217
10218 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
10219
10220         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
10221         stack overflow handling code on amd64 too.
10222
10223         * mini-exceptions.c (mono_setup_altstack): Make this use 
10224         mono_thread_get_stack_bounds ().
10225
10226         * mini-x86.h: Disable sigaltstack on solaris x86.
10227
10228 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
10231
10232 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
10233
10234         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
10235
10236 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10237
10238         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
10239
10240         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
10241
10242 2007-08-03  Neale Ferguson <neale@sinenomine.net>
10243
10244         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
10245         due to alignment.
10246
10247 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10248
10249         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
10250         to be emitted (bug #82281).
10251
10252 2007-08-01  Martin Baulig  <martin@ximian.com>
10253
10254         Merged the `debugger-dublin' branch.
10255
10256         * debug-debugger.h (MonoDebuggerInfo):
10257         Removed the `old_*' compatibility entries.
10258         Added `debugger_version' and `data_table'.
10259         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
10260         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
10261
10262         * debug-mini.c
10263         (MiniDebugMethodBreakpointInfo): Add `address_list'.
10264         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
10265         instead of a `gconstpointer'.
10266         (mono_debugger_insert_method_breakpoint): Return a
10267         `MonoDebugMethodAddressList *'.
10268
10269 2007-06-28  Martin Baulig  <martin@ximian.com>
10270
10271         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10272
10273 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10274
10275         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
10276         __builtin_frame_address () since it is broken on older gcc versions.
10277
10278 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10279
10280         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
10281         on the stack overflow handling and made the managed stack overflows
10282         catchable in most cases using soft guard pages.
10283         * exceptions-x86.c: added code to restore the protection in the soft
10284         guard pages at the end of exception handling.
10285
10286 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10287
10288         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
10289
10290 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10291
10292         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
10293         exception handling.
10294
10295 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10296
10297         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
10298         signal handling support until it has been ported to the new mechanism.
10299         * mini.c: fixed stack overflow detection and use the new
10300         architecture code  to handle signals on the altstack.
10301
10302 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
10303
10304         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
10305         stack overflows on the alt stack.
10306
10307 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
10308
10309         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
10310         stack overflows on the alt stack.
10311
10312 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
10313
10314         * exceptions-ppc.c: cleanup preparing for altstack support.
10315
10316 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10317
10318         * exceptions-arm.c: cleanup preparing for altstack support.
10319
10320 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10321
10322         * mini.c (print_jit_stats): Output hazard pointer stats.
10323
10324 2007-07-26  Mark Probst  <mark.probst@gmail.com>
10325
10326         * driver.c, mini.c: Replaced security mode flags with a single
10327         enum variable.
10328
10329 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10330
10331         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
10332
10333 2007-07-25  Mark Probst  <mark.probst@gmail.com>
10334
10335         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
10336         (which doesn't do anything yet) for activating Core CLR
10337         (Silverlight) security.
10338
10339 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10340
10341         * mini-codegen.c: work around a possible gcc bug on arm.
10342
10343 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10344
10345         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
10346         message for platforms that don't support AOT compilation.
10347
10348 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10349
10350         * mini.h, mini.c, driver.c: temporary smcs hack.
10351
10352 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
10353
10354         * mini-arm.h, mini-arm.c: arm EABI fixes.
10355
10356 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10357
10358         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
10359         case.
10360
10361         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
10362         trampolines taking a method argument.
10363
10364         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
10365
10366         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
10367         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
10368
10369         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
10370         JIT compilation throws an exception. Fixes #82050.
10371
10372 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10373
10374         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
10375         with the MONO_EXCEPTION_ defines.
10376
10377 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
10378
10379         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
10380         #82117.
10381         
10382         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
10383         the cause of an assertion.
10384
10385 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
10386
10387         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
10388         removed.
10389
10390 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10391
10392         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
10393         assert. Should fix #82103.
10394
10395 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10396
10397         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
10398         here too. Fixes #82095.
10399
10400         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
10401         addresses.
10402
10403         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
10404
10405         * mini-amd64.h: Enable IMT for amd64.
10406         
10407         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
10408
10409 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
10410
10411         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
10412
10413 2007-07-12  Mark Probst  <mark.probst@gmail.com>
10414
10415         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
10416         as soon as check_linkdemand sets an exception_type.
10417
10418 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10419
10420         * mini-x86.c: fixed offsets for IMT call sequence.
10421         * mini-x86.h: enable IMT again.
10422
10423 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10424
10425         * trace.c (mono_trace_enter_method): Decode MonoType too.
10426
10427         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
10428
10429         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
10430
10431         * mini-amd64.c: Add preliminary IMT implementation.
10432         
10433 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10434
10435         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
10436         understand the new IMT-base interface invocation (thanks to
10437         Daniel Nauck for the report and the remote debugging session).
10438
10439 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10440
10441         * mini-x86.c: size and speed optimizations for the IMT bsearch.
10442
10443 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10444
10445         * Makefile.am (aotcheck): Make this actually use the AOTed code.
10446
10447 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
10448
10449         * mini-trampolines.c: implement AOT IMT support.
10450         * mini-x86.h: enable IMT support for wider testing.
10451
10452 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10453
10454         * inssel.brg (emit_imt_argument): Add aot support here.
10455
10456         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
10457
10458 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10459
10460         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
10461         of the IMT implementation, partially from massi, with my
10462         implementation of the bsearch sequence. Disabled by default until
10463         the AOT code is implemented.
10464
10465 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10466
10467         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
10468
10469         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
10470
10471 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10472
10473         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
10474         arch-independent IMT JIT code from Massimiliano
10475         Mantione (massi@ximian.com) with small cleanups from me.
10476
10477 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10478
10479         * Makefile.am: fix svn invocation to get the svn revision to be
10480         independent of the local language (build fix).
10481
10482 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10483
10484         * mini.c (inline_method): Reset cfg->exception_type if the
10485         inlining is aborted.  Fixes: 82049.
10486
10487 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
10488
10489         * mini.c: remove assert from exception handling code when exception_ptr
10490         is not set.
10491
10492 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10493
10494         * mini.c (mono_codegen): Add an assert.
10495
10496         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
10497         enter and leave code.
10498         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
10499
10500 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10501
10502         * mini-ppc.c: fixed memory corruption for localloc(0)
10503         (bug #81852).
10504
10505 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10506         
10507         * mini.c: Fix warnings.
10508
10509 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
10510
10511         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
10512         to emit better double->int conversions.
10513
10514 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10515
10516         * mini.c: the provided Min/Max optimizations are valid for unisgned
10517         ints.
10518
10519 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10520
10521         * 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
10522
10523 2007-06-28  Miguel de Icaza  <miguel@novell.com>
10524
10525         * mini.c (mono_running_on_valgrind): Add support for reporting the
10526         method and  its boundaries to valgrind.
10527
10528 2007-06-28  Martin Baulig  <martin@ximian.com>
10529
10530         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10531
10532 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
10533
10534         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
10535
10536         * generic.2.cs: Add new test case.
10537
10538 2007-06-25  Martin Baulig  <martin@ximian.com>
10539
10540         Merged the `debugger-dublin' branch.
10541
10542         * debug-mini.c
10543         (mono_debugger_insert_method_breakpoint): New public method.
10544         (mono_debugger_remove_method_breakpoint): Likewise.
10545         (mono_debugger_check_breakpoints): New static method.
10546         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
10547
10548         * debug-debugger.h (MonoDebuggerInfo):
10549         Renamed (to keep backward compatibility in the vtable):
10550         `insert_breakpoint' -> `old_insert_breakpoint'.
10551         `remove_breakpoint' -> `old_remove_breakpoint'.
10552         `create_string' -> `old_create_string'.
10553         `lookup_class' -> `old_lookup_class'.
10554         `lookup_type' -> removed; changed into a dummy field.
10555         `lookup_assembly' -> `old_lookup_assembly'.
10556         Added (same functionality, but different signature):
10557         `create_string', `lookup_class', `lookup_assembly'
10558         Added new:
10559         `get_method_addr_or_bpt', `remove_method_breakpoint',
10560         `runtime_class_init'.
10561
10562         * debug-debugger.c: Merged the `debugger-dublin' branch.
10563
10564 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
10565
10566         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
10567         well.
10568         (peephole_pass): Likewise.
10569
10570 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10571
10572         * driver.c: hopefully make setaffinity work also for ancient
10573         versions of linux.
10574
10575 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
10576
10577         * driver.c : win32 build fix.
10578
10579 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10580
10581         * driver.c: check for the MONO_NO_SMP env var and bind to a single
10582         processor if it is set.
10583
10584 2007-06-21  Martin Baulig  <martin@ximian.com>
10585
10586         * debug-mini.h: New file.
10587
10588         * debug-mini.c
10589         (mono_debugger_insert_breakpoint_full): Moved here from
10590         ../metadata/mono-debug-debugger.c.
10591         (mono_debugger_remove_breakpoint): Likewise.
10592         (mono_debugger_breakpoint_callback): Likewise.
10593
10594 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10595
10596         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10597         changes in MonoGenericClass.
10598
10599 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
10602
10603 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10604
10605         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10606         removal of MonoGenericMethod.
10607
10608 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10609
10610         * mini-exceptions.c: hooks for the exception events profiling API.
10611
10612 2007-06-14  Randolph Chung  <tausq@debian.org>
10613
10614         * Makefile.ma: Add hppa target.
10615         * mini-arch.h: Include mini-hppa.h
10616         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
10617         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
10618         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10619
10620 2007-06-14  Randolph Chung  <tausq@debian.org>
10621
10622         * inssel.brg: Add rules for "chained" compare-branch operations so that
10623         a single compare op can affect multiple branches.  Adjust cost for
10624         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
10625         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
10626         cost for some rules so that they can more easily be overridden by
10627         per-arch rules (with fixes from lupus).
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-ops.h: Reorder branch ops so that they match the order of the
10633         corresponding CEE_* ops.  The code expects them this way.
10634         Add new ops for HPPA target.
10635         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10636
10637 2007-06-13  Randolph Chung  <tausq@debian.org>
10638
10639         * mini-exceptions.c: Handle cases where the stack grows towards
10640         larger addresses.
10641         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10642
10643 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10644
10645         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
10646         counter.
10647         * driver.c: explain where a non-matching corlib is found.
10648
10649 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10650
10651         * mini.c (print_jit_stats): Output dynamic code allocation stats.
10652
10653 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
10654
10655         * mini-exceptions.c: Generate a method profile leave event during
10656         an exception to ensure that the profiler gets notified.
10657
10658 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
10659
10660         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
10661         branch.
10662
10663         * cpu-amd64.md: Add long_and/or/xor opcodes.
10664
10665 2007-06-06  Wade Berrier  <wberrier@novell.com>
10666
10667         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
10668         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
10669         length of instruction shr_imm (expected 8, got 10)
10670
10671 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
10672
10673         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
10674
10675 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10676
10677         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10678         MonoInternalHashTable again (fixed bug in the internal hash table
10679         code).
10680
10681 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10682
10683         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
10684         Have to figure out what makes it crash the SWF regression.
10685
10686 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
10687
10688         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
10689
10690 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10691
10692         * mini.c: optimize out the type check when storing null in a
10693         reference array.
10694
10695 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10696
10697         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10698         MonoInternalHashTable.
10699
10700 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10701
10702         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
10703         signed integer methods.
10704
10705 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10706
10707         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
10708         permanently since the current approach doesn't work.
10709
10710 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10711
10712         * inssel.brg (stmt): Only call delegate->invoke_impl if 
10713         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
10714
10715 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10716
10717         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
10718         the sreg2==rdx case.
10719         
10720         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
10721         account if it contains a rex prefix.
10722         (peephole_pass): Handle OP_FMOVE as well.
10723
10724 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10725
10726         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
10727         as it causes regressions.
10728
10729 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10730
10731         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
10732         static case as well.
10733
10734         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
10735
10736         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10737         (mono_arch_get_this_arg_from_call): Ditto.
10738
10739         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
10740
10741         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
10742         invoke_impl field.
10743
10744         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10745         (mono_arch_get_this_arg_from_call): Ditto.
10746
10747         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
10748         
10749         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
10750         try to create optimized invoke code and use that for further invocations. 
10751         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
10752
10753         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
10754
10755 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
10756
10757         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
10758         sealed classes or methods.
10759         *devirtualization.cs: tests for the new optimization
10760
10761 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
10762
10763         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
10764         by the update_volatile () function.
10765
10766 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
10767
10768         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
10769         require it.
10770
10771         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
10772
10773 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10774
10775         * mini.c: Add configure checks for header files.
10776         * mini-x86.c: Add configure checks for header files.
10777         * trace.c: Add configure checks for header files.
10778         * aot-runtime.c: Add configure checks for header files.
10779         * aot-compiler.c: Add configure checks for header files.
10780         * driver.c: Add configure checks for header files.
10781         * mini-codegen.c: Add configure checks for header files.
10782         
10783         Code is contributed under MIT/X11 license.
10784
10785 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10786
10787         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
10788         icompare_imm -128 + op_iclt. Fixes #81703.
10789
10790 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
10791
10792         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
10793
10794 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10795
10796         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
10797         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
10798         so that all isinst checks now use "interface_bitmap".
10799
10800 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
10801
10802         * cpu-amd64.md (jmp): Fix a warning.
10803
10804         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
10805
10806         * basic.cs: Add new regression test.
10807
10808         * basic.cs: Remove test which is now in basic-long.cs.
10809
10810         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
10811
10812         * basic-long.cs: Add new test.
10813         
10814 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
10815
10816         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
10817
10818 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10819
10820         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
10821
10822         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
10823         places.
10824         
10825         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
10826         throwing code a bit.
10827
10828         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
10829         the exception throwing code a bit.
10830
10831         * mini-x86.c (get_call_info): Allocate result from a mempool.
10832
10833 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
10834
10835         * aot-compiler.c (find_typespec_for_class): Fix the assert.
10836
10837         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
10838
10839         * mini.h (MonoCompile): Add 'token_info_hash' field.
10840
10841         * mini.c: Save token->method associations during compilation so the AOT 
10842         compiler can use it.
10843         
10844         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
10845         which reference generic classes and methods.
10846
10847 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
10848
10849         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
10850
10851         * aot-compiler.c (compile_method): Fix a typo in a comment.
10852
10853         * aot-runtime.c (decode_cached_class_info): Skip generic types.
10854
10855         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
10856         everything generic.
10857
10858         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
10859
10860 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
10861
10862         * mini.h (MonoCompile): Add 'args' field.
10863
10864         * mini.c (mono_compile_create_vars): Store variables representing the arguments
10865         into cfg->args.
10866
10867         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
10868
10869 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
10870
10871         * mini.c (mono_compile_get_interface_var): Remove this unused function.
10872
10873         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
10874
10875         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
10876         opcodes for some opcodes.
10877
10878         * mini.h *.brg *.c: Use the new opcodes.
10879
10880 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10881
10882         * mini.h: Bumped aot revision.
10883
10884         * inssel.brg: modified code generation of type checks for interfaces
10885         to use the new "MonoClass.interface_bitmap" instead of the old
10886         "MonoClass.interface_offsets".
10887
10888 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10889
10890         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
10891
10892 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
10893
10894         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
10895         64 bit platforms.
10896
10897 2007-04-27  Neale Ferguson <neale@sinenomine.net>
10898
10899         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
10900
10901 2007-04-27  Wade Berrier  <wberrier@novell.com>
10902
10903         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
10904         mini.h) to fix build.
10905
10906 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10907
10908         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
10909         
10910         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
10911         causes the corlib unit tests to fail.
10912
10913 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10914
10915         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
10916
10917         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
10918
10919         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
10920         opcodes to the comparison relations.
10921
10922         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
10923         opcodes to their types.
10924         
10925         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
10926
10927         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
10928         it in cfg->arch.cinfo.
10929
10930         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
10931
10932         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
10933         cfg->cil_offset_to_bb.
10934
10935 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10936
10937         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
10938         created becase of initlocals.
10939
10940 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
10941
10942         * mini-alpha.c cpu-alpha.md: More alpha port work from 
10943         Sergey Tikhonov <tsv@solvo.ru>.
10944
10945 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
10946
10947         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
10948
10949 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
10950
10951         * cpu-s390.md (break): Correct the length of break instruction.
10952
10953 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10954
10955         * mini.c: fix a couple of soft-float issues and comments.
10956
10957 2007-04-15  Miguel de Icaza  <miguel@novell.com>
10958
10959         * trace.c (is_filenamechar): - is also a filename char.
10960
10961 2007-04-15  Neale Ferguson <neale@sinenomine.net>
10962
10963         * mini-s390.c: Correct checking for enum type in return value processing.
10964
10965 2007-04-14  Raja R Harinath  <rharinath@novell.com>
10966
10967         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
10968         (version.h): Makefile is in the build directory.
10969
10970 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
10971
10972         * mini-amd64.h: fix for assertion failure on Solaris/amd64
10973
10974 2007-04-11  Martin Baulig  <martin@ximian.com>
10975
10976         * mini.c (can_access_member): Fix handling of generic classes;
10977         fixes #81259.
10978
10979 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
10980
10981         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
10982
10983 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
10984
10985         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
10986
10987 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10988
10989         * mini-codegen.c: make sure the right spill amount is
10990         used for fp or integer registers (fixes the float_sub_spill() on ppc).
10991
10992 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
10993
10994         * mini-ppc.c: fixes for the fp_branch_nan test.
10995
10996 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
10997
10998         * basic.cs: Comment out new test which still fails on ia64.
10999
11000 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11001
11002         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
11003
11004 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11005
11006         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
11007
11008 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
11009
11010         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
11011         on 64 bit machines. Fixes part of #80738.
11012
11013         * basic.cs: Add regression test.
11014
11015 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11016
11017         * inssel.brg basic.cs: Revert previous change to fix build.
11018
11019         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
11020         platforms.
11021         
11022         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
11023
11024         * basic.cs: Add new regression test.
11025
11026 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11027
11028         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
11029         many arguments.
11030
11031 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11032
11033         * cpu-s390x.md: Correct length of break instruction.
11034
11035 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11036
11037         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
11038         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
11039
11040 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
11041
11042         * *.c: Begin WIN64 port.
11043         * mini.c:  Use correct register in profiler.
11044         * mini-amd64.c: No inline assembly on Win64.
11045         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
11046         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
11047         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
11048         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
11049         mono_arch_ip_from_context for Win64.
11050         
11051         Contributed under MIT/X11 license.
11052
11053 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
11054
11055         * exceptions-amd64.c (seh_handler): Ditto.
11056
11057         * exceptions-x86.c (seh_handler): Fix a memory leak.
11058
11059 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
11060
11061         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
11062         mini-s390x.c: fixed peephole optimizations to deal
11063         correctly with 1 and 2 byte reload avoidance.
11064
11065 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11066
11067         * cpu-s390.md, cpu-s390x.md: update localloc length.
11068
11069 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11070
11071         * cpu-g4.md: added missing descriptions.
11072
11073 2007-03-14  Miguel de Icaza  <miguel@novell.com>
11074
11075         *  Makefile.am: Add support so the tail tests are not executed on
11076         PowerPC as that is a known limitation of the PowerPC port.
11077
11078 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11079
11080         * runmdesc.bat:  Move to msvc directory.
11081         
11082 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11083
11084         * runmdesc.bat:  Run executable that was produced by the current
11085         target and sent via an argument.
11086         
11087 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
11088
11089         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
11090         #81102.
11091
11092         * generics.2.cs: Add regression test.
11093
11094 2007-03-09  Wade berrier  <wberrier@novell.com>
11095
11096         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
11097
11098 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
11099
11100         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
11101         AOT code depends on this.
11102
11103 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11104
11105         * mini.c: more precise tracking of types in the eval stack
11106         (part of fix for bug #81044).
11107
11108 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
11109
11110         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
11111
11112         * aot-compiler.c (encode_patch): Remove an obsolete comment.
11113
11114 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11115
11116         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
11117
11118         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
11119
11120 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
11121
11122         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
11123         a pointer on 64 bit systems. Fixes #80190.
11124
11125         * iltests.il: Add new regression test.
11126
11127 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11128
11129         * mini.c: inline a constant for Environment.IsRunningOnWindows.
11130
11131 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
11132
11133         * trace.c: Remove an erroneous alignemnt check when tracing.
11134           Fixes --trace on OSX86.
11135
11136 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11137
11138         * mini-$(arch).h: initialize SP in context for all the archs.
11139
11140 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
11141
11142         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
11143         regressions in the thread tests.
11144
11145 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
11146
11147         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
11148         - fixed implementation of LOCALLOC opcode
11149         - implemented non-un compare for floats
11150         - code cleanup
11151         - implementation of FDIV and CKFINITE opcodes
11152         - fixes for latest mono updates
11153         - additional arch opcodes
11154
11155 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11156
11157         * Makefile.am: simplify and merge rules for cross-compilation.
11158
11159 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
11160
11161         * local-propagation.c: Actually *apply* the fix for bug 80591...
11162
11163 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11164
11165         * mini-exceptions.c: backuot part of the last change
11166         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
11167
11168 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
11169         * inssel.brg: Fix bug 59286.
11170
11171
11172 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
11173
11174         * mini-exceptions.c: patch from Zoltan to correctly check for
11175         stack boundaries (using the stack register, not the frame register),
11176         fixes bugs #80724, #79717.
11177
11178 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
11179
11180         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
11181         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
11182
11183         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
11184         presence of frame pointer elimination.
11185
11186 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
11187         
11188         * mini-x86.h: NetBSD UCONTEX_REG defines.
11189
11190 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
11191
11192         * inssel-amd64.brg: Fix amd64 build.
11193
11194 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
11195
11196         * mini.h: remove extern to workaround what looks likes gcc bug 26905
11197         on amd64.
11198
11199 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
11202         ends.
11203
11204         * mini-<ARCH>.c: Use mono_is_regsize_var ().
11205
11206 2007-01-30 Mark Mason <mason@broadcom.com>
11207
11208            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
11209            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
11210            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
11211            beginning support for CEE_JMP [not quite working yet]
11212            * tramp-mips.c: LMF handling now works
11213         
11214 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
11215
11216         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
11217
11218         * mini.h (NULLIFY_INS): New macro.
11219
11220 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11221
11222         * mini.c: statistical profiler fix for windows, patch
11223         from Tor Lillqvist (tml@novell.com).
11224
11225 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
11226         * local-propagation.c: Fix bug 80591.
11227
11228 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11229
11230         * Makefile.am: put back the --export-dynamic option as with
11231         the previous gmodule flags (thanks to Robert Jordan).
11232
11233 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
11234
11235         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
11236
11237         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
11238         simplify and speed up the local register allocator. Also rename some fields
11239         like iassign->vassign.
11240         
11241         * regalloc.c: Remove some functions which are no longer used since their
11242         inlined version is in mini-codegen.c.
11243         
11244         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
11245
11246         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
11247
11248 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
11249
11250         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
11251         narrowing. Fixes #80622.
11252
11253         * iltests.il: Add new regresssion test. 
11254
11255 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11256
11257         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
11258         debug-debugger.c, debug-debugger.h: warning fixes.
11259         * driver.c: updated copyright year and made it fit in one line.
11260
11261 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
11262
11263         * aot-runtime.c: updated to use mono-dl instead of gmodule.
11264
11265 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
11266
11267         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
11268
11269         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
11270
11271         * iltests.il: Add new test for bug #80507.
11272
11273 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11274
11275         * mini-arm.h: use soft-float also on vfp for now.
11276
11277 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11278
11279         * mini.c: fix some more soft-float issues.
11280
11281 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11282
11283         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
11284
11285 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
11286         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
11287         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
11288         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
11289
11290 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
11291
11292         * mini-arm.c: typo fix.
11293
11294 2007-01-23  Neale Ferguson <neale@sinenomine.net>
11295
11296         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
11297
11298 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
11299
11300         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
11301         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
11302
11303         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
11304
11305         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
11306
11307         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
11308         
11309         * inssel.brg: Fix a warning.
11310
11311         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
11312
11313         * abcremoval.c ssa.c ssapre.c: Update after this change.
11314         
11315         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
11316
11317         * dominators.c (df_set): Use mono_bitset_union_fast.    
11318
11319 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11320
11321         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
11322         mini-codegen.c: reduce relocations and memory usage for the cpu
11323         description.
11324
11325 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
11326
11327         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
11328
11329         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
11330         to reduce their size.
11331
11332 2007-01-19 Mark Mason <mason@broadcom.com>
11333
11334         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
11335         * mini-mips.c: more configuration macros, support long conditional branches, additional
11336         asserts, fix epilog instrumentation.
11337         * mini-mips.h: use standard stack walk
11338         * cpu-mips.md: increase size of div, rem and conditional branches
11339         
11340 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
11341
11342         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
11343         to cpu spec data.
11344
11345 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
11346
11347         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
11348         (compile_method): Ditto.
11349
11350         * aot-runtime.c (decode_klass_info): Ditto.
11351
11352         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
11353         needed by the code generated by inssel.brg. Also fix a warning.
11354
11355 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
11356
11357         * mini.c: deal with enums that become genericinsts by
11358         being nested in a generic class (bug #79956).
11359
11360 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11361
11362         * mini.c: match the generic definition to check for
11363         private access with generic types (bug #78431).
11364
11365 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11366
11367         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
11368         to make life easier for people cross-compiling that insist on not
11369         using scratchbox.
11370
11371 2007-01-17 Mark Mason <mason@broadcom.com>
11372
11373         * inssel-long.brg: patch to deal with mips missing flags
11374         * inssel-long32-mips.brg: implement overflow checks
11375         * insset-mips.brg: implement overflow checks
11376         * mini-mips.h: implement conditional exception handling
11377         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
11378           Remove unused code, minor cleanups.
11379         * exceptions-mips.c: minor cleanups
11380         * mini-ops.h: add mips conditional exception ops
11381         * cpu-mips.md: add mips conditional exception ops
11382
11383         
11384 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11385
11386         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
11387         to deal with mips missing of flags.
11388
11389 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11390
11391         * exceptions-ppc.c: execute fault handlers.
11392
11393 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
11394
11395         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
11396
11397 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11398
11399         * mini.c: handle also floating point values in initialize_array.
11400
11401 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11402
11403         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
11404         array initialization and make it conditional on the intrins option.
11405
11406 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11407
11408         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
11409         relocations and put the patch info names close to the enum definition.
11410
11411 2007-01-15 Mark Mason <mason@broadcom.com>
11412
11413         * basic.cs, exceptions.cs: break up large tests to increase debugability.
11414
11415 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11416
11417         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
11418
11419 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11420
11421         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
11422
11423 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11424
11425         * Makefile.am: distribute the mips sources.
11426
11427 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11428
11429         * mini-codegen.h: handle bug #80489 here, by excluding ecx
11430         directly.
11431
11432 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
11433
11434         * cpu-x86.md: back out for now as this triggers other regressions.
11435
11436 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11437
11438         * cpu-x86.md: force src1 and dest regpair for long shift instructions
11439         to eax:edx, so ecx can't get allocated to them (bug #80489).
11440
11441 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
11442
11443         * mini.c, mini-exceptions.c: enabled running fault handlers
11444         (bug #80469).
11445
11446 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11447
11448         * driver.c: If nothing fail, do not use the string "failed",
11449         because it makes it very annoying to view test result logs on the
11450         web. 
11451
11452 2006-12-30  Miguel de Icaza  <miguel@novell.com>
11453
11454         * debug-debugger.c (mono_debugger_main): Rename "main" to
11455         "main_method" to prevent a warning.
11456
11457         Remove a warning for unused field.
11458
11459 2006-12-28  Martin Baulig  <martin@ximian.com>
11460
11461         * debug-debugger.c
11462         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
11463
11464 2006-12-22  Martin Baulig  <martin@ximian.com>
11465
11466         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
11467         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
11468         seperate `.mdb_debug_info' section, so we can access it from the
11469         debugger even if the binary is stripped.
11470
11471         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
11472         from the `.mdb_debug_info' here to prevent the linker from
11473         removing that section.
11474
11475         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
11476         mdb-debug-info64.s.
11477
11478 2006-12-19  Robert Jordan  <robertj@gmx.net>
11479
11480         * mini-x86: enable the code to return small structures in
11481         registers for FreeBSD as well. Fixes bug #80278.
11482         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
11483
11484 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11485
11486         * mini-x86.c: align the stack when calling the profiler
11487         function instrumenting the prolog (on OSX).
11488
11489 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11490
11491         * mini.c: emit a break opcode where Debugger.Break () is called.
11492
11493 2006-12-13  Miguel de Icaza  <miguel@novell.com>
11494
11495         * mini.c (mono_method_to_ir): Provide useful information on this
11496         assert, to prevent others from debugging like I did.
11497
11498 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11499
11500         * mini.c: enable code which was incorrectly commented
11501         (bug #80235).
11502
11503 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11504
11505         * mini-x86.c: enable on OSX, too, the code to return small
11506         structures in registers.
11507
11508 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11509
11510         * mini-x86.c: remove the use of the dynamic code manager here, too.
11511
11512 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11513
11514         * mini.h, debug-debugger.c, tramp-*.c: fixed 
11515         mono_debugger_create_notification_function() to use
11516         mono_global_codeman_reserve () instead of a dynamic code manager.
11517
11518 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11519
11520         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
11521         ves_array_element_address() jit icall and use a generated
11522         managed method instead (which is about 4 times faster for a rank 3
11523         array access).
11524
11525 2006-11-29  Mark Mason  <mason@broadcom.com>
11526
11527         * basic-calls.cs: additional tests for passing
11528         structures as function arguments.
11529
11530 2006-11-29  Mark Mason  <mason@broadcom.com>
11531
11532         * mini-mips.h: disable custom exception handling
11533         * mini-mips.c: throw/rethrow should use jalr to call
11534         exception stubs.  Fixed bug with passing structures
11535         by value. More support for tracing floating point
11536         functions.
11537
11538 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11539
11540         * mini.c: fixed typo in the soft-float ldind.r4 handling
11541         (bug #80086).
11542
11543 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11544
11545         * mini.c, mini.h, driver.c: added --runtime command line
11546         option to select a different runtime than the autodetected one.
11547         * jit.h: added API for embedders to initialize with a specific
11548         runtime version.
11549
11550 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11551
11552         * mini.c: handle also boxing of r4 values (bug #80024).
11553
11554 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11555
11556         * mini-ppc.c: force indirect calls until we reserve
11557         enough address space for all the generated code.
11558
11559 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
11560
11561         * exceptions-arm.c: workaround bugs in the libc definition
11562         of struct ucontext.
11563
11564 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11565
11566         * inssel.brg: fixes from me and Mark Mason.
11567
11568 2006-11-23  Dick Porter  <dick@ximian.com>
11569
11570         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
11571         semaphore display now we've fixed the initial value
11572
11573 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11574
11575         * inssel.brg: partially revert the last change to fix the build.
11576
11577 2006-11-21  Mark Mason  <mason@broadcom.com>
11578
11579         * inssel.brg: Add and use compare-and-branch macros to support
11580         architectures that do not have condition code registers (ie. MIPS).
11581         * *-mips.{c,brg,md}: Fix copyright statements
11582
11583 2006-11-20  Mark Mason  <mason@broadcom.com>
11584
11585         * Makefile.am: remove mini-codegen.c from list of MIPS sources
11586         * mini.c: Allow GET_CONTEXT to be specified by the arch port
11587         * mini.h: Added declaration for mono_print_ins()
11588         * mini-codegen.c: added ins_spec initializer for MIPS
11589         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
11590         vreg to be virtual and hreg to be non-virtual.
11591         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
11592         is not yet working/implemented correctly.
11593         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
11594         non-static, fixup calls to print_ins() from other parts in the file.
11595
11596 2006-11-20  Mark Mason  <mason@broadcom.com>
11597
11598         * basic-calls.cs: added tests for passing structures as arguments
11599         to calls.
11600
11601 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11602
11603         * inssel-long32.brg: optimize signed division by power of two.
11604
11605 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11606
11607         * mini-arm.c: added support for interworking with thumb code
11608         (mono must be still be built using the ARM instruction encoding).
11609
11610 2006-11-19  Miguel de Icaza  <miguel@novell.com>
11611
11612         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
11613         verifier has different rules for it.   Fixes a few verifier issues
11614         in the test suite.
11615
11616         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
11617         at the end, so people know what happened.
11618
11619 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11620
11621         * brach-opts.c: in optimize_exception_target() make sure we
11622         are in a catch clause (fixes bug #79871).
11623
11624 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11625
11626         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
11627         more soft-float support fixes.
11628
11629 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
11630
11631         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
11632         that are passed half on the stack and half in registers.
11633
11634 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
11635
11636         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
11637         more mips integration work from Mark E Mason 
11638         <mark.e.mason@broadcom.com>.
11639
11640 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11641
11642         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
11643         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
11644         tramp-mips.c: added sources for the mips port, not
11645         integrated in the build yet. Contributed by
11646         Mark E Mason <mark.e.mason@broadcom.com>.
11647
11648 2006-11-14  Neale Ferguson <neale@sinenomine.net>
11649
11650         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
11651
11652 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11653
11654         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
11655         put the soft-float rules in its own file since it seems to
11656         break s390 compilation.
11657
11658 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11659
11660         * mini-arm.c: fixed wrnings.
11661
11662 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
11663
11664         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
11665         inssel-arm.brg: ARM support for soft-float.
11666
11667 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11668
11669         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
11670         loads and stores of 32 bit fp values.
11671
11672 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
11673
11674         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
11675
11676         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
11677         works. Fixes #79852 and #79463.
11678
11679 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11680
11681         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
11682         more soft-float support WIP and fixes.
11683
11684 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
11685
11686         * mini-arm.c: some VFP updates.
11687
11688 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11689
11690         * mini-exceptions.c: 0 is a valid local var offset in some
11691         architectures, don't assert (bug #78508).
11692
11693 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
11694
11695         * exceptions-arm.c: fixed off by one error in stack walk code.
11696
11697 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
11698
11699         * mini.h, mini.c: more precise tracking of type load exceptions.
11700
11701 2006-11-03  Robert Jordan  <robertj@gmx.net>
11702
11703         * Makefile.am: [WIN32] Add monow.exe target.
11704         * driver.c: [WIN32] Don't detach the console when debugging.
11705         Fixes bug #79797.
11706         
11707 2006-10-30  Miguel de Icaza  <miguel@novell.com>
11708
11709         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
11710
11711 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11712
11713         * aot-compiler.c (emit_method_info): Add a case missed earlier.
11714
11715         * driver.c (mini_regression): Fix --regression with AOT.
11716
11717         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
11718
11719 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
11720
11721         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
11722
11723         * mini-sparc.h: Don't use sigaction on sparc/linux.
11724
11725         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
11726
11727         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
11728
11729         * mini-exceptions.c: Add proper include files for getpid ().
11730
11731 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
11732
11733         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
11734         address instead of a MonoJitInfo* to avoid decoding the exception info for the
11735         method.
11736
11737         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
11738         name cache to reduce its size.
11739
11740         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
11741
11742 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11743
11744         * mini-x86.c: Save/restore the current LMF structure more efficiently using
11745         the mono_lmf TLS variable.
11746
11747         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
11748         trampoline lmf frames.  
11749
11750         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
11751
11752 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
11753
11754         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
11755         the mono_lmf TLS variable.
11756
11757         * mini-exceptions.c: Access the LMF structure through accessors.
11758
11759         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
11760         variable instead of in jit_tls->lmf.
11761
11762         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
11763         
11764         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
11765         trampoline lmf frames.
11766
11767         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
11768
11769 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
11770
11771        * mini.c trace.c mini-x86.c: Revert these too.
11772         
11773        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
11774        signature change.
11775
11776 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
11777
11778         * genmdesc.c: removed now dead code.
11779
11780 2006-10-09  Robert Jordan <robertj@gmx.net>
11781
11782         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
11783
11784 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11785
11786         * mini.h: do not leave gaps in the opcode values.
11787
11788 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
11789
11790         * jit-icalls.h: flag functions as internal here, too.
11791
11792 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
11793
11794         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
11795         functions with the internal attribute.
11796
11797 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
11798
11799         * aot-compiler.c: fclose the file descriptor in the profile read loop.
11800
11801 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
11802
11803         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
11804         for soft-float.
11805
11806 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
11807
11808         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
11809         tail calls as on other platforms.
11810
11811         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
11812
11813         * iltests.il: Add a few tailcall tests.
11814
11815 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11816
11817         * driver.c: fix loop for old compilers (bug #79521).
11818
11819 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
11820
11821         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
11822
11823         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
11824
11825         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
11826         metadata without any code.
11827
11828         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
11829         more precise debugging information using gdb.
11830
11831 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
11832
11833         * inssel-ia64.brg: Make the helper methods static.
11834
11835 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11836
11837         * inssel-x86.brg: make the helper methods static.
11838
11839 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
11840
11841         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
11842
11843 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11844
11845         * mini.c: updates for monoburg changes.
11846         * inssel.brg: make a few helper functions static as they should.
11847
11848 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
11849
11850         * Makefile.am: Move mini-codegen.c to common_sources.
11851
11852 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11853
11854         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
11855         instructions.
11856         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
11857         mini-ppc.h: port to use the common local register allocator.
11858
11859 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11860
11861         * mini.h: Remove the comment too then.
11862
11863 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
11864
11865         * mini.h: put back backend.data which is to be used shortly and
11866         doesn't increase the size of MonoInst. If any 64 bit arch aligned
11867         pointers on 4 byte boundaries it'd have much bigger issues running
11868         and you can ifdef it out anyway.
11869
11870 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11871
11872         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
11873         MonoInst size by 4 bytes on 64 bit machines.
11874
11875 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11876
11877         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
11878         replacement with more meaningful field names. Arch maintainers, please
11879         check the assigned names are good enough for your arch.
11880
11881 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11882
11883         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
11884         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
11885
11886 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
11887
11888         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
11889         relocations and memory requirements, put the optimization flags
11890         definitions in their own file.
11891
11892 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
11893
11894         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
11895
11896         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
11897
11898 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
11899
11900         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
11901
11902 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
11903
11904         * inssel.brg: use the correct function to get the size of an item
11905         in an array, given an element class.
11906         * aot-compiler.c: do not access class->class_size directly.
11907
11908 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11909
11910         * mini.h, debug-mini.c: added a debugging function to print
11911         info about local variables and arguments in a jitted method.
11912
11913 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
11914
11915         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11916
11917         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
11918
11919 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11920
11921         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
11922         inner and outer loops when passing vtypes.
11923
11924 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
11925
11926         * mini-ppc.c: take into account the cpu errata for cache flushing
11927         which caused some random errors (bug #79381).
11928
11929 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
11930
11931         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
11932         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
11933
11934 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
11935
11936         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
11937         loaded.
11938
11939         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
11940         freebsd ports tree.
11941
11942         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
11943         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
11944
11945         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
11946         displacement.
11947
11948 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
11949
11950         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
11951
11952 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
11953
11954         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
11955         macro does not have to be changed during debugging.
11956
11957         * 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>.
11958
11959         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
11960
11961         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
11962         
11963         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
11964         MONO_ARCH_NO_EMULATE_MUL is defined.
11965
11966         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
11967
11968         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
11969
11970         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
11971
11972         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
11973         
11974 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
11975
11976         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
11977         stuff to mini-exceptions.c where it is used.
11978
11979         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
11980         setup code, the real one is in mini-exceptions.c.
11981
11982         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
11983         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
11984         some changes from the freebsd ports tree.
11985
11986         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
11987         constants.
11988         
11989         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
11990
11991 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
11992
11993         * mini.c: on Linux, check for /proc to be mounted
11994         (bug# 79351, novell bug#201204).
11995
11996 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11997
11998         * mini.c: handle cases where pthread_attr_getstack() behaves
11999         incorrectly (bug #78096).
12000
12001 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
12002
12003         * mini-arm.c: support larger stack frames (bug #79272).
12004
12005 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12006
12007         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
12008
12009         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
12010         tokens.
12011
12012         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
12013         mono_class_from_name () to find a class from its name.
12014
12015         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
12016
12017 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
12018
12019         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
12020
12021 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
12022
12023         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
12024
12025 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12026
12027         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
12028         callinfo->trampoline.
12029
12030         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
12031         fixes #79271.
12032         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
12033         future.
12034
12035 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12036
12037         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
12038
12039 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
12040
12041         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
12042         stats.method_trampolines, it is already done by the generic trampoline code.
12043
12044         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
12045         
12046 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12047
12048         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
12049
12050         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
12051
12052         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
12053
12054         * mini.c (print_jit_stats): Print mscorlib mempool size too.
12055         
12056         * mini.c (print_jit_stats): Print new stats.
12057
12058         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12059
12060 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12061
12062         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
12063         Address on two dimensional arrays. Fixes #78729.
12064
12065         * mini.h (MonoCompile): Add a 'skip_visibility' field.
12066
12067         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
12068         a method.
12069
12070         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
12071
12072         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
12073         #79130.
12074         
12075         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
12076         a race condition.
12077         (mini_get_ldelema_ins): Ditto.
12078
12079 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
12080
12081         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
12082         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
12083         Fixes #79213.
12084
12085 2006-08-29 Neale Ferguson <neale@sinenomine.net>
12086
12087         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
12088         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
12089
12090         * exceptions-s390x.c: Cosmetic change.
12091
12092         * tramp-s390.c: Fix warning.
12093
12094         * cpu-s390.md: Correct length of mul_imm.
12095
12096 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
12097
12098         * aot-compiler.c: added binary writer with ELF backend
12099         implementation (only on Linux/x86 for now).
12100
12101 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12102
12103         * Makefile.am: Don't run net 2.0 AOT tests.
12104
12105         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
12106         (mono_compile_assembly): Skip net 2.0 assemblies as well.
12107
12108         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
12109
12110 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12111
12112         * aot-compiler.c: simplified and refactored the asm-writing code
12113         to allow different backends.
12114
12115 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12116
12117         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12118
12119         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
12120         little. Share patches of type TYPE_FROM_HANDLE as well.
12121
12122         * mini.c (mono_patch_info_equal): New helper function.
12123         (mono_patch_info_hash): Ditto.
12124
12125         * aot-compiler.c (emit_method_code): Fix s390 build.
12126
12127         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
12128         is not handled because it is stored as a flag and not as a type ctor. Fixes
12129         #79016.
12130
12131 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12132
12133         * aot-compiler.c: Fix computation of GOT slot statistics.
12134         
12135         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
12136         Also remove support for not PIC AOT.
12137
12138         * mini.h: Bump AOT file format version.
12139
12140         * objects.cs: Add a test for #78990.
12141
12142         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
12143         (peter.dettman@iinet.net.au). Fixes #79087.
12144
12145         * basic-long.cs: Add a test for the above.
12146
12147 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
12148
12149         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
12150         
12151         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
12152         code somewhat.
12153
12154 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
12155
12156         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
12157         exceptions.
12158
12159 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12160
12161         * mini.c: Don't verify COM proxy invoke calls
12162         
12163
12164 2006-08-10  Dick Porter  <dick@ximian.com>
12165
12166         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
12167         which process is holding semaphores locked.
12168
12169 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
12170
12171         * mini-ia64.c mini-amd64.c: Fix #79027.
12172
12173         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
12174
12175         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
12176
12177         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
12178         implicit arguments in a vararg call. Fixes #79027.
12179
12180 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
12181
12182         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
12183         (mono_get_array_new_va_signature): Ditto.
12184
12185 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
12186
12187         * aot-runtime.c: Call init_plt lazily.
12188
12189         * inssel-long.brg: Fix unsigned long->int conversion.
12190
12191         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
12192
12193         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
12194         that most data is now in the .rss/.data section.
12195
12196 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
12197
12198         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
12199
12200         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
12201
12202         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
12203
12204         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
12205
12206         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
12207         virtual call. Fixes #79010.
12208
12209         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
12210         and use the result as the this argument in the real call.
12211
12212         * generics.2.cs: Add a new test for #79010.
12213         
12214 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
12215
12216         * mini-x86.c: Fix a warning.
12217
12218         * aot-compiler.c: Add a bunch of statistics.
12219
12220         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
12221
12222 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
12223
12224         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
12225
12226 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12227
12228         * 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>.
12229
12230 2006-07-13  Miguel de Icaza  <miguel@novell.com>
12231
12232         * mini.c (mono_method_to_ir): Obtain the original method in the
12233         CIL stream and use this to perform validation.
12234
12235         Fixed: #78816
12236
12237 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
12238
12239         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
12240         (mono_arch_call_opcode): Ditto.
12241
12242         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
12243         #78826.
12244
12245         * mini.c (mono_patch_info_dup_mp): New helper function.
12246         
12247         * aot-compiler.c (compile_method): Fix some of the memory allocated during
12248         compilation. Fixes #78827.
12249
12250 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
12251
12252         * declsec.c: Use original security informations for
12253           MONO_WRAPPER_MANAGED_TO_MANAGED.
12254
12255 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12256
12257         * mini.c: Allow Com Interop methods/classes and
12258         don't verify COM wrapper calls
12259         
12260
12261 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
12262
12263         * inssel-long32.brg: Fix long->i4 checked conversion.
12264
12265         * exceptions.cs: Add a test for the above.
12266
12267 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12268
12269         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
12270
12271         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
12272         leaks.
12273
12274         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
12275         #78775.
12276
12277 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
12278
12279         * mini.c: Fix solaris/x86 exception handling.
12280
12281         * Makefile.am: Get rid of $(ICU_LIBS).
12282
12283 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
12284
12285         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
12286         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
12287         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
12288
12289         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
12290
12291         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
12292         this function causes a SIGSEGV.
12293
12294 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
12295
12296         * mini.c: Remove unused solaris/x86 includes.
12297
12298 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12299
12300         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
12301
12302 2006-06-20  Jb Evain  <jbevain@gmail.com>
12303
12304         * cpu-g4.md: fix max length of start_handler instruction.
12305
12306 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
12307         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
12308
12309 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
12310         * ssa.c: Fixed bug 78653 for SSA based deadce.
12311         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
12312         MonoInst.flags, used in SSA based deadce.
12313         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
12314         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
12315
12316 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12317
12318         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
12319         it can end up using non executable memory on ppc64 systems
12320         running ppc32 userspace (fix from Johannes Berg).
12321
12322 2006-06-14  Dick Porter  <dick@ximian.com>
12323
12324         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
12325         4.1.1
12326
12327 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
12328         * mini.c: Made so that inline is locally disabled if it would
12329         trigger a .cctor, because too many apps depend on this behavior
12330         (which seems to be also the one of the MS CLR).
12331
12332 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
12333
12334         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
12335         No idea why this worked before.
12336
12337         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
12338         which branch to outer exception clauses since they could skip the
12339         inner finally clauses. Fixes #78633.
12340
12341         * exceptions.cs: Add a test for the above.
12342
12343         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
12344         Fixes #78629.
12345
12346         * iltests.il: Add a test for the above.
12347
12348 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
12349
12350         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
12351         after the end of a try bblock, to prevent asserts in mini_method_compile ().
12352
12353         * iltests.il: Add a test for the above.
12354
12355 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
12356
12357         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
12358         
12359         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
12360         methods as instrinsics.
12361
12362 2006-06-09  Wade Berrier <wberrier@novell.com>
12363
12364         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
12365         (simple-cee-ops.h ssapre-mini-ops.h)
12366
12367 2006-06-09  Neale Ferguson <neale@sinenomine.net>
12368
12369         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
12370         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
12371         instruction).
12372         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
12373         * cpu-s390x.md: Fix max. length values for a couple of instructions.
12374
12375 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12376
12377         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
12378
12379 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
12380
12381         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
12382         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
12383         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
12384         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
12385         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
12386         of opcodes, so that bug 78549 should not happen again.
12387         * ssapre.c: Updated to use the renamed files.
12388
12389 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12390
12391         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
12392         in OP_ATOMIC_EXCHANGE_I4.
12393
12394 2006-06-07  Wade Berrier <wberrier@novell.com>
12395
12396         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
12397         in mono_debugger_create_notification_function)
12398
12399 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
12400
12401         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
12402         
12403         * mini.c (type_from_stack_type): Disable some changes which do not
12404         seem to work.
12405
12406         * driver.c: Reenable opts.
12407
12408         * mini.h (MonoStackSlot): New structure to keep track of the verification state
12409         of the evaluation stack.
12410         
12411         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
12412         evaluation stack trace at entry to the bblock.
12413
12414         * mini.c (merge_stacks): New function to perform verification of stack merges.
12415         Turned off by default.
12416
12417         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
12418         STACK_MP.
12419         
12420 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
12421
12422         * local-propagation.c: Fixed bug 78549.
12423
12424 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
12425
12426         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
12427
12428 2006-06-02  Miguel de Icaza  <miguel@novell.com>
12429
12430         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
12431         tramp-arm.c, tramp-ia64.c
12432         (mono_debugger_create_notification_function): Update signature to
12433         new signature and use new protocol for creating the notification
12434         function.  
12435
12436         Should fix the build.
12437
12438 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
12439
12440         * exceptions-ppc.c (mono_jit_walk_stack)
12441         (ves_icall_get_frame_info): Fix the build
12442
12443 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12444
12445         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
12446
12447 2006-05-31  Raja R Harinath  <rharinath@novell.com>
12448
12449         * il2tests.2.il: New file for generics CIL tests.  Add test for
12450         #78019.
12451         * Makefile.am: Update.
12452
12453         Fix #78019
12454         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
12455         to nullable types.
12456
12457 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
12458
12459         * aliasing.c: Fixed bug 78311.
12460
12461 2006-05-29  Martin Baulig  <martin@ximian.com>
12462
12463         * mini-exceptions.c (mono_find_jit_info): When computing the
12464         native offset, check whether we're actually inside the method's
12465         code; call mono_debug_print_stack_frame() to format the frame.
12466         (ves_icall_System_Exception_get_trace): Call
12467         mono_debug_print_stack_frame() to format the stack frame.
12468         (ves_icall_get_trace): Update to the new debugging API.
12469         (mono_jit_walk_stack_from_ctx): Likewise.
12470         (ves_icall_get_frame_info): Likewise.
12471
12472         * mini.c (get_method_from_ip): Use the new debugging API.
12473         (mono_print_method_from_ip): Likewise.
12474
12475         * exceptions-ppc.c
12476         (mono_jit_walk_stack): Use the new debugging API.
12477         (ves_icall_get_frame_info): Likewise.   
12478
12479 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12480
12481         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
12482
12483 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
12484
12485         * mini.c: Added "limitator" to inline for debugging.
12486
12487 2006-05-24  Martin Baulig  <martin@ximian.com>
12488
12489         * debug-debugger.c (mono_debugger_init): Create a private,
12490         malloc()-based code manager for the notification function and
12491         intentionally leak it on exit.  This fixes the crash-on-exit race
12492         condition.
12493
12494         * tramp-amd64.c
12495         (mono_debugger_create_notification_function): Added
12496         `MonoCodeManager *' argument.
12497
12498         * tramp-x86.c
12499         (mono_debugger_create_notification_function): Added
12500         `MonoCodeManager *' argument.
12501
12502 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
12503
12504         * aliasing.c: Fixed 64 bit issue.
12505         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12506         default since all known bugs are fixed (one more time!).
12507
12508 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12509
12510         * mini.c: write barrier support.
12511
12512 2006-05-23  Martin Baulig  <martin@ximian.com>
12513
12514         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
12515         check at the top of the file.
12516
12517 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12518
12519         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
12520         reverting changes without reason and without changelog entries.
12521
12522 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12523
12524         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
12525         to a few opcodes. Fixes #78439.
12526
12527         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
12528         consistency with other archs.
12529
12530         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
12531
12532 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12533
12534         * debug-debugger.c: fix the build.
12535
12536 2006-05-17  Martin Baulig  <martin@ximian.com>
12537
12538         * debug-debugger.c
12539         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
12540         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
12541         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
12542         (debugger_attach): Call GC_mono_debugger_add_all_threads().
12543
12544 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
12545
12546         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
12547
12548 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
12549
12550         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
12551         MONO_TYPE_GENERICINST.
12552         
12553         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
12554         MONO_TYPE_GENERICINST.
12555
12556 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
12557
12558         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
12559         #78325.
12560
12561 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
12562
12563         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
12564         mempool.
12565         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
12566
12567 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
12568
12569         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
12570         mono_trace_cleanup ().
12571
12572         * iltests.il: Fix problem with the newly added test.
12573
12574         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
12575         due to register constraints, free up the previous hreg. Fixes #78314.
12576
12577         * iltests.il: Add new test for #78314.  
12578
12579         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
12580         Interlocked.Add. Fixes #78312.
12581
12582         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
12583         
12584 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
12585
12586         * inssel.brg (mini_emit_virtual_call): Fix a warning.
12587
12588 2006-05-05  Martin Baulig  <martin@ximian.com>
12589
12590         * debug-mini.c (mono_debug_open_block): New method.
12591
12592         * mini-amd64.c
12593         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12594         the beginning of each basic block.
12595
12596         * mini-x86.c
12597         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12598         the beginning of each basic block.
12599
12600 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12601
12602         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12603         default until I understand why they break the build on amd64.
12604
12605 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
12606
12607         * mini.c (mini_cleanup): Call mono_cleanup ().
12608
12609         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
12610         errors.
12611
12612 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12613
12614         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
12615         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12616         default since all known bugs are fixed, and I cannot reproduce bug
12617         77944... I'm asking Matt Hargett to test again after this commit.
12618
12619 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
12620
12621         * mini-codegen.c: Fixed typo that thrashed inline.
12622
12623 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
12624
12625         * dominators.c (compute_dominators): Avoid using a worklist since
12626         it is not correct in some cases. Instead, iterate over all bblocks as
12627         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
12628
12629 2006-04-28  Miguel de Icaza  <miguel@novell.com>
12630
12631         * mini.c (mono_jit_compile_method_inner): Use
12632         mono_prepare_exception_from_error that resets the value
12633         internally.
12634
12635 2006-04-27  Miguel de Icaza  <miguel@novell.com>
12636
12637         * mini.c: Move the mini_loader_error_to_exception to metadata. 
12638         
12639 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12640
12641         * aliasing.c: Fixed bug 78210.
12642
12643 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12644
12645         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12646         default until all their problems (or the ones they trigger) are fixed.
12647
12648 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
12649
12650         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
12651         
12652         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
12653         as loaded only after resolving patches since that could invoke the same method.
12654
12655         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
12656
12657         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
12658         functions.
12659
12660         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
12661         AOT loader.
12662
12663         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
12664         stack.
12665
12666         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
12667         made from AOT code through the PLT table.
12668
12669         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
12670         holding the plt offset when a call is made to the aot plt trampoline.
12671         
12672 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12673
12674         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
12675         amd64 AOT support.
12676
12677         * Makefile.am (common_sources): Fix build breakage.
12678
12679         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
12680         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
12681         intra-assembly calls if possible.
12682         
12683         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
12684
12685         * mini-trampolines.c: Handle PLT entries.
12686
12687         * mini.c: Avoid creating a GOT var for calls.
12688
12689         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
12690         from mscorlib code.
12691
12692         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
12693         from mscorlib code.
12694
12695         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
12696         AOT code.       
12697
12698         * mini.h: Bump AOT file format version.
12699         
12700         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
12701         covers more cases.
12702
12703 2006-04-25  Martin Baulig  <martin@ximian.com>
12704
12705         * driver.c: Disable copyprop, consprop and inline when running
12706         inside the debugger.
12707
12708 2006-04-25  Martin Baulig  <martin@ximian.com>
12709
12710         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
12711         with `get_current_thread' and added `detach'.
12712         (MonoDebuggerMetadataInfo): Added `thread_size',
12713         `thread_tid_offset', `thread_stack_ptr_offset' and
12714         `thread_end_stack_offset'.
12715
12716 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12717
12718         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
12719         aot-runtime.c.
12720
12721         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
12722         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
12723
12724         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
12725
12726         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
12727
12728         * aot.c: Add support for ADJUSTED_IID.  
12729
12730 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
12731
12732         * aot.c (emit_method_order): Don't align method_order_end.
12733
12734         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
12735         the interface ID changes.
12736
12737 2006-04-21  Dick Porter  <dick@ximian.com>
12738
12739         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
12740         cleaning up a thread.  Fixes the new part of bug 77470.
12741
12742 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
12743
12744         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
12745         to managed wrapper.
12746                      
12747 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
12748
12749         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
12750         
12751         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
12752         SIGSEGV. Fixes #78072.
12753
12754         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
12755         unregister our SIGABRT handler.
12756
12757 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
12758
12759         * mini.c: Disabled inline where it can alter the call stack in a
12760         way visible from managed code.
12761         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
12762         default.
12763
12764 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
12765
12766         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
12767         on other platforms. Fixes #78089.
12768
12769 2006-04-13  Martin Baulig  <martin@ximian.com>
12770
12771         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
12772         determine whether we're inside the debugger.
12773
12774         * debug-debugger.h
12775         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
12776
12777 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
12778
12779         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
12780         handler clauses. Fixes #78024.
12781
12782         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
12783         in the CALL_MEMBASE opcodes. Fixes #78088.
12784         (mono_arch_get_vcall_slot_addr): Ditto.
12785
12786 2006-04-10  Martin Baulig  <martin@ximian.com>
12787
12788         * debug-debugger.c: The thread handling code has now been moved
12789         into ../metadata/threads.c.
12790
12791 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12792
12793         * driver.c (mono_main): Fix --with-gc=none build.
12794
12795         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
12796         (mono_spillvar_offset_float): Ditto.
12797         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
12798         hreg, not when its !global, since on ia64, there is a third category: stacked
12799         registers.      
12800
12801 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
12802
12803         * mini.c: set MonoInst->klass for load field address and a few other
12804         places.
12805
12806 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12807
12808         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
12809
12810 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
12811
12812         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
12813         the branch opt changes.
12814
12815 2006-04-06  Dick Porter  <dick@ximian.com>
12816
12817         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
12818         
12819         * wapihandles.c (mini_wapi_seminfo): 
12820         * driver.c (mono_main): Add semaphore info option
12821
12822 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
12823
12824         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
12825         branch optimization changes. Fixes #78009.
12826
12827 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12828
12829         * mini.c: ignore accessibility of methods in managed->native wrappers.
12830
12831 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
12832
12833         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
12834         
12835         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
12836
12837 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
12838
12839         * mini.c: Modify the branch optimizations to preserve the invariant that
12840         the entries inside the in_bb and out_bb arrays are unique.
12841         (mono_unlink_bblock): Avoid creation of new arrays.
12842
12843 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
12844
12845         * mini.c (mono_unlink_bblock): Fix regression caused by previous
12846         change (#77992).
12847
12848 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
12849
12850         * mini.c (optimize_branches): Remove the "optimizations" in
12851         the cbranch1/cbranch2 -> branch cases which were causing several
12852         problems in the past. Fixes #77986.
12853
12854 2006-03-31  Chris Toshok  <toshok@ximian.com>
12855
12856         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
12857         default optimizations :(
12858
12859 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
12860
12861         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
12862         branch.
12863
12864 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
12865
12866         * local-propagation.c: Added comments to structs and removed
12867         "Mono" prefixes from local tree mover types.
12868
12869 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
12870
12871         * Makefile.am (arch_sources): Define this for each architecture so 
12872         libmono_la_SOURCES is defined in one place.
12873
12874 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
12875
12876         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
12877         from handles/.
12878
12879 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
12880
12881         * driver.c: print the GC name supplied by configure.
12882
12883 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
12884
12885         * local-propagation.c: Added tree mover, and moved here all the
12886         local propagation code from mini.c
12887         * mini.c: Added support for treeprop, and moved all the local
12888         propagation code to local-propagation.c
12889         * mini.h: Added support for treeprop
12890         * driver.c: Added support for treeprop, enabled consprop, copyprop,
12891         treeprop, inline and deadce by default
12892         * Makefile.am: Added local-propagation.c
12893
12894 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
12895
12896         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
12897
12898 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
12899
12900         * debug-debugger.c: make it compile without the Boehm GC.
12901
12902 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12903
12904         * mini.c: fixed issue with mismatch when an icall is registered
12905         with multiple names but same address.
12906
12907 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12908
12909         * declsec.c, mini-exceptions.c: use write barrier to set reference
12910         fields of managed objects.
12911
12912 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12913
12914         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
12915         (can_access_internals): Fix a warning.
12916
12917         * mini.c (print_method_from_ip): Rename this to 
12918         mono_print_method_from_ip so it gets exported.
12919
12920         * trace.c: Deal with strings inside StringBuilder's containing garbage
12921         and fix memory leaks. Fixes #77848.
12922
12923 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12924
12925         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
12926         fixes #77787.
12927
12928 2006-03-16 Neale Ferguson <neale@sinenomine.net>
12929         
12930         * mini-s390.c: Remove OP_X86_TEST_NULL.
12931
12932 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12933
12934         * mini.c: use the correct GetHashCode() for the moving collector.
12935
12936 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
12937
12938         * liveness.c: Regalloc spill cost tuning.
12939
12940 2006-03-15 Neale Ferguson <neale@sinenomine.net>
12941         
12942         * mini-s390x.h: Correct S390_LONG macro.
12943
12944         * mini-s390x.c: Cleanup unused code.
12945
12946 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
12947
12948         * jit-icalls.h: New file.
12949
12950         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
12951         icalls and include that instead of including jit-icalls.c.
12952
12953         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
12954         OP_X86 opcodes.
12955
12956 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
12957
12958         * mini.c: when checking for member accessibility, also check for
12959         friend assemblies and for explicit interface implementations.
12960
12961 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
12962
12963         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
12964
12965         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
12966
12967         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12968         common cases are done first.    
12969
12970         * mini-ops.h: Only define platform specific opcodes on the given platform.
12971
12972         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
12973         branch.
12974         
12975 2006-03-14  Martin Baulig  <martin@ximian.com>
12976
12977         Revert Paolo's change from r57348:
12978
12979         * mini.h: don't use gboolean for bitfields.
12980         * mini.c: verifier changes for fields and methods accessibility.
12981
12982 2006-03-13  Neale Ferguson <neale@sinenomine.net>
12983
12984         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
12985
12986         * mini-s390x.c: Fix conv_r_un.
12987
12988         * cpu-s390, cpu-s390x.md: Fix lengths.
12989
12990 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
12991
12992         * mini.c: nested types have access to all the nesting
12993         levels, not just the enclosing types.
12994
12995 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12996
12997         * mini.c: added a few more verification checks.
12998
12999 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
13000
13001         * liveness.c: Merge optimizations from the linear-il branch.
13002
13003 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13004
13005         * mini-ia64.c (emit_call): Add a comment.
13006
13007         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
13008
13009         * tramp-ia64.c: Fix some warnings.
13010
13011 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
13012
13013         * mini.h: don't use gboolean for bitfields.
13014         * mini.c: verifier changes for fields and methods accessibility.
13015
13016 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13017
13018         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
13019         lazy icall wrapper changes.
13020
13021         * dominators.c: Replace all the dominator algorithms with faster
13022         ones from the linear-il branch.
13023
13024         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
13025         the mempool.
13026
13027         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13028         common cases are done first.
13029
13030         * mini-amd64.c: Fix some warnings.
13031
13032         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
13033         from the mempool.
13034
13035         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
13036         added code.
13037
13038         * mini.h: Add a missing prototype.
13039
13040 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13041
13042         * mini.c: Compile icall wrappers lazily.
13043
13044         * mini-codegen.c: Use printf instead of g_print since its much faster.
13045
13046         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
13047         function.
13048
13049         * mini.c (optimize_branches): Cache the negative result from 
13050         remove_block_if_useless ().
13051
13052         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
13053         Also fix some bblock linking issues.
13054
13055         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
13056         assembly files.
13057
13058         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
13059
13060         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
13061         accessed fields first, for better cache behavior.
13062         
13063 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13064
13065         * mini.c: speedup IList<T> array accesses.
13066
13067 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13068
13069         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
13070         inline_costs counter. Fixes #77190.
13071
13072 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
13073
13074         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
13075         trace messages. Fixes #77706.
13076
13077 2006-03-04  Martin Baulig  <martin@ximian.com>
13078
13079         * tramp-amd64.c, tramp-x86.c
13080         (mono_debugger_create_notification_function): Use
13081         mono_global_codeman_reserve() to allocate a buffer at runtime and
13082         return it.
13083
13084         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
13085
13086         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
13087         notification function at runtime and then call `initialize' in the
13088         `MONO_DEBUGGER__debugger_info' vtable.
13089
13090 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13091
13092         * iltests.il: Fix a visibility problem.
13093
13094 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13095
13096         * driver.c, mini.c: add hooks for the counters API.
13097
13098 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13099
13100         * driver.c: show disabled options.
13101
13102 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13103
13104         * linear-scan.c: always use cost-driven selection.
13105
13106 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13107
13108         * jit-icalls.c (helper_compile_generic_method): Revert change from
13109         2006-02-24.
13110
13111 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
13112
13113         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
13114
13115 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13116
13117         * inssel.brg: style fixes, mostly to force the updated monoburg
13118         to run for people using svn.
13119
13120 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
13121
13122         * mini.c: match monoburg changes.
13123
13124 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13125
13126         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
13127         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
13128         declaration in the header file.
13129
13130 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13131
13132         * helpers.c: reduce relocations and mem usage.
13133
13134 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
13135
13136         * mini.h, mini-codegen.c: disable logging features if
13137         requested by configure.
13138
13139 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
13140
13141         * mini.c: tiny verifier changes.
13142
13143 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13144
13145         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
13146         cpu-pentium.md: stack alignment changes for osx/x86,
13147         partially from Geoff Norton <gnorton@customerdna.com>.
13148
13149 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13150
13151         * jit-icalls.c (helper_compile_generic_method): Update to changes
13152         in metadata/class.c.
13153
13154 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13155         
13156         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
13157         
13158         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
13159         interface calls with large offsets.
13160
13161 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13162
13163         * jit-icalls.c (helper_compile_generic_method): Document the
13164         special-case we depend on so that we can inflate the method twice
13165         with the same context with no bad side-effects.
13166
13167 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
13168
13169         * mini-x86.c, mini-amd64.c: fix for case when xen support
13170         is disabled.
13171
13172 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
13173
13174         * mini-x86.c, mini-amd64.c: generate code to access tls items
13175         in a faster way for Xen systems.
13176
13177 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13178
13179         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
13180         updates and compilation fixes for the OSX/x86 port, mostly from
13181         Geoff Norton <gnorton@customerdna.com>.
13182
13183 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13184
13185         * inssel.brg: faster interface call implementation
13186         to sync with the interface_offsets MonoVTable changes.
13187
13188 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13189
13190         * mini.c: more verification checks.
13191
13192 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
13193
13194         * mini.c: added a few more verification checks.
13195
13196 2006-02-17      Neale Ferguson <neale@sinenomine.net>
13197
13198         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
13199         facility on the processor and use it if available.
13200
13201 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13202
13203         * driver.c, aot.c, mini.c: throw exception if the IL code is
13204         invalid or unverifiable.
13205
13206 2006-02-17  Raja R Harinath  <rharinath@novell.com>
13207
13208         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
13209         m.StructField.
13210
13211 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
13212
13213         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
13214
13215 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13216
13217         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
13218         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
13219         handling of instantiated generic valuetypes.
13220
13221 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
13222
13223         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
13224         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
13225         instead.
13226
13227         * generics.2.cs: Revert the nullable reftypes tests.
13228
13229 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
13230
13231         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
13232         using __builtin_frame_address (1) as it doesn't work in the presence
13233         of optimizations. Hopefully fixes #77273.
13234
13235         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
13236         -> generics.cs change as it doesn't work with some automake versions.
13237
13238 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13239
13240         * mini.c: handle systems that sue a different way to
13241         retrieve the stack address of the current thread.
13242
13243 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
13244
13245         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
13246         it specially in the makefile.
13247
13248         * generics.2.cs: Add tests for nullable reference types.
13249
13250 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13251
13252         * mini.c: always handle the case when mono_jit_init()
13253         is called in a thread different from the main thread,
13254         confusing libgc (bug #77309).
13255
13256 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
13257
13258         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
13259
13260 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13261
13262         * mini.c: change optimize_branches () to use a single loop
13263         and introduce a new optimization to simplify some range checks.
13264
13265 2006-02-03  Martin Baulig  <martin@ximian.com>
13266
13267         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
13268         and merged with debugger_thread_manager_add_thread().
13269         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
13270         inform the debugger about the main thread.
13271
13272 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13273
13274         * basic.cs: Add test for div.un/rem.un constant folding.
13275
13276 2006-02-03  Neale Ferguson <neale@sinenomine.net>
13277
13278         * cpu-s390x.md: correct int_xor_imm length
13279
13280 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13281
13282         * generics.2.cs: New test for #77442.
13283
13284         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
13285         #77442.
13286
13287 2006-02-02  Martin Baulig  <martin@ximian.com>
13288
13289         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
13290         <mono/metadata/mono-debug-debugger.h>   
13291
13292         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
13293
13294 2006-02-02  Martin Baulig  <martin@ximian.com>
13295
13296         * debug-debugger.h: New header file for debug-debugger.c.
13297
13298         * debug-debugger.c: Big API cleanup; don't run the managed Main()
13299         function is a separate thread anymore; add support for attaching.
13300
13301 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
13302
13303         * tramp-x86.c: Fix a warning.
13304
13305 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
13306
13307         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
13308         on very large methods.
13309
13310         * aot.c (load_patch_info): Fix a warning.
13311
13312 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13313
13314         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
13315         mini-ops.h: alu membase optimizations.
13316
13317 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
13318
13319         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
13320         to speedup StringBuilder.
13321
13322 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
13323
13324         * dominators.c (mono_compute_natural_loops): Fix detection of
13325         loop body start blocks.
13326
13327         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
13328
13329 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
13330
13331         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
13332         #75145.
13333
13334 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
13335
13336         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13337
13338 2006-01-25  Martin Baulig  <martin@ximian.com>
13339
13340         * debug-debugger.c: Moved the `MonoDebuggerManager' and
13341         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
13342         started to cleanup this file a little bit.
13343
13344 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
13345
13346         * mini.c: optimize a codepath frequently happening in generics code.
13347
13348 2006-01-23  Martin Baulig  <martin@ximian.com>
13349
13350         * Makefile.am: Only compile debug-debugger.c on supported platforms.
13351
13352         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
13353         functions directly.
13354
13355         * driver.c: debug-debugger.c is only available if
13356         `MONO_DEBUGGER_SUPPORTED' is defined.   
13357
13358 2006-01-23  Martin Baulig  <martin@ximian.com>
13359
13360         * debug-debugger.c: Only enable this on platforms where the Mono
13361         Debugger is working (x86 and x86_64).
13362
13363 2006-01-21  Martin Baulig  <martin@ximian.com>
13364
13365         The Mono Debugger is now using the normal `mono' instead of the
13366         `mono-debugger-mini-wrapper' when executing managed code.
13367
13368         * debug-debugger.c: New file; previously known as
13369         debugger/wrapper/wrapper.c.
13370
13371         * debug-mini.c (mono_init_debugger): Removed.
13372
13373         * driver.c (mono_main): Added new `--inside-mdb' command line
13374         argument which is used when running inside the debugger.
13375
13376 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
13377
13378         * liveness.c (mono_analyze_liveness): Remove some unused data
13379         structures.
13380
13381 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
13382
13383         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
13384
13385 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
13386
13387         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
13388         depends on implementation details of monobitset.
13389
13390         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
13391         Fixes #77271.
13392
13393 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
13394
13395         * liveness.c: Update after monobitset changes.
13396
13397 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
13398
13399         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
13400
13401 2006-01-11 Neale Ferguson <neale@sinenomine.net>
13402
13403         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
13404
13405         * mini-s390x.c: Remove warning messages.
13406
13407 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
13408
13409         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
13410
13411 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
13412
13413         * generics.2.cs: Add ldelem/stelem_any test.
13414
13415 2006-01-10 Neale Ferguson <neale@sinenomine.net>
13416
13417         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
13418
13419 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
13420
13421         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
13422         
13423 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
13424
13425         * generics.2.cs: Reenable vtype tests.
13426
13427         * inssel-x86.brg: Remove an icorrect valuetype rule.
13428
13429 2006-01-06 Neale Ferguson <neale@sinenomine.net>
13430
13431         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
13432         initial support for OP_ABS.
13433
13434 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13435
13436         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
13437
13438 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13439
13440         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
13441         conversion and implement LADD/LSUB.
13442
13443         * exceptions-s390.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: Fix r8 to unsigned int conversion.
13449
13450         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
13451         architectures.
13452
13453 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13454
13455         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
13456         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
13457         (stack walk problem).
13458
13459 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
13460
13461         * aot.c (mono_aot_load_method): Fix a warning.
13462
13463 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13464
13465         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
13466
13467 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13468
13469         * iltests.il: Add test for #77148.
13470
13471         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
13472         #77148.
13473
13474 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13475
13476         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
13477
13478 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13479
13480         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
13481         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
13482
13483         * basic-long.cs: Add lconv-to-r4/r8 tests.
13484
13485 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13486
13487         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
13488
13489         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
13490         here as on other archs.
13491
13492 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13493
13494         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
13495
13496 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13497
13498         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
13499         
13500         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
13501
13502         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
13503         instrument_prolog; Add memory_barrier instruction.
13504
13505 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
13506
13507         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
13508
13509 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
13510
13511         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
13512
13513         * aliasing.c inssel.brg: Fix warnings.
13514
13515         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
13516         could skip initialization of some parts of memory.
13517
13518         * mini.c mini-ia64.c: Fix warnings.
13519
13520         * inssel-sparc.brg: Add an implementation of lneg which actually works.
13521
13522 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
13523
13524         * aliasing.c (mono_build_aliasing_information): Add a workaround for
13525         a crash seen on sparc.
13526
13527         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
13528         
13529         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
13530
13531 2005-12-21 Neale Ferguson <neale@sinenomine.net>
13532
13533         * mini-ops.h: Add s390_backchain instruction
13534
13535         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
13536
13537         * cpu-s390.md: Add s390_backchain instruction
13538
13539         * mini-s390.c: Significant ABI changes
13540
13541         * mini-s390.h: Cater for zero length structures
13542
13543 2005-12-20 Neale Ferguson <neale@sinenomine.net>
13544
13545         * mini-s390.c: ABI fixes
13546
13547         * inssel-s390.brg: Remove debug statements
13548
13549         * cpu-s390.md: Fix length of ATOMIC_xx operations
13550
13551 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
13552
13553         * basic-float.cs: Add float<->long conversion tests.
13554
13555 2005-12-16 Neale Ferguson <neale@sinenomine.net>
13556
13557         * mini-s390.c: Fix LOCALLOC processing.
13558
13559         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
13560
13561 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
13562
13563         * iltests.il: Add tests for some opcodes not covered by the other
13564         tests.
13565
13566 2005-12-15 Neale Ferguson <neale@sinenomine.net>
13567
13568         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
13569         register loading for Tail processing; Correct trace output.
13570
13571         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
13572
13573         * cpu-s390.md: Correct size of jmp instruction. 
13574
13575 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13576
13577         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
13578
13579 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13580
13581         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
13582           Bring s390 up to current level.
13583
13584 2005-12-12  Zltan Varga  <vargaz@gmail.com>
13585
13586         * generics.2.cs: Disable the newly added tests as they do not work yet.
13587         
13588         * generics.2.cs: Add valuetype tests.
13589
13590 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
13591
13592         * basic-long.cs: Add i4->u8 test.
13593
13594         * objects.cs: Add tests for JIT intrinsic.
13595
13596         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
13597         optimizations lost by a mistake.
13598
13599 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
13600
13601         * basic-long.cs: Remove a test moved to objects.cs.
13602
13603         * arrays.cs: Add more array tests.
13604
13605 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
13606
13607         * arrays.cs: Add new tests for multi-dimensional arrays.
13608
13609 2005-12-06  Raja R Harinath  <rharinath@novell.com>
13610
13611         * Makefile.am (test_sources2): Add generics.2.cs.
13612         (EXTRA_DIST): Add test_sources2.
13613
13614 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
13615
13616         Support for boxing and unboxing nullable types as well as the
13617         isinst operation on nullables, per the CLI ammendment.
13618
13619         * inssel.brg (CEE_ISINST): Special case for nullable
13620
13621         * mini.c (handle_unbox_nullable): new method
13622         (handle_box): Special case for nullable types
13623         (mono_method_to_ir): Call handle_unbox_nullable in correct
13624         places.
13625
13626         * generics.2.cs: New test suite
13627
13628         * Makefile.am: Support for regression tests with generics.
13629
13630 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
13631
13632         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
13633         allocated to registers. Fixes #76800.
13634
13635 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
13636
13637         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
13638
13639 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
13640
13641         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
13642         of platforms.
13643
13644 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
13645
13646         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
13647         objects.cs.
13648
13649         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
13650         
13651         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
13652 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
13653
13654         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
13655         single precision before storing to a single precision location.
13656
13657 2005-11-28  Raja R Harinath  <rharinath@novell.com>
13658
13659         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
13660
13661 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
13662
13663         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
13664         correct files.
13665
13666         * basic.cs: Remove test_0_byte_compares test which was moved to
13667         objects.cs a long time ago.
13668
13669 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
13670
13671         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13672
13673 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
13674
13675         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
13676         handlers are called.
13677
13678         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
13679         throwing code.
13680
13681          * mini-ia64.c: Add support for the throw->branch exception 
13682         optimization.   
13683
13684         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
13685
13686 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13687
13688         * mini.c: Enabled "fastpath" deadce :-)
13689         
13690 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13691
13692         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
13693         alias analysis pass to support it.
13694         * mini.h: Likewise.
13695         * ssa.c: Likewise.
13696         * liveness.c: Likewise (liveness computation can use aliasing
13697         information to be more accurate).
13698         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
13699         moreover made so that "--compile-all" uses the given optimization
13700         flags and not the default ones.
13701         * aliasing.c: Alias analysis (new file).
13702         * aliasing.h: Likewise.
13703         * Makefile.am: added "aliasing.c" and "aliasing.h".
13704         
13705 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
13706
13707         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
13708         OP_L opcodes.
13709
13710 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
13711
13712         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
13713         fp >= end_of_stack exit condition, as it is not needed, and it might
13714         become true for fp eliminated frames.
13715
13716 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
13717
13718         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
13719         coded offsets.
13720
13721 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
13722
13723         * mini-arm.c: fixed alignment of doubles/longs to match
13724         the C ABI (bug #76635).
13725
13726 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
13727
13728         * aot.c: fix compilation with --enable-minimal=aot.
13729
13730 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
13731
13732         * mini-arm.c: fixed compatibility with the new
13733         floating point emulator package for compares.
13734
13735 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
13736
13737         * mini.c : reverted sig->pinvoke changes (r51396-51397).
13738
13739 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
13740
13741         * mini-exceptions.c (print_stack_frame): Output to stderr.
13742         (mono_handle_native_sigsegv): Ditto.
13743
13744 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13745
13746         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
13747         OP_LCONV_TO_OVF_I implementation.
13748
13749         * mini-amd64.c: Add support for the throw->branch exception 
13750         optimization.
13751
13752         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
13753         when the catch clause catches a more general exception, i.e. Object.
13754
13755 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
13756
13757         * cpu-ia64.md: Remove unused opcodes.
13758
13759         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
13760         specific defines for architectures defining USE_SIGACTION.
13761
13762         * mini-ia64.c: Fix some warnings.
13763
13764         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
13765         version seemed to skip a frame.
13766
13767 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13768
13769         * mini.c: Clean up the usage of sig->pinvoke flag. Now
13770         only calls which are made to native code use this flag.
13771
13772 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
13773
13774         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
13775         varargs methods as well.
13776         
13777         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
13778         which have save_lmf set. Reorganize methods prologs a bit.
13779
13780         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
13781         debugger to the proper place.
13782
13783 2005-10-29  Martin Baulig  <martin@ximian.com>
13784
13785         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
13786         when running inside the debugger until the debugger has support
13787         for it.
13788
13789 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
13790
13791         * mini.h: Fix a warning.
13792
13793 2005-10-24  Miguel de Icaza  <miguel@novell.com>
13794
13795         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
13796         we expose publicly, this returns the string.
13797
13798 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
13799
13800         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
13801         with fp elimination.
13802
13803 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
13804
13805         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
13806         native stacktrace using the glibc 'backtrace' function if available.
13807
13808 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
13809
13810         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
13811
13812         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
13813         handle SIGSEGVs received while in native code.
13814
13815         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
13816         code, call mono_handle_native_sigsegv which will abort the runtime
13817         after printing some diagnostics, instead of converting it into a
13818         confusing NullReferenceException.
13819
13820 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
13821
13822         * cpu-pentium.md: Remove unused opcodes.
13823
13824 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
13825
13826         * mini-amd64.h (MonoLMF): Add rsp field.
13827
13828         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
13829         the lmf too.
13830
13831 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * mini-codegen.c (get_register_spilling): Fix some warnings.
13834
13835 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
13836
13837         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
13838         elimination during exception handling. Enable fp elimination by
13839         default.
13840
13841         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
13842         elimination.
13843
13844 2005-10-16  Martin Baulig  <martin@ximian.com>
13845
13846         * mini-exceptions.c
13847         (mono_debugger_run_finally): New public method for the debugger.
13848
13849 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
13850
13851         * debug-mini.c (mono_debug_init_method): Fix warning.
13852
13853         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
13854         the 'exname' parameter const to fix some warnings.
13855
13856 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
13857
13858         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
13859         introduced by the previous patch.
13860
13861 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
13862
13863         * basic-float.cs: Add test for precision of float arithmetic.
13864
13865         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
13866         when loading/storing single values from/to memory.
13867
13868         * mini.c (mono_jit_compile_method_with_opt): Create the function
13869         pointers in the correct domain.
13870
13871 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
13872
13873         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
13874         introduced by previous patch.
13875         
13876         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
13877         when out_filter_idx is NULL.
13878
13879         * mini-exceptions.c: Don't run filter clauses twice during exception
13880         handling. Fixes #75755.
13881
13882 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
13883
13884         * aot.c: Add support for ldflda wrappers.
13885
13886         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
13887         #75902.
13888
13889 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
13890
13891         * mini.c, mini.h: do not consider exception handlers blocks when
13892         setting up interface variables.
13893
13894 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
13895
13896         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
13897
13898 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
13899
13900         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
13901         causes a regression.
13902
13903         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
13904
13905 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
13906
13907         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
13908         of the OP_P definitions.
13909
13910         * TODO: Add a proposal for dealing with the CEE/OP mess.
13911
13912         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
13913         optimizations from the x86 port.
13914
13915         * cpu-amd64.md: Ditto.
13916
13917         * basic.cs basic-long.cs: Add tests.
13918
13919 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
13920
13921         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
13922         Patrik Torstensson's implementation of my exception-handling
13923         optimization idea, when the exception object is not used
13924         (bug #62150).
13925
13926 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
13927
13928         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
13929         of the mul_imm optimizations from the old jit.
13930
13931 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
13932
13933         * mini.c, liveness.c: patch by Patrik Torstensson and
13934         Zoltan Varga to improve performance in methods with
13935         exception clauses.
13936
13937 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
13938
13939         * driver.c: Remove 'Globalization' entry from --version.
13940
13941 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
13942
13943         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
13944         there is a profiler interested in JIT events.
13945
13946         * aot.c: Load profile files produced by the AOT profiling module, and
13947         reorder methods based on the profiling info. Add a 'method_order' table
13948         to the AOT file to make mono_aot_find_jit_info work with the reordered
13949         methods.
13950
13951         * mini.h: Bump AOT file version info.
13952
13953 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
13954
13955         * mini-arm.h: work around what looks like a gcc bug when optimizations
13956         are enabled.
13957
13958 2005-09-28  Raja R Harinath  <rharinath@novell.com>
13959
13960         * Makefile.am (AM_CFLAGS): Don't use += to append inside
13961         conditionals.  Use ...
13962         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
13963
13964 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
13965
13966         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
13967         to determine the amount of memory to copy when passing valuetypes.
13968
13969         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
13970         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
13971
13972 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
13973
13974         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
13975         information about aot.
13976
13977 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
13978
13979         * *.c: Replace the use of {Enter,Leave}CriticalSection with
13980         macros. This will allow a deadlock debugger to easily be plugged
13981         in.
13982
13983 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
13984
13985         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
13986
13987 2005-09-27  Raja R Harinath  <rharinath@novell.com>
13988
13989         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
13990         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
13991         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
13992         ($(arch_built)) [CROSS_COMPILING]: Error out.
13993
13994 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
13995
13996         * aot.c: Add support for the no_special_static flag for classes.
13997
13998 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13999
14000         * Reapply reverted patches.
14001
14002         * *: Revert r50174 as well.
14003
14004         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
14005
14006 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14007
14008         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
14009
14010 2005-09-23  Miguel de Icaza  <miguel@novell.com>
14011
14012         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
14013         part of the SIG_HANDLER_SIGNATURE.  
14014
14015 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
14016
14017         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
14018         statistics.
14019
14020         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
14021         introduced by previous patch.
14022
14023 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
14024
14025         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
14026         saved registers too.
14027
14028         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
14029         upon the information returned by get_call_info ().
14030         
14031         * mini-x86.c (add_float): Fix stack size calculation.
14032         (mono_arch_call_opcode): Rewrite this so it works based up the
14033         information returned by get_call_info ().
14034         (mono_arch_get_this_vret_args): Ditto.
14035
14036 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
14037
14038         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
14039         in cinfo to determine the registers which need to be used.
14040
14041 2005-09-20  Miguel de Icaza  <miguel@novell.com>
14042
14043         * driver.c (mono_main): Add --server and --desktop flags. 
14044
14045 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
14046
14047         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
14048         registers as global registers.
14049
14050         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
14051         longer needed with the new register allocator.
14052
14053         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
14054
14055         * cpu-ia64.md: Remove unused opcodes.
14056         
14057         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
14058         
14059 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
14060
14061         * cpu-amd64.md: Remove unused opcodes.
14062
14063         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
14064         needed with the new register allocator.
14065
14066         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
14067         reg-reg moves.
14068
14069 2005-09-16  Raja R Harinath  <rharinath@novell.com>
14070
14071         * Makefile.am (check-local): Don't invoke semdel-wrapper.
14072
14073 2005-09-16  Martin Baulig  <martin@ximian.com>
14074
14075         * exceptions-amd64.c
14076         (throw_exception): Don't call mono_debugger_throw_exception() if
14077         we're a rethrow - see the FIXME in the code.
14078
14079 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
14080
14081         * mini.c (mono_init_exceptions): This only works on some architectures.
14082         
14083 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14084
14085         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
14086         on ia64.
14087
14088         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
14089
14090         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
14091         now in mini-exceptions.c.
14092
14093 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
14094
14095         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
14096         now in mini-exceptions.c.
14097
14098 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14099
14100         * exceptions-x86.c: Applied patch from Patrik Torstensson 
14101         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
14102
14103         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
14104         code into mini-exceptions.c. Add some assertions to it.
14105
14106 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
14107
14108         * aot.c (emit_section_change): Applied patch from "The Software Team" 
14109         (<software@solmersa.com>). Fix as errors on windows.
14110
14111 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14112
14113         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
14114         method info into the LMF.
14115
14116 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14117         
14118         * mini-ia64.c: Add proper unwind info for method epilogs.
14119
14120         * exceptions-ia64.c: Add some code to help debugging.
14121         
14122         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
14123
14124         * mini-exceptions.c: Fix warning.
14125
14126 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14127
14128         * mini.c: Really fix build.
14129
14130         * mini-x86.c mini-amd64.c: Fix build.
14131
14132 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14133
14134         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
14135
14136         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
14137         some Interlocked methods as intrinsics.
14138
14139         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
14140         for Thread methods as well.
14141
14142         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
14143
14144         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
14145
14146         * mini-ia64.c mini-x86.c mini-amd64.c 
14147         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
14148         OP_MEMORY_BARRIER.
14149         
14150         * mini.c (mono_init_exceptions): Fix build breakage.
14151
14152 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
14153
14154         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
14155         of instructions. Use the new ia64_unw_op macros for emitting unwind
14156         info.
14157
14158         * mini.c (mono_init_exceptions): Initialize exception handling
14159         related trampolines at startup.
14160
14161 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
14162
14163         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
14164
14165 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
14166
14167         * mini.c: Handle type loading errors gracefully during compilation and
14168         throw the appropriate exception.
14169
14170 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
14171
14172         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
14173         for the mono binary.
14174
14175 2005-09-09  Martin Baulig  <martin@ximian.com>
14176
14177         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
14178         the release.
14179
14180 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14181
14182         * mini-arm.h: use emulation for conv.r.un for the release.
14183
14184 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14185
14186         * mini-arm.c, objects.cs: more fixes and tests for them.
14187
14188 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14189
14190         * mini-arm.c: align structures to at least 4 bytes to be able
14191         to keep our current optimized memcpy.
14192
14193 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
14194
14195         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
14196
14197 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14198
14199         * mini.c: ignore SIGPIPE.
14200
14201 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
14202
14203         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
14204
14205         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
14206
14207 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
14208
14209         * mini.h: Add prototype for mono_allocate_stack_slots_full.
14210
14211 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14212
14213         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
14214         exception handling support.
14215         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
14216         patch by Brian Koropoff <briank@marakicorp.com>).
14217
14218 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
14219
14220         * mini.c: revert another 'optimization' which breaks when
14221         items on the eval stack need to be saved at a basic block end
14222         (bug #75940).
14223
14224 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14225
14226         * jit-icalls.c: for arrays, ensure we always provide
14227         lower bounds.
14228
14229 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
14230
14231         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
14232         
14233         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
14234
14235 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
14236
14237         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
14238         arguments in their original register.
14239
14240 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
14241
14242         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
14243         memset/memcpy.
14244
14245         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
14246         when ssapre is enabled.
14247
14248         * inssel-long.brg: Fix bug in previous patch.
14249
14250         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
14251         multiplication by a constant.
14252
14253 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
14254
14255         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
14256         icc.
14257
14258         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
14259         saving registers.
14260
14261 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
14262
14263         * inssel-arm.brg: apply changes tested by Brian Koropoff
14264         <briank@marakicorp.com>.
14265
14266 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
14267
14268         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
14269         
14270 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
14271
14272         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
14273         to the same register if dreg is just a base register.
14274         (print_ins): Improve printing of membase opcodes.
14275
14276         * inssel-x86.brg: Add optimized ldind(reg) rules.
14277
14278         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
14279
14280 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
14281
14282         * mini.c: when running under valgrind, set the stack bottom for
14283         the GC at the actual approximate stack for the app (fixes running
14284         mono with valgrind).
14285
14286 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
14287
14288         * mini.c: do no break at the first valuetype to init found
14289         (fixes bug #75791).
14290
14291 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
14292
14293         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
14294
14295 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
14296
14297         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
14298
14299 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
14300
14301         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
14302
14303 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14304
14305         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
14306
14307         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
14308         code.
14309
14310         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
14311         code.
14312
14313         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
14314         methods.
14315
14316 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
14317
14318         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
14319
14320 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14321
14322         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
14323         in the tail recursion optimization.
14324
14325         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
14326         debug info into the assembly file.
14327
14328         * iltests.il: Add test for filter regions.
14329
14330         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
14331         initial stack of filter regions. Fixes #75755.
14332
14333 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
14334
14335         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
14336         stack requirements.
14337
14338 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14339
14340         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
14341         the check for an already compiled method on non-ia64 platforms.
14342         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
14343         proper domain.
14344
14345         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
14346
14347         * inssel-x86.brg: Add some optimized call rules.
14348
14349 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
14350
14351         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
14352         method here.
14353
14354         * mini.h mini-trampolines.c: Pass the trampoline argument to 
14355         mono_arch_patch_delegate_trampoline.
14356
14357         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
14358
14359         * mini-trampolines.c: Fix build.
14360
14361         * mini-amd64.h: Add delegate trampolines.
14362
14363         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
14364
14365         * inssel-amd64.brg: Add optimized call rules.
14366         
14367         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
14368
14369         * inssel-ia64.brg: Add optimized ldind(reg) rules.
14370
14371 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
14372
14373         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
14374         change.
14375
14376         * mini-ia64.c: Remove LMF fixmes.
14377
14378         * mini-ia64.h: Remove most fields from LMF.
14379
14380         * inssel-ia64.brg (stmt): Fix unaligned access errors.
14381
14382         * mini-trampolines.c: Add support for IA64 function descriptors.
14383
14384         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
14385         for IA64 function descriptors.
14386
14387 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
14388
14389         * tramp-arm.c: patch the vtable for virtual calls. Added
14390         support code to register/unregister the LMF.
14391         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
14392         more LMF work.
14393
14394 2005-08-19  Dick Porter  <dick@ximian.com>
14395
14396         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
14397         bit value if needed.
14398
14399 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
14400
14401         * mini.c (mini_get_method): Move handling of wrapper data here.
14402
14403         * mini.c (mono_method_to_ir): Add support for dynamic methods.
14404
14405         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
14406         virtual.
14407
14408         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
14409         bblock->code does not remain empty.
14410
14411 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
14412
14413         * arrays.cs: Add regression test for #75832.
14414
14415         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
14416         rules. Fixes #75832.
14417
14418         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
14419         instruction scheduling.
14420
14421 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
14422
14423         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
14424
14425 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
14426
14427         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
14428
14429         * mini-codegen.c: Fix VC build.
14430
14431         * cpu-pentium.md: Increase length of atomic_exhange_i4.
14432
14433 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14434
14435         * mini.h: fix signature for mono_register_opcode_emulation.
14436
14437 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
14438
14439         * mini.c: Get rid of most of the helper_sig_... constants using
14440         mono_create_icall_signature ().
14441
14442 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
14443
14444         * jit-icalls.c (helper_ldstr): New helper function.
14445
14446         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
14447
14448         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
14449         throw, load the string using a helper call instead of creating a string object.
14450
14451         * aot.c: Update after LDSTR changes.
14452
14453         * mini.h: Bump AOT file version.
14454         
14455         * aot.c: Save class size info into the AOT file. Print more statistics during
14456         compilation.
14457
14458         * mini.h: Bump AOT file version.
14459
14460         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14461         ordering of disasm cases. Fixes #74957.
14462
14463 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
14464
14465         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
14466         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
14467         the generic code needed for the ARM port.
14468
14469 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
14470
14471         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
14472         inssel-arm.brg: more ARM features and fixes.
14473
14474 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
14475
14476         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
14477         ARM port work in progress.
14478
14479 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
14480
14481         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
14482
14483         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
14484
14485         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
14486
14487         * inssel.brg (mini_emit_memset): Add support for unaligned access.
14488
14489         * *-ia64.*: Ongoing IA64 work.
14490         
14491         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
14492
14493 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
14494
14495         * TODO: Remove out-of-data todo stuff.
14496
14497         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
14498         dead code.
14499
14500         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
14501
14502         * mini.h: Bump corlib version.
14503
14504 2005-07-27  Martin Baulig  <martin@ximian.com>
14505
14506         * mini-codegen.c
14507         (create_copy_ins): Added `const unsigned char *ip' argument; set
14508         `copy->cil_code' from it.
14509
14510 2005-07-27  Martin Baulig  <martin@ximian.com>
14511
14512         * mini-exceptions.c (mono_handle_exception): Don't call
14513         mono_debugger_handle_exception() for filters.
14514
14515 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
14516
14517         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
14518         as well.
14519
14520 2005-07-26  Martin Baulig  <martin@ximian.com>
14521
14522         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
14523
14524         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
14525         helper_compile_generic_method() if the method is actually virtual
14526         and non-final.
14527
14528 2005-07-26  Martin Baulig  <martin@ximian.com>
14529
14530         * mini.c
14531         (trampoline_code): Renamed to `mono_trampoline_code' and made it
14532         public; this is now accessed directly by the debugger.
14533         (mono_generic_trampoline_code): Removed.
14534
14535         * debug-mini.c
14536         (mono_debug_init_method): Also add interncalls and wrappers.
14537
14538 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
14539
14540         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
14541
14542 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
14543
14544         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
14545
14546 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
14547
14548         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
14549
14550 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14551
14552         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
14553         getting TLS offsets on AMD64 too.
14554
14555 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
14556
14557         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
14558
14559 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
14560
14561         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
14562         inssel-arm.brg, mini-arm.h: ARM port work in progress.
14563
14564 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14565
14566         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
14567
14568         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
14569         to mini.c.
14570
14571         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
14572         mono_sparc_is_virtual_call ().
14573         
14574         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
14575
14576         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
14577         trampoline parameters.
14578
14579         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
14580         
14581         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
14582         to mono_arch_get_vcall_slot_addr.
14583
14584         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
14585         trampoline code.
14586
14587         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
14588
14589 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14590
14591         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
14592
14593 2005-07-19  Martin Baulig  <martin@ximian.com>
14594
14595         * exceptions-amd64.c (throw_exception): Call
14596         mono_debugger_throw_exception() here like we're doing it on i386.
14597
14598 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14599
14600         * mini-ia64.c: Add optimized TLS access support.
14601
14602 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
14603
14604         * mini-exceptions.c: Ongoing IA64 work.
14605
14606         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
14607
14608         * mini.c: Use the default optimization set when embedding. Fixes
14609         #75194.
14610
14611 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
14612
14613         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
14614         of trampolines to a separate file.
14615
14616         * mini-trampolines.c: New file.
14617
14618         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
14619         separate file.
14620         
14621         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
14622         amd64/ia64 code.
14623
14624         * mini-codegen.c: Fix cygwin build.
14625
14626 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
14627
14628         * mini.c: Add some minor changes needed by the IA64 port.
14629
14630         * *-ia64.*: Ongoing IA64 work.
14631
14632 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
14633
14634         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
14635         trampolines into arch-independent and arch-dependent parts.
14636
14637         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
14638
14639 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
14640
14641         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
14642
14643         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
14644         the xp-regalloc-branch for amd64.
14645
14646         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
14647         xp-regalloc-branch for x86.
14648
14649 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14650
14651         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
14652
14653 2005-07-06  Martin Baulig  <martin@ximian.com>
14654
14655         * mini.c
14656         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
14657         (mono_jit_runtime_invoke): Likewise.
14658
14659 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
14660
14661         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
14662         on x86 too.
14663         
14664         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
14665         without loading their metadata. Reorganize the file format so exception handling+
14666         debug info is kept separate from normal method info. Create MonoJitInfo 
14667         structures for methods lazily.
14668
14669         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
14670         loading metadata.
14671         (x86_class_init_trampoline): Patch AOT class init trampolines too.
14672
14673         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
14674
14675         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
14676         in AOT code.
14677
14678         * mini.h: Bump AOT file version.
14679
14680 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
14681
14682         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14683
14684 2005-07-01  Raja R Harinath  <rharinath@novell.com>
14685
14686         * Makefile.am (check-local): Call semdel-wrapper.
14687
14688 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
14689
14690         * mini-x86.c: Revert the last change as it seems to break the build..
14691
14692 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
14693
14694         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14695         
14696         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
14697
14698 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
14699
14700         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
14701         outside of the macro, so strange stuff doesn't happen with gcc4
14702         (NEW_AOTCONST_TOKEN): Likewise.
14703
14704 2005-06-28  Martin Baulig  <martin@ximian.com>
14705
14706         * mini.c (mini_class_is_system_array): New static method; use this
14707         instead of `klass->parent == mono_defaults.array_class' everywhere
14708         since this also works for the new generic array class.
14709
14710 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
14711
14712         * inssel.brg: Remove warnings.
14713
14714 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
14715
14716         * mini-ia64.c: Ongoing IA64 work.
14717
14718         * basic-float.cs: Add float->i1 conversion test.
14719
14720         * iltests.il: Add conv.u4 test.
14721
14722 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
14723
14724         * inssel-long.brg: Fix bug caused by last change.
14725
14726 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
14727
14728         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
14729         BSDs.  Allows the x86 JIT to work on OSX86
14730
14731 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
14732
14733         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
14734         u4->i8 conversion.
14735
14736         * mini-ia64.c: Ongoing IA64 work.
14737
14738 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
14739
14740         * mini-ia64.c: Ongoing IA64 work.
14741
14742         * driver.c: Clean up jit_code_hash as well when using --regression.
14743
14744         * inssel-long.brg: Fix long->i4/u4 conversion rules.
14745
14746         * basic-long.cs: Add tests for long->u4 conversion.
14747
14748 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
14749
14750         * mini.c: Take mono_get_domainvar out of macros. This makes sure
14751         that we do not depend on undefined C behavior: the order stuff
14752         gets evaluated within an expression. Fixes mono when compiled on
14753         GCC 4.
14754
14755 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
14756
14757         * *-ia64.*: Ongoing IA64 work.
14758
14759         * aot.c: Lower memory usage while loading AOT methods.
14760
14761         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
14762
14763         * mini.h: Bump AOT file format version.
14764
14765 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
14766
14767         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
14768
14769 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
14770
14771         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
14772         not on callee assembly). Fixed some comments.
14773
14774 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
14775
14776         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
14777         it gets proper disassembly.
14778         (emit_method_info): Remove some dead code.
14779
14780         * mini.c (mini_method_compile): Allways allocate the GOT var in
14781         mono_method_to_ir for emulating opcodes.
14782
14783 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
14784
14785         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
14786         before freeing the code memory. Fixes #74990.
14787
14788         * objects.cs: Add regression test for #74992.
14789
14790         * liveness.c: Extend live ranges of arguments to the beginning of the
14791         method. Fixes #74992.
14792
14793         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
14794         so it points into the faulting instruction.
14795
14796 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
14797
14798         * jit-icalls.c (mono_imul_ovf): Add exception handling.
14799
14800         * *-ia64.*: Ongoing IA64 work.
14801
14802         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
14803
14804 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
14805
14806         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
14807
14808         * *-ia64.*: Ongoing IA64 work.
14809
14810 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
14811
14812         * basic-long.cs: Add tests for add/sub.ovf.
14813
14814         * basic.cs: Add tests for sub.ovf.
14815
14816         * *-ia64.*: Ongoing IA64 work.
14817
14818 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
14819
14820         * *-ia64.*: Ongoing IA64 work.
14821
14822         * basic.cs: Add conv.ovf.i4.un test.
14823
14824 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
14825
14826         * mini.c: (remove_block_if_useless) Fixed bug 75061.
14827         
14828 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14829
14830         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
14831
14832 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
14833
14834         * *-ia64.*: Ongoing IA64 work.
14835
14836 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14837
14838         * trace.[ch]:
14839         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
14840
14841 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
14842
14843         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
14844
14845 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
14846
14847         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
14848
14849         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
14850         of a call is callable by a near call.
14851
14852 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
14853
14854         * mini-ia64.c: Ongoing IA64 work.
14855
14856 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
14857
14858         * genmdesc.c: Make the generated array non-static.
14859
14860         * inssel-long.brg: Fix LSHR_IMM rule.
14861
14862         * *-ia64.*: Ongoing IA64 work.
14863
14864         * *-ia64.*: Ongoing IA64 work.
14865
14866 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14867
14868         * *-ia64.*: Ongoing IA64 work.
14869
14870         * *-ia64.*: Ongoing IA64 work.
14871         
14872         * mini-ia64.c: Ongoing IA64 work.
14873
14874         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
14875
14876 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14877
14878         * objects.cs basic-calls.cs: Move some tests to objects.cs.
14879         
14880         * objects.cs basic-long.cs: Move some tests to objects.cs.
14881
14882 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
14883
14884         * *-ia64.*: Ongoing IA64 work.
14885
14886         * iltests.il: Add a new test.
14887
14888         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
14889         newobj. Fixes #75042.
14890
14891 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
14892
14893         * *-ia64.*: Ongoing IA64 work.
14894         
14895         * *-ia64.*: Ongoing IA64 work.
14896         
14897         * *-ia64.*: Ongoing IA64 work.
14898
14899         * basic.cs objects.cs: Move tests accessing static variables as well.
14900
14901         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
14902
14903 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
14904
14905         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
14906
14907         * driver.c: Always print failed tests.
14908
14909         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
14910         frame pointer.
14911
14912         * *ia64*: Ongoing IA64 work.
14913
14914 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
14915
14916         * basic.cs: Add tests for add.ovf. Fix warnings.
14917
14918 2005-05-18  Miguel de Icaza  <miguel@novell.com>
14919
14920         * driver.c (mono_main): Avoid crash if no argument is passed to
14921         --break;  Do not use g_error, but f_printf.   And fix all other
14922         ocurrences of the same crash.
14923
14924 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
14925
14926         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
14927         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
14928         Fixes #74742.
14929
14930 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
14931
14932         * *-ia64.*: Add beginnings of IA64 backend.
14933
14934         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
14935
14936 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
14937
14938         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
14939         Fixes #74925.
14940
14941         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
14942
14943         * mini-amd64.c: Fix a warning.
14944
14945 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
14946
14947         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
14948         in float_neg. Fixes #74897.
14949
14950         * mini-amd64.c (emit_call): Fix another near call bug.
14951
14952 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
14953
14954         * declsec.c: Keep the appdomain information in the structure. Added a 
14955         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
14956         value gets overwritten).
14957         * declsec.h: Set the default MonoArray for the the stack to 6. Added
14958         an MonoAppDomain member to MonoSecurityFrame.
14959         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
14960         used in the stack walk. Now use a MonoArray which grow (double) when
14961         it gets full.
14962
14963 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
14964
14965         * mini.c: Re-enabled runtime cleanup, since running threads should
14966         now properly stop when exiting.
14967
14968 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
14969
14970         * mini-codegen.c: New file contaning the arch-independent local
14971         register allocator. Not used by any architectures yet.
14972
14973         * mini.h linear-scan.c: Merge some changes from the 
14974         mini-xp-local-regalloc branch.
14975
14976 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
14977
14978         * mini-amd64.c (emit_call): Fix calls to native functions when the
14979         runtime is compiled as a shared library. Fixes #74756.
14980
14981         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
14982         on a literal field. Fixes #74751.
14983
14984 2005-04-25  Raja R Harinath  <rharinath@novell.com>
14985
14986         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
14987
14988 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
14989
14990         * objects.cs: Add missing null casting test.
14991
14992 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
14993
14994         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
14995         in wrapper methods. Also rename 'address' variable to 'offset'.
14996
14997 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
14998
14999         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
15000         warnings.
15001         
15002         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
15003
15004         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
15005         work on windows.
15006
15007 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15008
15009         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
15010
15011 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15012
15013         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
15014         just the last bytes.
15015
15016 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15017
15018         * aot.c (mono_compile_assembly): Fix warning.
15019
15020         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
15021         by the _MSC_VER stuff.
15022
15023 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
15024
15025         * inssel-long.brg: Fix #74588.
15026
15027         * cpu-amd64.md: Fix #74591.
15028
15029         * iltests.il: Add new regression tests.
15030
15031 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
15032
15033         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
15034         valuetype.
15035
15036 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
15037
15038         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
15039
15040         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
15041         from Bill Middleton <flashdict@gmail.com>.
15042
15043 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
15044
15045         * arrays.cs: Add new regression test. Fix warnings.
15046
15047 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
15048
15049         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
15050         and leakage in CKFINITE.
15051
15052         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
15053         this to a null op since it is called on amd64 too.
15054
15055         * exceptions-amd64.c (get_throw_trampoline): Align stack.
15056
15057         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
15058         body since this is not used on amd64.
15059         
15060         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
15061
15062         * mini-amd64.c: Remove obsolete fixmes.
15063
15064         * mini.c (print_method_from_ip): Fix debugging support.
15065
15066 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15067
15068         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
15069         so that expressions that don't give much gain are not reduced.
15070         * ssapre.h: Likewise.
15071
15072 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
15073
15074         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
15075
15076         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
15077
15078         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
15079
15080 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
15081
15082         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
15083
15084         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
15085
15086 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
15087
15088         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
15089         stack touching.
15090
15091         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
15092
15093         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
15094
15095         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
15096
15097         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
15098         MONO_ARCH_USE_SIGACTION. Fixes #74252.
15099
15100         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
15101
15102         * mini-x86.c: Fix up stack overflow handling.   
15103
15104         * exceptions.cs: Add new regression test.
15105
15106 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
15107
15108         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
15109         mono_jit_thread_attach.
15110
15111         * mini.c (mono_method_to_ir): Verify called method is not abstract.
15112
15113 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15114
15115         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
15116         avoid calling constructors using callvirt.
15117
15118         * inssel.brg: Fix #74073.
15119
15120 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
15121
15122         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
15123         compilation with non-GCC compilers.
15124         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
15125         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
15126
15127 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15128
15129         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
15130         klass->interface_offsets (will likely fix bug#74073).
15131
15132 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15133
15134         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
15135
15136 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
15137
15138         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
15139         to amd64_div_reg_size ().
15140         
15141         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
15142
15143 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
15144
15145         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
15146
15147 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15148
15149         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
15150
15151 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15152
15153         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
15154         
15155         * mini.c (mono_precompile_assembly): Load and precompile referenced
15156         assemblies as well. Fixes #74015.
15157
15158 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
15159
15160         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
15161
15162 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
15163
15164         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
15165         a lot of checks and (anyway) permissions cannot work until corlib is 
15166         loaded.
15167
15168 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
15169
15170         * mini-ppc.c: fixed ABI issue on sysv/ppc.
15171
15172 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
15173
15174         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
15175         calls (fixes bug#72824).
15176
15177 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15178
15179         * mini.c: fix tail recursion elimination (see test in bug#73936).
15180
15181 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
15182
15183         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
15184         some fp functions in sse2 mode.
15185
15186 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
15187
15188         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
15189
15190 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
15191
15192         * mini.h mini.c: Add mono_get_jit_tls_key ().
15193
15194         * mini-x86.c: Enable fast TLS support on windows.
15195
15196 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
15197
15198         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
15199         * mini.c: Check for p/invoke method when generating code. If a
15200         p/invoke method, or it's class, isn't decorated with [Suppress
15201         UnmanagedCodeSecurity] then generate code to call System.Security.
15202         UnmanagedDemand (only if the security manager is active).
15203
15204 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15205
15206         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
15207         last change as it seems to cause strange crashes.
15208         
15209 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15210
15211         * *.c: handle unsafe function pointers where needed.
15212
15213 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15214
15215         * mini.c (mono_jit_free_method): Remove the fixme too.
15216
15217 2005-03-15  Miguel de Icaza  <miguel@novell.com>
15218
15219         * mini.c: As discussed, make the code actually free the delegate
15220         thunk now, to enable the debugging of delegate problems, use
15221         MONO_DEBUG=1 when running Mono. 
15222
15223         This takes also care of parts of the leaks as seen by Joe.
15224
15225 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
15226
15227         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
15228         thread_tls_offset calculation.
15229
15230 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
15231
15232         * declsec.c: Reworked linkdemand checks for icall. The previous code
15233         was using the declaration code (untrusted) and didn't work as expected
15234         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
15235         specific case.
15236
15237 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
15238
15239         * iltests.il: Add new localloc test.
15240
15241         * mini-amd64.c: Handle large stack allocations the same way as on
15242         windows if stack overflow handling is working.
15243         
15244         * mini-amd64.c: Allocate the signal stack using mmap.
15245
15246         * mini.c (sigsegv_signal_handler): Fix reading of context.
15247
15248         * mini-exceptions.c: Fix up stack overflow handling.
15249
15250         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
15251
15252         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
15253
15254         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
15255
15256         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
15257
15258         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
15259         tramp_init functions as they are no longer needed.
15260
15261 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
15262
15263         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
15264         
15265         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
15266
15267         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
15268         
15269         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
15270         support that now.
15271
15272         * mini-ops.h: Add OP_LMUL_IMM.
15273
15274         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
15275         long mul/div opcodes as intrinsic.
15276
15277         * mini-amd64.c (emit_call): Handle the case when the callee might be
15278         an AOT method.
15279
15280 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
15281
15282         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
15283         extra safe.
15284         
15285         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
15286
15287         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
15288
15289 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
15290
15291         * mini.c (mono_codegen): Don't leak here, to help people running
15292         monogrind.
15293
15294 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
15295
15296         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
15297         conversions in sse2 mode.
15298
15299         * basic-float.cs: Add regression test.
15300         
15301         * mini-amd64.c: Reenable sse2.
15302
15303 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15304
15305         * mini-amd64.c: Disable sse2 until some regressions are fixed.
15306
15307 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
15308
15309         * driver.c: Copyright text should include 2005.
15310         
15311 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15312
15313         * cpu-amd64.md (load_membase): Fix more max lengths.
15314
15315 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
15316
15317         * cpu-amd64.md (load_membase): Fix max length.
15318
15319         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
15320
15321         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
15322
15323         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
15324         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
15325
15326         * basic-float.cs: Add rounding regression test.
15327
15328         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
15329
15330 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
15331
15332         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
15333         structures in registers for pinvoke wrappers.
15334
15335 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
15336
15337         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
15338
15339 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
15340
15341         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
15342         wrapper to mono_jit_thread_attach.
15343
15344         * mini.c (mini_jit_thread_attach): New jit icall.
15345
15346         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
15347         native->managed wrappers.
15348
15349         * exceptions.cs: Add new regression test.
15350
15351         * mini.c (optimize_branches): Check regions in the cbranch to throw
15352         block case as well. Fixes #73242.
15353
15354 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15355
15356         * mini.c: thread safety fixes.
15357
15358 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
15359
15360         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
15361         patching stuff, since delegates use jump trampolines so there is
15362         no caller.
15363
15364         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
15365         jump trampolines.
15366         
15367         * tramp-amd64.c: Fix build.
15368
15369         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
15370         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
15371
15372         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
15373         Rename this to mono_arch....
15374         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
15375
15376         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
15377
15378         * mini-amd64.c (emit_call): If both the caller and the callee is
15379         guaranteed to have 32 bit addresses, emit a normal call.
15380
15381         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
15382
15383         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
15384         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
15385         method_ptr inside delegates.
15386
15387 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
15388
15389         * mini.c (mono_jit_free_method): Free the method info even if the native code is
15390         invalidated. Fixes #73001.
15391
15392         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
15393
15394         * mini-x86.c: Only use stdcall for pinvokes on windows.
15395
15396 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
15397
15398         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
15399         * mini-x86.c: remove unreliable __thread var offset detection,
15400         use the correct accessors and enable by default.
15401
15402 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15403
15404         * mini.c (mono_jit_free_method): Fix memory leak.
15405
15406 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
15407
15408         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
15409
15410 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
15411
15412         * cpu-amd64.md: Fix lengths of atomic opcodes.
15413
15414 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15415
15416         * driver.c: try to not imply using ICU is any good.
15417
15418 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
15419
15420         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
15421         functions as inline ops.
15422
15423         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
15424         some Interlocked functions as inline ops.
15425
15426         * mini.c (move_basic_block_to_end): Fix bug in last patch.
15427
15428         * mini.h (MonoBasicBlock): Reorganize fields a bit.
15429
15430         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
15431
15432         * mini.c: Add support for OP_NOT_TAKEN.
15433
15434         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
15435         structures in registers for pinvoke wrappers.
15436
15437         * mini-amd64.c: Fix warnings.
15438
15439 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
15440
15441         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
15442
15443         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
15444
15445         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
15446         address instead of loading the address from it.
15447
15448         * mini-x86.c: Add support for returning small structs in registers
15449         on Win32. Fixes part of #70864.
15450         
15451 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
15452
15453         * trace.c (get_token): Improve error checking.
15454
15455 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
15456
15457         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
15458
15459 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
15460  
15461         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
15462         it can be reused for MonoClass.
15463         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
15464         _LINKDEMAND.
15465
15466 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
15467
15468         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
15469         instead of a MonoReflectionMethod. The method information wasn't used
15470         when displaying SecurityException details (but will be now).
15471
15472 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
15473
15474         * Makefile.am : windows build fix.
15475
15476 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
15477
15478         * iltests.il: Add new regression test.
15479
15480         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
15481         #72522.
15482
15483 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
15484  
15485         * mini.c: Moved linkdemand check into helper function check_linkdemand
15486         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
15487         LDFTN, LDVIRTFTN).
15488
15489 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
15490
15491         * declsec.c: Added statistics counter for different kinds of 
15492         LinkDemands.
15493         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
15494         (and commented) declaration.
15495         * mini.c: Added statistics counter for security Demand code 
15496         generation. Added display of security statistics.
15497
15498 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
15499
15500         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
15501         Fix compilation errors under gcc-2.95.
15502
15503 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
15504
15505         * mini.c, driver.c: Use the new jit trampoline hashtable
15506
15507 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15508
15509         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
15510
15511 2005-02-11  Martin Baulig  <martin@ximian.com>
15512
15513         * debug-mini.c (mono_debug_close_method): Free the line number array.
15514
15515 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15516
15517         * aot.c: Break up large methods into smaller ones. Share GOT slots for
15518         icalls.
15519
15520         * mini.h: Bump AOT file format version. 
15521
15522 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
15523
15524         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
15525         APTC and P/Invoke.
15526         * declsec.h: Added macros to get/set lazyly initialized security 
15527         informations about assemblies. Added new enum for different type of
15528         possible LinkDemand violation. Added function to check LinkDemands.
15529         * mini.h: Added a field to MonoCompile to hold any security violation
15530         detected when JITting a method (so it can be thrown later).
15531         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
15532         and CEE_CALLVIRT. Added code to throw exception at the end of
15533         mini_method_compile (note: the exception is unhandled right now).
15534
15535 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15536
15537         * mini.c, jit-icalls.c: use the managed implementation of
15538         memset for initobj and memset, to avoid managed <-> unmanaged
15539         transitions.
15540
15541 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15542
15543         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
15544         optimization if it would need a GOT var.
15545
15546         * basic.cs: Add tests for constant propagation and switch statements.
15547
15548         * ssa.c: Fix out-of-range constant propagation and switch statements.
15549
15550 2005-02-09    <vargaz@freemail.hu>
15551
15552         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
15553
15554 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
15555
15556         * cpu-amd64.md (load_membase): Fix max length of load_membase.
15557
15558 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15559
15560         * mini.c: update to new signature of mono_class_get_allocation_ftn().
15561
15562 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
15563
15564         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
15565         arithmetic operations.
15566
15567 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
15568
15569         * mini-ppc.c: add a workaround for broken user code that
15570         DllImports vararg functions with non-vararg signatures.
15571
15572 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15573
15574         * mini.c (mono_jit_compile_method_inner): Add detection and a 
15575         meaningfull error message for assemblies written in Managed C++.
15576
15577         * tramp-amd64.c mini-amd64.h: Add support for 
15578         create_trampoline_from_token ().
15579
15580         * aot.c mini-x86.c abcremoval.c: Applied patch from
15581         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
15582
15583 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15584
15585         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
15586         which takes a MonoImage/token as parameter instead of a MonoMethod.
15587
15588         * aot.c: Use the new trampoline for initializing vtables.
15589
15590         * aot.c: Add support for ldfld/stfld_remote wrappers.
15591
15592         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
15593         rules for compare <MEM>, IMM.
15594
15595         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
15596
15597         * aot.c: Handle inherited finalizers correctly.
15598
15599 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15600
15601         * inssel.brg (stmt): Add a missing _setup_... ().
15602
15603         * aot.c: Save some parts of the class state to the AOT file and use it
15604         to recompute that state when a class is initialized.
15605
15606         * mini.c: Install AOT hooks into the runtime.
15607
15608         * mini.h: Bump AOT file format version.
15609         
15610         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
15611         Fixes #72148.
15612
15613         * iltests.il: Add new test.
15614
15615 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15616
15617         * mini.c: fix typo.
15618
15619 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
15620
15621         * mini.c: setup the statistical profiler in the thread attach
15622         callback to cope with the new single thread code.
15623
15624 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
15625
15626         * mini-ppc.c: ensure we have enough room for the profiler
15627         calls (fixed bug#72084).
15628
15629 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
15630
15631         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
15632         it.
15633
15634 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15635
15636         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
15637
15638 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15639
15640         * ssapre.c: Fixed an issue with down safety (this allows IronPython
15641         to succesfully execute parrotbench).
15642         * ssapre.h: Likewise.
15643
15644 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15645
15646         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
15647         variable for stores to method arguments (fixes a SSAPRE issue).
15648
15649 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15650
15651         * mini.c: handle value types in dup, fixes gen-112.cs.
15652
15653 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
15654
15655         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
15656         sequence for calls in dynamic methods to avoid thunks.
15657
15658 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15659
15660         * mini.c: correctly remove dynamic methods from the hashtable.
15661
15662 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15663
15664         * driver.c: Disabled SSAPRE until fix the bug that appears
15665         in IronPython's parrotbench.
15666
15667 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15668
15669         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
15670
15671         * mini.c (mono_method_to_ir): Revert the previous change.
15672         
15673         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
15674         when AOT compiling.
15675
15676         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
15677         mono_jit_info_table_find () etc. when running under valgrind.
15678
15679         * inssel.brg: Fix warnings.
15680
15681         * mini-exceptions.c: Fix warnings.
15682
15683 2005-01-31  Martin Baulig  <martin@ximian.com>
15684
15685         * driver.c (compile_all_methods_thread_main): Don't try to compile
15686         generic methods or anything which has type parameters.
15687
15688 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
15689
15690         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
15691
15692         * TestDriver.cs: Add --verbose flags.
15693
15694         * graph.c ssa.c: Fix 64 bit warnings.
15695         
15696         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
15697         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
15698         Fix 64 bit warnings.
15699
15700         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
15701         variable not spotted by gcc.
15702         
15703         * mini-amd64.c inssel-amd64.brg: Applied patch from  
15704         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
15705         X86_COMPARE_MEMBASE opcodes.
15706
15707         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
15708
15709 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
15710
15711         * *: MonoMethod->signature might be NULL now. You *MUST* use
15712         mono_method_signature.
15713
15714 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15715
15716         * driver.c (compile_all_methods_thread_main): Compile the methods
15717         without invoking cctors.
15718
15719 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15720
15721         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
15722         * basic-calls.cs: test for the above.
15723
15724 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15725
15726         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
15727         MonoJitInfo changes.
15728
15729 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
15730
15731         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
15732         eagerly if it contains dynamic methods.
15733         
15734         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
15735
15736         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
15737         trace, it is now computed by an icall from trace_ips.
15738         
15739         * mini-exceptions.c: Fix a warning.
15740
15741 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
15742
15743         * mini-exceptions.c: don't bother getting stack trace info if
15744         it's not going to be used.
15745
15746 2005-01-27  Raja R Harinath  <rharinath@novell.com>
15747
15748         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
15749         ssapre-mini-ops.h.
15750
15751 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
15752
15753         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
15754
15755         * aot.c: Avoid calling mono_method_get_header () if not needed.
15756
15757         * mini.h: Bump AOT file format version.
15758         
15759         * mini.c (mono_emit_native_call): Allocate a GOT var here.
15760
15761         * mini.c (mono_print_tree): Print more info for calls.
15762
15763 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
15764
15765         * declsec.h: Remove warning by adding missing include for marshal.h
15766
15767 2005-01-26  Martin Baulig  <martin@ximian.com>
15768
15769         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
15770         `ip' twice.
15771
15772 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
15773
15774         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
15775         flags.
15776
15777         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
15778
15779         * aot.c (mono_compile_assembly): Fix a warning.
15780
15781 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
15782
15783         * declsec.c: Look for security attributes on the original MonoMethod 
15784         (and not the wrapped one). This fix permissions on icalls.
15785
15786 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15787
15788         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15789
15790         * mini.c (mono_allocate_stack_slots): Add a fixme.
15791
15792         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15793
15794 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15795
15796         * inssel.brg: optimize casts of sealed types (more
15797         optimizations waiting for fixes in remoting).
15798
15799 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15800
15801         * inssel.brg (stmt): Add another dummy rule.
15802
15803         * driver.c: Fix warnings.
15804
15805         * driver.c (mono_main): If running under valgrind, instruct glib to use
15806         the system allocation functions so valgrind can track the memory
15807         allocated by the g_... functions.
15808
15809         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
15810
15811         * mini-ops.h: Add OP_DUMMY_STORE opcode.
15812
15813         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
15814
15815         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
15816         variables in try regions.
15817
15818         * mini.c (mini_method_compile): Don't disable optimizations on large
15819         methods when AOT compiling.
15820
15821         * mini.c (mono_allocate_stack_slots): New arch independent method to 
15822         allocate stack slots. Not yet used.
15823
15824 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
15825
15826         * debug-mini.c (mono_debug_close_method): Plug some leaks.
15827
15828 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
15829
15830         * mini-ppc.c: make the branch info relative as the code
15831         buffer can be reallocated.
15832
15833 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
15834
15835         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
15836         * driver.c: Removed the AOT/security restriction. Now initialize the
15837         security manager (in metadata) if --security is used.
15838         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
15839         rather than the pointer to declarative security, when AOT is used.
15840
15841 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
15842
15843         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
15844         basic blocks, reduced intrinsic exception throwing code size.
15845
15846 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
15847
15848         * driver.c (mini_usage): Reorder the usage screen.
15849
15850 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
15851
15852         * mini.c (mono_resolve_patch_target): Fix warning.
15853
15854 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
15855
15856         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
15857         previous patch.
15858
15859         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15860
15861         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
15862         breaks the amd64 build.
15863
15864         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
15865         register allocation. Fixes #71454.
15866
15867         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15868
15869         * arrays.cs: Add new regression test.   
15870
15871 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15872
15873         * ssapre.c: Turned usage of snprintf to GString.
15874         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
15875         (I left it on by mistake in my previous commit).
15876
15877 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
15878
15879         * mini.c, cfold.c, basic-calls.cs: preserve side effects
15880         on cond branch optimization (fixes bug# 71515).
15881
15882 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15883
15884         * abcremoval.c: Fixed bug 71062.
15885         * abcremoval.h: Likewise.
15886
15887 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15888
15889         * mini.c: Added a new functionality to optimize_branches, the removal
15890         of useless basic blocks, and fixed some problem in the removal of
15891         critical edges; some utility functions added for both purposes.
15892         * ssapre.c: Added complex expression support, and fixed bug 70637.
15893         * ssapre.h: Likewise.
15894         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
15895         enabled in SSAPRE.
15896         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
15897         * driver.c: Re-enabled SSAPRE.
15898
15899 2005-01-19  Martin Baulig  <martin@ximian.com>
15900
15901         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
15902         the result of mono_get_method_constrained().
15903
15904 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
15905
15906         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
15907         manager.
15908
15909 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
15910
15911         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
15912         be detected.  Fixes #59296.
15913
15914 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15915
15916         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
15917         which can happen. Fixes #71361.
15918
15919 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15920
15921         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
15922         manager.
15923
15924 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15925
15926         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
15927         appdomain-unload.exe to fail.
15928         
15929         * mini.c: Fix some memory leaks.
15930
15931 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
15932
15933         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
15934         Fixed bug and sped up some codepaths.
15935
15936 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15937
15938         * mini.c: Fix some memory leaks.
15939
15940         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
15941         conversion.
15942
15943         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
15944
15945         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
15946         #71320.
15947
15948         * iltests.il: Add regression test for #71320.
15949
15950 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
15951
15952         * mini.c (mono_codegen): Fix installation of profiler hooks.
15953
15954         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
15955
15956 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15957
15958         * mini.h, mini.c, cfold.c: optimize access to enum
15959         readonly fields, too. Eval conditional branches if possible
15960         to perform unreachable code removal in more cases.
15961
15962 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
15963
15964         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
15965
15966         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
15967         code manager.
15968
15969         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
15970         WinXP DEP. Fixes #71244.
15971
15972 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
15973
15974         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
15975
15976 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
15977
15978         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
15979
15980 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
15981
15982         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
15983         changes.
15984
15985         * mini.h: Bump AOT version.
15986
15987         * mini.h (MonoCompile): Change exvar to a hash table.
15988
15989         * mini.c: Allocate a separate exvar for each handler block.
15990
15991         * mini.c: Get rid of the computation of filter_lengths, its not needed.
15992
15993         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
15994         ex var with the pending exception and only throw if the two are equal.
15995         Fixes #68552.
15996         
15997         * exceptions.cs: Add tests for rethrow and nested catch clauses.
15998
15999         * mini-x86.c: Fix warnings.
16000
16001         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
16002         used by all the ports now.
16003
16004         * aot.c: Add write-symbols and save-temps options.
16005
16006 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16007
16008         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
16009
16010 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
16011
16012         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
16013         operations.
16014
16015         * tramp-s390.c: Check vtable slot belongs to the domain.
16016
16017         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
16018         as per other platforms.
16019
16020         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
16021
16022 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
16023
16024         * driver.c: we don't run the Main() code in a subthread anymore.
16025
16026 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
16027
16028         * mini.c: added experimental rtc support in the statistical
16029         profiler: if the user has the permission, more accurate statistics
16030         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
16031         The MONO_RTC value must be restricted to what the linux rtc allows:
16032         power of two from 64 to 8192 Hz.
16033
16034 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16035
16036         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
16037
16038 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
16039
16040         * mini-ppc.c: better icache flush for smp.
16041
16042 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
16043
16044         * mini-amd64.c (emit_move_return_value): Fix memory leak.
16045
16046         * mini-x86.c (get_call_info): Add the get_call_info () code from the
16047         amd64 port, not yet used.
16048
16049 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16050
16051         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
16052         a struct type.
16053
16054 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16055
16056         * driver.c: Added --security option to activate the security manager.
16057         Right now this will allow code generation for declarative demands and
16058         is disabled when AOT is specified.
16059         * mini.c: Add code generation for declarative security demands.
16060         * mini.h: Add mono_use_security_manager as an extern gboolean.
16061
16062 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16063
16064         * aot.c (mono_compile_assembly): Speed up compilation a bit by
16065         emitting more dense assembly code.
16066
16067         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
16068         exception throwing stuff.
16069
16070 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
16071
16072         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
16073         dead code.
16074
16075         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
16076         left in by mistake.
16077
16078         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
16079         fixed.
16080
16081         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
16082
16083         * tramp-*.c: Only patch vtable slots if the object is in the current
16084         domain. Fixes appdomain-unload.exe.
16085
16086         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
16087         
16088         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
16089         x86 branch.
16090
16091 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16092
16093         * mini.c (reverse_branch_op): New helper function.
16094
16095         * mini.c (optimize_branches): Run the new optimization only on 
16096         platforms which support it. Also reverse all kinds of branches.
16097
16098         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
16099
16100         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
16101         a throw statement.
16102
16103         * mini.c (optimize_branches): Reverse not-equals branches if the false
16104         bblock is a throw. This happens a lot of time with argument checking in
16105         corlib.
16106
16107         * mini.c (mono_codegen): Add support for placing basic blocks after
16108         the function epilogue.
16109
16110         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
16111         function epilogue.
16112         
16113 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
16114
16115         * mini.c (setup_stat_profiler): Only set this up if the platform
16116         supports ITIMER_PROF.
16117
16118 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16119
16120         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
16121         previous patch.
16122
16123         * inssel.brg: Fix a warning.
16124
16125 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
16126
16127         * mini.c: added support for statistical profiler 
16128         (run with: --profile=default:stat).
16129
16130 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
16131
16132         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
16133
16134         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
16135
16136         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
16137         related to global registers from the amd64 port.
16138
16139 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
16140
16141         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
16142
16143         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
16144         with global registers.
16145         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
16146
16147         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
16148
16149 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
16150
16151         * debug-mini.c (encode_value): Fix off-by-one.
16152
16153         * aot.c (encode_value): Likewise.
16154
16155         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
16156
16157 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
16158
16159         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
16160         AOT.
16161
16162         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
16163         
16164         * aot.c (emit_method_info): Increase size of temp buffer.
16165
16166         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
16167         the AOT case.
16168
16169 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
16170
16171         * aot.c (emit_method_info): Fix build.
16172         
16173         * aot.c: Further rework of the AOT file format to reduce the size of
16174         the method info data.
16175
16176         * mini.h: Bump AOT file format version.
16177
16178 2004-12-27  Martin Baulig  <martin@ximian.com>
16179
16180         * mini.c (mini_get_method): New static method; call
16181         mono_get_method_full() and mono_get_inflated_method().
16182         (mono_method_to_ir): Use mini_get_method() instead of
16183         mono_get_method_full(). 
16184
16185 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
16186
16187         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
16188
16189 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
16190
16191         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
16192
16193         * inssel-amd64.brg: Add some optimization rules.
16194
16195 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
16196
16197         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
16198         standard not GC'd stuff is fine.
16199
16200 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
16201
16202         * aot.c: Rework the AOT file format to get rid of most of the global
16203         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
16204
16205         * mini.h: Bump AOT file format version.
16206         
16207 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
16208
16209         * mini.h: Bump AOT file format version.
16210
16211         * aot.c (mono_aot_is_got_entry): New function to determine if an 
16212         address is inside a GOT.
16213
16214         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
16215
16216         * cpu-pentium.md: Increase the maximum size of some instructions which
16217         might involve a got access.
16218         
16219         * mini.c (get_method_from_ip): Another debug helper function.
16220
16221         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
16222         when got var accesses are created during the decompose phase.
16223
16224         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
16225
16226         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
16227         argument mini_compile_method and to MonoCompile, and use this to
16228         determine whenever a given method is compiled for AOT. This allows the
16229         other methods compiled during AOT compilation to be free of AOT stuff,
16230         so the backends does not need to add special support for them by
16231         creating a fake GOT etc.
16232
16233         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
16234         longer needed.
16235
16236 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16237
16238         * mini.c (mono_method_to_ir): It turns out that some of the
16239         x-appdomain wrappers are lax with types, so just ignore this for
16240         all wrappers.
16241
16242         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
16243         at the vtable->klass. If it is non-shared code we can just use the
16244         vtable.
16245
16246 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
16247
16248         * mini-ppc.c: access MonoDomain from tls, too.
16249
16250 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
16251
16252         * declsec.c: Removed unused variable (and related warning ;-)
16253
16254 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16255
16256         * iltests.il: New test for LDELEMA on an array of ref types.
16257
16258         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
16259         all ldelema's on reftypes.
16260         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
16261         it was the wrong place to put it.
16262
16263         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
16264         register to pop to make this cleaner, at the request of Paolo.
16265
16266 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16267
16268         * mini-ops.h (OP_GETHASHCODE): New op.
16269
16270         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
16271
16272         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
16273         operation.
16274
16275         For a microbenchmark, this reduces the cost of Hashtable.get_Item
16276         by 25%.
16277         
16278         * mini-x86.c (mono_arch_output_basic_block): Rather than
16279
16280         add ebp, 4
16281
16282         Emit
16283
16284         pop edx
16285
16286         The first is 3 bytes while the second is 1. This saves 36 kb on
16287         mscorlib, quite a big saving. When bootstraping mcs, I was able to
16288         see a small boost because of icache locality.
16289
16290         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
16291
16292 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
16293
16294         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
16295         started code sharing with the generic code.
16296
16297 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
16298
16299         * mini-ppc.c, cpu-g4.md: added code for direct access to
16300         tls data slots.
16301
16302 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
16303
16304         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
16305          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
16306         to OP_TLS_GET.
16307
16308 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
16309
16310         * declsec.c|h: Added functions to cache the declarative stack modifiers
16311         in MonoJitInfo and to create a security frame from a MonoJitInfo 
16312         structure.
16313         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
16314         created. Register internal calls for System.Security.SecurityFrame::
16315         _GetSecurityFrame and _GetSecurityStack.
16316         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
16317         the definitions for the new stack walk/callback mechanism.
16318         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
16319         first security frame for LinkDemands and InheritanceDemands) and
16320         GetSecurityStack for Demands. Both use the new mono_walk_stack code
16321         from lupus.
16322         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
16323         walk initialization (lupus).
16324
16325 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16326
16327         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
16328         idiom.
16329         (handle_loaded_temps): Do not create a temporary variable for
16330         things that we know are temps. They will never be modified.
16331         (mono_spill_call): Set MONO_INST_IS_TEMP
16332         (mono_emulate_opcode): ditto
16333         (emit_tree): ditto
16334         (mono_method_to_ir.CEE_DUP): ditto
16335
16336 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
16337
16338         * mini.c (type_to_eval_stack_type): Make this handle the void type
16339         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
16340         (emit_tree): use ip_in_bb to special case some common idioms
16341         Update all callers to pass in the IP.
16342         (mono_method_to_ir): Make CEE_CALL* do the above as well.
16343
16344         This gives us a nice 2% speedup in mcs bootstrap.
16345
16346         * mini-x86.c (peephole_pass): Peephole pass to make
16347         mov  [foo], eax
16348         push [foo]
16349
16350         into
16351
16352         mov [foo], eax
16353         push eax
16354
16355         * mini.c (ip_in_bb): new method.
16356         (mono_method_to_ir): use this method rather than doing the hash
16357         lookup ourselves.
16358
16359         * linear-scan.c (mono_linear_scan): When expiring actives, you
16360         don't need to keep around variables that expire on this
16361         instruction. This makes it so that:
16362              a = b + 1
16363         will turn into:
16364              store (ebx add (ebx, 1))
16365         which will become
16366              add ebx, 1
16367
16368 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
16369
16370         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
16371         combination to avoid doing two copies. Fix up problems with previous
16372         patch.
16373
16374         * mini.c: Fix 64 bit warnings.
16375
16376         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
16377
16378 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
16379
16380         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
16381         changes from the x86 code.
16382
16383         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
16384
16385 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
16386
16387         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
16388         throwing code to reduce its size, unify the AOT and non-aot code and 
16389         get rid of relocations in the AOT case.
16390
16391         * mini-x86.h mini.c exceptions-x86.c 
16392         (mono_arch_get_throw_corlib_exception): New arch specific function to 
16393         raise corlib exceptions which doesn't require relocations in the 
16394         caller.
16395
16396         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
16397
16398 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
16399
16400         * mini.c (mono_emit_method_call): Only allocate the got var when it is
16401         needed.
16402
16403         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
16404         in the AOT case.
16405
16406 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16407
16408         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
16409         with add function when used from Inc/dec atomic 
16410         functions. Re-enabled optimization on x86.
16411         * mini-ops.h: renamed atomic_add functions to
16412         allow _add to match the Interlocked::Add and
16413         _add_next to match Interlocked::Inc/Dec.
16414
16415 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
16416
16417         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
16418         linking of BBs to the end BB, and enabled SSAPRE also with
16419         consprop and copyprop (which was prevented by that bug).
16420
16421 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16422
16423         * mini-x86.c: disabling the Interlocked optimizing code. 
16424
16425 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16426
16427         * aot.c (load_aot_module): Move reading of got_addr after the AOT
16428         file version check.
16429         
16430 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16431
16432         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
16433         interlocked optimization due lack of support on x86, rewrote 
16434         exchange to take into account that base may be in eax.
16435         
16436         xsp works again; activated Interlocked optimizing code.
16437         
16438 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16439
16440         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
16441
16442 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
16443
16444         * mini-ops.h: Add new opcodes.
16445
16446         * mini.h: Add new patch types. Add got_var to MonoCompile.
16447
16448         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
16449         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
16450         make it work with all kinds of patchable code.
16451
16452         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
16453         address of the GOT, and referencing entries in the GOT.
16454
16455         * mini.c: Add code to load the GOT address if needed by an opcode.
16456
16457         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
16458         independent AOT code on the x86 using an elf-style Global Offset Table.
16459
16460 2004-12-14  Raja R Harinath  <rharinath@novell.com>
16461
16462         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
16463
16464 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16465
16466         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
16467         when running xsp.
16468
16469 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
16470
16471         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
16472         of Interlocked:Increment/Decrement/Add as inline ops.
16473         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
16474
16475 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
16476
16477         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
16478         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
16479
16480 2004-12-12  Duncan Mak  <duncan@ximian.com>
16481
16482         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
16483         again. `patch_info->table_size' is no longer valid after Zoltan's
16484         commit #37636.
16485
16486 2004-12-12  Martin Baulig  <martin@ximian.com>
16487
16488         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
16489         if we are the "real" method, ie. not an inlined method inside it.
16490
16491 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
16492
16493         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
16494         before we look in the special fields table. This fixes
16495         ../tests/thread-static-init.cs.
16496
16497 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16498
16499         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
16500         for Array get_Rank and get_Length. Fixes bug #70465.
16501
16502 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
16503
16504         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
16505         separate structure to reduce the size of MonoJumpInfo.
16506
16507 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
16508
16509         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
16510
16511 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
16512
16513         * mini.c (mini_get_inst_for_method): Changed to allow ports
16514         to return a MonoInst instead of opcode 
16515         (renamed mini_get_opcode_for_method to better reflect the new functionality)
16516         
16517         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
16518         Allow ports to return a created MonoInst instead of op-code, will enable
16519         new optimizations.
16520         (renamed mini_get_opcode_for_method to better reflected the functionality)
16521
16522 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
16523
16524         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
16525
16526 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16527
16528         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
16529         Fixes #69985.
16530
16531 2004-12-08  Martin Baulig  <martin@ximian.com>
16532
16533         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
16534         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
16535
16536 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16537
16538         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
16539         correctly.
16540
16541         * exceptions.cs: Disable some tests which depend on properties of x86 fp
16542         arithmetic.
16543
16544 2004-12-08  Raja R Harinath  <rharinath@novell.com>
16545
16546         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
16547
16548 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
16549
16550         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
16551         bug introduced by the previous patch.
16552
16553 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16554
16555         * mini-ppc.c, objectc.cs: handle large structs passed by value
16556         (fixes bug #69972).
16557
16558 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
16559
16560         * mini-ppc.c: OP_ARGLIST implementation from
16561         Geoff Norton  <gnorton@customerdna.com>.
16562
16563 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16564
16565         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
16566         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
16567
16568 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16569
16570         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
16571
16572 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16573
16574         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
16575         support.
16576
16577 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
16578
16579         * mini-sparc.c: Zero out localled-ed memory.
16580
16581         * iltests.il: Add tests for zeroing out localloc-ed memory.
16582
16583 2004-12-04  Martin Baulig  <martin@ximian.com>
16584
16585         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
16586         mono_method_get_signature_full().       
16587
16588 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
16589
16590         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
16591         and some utility functions (always for SSAPRE), integrated SSAPRE.
16592         * mini.h: Likewise.
16593         * driver.c: Added ssapre option.
16594         * ssa.c: Small fix on OP_ARG handling.
16595         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
16596         * Makefile.am: Likewise.
16597
16598 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16599
16600         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
16601         now in the xp code.
16602
16603         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
16604         icall.
16605
16606 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16607
16608         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
16609         
16610         * cpu-s390.md : Increase instruction length of oparglist.
16611
16612         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
16613
16614 2004-11-30  Martin Baulig  <martin@ximian.com>
16615
16616         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
16617         virtual generic methods.  We call a special helper_compile_generic_method()
16618         icall to retrieve the method from the vtable, inflate and compile
16619         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
16620
16621         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
16622
16623 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
16624
16625         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
16626
16627 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
16628
16629         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
16630         Fixes #69929.
16631
16632 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
16633
16634         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
16635         platforms with PIC aot.
16636
16637 2004-11-28  Martin Baulig  <martin@ximian.com>
16638
16639         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
16640         Fixes gen-112.cs.
16641
16642 2004-11-28  Martin Baulig  <martin@ximian.com>
16643
16644         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
16645         the result of mono_type_get_underlying_type() to check whether
16646         we're byref.
16647
16648 2004-11-26  Martin Baulig  <martin@ximian.com>
16649
16650         * mini.c
16651         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
16652         in the g_assert().
16653
16654 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
16655
16656         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
16657         the same way as the other arguments so they won't get clobbered.
16658
16659         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
16660         calls through R11 since it is clobbered by the trampoline code.
16661
16662 2004-11-26  Raja R Harinath  <rharinath@novell.com>
16663
16664         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
16665         pick up in-tree mscorlib.dll.
16666
16667 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16668
16669         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
16670
16671         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
16672         runtime data/code are now stored in a table similar to the GOT in ELF. 
16673         This allows the code itself to be position independent.
16674
16675         * aot.c: Fix loading of referenced assemblies after the lazy assembly
16676         loading changes.
16677
16678         * aot.c: Attach ELF type (object/function) directives to all global
16679         symbols.
16680
16681         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
16682
16683         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
16684
16685         * mini-amd64.h: Turn on PIC AOT code.
16686
16687         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
16688         returning the offset within an OP_AOTCONST instruction where the GOT
16689         offset needs to be added.
16690
16691         * mini.h: Bump AOT file format version.
16692
16693 2004-11-25  Martin Baulig  <martin@ximian.com>
16694
16695         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
16696         uninflated generic methods.
16697
16698 2004-11-25  Martin Baulig  <martin@ximian.com>
16699
16700         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
16701
16702 2004-11-24  Martin Baulig  <martin@ximian.com>
16703
16704         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
16705         original klass (this only applies for generic instances).
16706
16707 2004-11-24  Martin Baulig  <martin@ximian.com>
16708
16709         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
16710         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
16711         that array).
16712
16713 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
16714
16715         * mini.c (mono_method_to_ir): Disable inlining for methods containing
16716         localloc. Fixes #69678.
16717
16718         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
16719         
16720 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
16721
16722         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
16723         used SSE registers on pinvoke calls. Fixes #69774.
16724
16725 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
16726
16727         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
16728         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
16729
16730 2004-11-23  Raja R Harinath  <rharinath@novell.com>
16731
16732         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
16733         Refer directly to the mcs/ tree.
16734
16735 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16736
16737         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
16738         Check if a trampoline for a synchronized method is required. 
16739
16740 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
16741
16742         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
16743         with localloc if needed. Throe arithmetric exception in
16744         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
16745         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
16746
16747 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
16748
16749         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
16750         types before switching on type.  Fixes #69622.
16751
16752 2004-11-19  Raja R Harinath  <rharinath@novell.com>
16753
16754         * Makefile.am (check-local): New.  Integrate into 'make check'.
16755         (MCS,RUNTIME): Define using in-tree mono and mcs.
16756         (ILASM): New.
16757         (%.exe): Use $(ILASM).
16758
16759 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
16760
16761         * mini-ppc.c: adjust initial prolog size (bug #69691).
16762
16763 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
16764
16765         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
16766         #69664.
16767
16768 2004-11-17  Raja R Harinath  <rharinath@novell.com>
16769
16770         * Makefile.am (clean-local): Rename from 'clean'.
16771
16772 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16773
16774         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
16775         to mono_arch_is_int_overflow. 
16776         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
16777         SIGFPE events.
16778
16779 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
16780
16781         * declsec.c|h: New files to support declarative security attributes.
16782         Added function to check if a method has (applicable) security.
16783         * mini.c|h: Add check for declarative security attributes in
16784         mono_method_check_inlining.
16785         * Makefile.am: Added declsec.c and declsec.h to the build.
16786
16787 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
16788
16789         * mini.c, mini.h: update to keep dynamic code info per-domain.
16790
16791 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
16792
16793         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
16794         (mini_init): Get rid of it from here too.
16795
16796 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
16797
16798         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
16799         implemented OP_RETHROW (patch by Geoff Norton
16800         <gnorton@customerdna.com>).
16801
16802 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
16803
16804         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
16805         between appdomains.  Fixes appdomain-unload on PPC.
16806
16807 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
16808
16809         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16810         mini-exceptions.c: handle the new wrapper types.
16811         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
16812         token value as a MonoClass* when compiling a wrapper.
16813         mono_jit_create_remoting_trampoline now takes an additional
16814         MonoRemotingTarget parameter.
16815         
16816 2004-11-10  Martin Baulig  <martin@localhost>
16817
16818         * mini.c (mono_method_to_ir): Use `generic_container->context'
16819         rather than creating a new one.
16820
16821 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16822
16823         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
16824
16825         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
16826
16827 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
16828
16829         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
16830         the experimental aot cache stuff.
16831
16832 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16833
16834         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16835         mini-exceptions.c: update to exception clause structure changes.
16836
16837 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16838
16839         * exceptions-x86.c (throw_exception): Fix warnings.
16840
16841         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
16842         for OP_RETHROW.
16843
16844 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16845
16846         * exceptions-sparc.c (get_throw_exception): Really fix this.
16847
16848 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
16849
16850         * tramp-*.c: we no longer support icalls without wrappers, so
16851         a bit of code can be removed here
16852
16853 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
16854
16855         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
16856         patch.
16857
16858         * cpu-sparc.md: Add op_rethrow.
16859
16860         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
16861
16862         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
16863
16864         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
16865         * mini-ops.h: Add OP_RETHROW.
16866
16867         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
16868
16869         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
16870
16871 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
16872         
16873         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
16874         Makes the output much easier to read
16875
16876 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
16877
16878         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
16879         prevents another huge leak when compiling with ssa. Secondly, the
16880         performance of doing this rather than freeing the lists is much
16881         better. GList does a lock every time you allocate a list link,
16882         so that it can use a memory pool. So, it is better to just use
16883         a memory pool of our own.
16884         
16885         * ssa.c, linear-scan.c: replace g_list_remove_link with
16886         g_list_delete.  The remove one does not free the GList, so we were
16887         leaking memory. On -O=all --compile-all with corlib, this cut down
16888         3 MB of allocations.
16889
16890 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
16891
16892         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
16893
16894         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
16895
16896         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
16897         into a new function mono_create_jit_trampoline ().
16898
16899 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
16900
16901         * trace.c (get_spec): Allow tracing of classes without a namespace.
16902
16903 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
16904
16905         * mini.c: Fix pointer overwrite in mini_method_compile.
16906
16907 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
16908
16909         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
16910         The darwin ABI needs some special handling for 1 and 2 byte structs
16911         Lets use lbz/lhz instead of lwz everywhere.
16912         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
16913         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
16914         Use stb/sth for the former, and put the latter always on stack instead of in
16915         argument registers.
16916
16917 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
16918
16919         * trace.c (is_filenamechar): Add '_'.
16920
16921 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
16922
16923         * mini-s390.c: Fix prolog length to allow for large trace requirements.
16924
16925         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
16926
16927 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
16928
16929         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
16930         depends on libmonogc. Fixes #68805.
16931
16932 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
16933
16934         * mini.c (mono_jit_free_method): Provide extra information for
16935         this error.  Currently this leaks, but will be turned into a
16936         developer option in the future.
16937
16938 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
16939
16940         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
16941
16942 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
16943
16944         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
16945         boundary. Fixes reading of PATCH_INFO_R4 and R8.
16946         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
16947
16948 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
16949
16950         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
16951         trampolines for AOT code.
16952
16953 2004-10-22    <vargaz@freemail.hu>
16954
16955         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
16956         constructed types. Fixes #68136.
16957
16958 2004-10-21  Martin Baulig  <martin@ximian.com>
16959
16960         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
16961         if it returns true, unwind the stack to the call instruction.
16962
16963 2004-10-21    <vargaz@freemail.hu>
16964
16965         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
16966
16967         * mini.h: Bump AOT version number.
16968
16969         * objects.cs: Add another test for unbox trampolines.
16970
16971         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
16972         valuetype methods.
16973
16974 2004-10-20    <vargaz@freemail.hu>
16975
16976         * driver.c: Add SHARED to the set of optimizations tested.
16977
16978         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
16979
16980         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
16981         used by CEE_NEWARR.
16982
16983         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
16984
16985 2004-10-20  Martin Baulig  <martin@ximian.com>
16986
16987         * mini-exceptions.c (mono_handle_exception): Call
16988         mono_debugger_handle_exception() to tell the debugger about
16989         catch/finally clauses.
16990
16991 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
16992
16993         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
16994
16995         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
16996         #68447.
16997
16998 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
16999
17000         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
17001         methods as their native size, fixed bug #57543, #57545.
17002         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
17003         This saves a temporary register and mullw call down into 1 (minor perf
17004         increase for cases like sum = sum * 5;  This use to translate into:
17005             li r11,5
17006             mullw r28,r28,r11
17007         It now translates to
17008             mulli r28,r28,5
17009
17010 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
17011
17012         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
17013         #68388.
17014
17015 2004-10-11  Martin Baulig  <martin@ximian.com>
17016
17017         * mini.c (mono_method_to_ir): If we're a generic method, get the
17018         MonoGenericContainer from our MonoMethodNormal and create a
17019         MonoGenericContext from it.
17020
17021 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
17022
17023         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
17024
17025         * basic-long.cs: Add test for checked i8->i2 cast.
17026
17027 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17028
17029         * inssel-ppc.brg: added a couple of speedup rules.
17030
17031 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
17032
17033         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
17034         to speed up rebuilds.
17035
17036 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17037
17038         * mini-s390.c: Minor fix to OP_OR_IMM.
17039
17040 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
17041
17042         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
17043         better. Fixes appdomain-unload.exe on sparc.
17044
17045 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
17046
17047         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
17048         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
17049         see bug 67324.
17050
17051 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
17052
17053         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
17054
17055 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
17056
17057         * mini.c: Always generate a field read/write wrapper for members
17058         of the class MarshalByRefObject since the actual instance could
17059         be a CBO.
17060
17061 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
17062
17063         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
17064
17065 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
17066
17067         * driver.c mini.h trace.c: Move the setting of the main assembly into
17068         a separate function called mono_trace_set_assembly () and call it after
17069         actually loading the main assembly. Fixes #66872.
17070
17071 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
17072
17073         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
17074         using the code manager.
17075
17076 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
17077
17078         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
17079
17080 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
17081
17082         * cpu-amd64.md: Fix bug in previous patch.
17083         
17084         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
17085         #66650.
17086
17087 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
17088
17089         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17090         mini-exceptions.c: updates for changed stack walk interface.
17091
17092 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17093
17094         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
17095
17096 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
17097
17098         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
17099
17100 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
17101
17102         * driver.c (mini_regression_list): Do not call mono_assembly_close 
17103         since assemblies can't be unloaded.
17104         
17105 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17106
17107         * cpu-amd64.md: Fix more instruction lengths.
17108
17109         * cpu-amd64.md: Fix lengths of some instructions.
17110
17111 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
17112
17113         * inssel.brg: Make the array ldelema check aot friendly.
17114
17115 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17116
17117         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
17118
17119         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
17120
17121 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
17122
17123         * mini-x86.c: Fix build.
17124
17125         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
17126         mono_type_get_underlying_type () helper function to simplify code.
17127         
17128 2004-09-09  Martin Baulig  <martin@ximian.com>
17129
17130         * mini-amd64.c: Don't access `type->data.klass' directly, call
17131         mono_class_from_mono_type() instead since the type may be a
17132         generic instance.
17133
17134 2004-09-09  Martin Baulig  <martin@ximian.com>
17135
17136         * mini-amd64.c (get_call_info): Fix support for generic instances.
17137         (add_valuetype): Use mono_class_from_mono_type() to get the class
17138         since we can be a generic instance.
17139
17140 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
17141
17142         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
17143
17144 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17145
17146         * liveness.c: reset spill costs on each scan: bug 62107
17147
17148 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
17149
17150         * exceptions-sparc.c (mono_arch_find_jit_info): remove
17151         unnecessary line that doesn't compile
17152
17153 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17154
17155         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
17156         trampolines, make them call an error function so people can fix their
17157         code.
17158
17159 2004-09-06  Martin Baulig  <martin@ximian.com>
17160
17161         * mini.c (mono_method_to_ir): When initializing locals, handle a
17162         generic instances like a valuetype if it's a valuetype and like a
17163         class if it's a class.
17164
17165 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17166
17167         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
17168         stack. Fixes #64674.
17169
17170         * exceptions.cs: Add test for unwinding of call arguments.
17171
17172 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
17173
17174         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
17175         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
17176         set the carry/borrow flag). The sparc and s390 implementations
17177         can now use optimized versions (and simplify the code). ppc bugfixes.
17178
17179 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17180
17181         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
17182
17183 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
17184
17185         * inssel-amd64.brg: Remove leftover 32 bit rule.
17186
17187         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
17188
17189 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
17190
17191         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
17192         mono_arch_find_jit_info functions into a new function. Fix a memory
17193         leak.
17194
17195         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
17196         refactored code.
17197         
17198 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17199
17200         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
17201         as well.
17202         
17203         * exceptions.cs: Add array size tests.
17204
17205         * mini.c: Allocate a separate icall wrapper for each arity of 
17206         mono_array_new_va. Fixes #59509.
17207
17208         * exceptions.cs: Add testcase for 64578.
17209
17210         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
17211
17212         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
17213         
17214 2004-09-02  Martin Baulig  <martin@ximian.com>
17215
17216         * mini.c (mono_method_to_ir): When initializing the locals, call
17217         handle_initobj() on the generic instance itself, not its
17218         underlying type.
17219
17220 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17221
17222         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
17223         MonoJitInfo for dynamic methods.
17224
17225         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
17226
17227         * mini.c: Add support for freeing JIT data for dynamic methods.
17228         
17229 2004-09-01  Martin Baulig  <martin@ximian.com>
17230
17231         * mini-x86.c (is_regsize_var): Added support for generic
17232         instances.
17233         (mono_arch_emit_prolog): Make this compile again, use
17234         `x86_push_imm_template (code)'.
17235
17236 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
17237
17238         * mini-x86.c: make all push_imm instructions that get
17239         patched always emit the long form
17240
17241 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
17242
17243         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
17244         in a per-domain hash.
17245
17246         * mini-amd64.c (merge_argument_class_from_type): Handle generic
17247         types.
17248
17249 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
17250
17251         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
17252         work.
17253         
17254         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
17255         work.
17256
17257         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
17258         Beginnings of SSE2 support.
17259
17260         * exceptions.cs: Add more tests for checked int<->uint casts.
17261
17262 2004-08-28  Martin Baulig  <martin@ximian.com>
17263
17264         * mini-x86.c (mono_arch_instrument_epilog): Added support for
17265         generic instances.
17266
17267         * mini.c
17268         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
17269         Handle generic instances recursively.
17270
17271 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17272
17273         * iltests.il: test for conv.u8 on a constant
17274
17275 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17276
17277         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
17278         LCONV_x4 (shrun_32 (membase)).
17279
17280 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17281
17282         * inssel-x86.brg: c&p rules for push/setret of long
17283
17284 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17285
17286         * inssel-x86.brg: c&p rules for compare (base, regvar) and
17287         compare (regvar, base)
17288
17289         * inssel-x86.brg: more burg love
17290
17291         * inssel.brg: more cleanup
17292
17293         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
17294
17295 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17296
17297         * basic-long.cs, basic-calls.cs: new tests for optimization.
17298
17299 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
17300
17301         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
17302         patch.
17303
17304 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17305
17306         * mini-amd64.c (read_tls_offset_from_method): Add another case.
17307         
17308 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
17309
17310         * inssel.brg (mini_emit_memcpy): use 
17311         NO_UNALIGNED_ACCESS to disable memcpy optimization
17312
17313 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17314
17315         * mini-amd64.c: Handle generic types in various places.
17316
17317         * mini.c (mono_method_to_ir): Handle generic types in init locals.
17318
17319 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
17320
17321         * mini.c (handle_box): Fix warning.
17322
17323         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
17324
17325         * mini-amd64.h: Enable the emit_state optimization.
17326
17327         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
17328
17329         * mini-amd64.c: Add some new 64 bit peephole opts.
17330
17331         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
17332
17333         * cpu-amd64.md: sreg1 of div instructions must be %rax.
17334
17335         * mini-amd64.c: Register allocator fixes.
17336
17337         * mini.c: Add an optimization to emit_state to avoid allocation of new
17338         registers on some platforms.
17339
17340 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
17341
17342         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
17343
17344         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
17345         allocation. Fixes #63085.
17346
17347         * basic-long.cs: Add new regression test.
17348
17349         * mini-amd64.c: Register allocator improvements.
17350
17351 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
17352
17353         * mini-amd64.c (read_tls_offset_from_method): Add another code
17354         sequence.
17355
17356         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
17357         instruction sequence for nullifying class init trampolines.
17358
17359         * objects.cs: Add new regalloc test.
17360
17361         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
17362
17363 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17364
17365         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
17366         
17367         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
17368         arguments.
17369
17370         * driver.c: Fix profiling after TLS changes.
17371         
17372         * driver.c (mono_main): Set mono_stats.enabled if needed.
17373
17374         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
17375         CEE_BOX.
17376
17377 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
17378
17379         * mini-x86.c: use a 1 op rather than a 2 op tls access
17380         instruction -> faster.
17381
17382 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17383
17384         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
17385         x86 backend.
17386
17387 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
17388
17389         * exceptions-sparc.c (throw_exception): fix typo
17390
17391 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17392
17393         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
17394         set tree->dreg correctly with tls. Allow any
17395         register to be used.
17396
17397         * mini-x86.c (read_tls_offset_from_method): add new code
17398         generation pattern seen with GCC.
17399
17400
17401 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17402
17403         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
17404         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17405         exceptions-sparc.c: fix some performance issues in exception
17406         handling and setting of the stack trace for exceptions that were
17407         already thrown.
17408
17409 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17410
17411         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
17412         x86 backend.
17413         
17414         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
17415         registers.
17416
17417 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17418
17419         This patch inlines tls access, when possible.
17420         
17421         * mini.h: new arch functions for TLS intrinsics.
17422         All platforms updated with a stub.
17423
17424         * mini.c: use the new intrinsics
17425
17426         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
17427         arch specific intrinsic for tls variables
17428
17429 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17430
17431         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
17432         under windows.
17433
17434 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17435
17436         * mini.c: thread local allocation
17437
17438 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
17439
17440         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
17441
17442         * Makefile.am: Link against the static version of libmonogc.
17443         
17444         * Makefile.am: Link the static versions of the convenience libraries
17445         into the mono executable.
17446
17447         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
17448
17449 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
17450
17451         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
17452         on integer overflow.
17453
17454         * mini-amd64.c: Reorganize function call code.
17455
17456         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
17457
17458 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17459
17460         * inssel-x86.brg: use xor eax,eax.
17461         
17462         * basic.cs: new tests
17463
17464 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17465
17466         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
17467         in exception throwing code.
17468         
17469 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17470
17471         * inssel-x86.brg: use xor esi,esi.
17472
17473 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17474
17475         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
17476         can trace methods compiled during mini_init () too.
17477
17478         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
17479         CEE_CONV_U4.
17480
17481 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17482
17483         * Makefile.am: static link on x86 (r=zoltan)
17484
17485 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17486
17487         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
17488         code since it causes some programs to fail.
17489
17490 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
17491
17492         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
17493
17494 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17495
17496         * mini.c: ovfops_op_map - add STACK_OBJ case for
17497         CONV_I 
17498         * basic.cs: add test_0_pin_string as test
17499         case for above.
17500
17501 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17502
17503         * Makefile.am: build C# if srcdir != builddir
17504
17505 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17506
17507         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
17508         fall-through blocks.
17509
17510 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17511
17512         * driver.c: enable loop by default again and include abcrem in -O=all.
17513
17514 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
17515
17516         * iltests.il: Add some localloc tests.
17517
17518         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
17519
17520         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
17521         Fixes #62574.
17522
17523         * inssel-amd64.brg: Add some optimizations.
17524
17525         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
17526         for gcc-3.4.
17527
17528         * Makefile.am: Statically link mono against libmono on AMD64.
17529         
17530         * mini-amd64.c inssel-amd64.brg: Optimizations.
17531
17532 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
17533
17534         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
17535
17536         * tramp-amd64.c: Patch calling code in trampolines.
17537
17538 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
17539
17540         * mini-amd64.c: pinvoke struct passing fixes.
17541
17542 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
17543
17544         * mini-sparc.c: redo change, make mono_arch_cpu_init call
17545         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
17546
17547 2004-08-05  Duncan Mak  <duncan@ximian.com>
17548
17549         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
17550         CEE_LDELEM_ANY.
17551
17552 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17553
17554         * mini-amd64.c (emit_move_return_value): Move return value for normal
17555         calls too.
17556
17557 2004-08-05  Martin Baulig  <martin@ximian.com>
17558
17559         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
17560         `type->type'; just modify `type' itself when dealing with enums
17561         and generic instances.
17562         (check_call_signature): Make `simple_type' a `MonoType *'.
17563
17564 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17565
17566         * mini.c: Use OP_PADD to add offsets to addresses.
17567
17568         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
17569
17570 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
17571
17572         * mini-sparc.c (mono_arch_emit_epilog): fix check
17573         for folding last op into restore instruction
17574
17575 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17576
17577         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
17578         helper methods using the code manager.
17579         
17580         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
17581
17582         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
17583
17584 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17585         
17586         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
17587           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
17588
17589         * mini-s390.c: fix tail processing
17590
17591 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
17592
17593         * mini-ppc.c: mul.ovf.un exception name fix.
17594
17595 2004-08-03  Martin Baulig  <martin@ximian.com>
17596
17597         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
17598         instances; before jumping to `handle_enum', also modify `ptype'.
17599
17600 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
17601
17602         * cpu-sparc.md: fcall maximal length too small.
17603
17604 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
17605
17606         * mini-amd64.c mini.h: Add initial support for passing/returning 
17607         structures to/from pinvoked methods.
17608
17609 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
17610
17611         * mini-ppc.c: reg allocator fix.
17612
17613 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
17614
17615         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
17616
17617         * inssel.brg: Optimize memset on 64 bit machines.
17618
17619         * mini-amd64.c: Fix some vararg cases.
17620
17621 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17622
17623         * mini-s390.c: Corrected macro in emit_float_to_int
17624
17625         * s390-abi.cs: Tests to exercise the s390 ABI
17626
17627 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17628
17629         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
17630         caller saved regs.
17631
17632         * basic.cs: Add a test for add.ovf.un.
17633
17634 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
17635
17636         * mini-sparc.c: add case for OP_IDIV_UN
17637
17638 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17639
17640         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
17641         
17642         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
17643
17644 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
17645
17646         * basic.cs: regression tests.
17647
17648         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
17649         regressions.
17650
17651 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17652
17653         * basic.cs: Add a new test.
17654
17655         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
17656         and AOT. Various fixes and optimizations.
17657
17658         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
17659
17660 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17661
17662         * mini-ppc.c: make sure temp regs are not used for global reg
17663         allocation.
17664
17665 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
17666
17667         * cpu-sparc.md: conv_i8 fix for 64bits
17668
17669         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
17670
17671 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
17672         
17673         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
17674         add opcode for cmp BYTE PTR [eax], imm.
17675
17676         * inssel.brg: Make memcpy and memset takes bases.
17677
17678 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17679
17680         * *-amd64.*: More AMD64 work.
17681         
17682 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17683
17684         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
17685         add a compare-not-equal opcode.
17686         
17687 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
17688
17689         * mini.c: Use mono_init_from_assembly instead of mono_init.
17690         
17691 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17692
17693         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
17694
17695         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
17696
17697         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
17698
17699         * inssel.brg: 64 bit fixes.
17700
17701         * mini.h (MonoCallInst): Add some AMD64 specific data.
17702
17703         * mini.h: Add some OP_P opcodes.
17704
17705 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17706
17707         * basic.cs: tests for 61797 and 61740
17708
17709 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
17710
17711         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
17712         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
17713
17714 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
17715
17716         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
17717
17718         * *-amd64*.*: Ongoing AMD64 work.
17719
17720 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
17721
17722         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
17723
17724         * *-amd64*: Ongoing AMD64 work.
17725
17726         * mini-arch.h: Add AMD64 support.
17727
17728         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
17729
17730         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
17731
17732         * mini-ops.h: Add new opcodes.
17733
17734         * Makefile.am: Add AMD64 support.
17735
17736         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
17737         rules into the inssel-long*.brg files.
17738
17739         * *-amd64.*: Add beginnings of AMD64 backend.
17740
17741 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
17742
17743         * mini.c (print_dfn): commenting out the code that prints
17744         the cil. With -O=deadce, this makes -v -v crash.
17745         
17746         * cpu-pentium.md: make checkthis have a length of 2
17747
17748 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
17749
17750         * mini-sparc.h: fix implementations of __builtin
17751         functions for Sun compiler for V9.
17752
17753 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
17754
17755         * mini.c: use the new stelem.ref wrapper
17756         * exceptions.cs, arrays.cs: new stelem.ref tests
17757
17758 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17759
17760         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
17761         new XSP should work with these changes).
17762
17763 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
17764         
17765         * inssel-{long32,x86,}.brg: trivial optimizations.
17766         
17767 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
17768
17769         * mini.c: load value when emitting box operation in
17770         constrained calls.
17771
17772 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
17773
17774         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
17775         is one byte shorter than cmp DWORD PTR [eax], 0.
17776
17777 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17778
17779         * inssel-ppc.brg: arguments on the stack are always
17780         relative to the stack pointer (spotted by Neale Ferguson).
17781
17782 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17783
17784         * exceptions-x86.c: delay appending the method name to the trace until
17785         after mono_jit_info_table_find is called, as this gets the real
17786         MonoMethod.
17787
17788 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
17789
17790         * aot.c: register roots
17791
17792 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17793
17794         * aot.c : I could just use PLATFORM_WIN32 flag.
17795
17796 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17797
17798         * aot.c : Reverting the previous fix. This time it broke linux build.
17799
17800 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17801
17802         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
17803
17804 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
17805
17806         * mini.c (handle_stack_args): Remove some more debugging code.
17807         
17808         * mini.c (handle_stack_args): Remove debug output left in by mistake.
17809
17810         * driver.c mini.h aot.c: Allow additional options to be specified with
17811         --aot and pass them to mono_compile_assembly.
17812
17813         * aot.c: Add experimental code to AOT compile all loaded assemblies
17814         on demand and save the code into a cache in the filesystem.
17815
17816         * aot.c: Add support for more wrapper methods.
17817         
17818         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
17819         58863.
17820
17821         * cpu-*.md: Remove removed opcodes.
17822
17823         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
17824         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
17825         related icalls to marshal.c.
17826
17827 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
17828
17829         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
17830
17831         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
17832
17833         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
17834
17835 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
17836         * liveness.c: If liveness is recomputated we need to reset the information
17837         for each variable. This way, if the liveness range has been narrowed
17838         by optimizations that happened after the last computation, we can return
17839         a smaller range.
17840         
17841         For example, if you have
17842         
17843         {
17844                 int i = 0;
17845                 
17846                 // Tons of code that does not affect i
17847                 
17848                 i = foo ();
17849                 ...
17850         }
17851         
17852         i = 0 is dead code and will be removed by SSA. However, when
17853         linear scan gets to the code, i will still appear to be live
17854         throughout the entire block. This prevents good register allocation.
17855
17856 2004-07-06  Martin Baulig  <martin@ximian.com>
17857
17858         * debug-mini.c (mono_debug_init_method): Allow
17859         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
17860         (mono_debug_add_icall_wrapper): New method.
17861
17862         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
17863
17864 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
17865
17866         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
17867         optimization.
17868
17869 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
17870
17871         * aot.c (mono_aot_load_method): Fix loading of debug info.
17872
17873 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17874
17875         * aot.c: Add logging support.
17876
17877 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17878
17879         * mini.h: Add prototype for mono_print_method_from_ip.
17880
17881         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
17882
17883         * inssel.brg: 64 bit fixes.
17884
17885         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
17886         inssel-long32.brg.
17887
17888         * Makefile.am: Add SPARC64 support.
17889
17890 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17891
17892         * aot.c: Fix alignment problems on 32 bit platforms.
17893
17894 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17895
17896         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
17897         SPARC64.
17898
17899         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
17900         problems.
17901
17902         * mini.h: Bump AOT file version. Some 64 bit fixes.
17903
17904 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17905
17906         * inssel-sparc.brg: Add new rule to avoid register moves.
17907
17908         * inssel.brg: Add ldind_to_load_membase helper function.
17909
17910 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
17911
17912         * mini.c: OffsetToStringData intrinsic.
17913         
17914 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17915
17916         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
17917
17918         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
17919         regression tests.
17920
17921         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
17922 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17923
17924         * mini.c: reinstated mono_compile_get_interface_var()
17925         on x86, too, since the change breaks the Gtk# build there as well.
17926
17927 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17928
17929         * driver.c: remove loop from the default optimizations: it seems to
17930         interact badly with some of the other options (see bug #60613).
17931
17932 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
17933
17934         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
17935         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
17936
17937 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
17938
17939         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
17940         vararg-using methods.
17941
17942 2004-06-21  Martin Baulig  <martin@ximian.com>
17943
17944         * mini/mini-exceptions.c
17945         (mono_handle_exception): Added `gpointer original_ip' argument.
17946         After calling mono_unhandled_exception(), call
17947         mono_debugger_unhandled_exception() and if that returns true,
17948         restore the context and return.
17949
17950 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17951
17952         * mini-ppc.c: prefer the use of relative branches so
17953         they won't need to be patched in aot code (patch from Patrick Beard).
17954
17955 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17956
17957         * aot.c: patch from Patrick Beard to make the output assembly
17958         more correct for the MacOSX assembler. Small tweak to
17959         generate sane images on Linux/PPC, too.
17960
17961 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17962
17963         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
17964         case until bug #59509 is fixed (shows up in #60332).
17965
17966 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17967
17968         * mini.c: make sure the needed wrappers are compiled, too, with
17969         precomp.
17970
17971 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
17972
17973         * driver.c: remove NPTL reference in --version output.
17974
17975 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17976
17977         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
17978         generate valid assembly for the Mach-O assembler.
17979
17980 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17981
17982         * driver.c: don't include abcrem in the all optimization specifier
17983         since it slows down jit compilation too much for now.
17984
17985 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
17986
17987         * mini.c: use BIGMUL only if both operands have the same signage.
17988         * iltests.il: Test for bug 60056. (errors related to signage in
17989         BIGMUL).
17990
17991         r=lupus.
17992
17993 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
17994
17995         * mini.c, aot.c: memory leak fixes.
17996
17997 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17998
17999         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
18000
18001 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
18002
18003         * Makefile.am: remove the -static hack completely, it links in
18004         statically glib as well.
18005
18006 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
18007
18008         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
18009         * exceptions.cs: make it compile with new mcs/csc.
18010
18011 2004-06-03 Massimiliano Mantione <massi@ximian.com>
18012         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
18013         and added relevant test case.
18014
18015 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18016
18017         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
18018         regressions in gtk-sharp.
18019
18020 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
18021
18022         * exceptions.cs: New regression tests.
18023
18024         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
18025
18026 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
18027
18028         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
18029
18030 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
18031
18032         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
18033
18034         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
18035
18036 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
18037
18038         * mini.c (mono_jit_runtime_invoke): Init class in this
18039         method instead of trusting mono_jit_compile_method to
18040         do the work (because wrappers can be in object class)
18041
18042 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
18043
18044         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
18045
18046         * basic-long.cs: New regression test.
18047
18048 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
18049
18050         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
18051         and div/rem checks.
18052
18053 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
18054
18055         * Makefile.am: fix miguel's change to build mono statically against
18056         libmono (track build dependencies).
18057
18058 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18059
18060         * cfold.c: Some glib versions do not have G_MININT32.
18061
18062 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
18063
18064         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
18065         with precision of tan, atan, sin and cos, and implemented related
18066         regressions tests (fixes bug 54467, but one new problem appeared and
18067         is not fixed yet).
18068
18069 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18070
18071         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
18072
18073         * exceptions.cs: Add test for constant folding && division by zero.
18074
18075         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
18076         since driver.c is in libmono too, so the optimization was useless.
18077
18078         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
18079         variable to driver.c so the compiler can emit more efficient code to
18080         access them.
18081
18082 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18083
18084         * Makefile.am: don't distribute generated inssel.[ch] files.
18085
18086 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
18087
18088         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
18089         into the default appdomain. Fixes #58707.
18090
18091         * jit-icalls.c: Remove the broken approximation for truncl, doing
18092         no conversion is better.
18093
18094         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
18095         Fixes #58863.
18096
18097 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18098
18099         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
18100         of the mcrxr instruction which is not available on some processors
18101         even if it's documented to be. Implement add and sub overflow correctly
18102         (still not complete for long unsigned). Speed up icalls a bit.
18103
18104 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
18105
18106         * mini.c (mono_jit_compile_method_with_opt): Make sure that
18107         we run .cctor in the current domain instead of target_domain.
18108         
18109         Fixes bug #58558, .cctor not being called in -O=shared.
18110
18111 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18112
18113         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
18114
18115 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
18116
18117         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
18118         which can be done with an imm8, do it that way.
18119         (mono_arch_output_basic_block): ditto for a jmp
18120         (mono_arch_emit_prolog): Computate maximum offset of a label.
18121
18122 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
18123
18124         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
18125         now tries to allocate prefered physical reg's for virtual
18126         regs. This reduces the number of emited spills/loads with
18127         20-30% on our core assemblies.
18128
18129 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18130
18131         * jit-icalls.c: truncl() is not needed and trunc() is
18132         the correct thing to do anyway (bug #58287).
18133
18134 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
18135
18136         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
18137         if available.
18138
18139 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18140
18141         * driver.c: enable loop optimizations by default.
18142
18143 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18144
18145         * mini-x86.c: fix calc of max loop size when aligning loops start.
18146
18147 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
18148
18149         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
18150         the stack.
18151
18152 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
18153
18154         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
18155         should set carry.
18156
18157         * basic-long.cs: Add tests for add/subtract of immediates with carry.
18158
18159         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
18160         
18161         * mini.c (inline_method): Allways inline some wrappers even if the cost
18162         is too large. Fixes #58785.
18163
18164         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
18165         
18166 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
18167
18168         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
18169         (crichton@gimp.org). Beginning of support for sparc/linux.
18170
18171         * mini-sparc.c: Optimize retrieval of LMF address.
18172
18173 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
18174
18175         * exceptions-ppc.c:  handle alloca in methods with clauses.
18176
18177 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
18178
18179         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
18180
18181 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
18182
18183         * mini.c: Delegate most of the abort signal work to 
18184           mono_thread_request_interruption, which also handles Stop and Suspend
18185           states.
18186
18187 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
18188
18189         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
18190         supports the save/restore lmf opcodes.
18191
18192 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
18193
18194         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
18195         by gcc-3.4 as well.
18196
18197         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
18198
18199 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18200
18201         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
18202         methods which contain array accesses.
18203
18204         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
18205         boundaries. Fixes #58537.
18206
18207         * iltests.il: Add regression test for #58537.
18208
18209 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18210
18211         * mini-x86.c (mono_arch_local_regalloc): Last part of
18212         fix for bug #58633 (releasing register to early).
18213
18214 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
18215
18216         * basic-long.cs: Add new regression test.
18217
18218 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18219
18220         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
18221         register too early on the chain.
18222
18223 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18224
18225         * mini.c (create_helper_signature): Use a helper function to reduce
18226         the code which needs to be written. Also set the calling convention of
18227         icalls on windows. Fixes #57840.
18228
18229 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18230
18231         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
18232         exceptions-ppc.c: added helper function to get the instruction address
18233         from a signal handler context.
18234
18235 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18236
18237         * helpers.c: use g_get_tmp_dir. Invokes happyness 
18238         from gonzalo.
18239
18240 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18241
18242         * helpers.c: Add new env variable to pass args to objdump.
18243         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
18244
18245 2004-05-17  Radek Doulik  <rodo@ximian.com>
18246
18247         * Makefile.am (common_sources): added abcremoval.h so it get
18248         disted and daily mono packages on go-mono.com will build again
18249
18250 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
18251
18252         * abcremoval.c: Fixed coding style, added copyright header.
18253
18254         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
18255
18256         * mini.h: Added prototype for abc removal main function.
18257
18258         * build_relations_propagation_table.pl: Added copyright header.
18259
18260 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18261
18262         * basic-long.cs: reg test for complex ceq_long bug.
18263
18264 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18265
18266         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
18267         reg in long and clob case (bug #58343). Fixed/added comments.
18268
18269 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
18270
18271         * mini.c (mono_jit_runtime_invoke): Follow new convention
18272         of calling the invoke method with an function pointer.
18273
18274 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
18275
18276         * ChangeLog: Fix author of memory leak patch.
18277
18278 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
18279
18280         * Makefile.am: fix make dist as well...
18281
18282
18283 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
18284
18285         * cfold.c: Made so that conversions from pointer to int4 are no-ops
18286         on archs where pointers are 4 bytes long.
18287
18288         * Makefile.am: Added abcremoval.c source file.
18289
18290         * abcremoval.c: Added abcremoval.c.
18291
18292         * abcremoval.h: Added abcremoval.h.
18293
18294         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
18295
18296         * inssel.brg: Enabled bounds check removal.
18297
18298         * mini.c: Added support for abcrem optimization.
18299
18300         * mini.h: Added abcrem optimization label.
18301
18302         * driver.c: Added support for abcrem optimization.
18303
18304         * propagated_relations_table.def: Added propagated_relations_table.def.
18305
18306 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
18307
18308         * mini.c, cfold.c: fix style.
18309
18310 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18311
18312         * mini.c: handle issue with the low-level implementation of
18313         some long opcodes (bug #54209).
18314
18315 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
18316
18317         * basic.cs: test for my new cmov stuff.
18318
18319 2004-05-13      Patrik Torstensson
18320
18321         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
18322         opt and added peephole documentation.
18323
18324 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
18325
18326         * tramp-ppc.c: rewrote the generic trampoline code.
18327
18328 2004-05-11      Patrik Torstensson
18329
18330         * mini-x86.c: optimize long shl/shr asm code (one less branch)
18331
18332 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
18333
18334         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
18335
18336         * mini.h mini.c dominators.c: Applied patch from Derek Woo
18337         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
18338
18339         * mini.c: Add new icalls for AsAny marshalling.
18340
18341 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18342
18343         * tramp-ppc.c, mini-ppc.c: more cleanups.
18344
18345 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18346
18347         * mini.c: no warnings.
18348
18349 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18350
18351         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
18352
18353 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
18354
18355         * mini.c: In the thread abort signal handler, if the thread is in the
18356         process of being stoped, don't throw the Abort exception, just stop the
18357         thread.
18358
18359 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
18360
18361         * tramp-ppc.c: removed old code.
18362
18363 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18364
18365         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
18366         do some simple speed optimizations on ppc.
18367
18368 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18369
18370         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
18371         and large offsets in load/store.
18372
18373 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18374
18375         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
18376         it causes regressions.
18377
18378 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18379
18380         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
18381         support.
18382
18383 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18384
18385         * jit-icalls.c: remove warnings.
18386         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
18387         speedups for unsafe code.
18388
18389 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18390
18391         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
18392
18393 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
18394
18395         * basic-calls.cs: Add new regression test.
18396
18397         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
18398         more portable.
18399
18400         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
18401
18402         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
18403         is no longer used.
18404
18405 2004-05-06      Patrik Torstensson
18406
18407         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
18408         long reg allocation in any reg (not only eax:edx) and implemented 
18409         long shl/shr ops in asm instead of helpers.
18410
18411 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
18412
18413         * mini-sparc.h: Fix warnings.
18414
18415         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
18416         stack.
18417
18418         * mini-exceptions.c (mono_handle_exception): Call the filter in a
18419         separate statement for clarity.
18420
18421         * mini-sparc.c: Update status.
18422
18423 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
18424
18425         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
18426         here.
18427
18428 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18429
18430         * inssel-ppc.brg: another small pre-release workaround:
18431         we don't do overflow detection for long_sub_un.
18432
18433 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18434
18435         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
18436         (also works around a weird ppc bug: 57957).
18437
18438 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
18439
18440         * tramp-ppc.c: trampoline fixes.
18441
18442 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
18443
18444         * mini-ppc.c: fixed typos.
18445
18446 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18447
18448         * mini-ppc.c, exceptions-ppc.c: more code saves registers
18449         at the top of the stack. Fixed typos. Use a frame registers
18450         for all the methods with exception clauses.
18451
18452 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18453
18454         * exceptions-ppc.c: restore fp registers.
18455
18456 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18457
18458         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
18459         order from the stack top (moved the stack room to save the
18460         return value for trace after the param area). Fixed corruption
18461         in restoring registers on unwind.
18462
18463 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18464
18465         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
18466
18467 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18468
18469         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
18470         and prolog/epilog for methods that use it. Allow
18471         enough param area room for varargs methods. Fix miguel's
18472         breakage in exception handling.
18473
18474 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18475
18476         * Makefile.am: run genmdesc only on current arch.
18477
18478 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18479
18480         * exceptions-x86.c:
18481         * mini-x86.h: fix the build on windows.
18482
18483 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
18484
18485         * 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.
18486
18487         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
18488
18489         * mini-exceptions.c: New file.
18490         
18491         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
18492         Move some parts of the x86 exception handling code to an 
18493         arch-independent file so it can be shared with other ports.
18494
18495 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
18496
18497         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
18498
18499 2004-04-26  David Waite  <mass@akuma.org>
18500
18501         * driver.c: remove comma from end of enumeration declaration
18502
18503 2004-04-26  Jackson Harper  <jackson@ximian.com>
18504
18505         * driver.c: parse config file before loading first assembly. This
18506         allows the user gac to be enabled/disabled. 
18507         
18508 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
18509
18510         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
18511         simpler mechanism: we do not care what is encoded initially
18512         (branch absolute or relative), we care about the code and its
18513         target.  I kept the old code for reference for now.
18514
18515         The new code tries first to determine if the jump is anywhere in
18516         the -/+32 absolute meg range, if it succeeds, it encodes using the
18517         absolute branch;  If not, it tried to find something in the
18518         relative range, if not, it uses the handle_thunk code. 
18519
18520 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
18521
18522         * exceptions-ppc.c: use the correct ip register on macosx.
18523
18524 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
18525
18526         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
18527
18528 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
18529
18530         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
18531         Raise exception on integer divide by zero by hand since the hw
18532         doesn't support it. Handle NaNs in FP compares.
18533
18534 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
18535
18536         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
18537         code reducing duplication between the platforms and enabled
18538         signal exception handling (on linux for now).
18539
18540 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
18541
18542         * exceptions-ppc.c: more macosx support.
18543
18544 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18545
18546         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
18547
18548 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
18549
18550         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
18551
18552 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18553
18554         * iltests.il: more tests.
18555
18556 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18557
18558         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
18559         vars as well.
18560
18561 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18562
18563         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
18564
18565 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18566
18567         * liveness.c: Mark variables as volatile in all basic blocks reachable
18568         from exception clauses.
18569
18570 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18571
18572         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
18573         inlining.
18574
18575 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18576
18577         * iltests.il, basic.cs: more tests for regalloc.
18578
18579 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18580
18581         * iltests.il: Some tests for register allocation modifications
18582         I have locally.
18583
18584 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
18585
18586         * exceptions.cs: Add regression test for bug #56782.
18587
18588         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
18589         original stack trace if an exception is rethrown. Fixes #56782. Oh,
18590         the beauty of fixing the same thing in 5 different files...
18591
18592 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
18593
18594         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
18595         methods.
18596
18597 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
18598
18599         * mini.c: Add support for STRWLPARRAY marshalling convention.
18600
18601 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18602
18603         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
18604         to init the context to setup the regs pointer).
18605
18606 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18607
18608         * exceptions-ppc.c: more exceptions work.
18609
18610 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18611
18612         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
18613         not allowed.
18614
18615 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18616
18617         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
18618         can use the memory directly.
18619
18620         * cpu-pentium.md: Update documentation from a post from Zoltan. 
18621
18622         add x86_add_membase, x86_sub_membase, x86_mul_membase
18623
18624 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18625
18626         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
18627         GENERAL_REGS they were also hardcoded for all PPC ports.
18628
18629         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
18630
18631         Remove hard-coded limit for floating point registers, use
18632         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
18633
18634         Notice that in MacOS X calling conventions you can fit a lot more
18635         floating point values in registers, so I should update the PInvoke
18636         test to excercise the passing of floating point values on the
18637         stack (currently broken).
18638         
18639 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
18640
18641         * tramp-ppc.c (create_trampoline_code): Added
18642         JUMP_TRAMPOLINE_SIZE. 
18643         (ppc_magic_trampoline): Follow the pattern from
18644         x86_magic_trampoline: if code is set to zero, return. 
18645         (create_trampoline_code): Always pass MonoMethod to the jump
18646         trampoline, before it was passing a null.
18647         (mono_arch_create_jump_trampoline): Implement the jump stub, could
18648         share the code with mono_arch_create_jit_trampoline. 
18649
18650         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
18651         implemented.
18652         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
18653         implemented.  
18654
18655         * cpu-g4.md: Added length for jmp instruction, the worst case
18656         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
18657         for save_lmf).
18658
18659 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
18660
18661         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
18662
18663 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
18664
18665         * mini.c: Only set bblock->real_offset when adding a new bblock, and
18666         before each IL instruction.
18667
18668         * mini.c (CEE_BOX): Fix warnings.
18669
18670 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18671
18672         * mini.c: removed a few unused vars and extra whitespace.
18673
18674 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
18675
18676         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
18677         checks.
18678         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
18679         index.
18680         (OP_GETCHR): use the above
18681         (CEE_LDELEMA): use the above.
18682
18683         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
18684         version of the generic impl.
18685         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
18686         (CEE_LDELEMA): use the above.
18687
18688 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18689
18690         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
18691         Fixes #56317.
18692
18693         * iltests.il: Added new regression test for #56317.
18694
18695 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18696
18697         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
18698         under NetBSD. Fixes #56450.
18699
18700         * liveness.c (update_gen_kill_set): Fix previous patch.
18701
18702 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18703
18704         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
18705
18706 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
18707
18708         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
18709         ldsfld and ldsflda.
18710
18711         * inssel-sparc.brg: Add more optimizations.
18712
18713         * mini-sparc.c: Replace multiply/divide with shifts if possible.
18714
18715 2004-04-01  Martin Baulig  <martin@ximian.com>
18716
18717         * mini.c (handle_box): New static function; moved the
18718         implementation of CEE_BOX here.
18719         (mono_method_to_ir): Added `constrained_call' variable.
18720         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
18721         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
18722         mono_method_get_constrained() to get the method.
18723
18724 2004-04-01  Martin Baulig  <martin@ximian.com>
18725
18726         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
18727         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
18728         (mono_method_to_ir): We don't need these macros anymore since
18729         mono_class_get_full() already takes care of it. 
18730
18731 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18732
18733         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
18734         use @function (as doesn't accept #function here) and check the return
18735         value of system and stop if fails.
18736
18737 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18738
18739         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
18740
18741 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
18744
18745         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
18746
18747         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
18748         #56223.
18749
18750         * basic-long.cs: Add test for negation of Int64.MinValue.
18751
18752 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
18753
18754         * mini-sparc.c: Update status.
18755
18756         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
18757
18758         * exceptions-sparc.c: Fix return value in filters.
18759
18760         * inssel-sparc.brg: Fix register allocation in some rules.
18761
18762 2004-03-28  Martin Baulig  <martin@ximian.com>
18763
18764         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
18765         if neccessary.  
18766
18767 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
18768
18769         * mini-x86.c (mono_arch_patch_code): Fix warnings.
18770         
18771         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
18772         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
18773         remove unused conv_u4 opcode.
18774
18775         * mini-x86.c: Remove valgrind workaround since it slows down things
18776         even when mono is not run under valgrind.
18777
18778 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
18779
18780         * mini-sparc.c: Update status.
18781
18782         * inssel-sparc.brg: Add some optimizations.
18783
18784         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
18785         future delay slot filling. Add support for varargs, tail calls and JMP.
18786
18787         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
18788         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
18789
18790         * inssel.brg: Fix register allocation in OP_ARGLIST.
18791
18792         * inssel.brg: Fix warnings.
18793
18794 2004-03-25  Martin Baulig  <martin@ximian.com>
18795
18796         * mini.c (inflate_generic_field): Removed.
18797         (mini_get_method): Removed, use mono_get_method_full(),
18798         (mini_get_class): Removed, use mono_class_get_full().
18799         (mono_method_to_ir): Pass our generic context to
18800         mono_field_from_token().        
18801
18802 2004-03-25  Martin Baulig  <martin@ximian.com>
18803
18804         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
18805         of a `MonoMethod *'.
18806         (mini_get_method): Take a `MonoGenericContext *' instead
18807         of a `MonoMethod *'.
18808         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
18809         a new local variable called `generic_context' which holds the
18810         current `MonoGenericContext *'; use it to lookup things.
18811
18812 2004-03-24  Martin Baulig  <martin@ximian.com>
18813
18814         * mini.c (mini_get_class): New static method; if we're inside a
18815         generic instance, inflate the class if neccessary.
18816         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
18817
18818 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
18819
18820         * iltests.il: New regression test for #55976.
18821
18822         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
18823         #55976.
18824
18825 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
18828         output.
18829
18830 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18831
18832         * liveness.c: Consider SSA stores as well as loads when making vars
18833         volatile.
18834
18835         * exceptions.cs: New regression tests for register allocation.
18836         
18837 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
18838
18839         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
18840         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
18841           domain lock only to protect puntual access to data structures.
18842           Added access lock for sighash, jit_icall_hash_name, 
18843           jit_icall_hash_addr and domain->code_mp.
18844
18845 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
18846
18847         * driver.c: Print SIGSEGV handling method.
18848
18849         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
18850
18851         * mini.c (setup_jit_tls_data): Handle case when this is called
18852         multiple times for a thread.
18853
18854         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
18855         is different from fbxx_un. Fixes #54303. Also use constants instead of
18856         magic numbers in a lot of places.
18857
18858 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
18859
18860         * exceptions.cs: Fix cctor test when --regression is used.
18861
18862 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
18863
18864         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
18865         for Linux/ppc.
18866
18867 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18868
18869         * inssel-ppc.brg: fixed register assignments for some rules.
18870
18871 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18872
18873         * exceptions.cs: Add test for exceptions in static constructors.
18874
18875         * mini.c (mono_jit_compile_method_with_out): Move the calling of
18876         static constructors outside the domain lock. Fixes #55720.
18877
18878 2004-03-17  Martin Baulig  <martin@ximian.com>
18879
18880         * mini.c (get_generic_field_inst): Removed, this'll never happen.
18881         (inflate_generic_field): Take the `MonoMethod *' instead of the
18882         `MonoClass *' and added support for generic method.
18883         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
18884         have a `field->parent->gen_params', only inflate the field if it's
18885         an open constructed type.
18886
18887 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18888
18889         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
18890         exception object instead of the preconstructed ones.
18891
18892 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18893
18894         * mini.c: reverted changed to sigsegv_signal_handler commited
18895         accidentally in the previous patch.
18896
18897 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18898
18899         * mini.c:
18900         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
18901         running --aot with an old assembly.
18902
18903 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
18904
18905         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
18906         point values.
18907
18908         * mini-sparc.c: Add support for v9 branches with prediction.
18909
18910 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
18911
18912         * mini.c (mini_init): #warning is GNUC only
18913
18914         * mini-sparc.h: implement __builtin_frame_address
18915         and __builtin_return_address for Sun C compiler
18916
18917 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
18918
18919         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
18920
18921 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
18922
18923         * basic-calls.cs: Add test for unaligned byref long argument passing.
18924
18925         * mini-ops.h: Add sparcv9 compare and branch instructions.
18926
18927         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
18928         v9 instructions if we have a v9 cpu.
18929
18930         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
18931         registers for global allocation.
18932
18933         * exceptions-sparc.c: Fixes.
18934         
18935 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
18936
18937         * liveness.c (mono_analyze_liveness): Optimized version.
18938
18939         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
18940
18941         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
18942         sparc work.
18943
18944         * basic-float.cs basic-calls.cs: New regression tests.
18945
18946 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
18947
18948         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
18949         sigaltstack implementation.
18950
18951         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
18952         
18953         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
18954         stuff if SIGSEGV_ON_ALTSTACK is not defined.
18955
18956 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18957
18958         * mini.c: Fix warnings.
18959         
18960         * mini.c (mono_resolve_patch_target): New function which contains the
18961         arch independent part of the patching process.
18962
18963         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
18964         patching code to a separate function.
18965
18966 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
18967
18968         * mini.c (add_signal_handler): ifdef out on Windows
18969
18970 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
18971
18972         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
18973         cpu-sparc.md: Add exception handling support + other fixes.
18974
18975         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
18976         typed GC detection in --version.
18977
18978         * basic.cs exceptions.cs: New regression tests.
18979
18980         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
18981         the arch specific code can store data during a compilation.
18982
18983         * mini-ops.h: Add OP_SETFRET.
18984
18985         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
18986         function, register a separate icall for each arity, so the icalls can
18987         get a wrapper.
18988         
18989         * mini.c (mono_print_tree): Print negative offsets in a more readable
18990         form.
18991         
18992         * mini.c: Make signal handling work on sparc.
18993         
18994         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
18995
18996         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
18997
18998         * jit-icalls.c: Emulate truncl by aintl on solaris.
18999
19000         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
19001
19002 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
19003
19004         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
19005
19006 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
19007
19008         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
19009         a MarshalByRef type, inline a method that performs the check, taking into
19010         account that the object can be a proxy. Also implemented tow new opcodes:
19011         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19012         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
19013         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19014
19015 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19016
19017         * mini-ppc.c: if a relative branch displacement is too big
19018         but it points to and area reachable with an absolute branch, 
19019         avoid the thunks.
19020
19021 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
19022
19023         * mini.c: optimize small copies in cpblk.
19024
19025 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
19026
19027         * basic-calls.cs basic-float.cs: New regression tests.
19028
19029         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
19030         negative offsets from %fp. Implement localloc. Fix local register 
19031         allocation. Fix the case when the this argument needs to be saved to
19032         the stack. Implement some missing opcodes.
19033
19034 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
19035
19036         * mini.c (mini_method_compile): Reenable global regalloc in methods
19037         with exception handlers.
19038
19039         * linear-scan.c (mono_varlist_sort): Fix warning.
19040
19041         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
19042
19043         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
19044         regalloc costs.
19045
19046         * liveness.c: Make all variables uses in exception clauses volatile, to
19047         prevent them from being allocated to registers. Fixes #42136.
19048
19049 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
19050
19051         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
19052         causes regressions.
19053
19054         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
19055         argument to mono_arch_regalloc_cost.
19056
19057         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
19058         precisely.
19059
19060 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
19061
19062         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
19063         Make the cost of allocating a variable to a register arch dependent.
19064
19065         * basic-calls.cs: Fix compilation of tests.
19066         
19067         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
19068         helper function to cut back on the number of #ifdefs needed.
19069
19070         * mini-ppc.c: Fix compilation.
19071
19072         * basic-calls.cs: New regression tests.
19073
19074         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
19075
19076         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
19077         of l0 since that is callee saved.
19078
19079         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
19080         to virtual calls.
19081
19082         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
19083         of delay instruction.
19084
19085         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
19086
19087         * mini.h (MonoCallInst): Add 'virtual' flag.
19088
19089         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
19090
19091 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
19092
19093         * *.cs: New regression tests.
19094
19095         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
19096         work.
19097
19098         * mini.c (mono_runtime_install_handlers): Fix build.
19099
19100         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
19101         'signal_stack_size' members.
19102
19103         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
19104         alternate signal stack.
19105
19106         * exceptions-x86.c: Add stack overflow handling.
19107
19108         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
19109         functions to arch independent code.
19110
19111         * mini.c (mono_print_tree): Print more detailed info for load_membase
19112         opcodes.
19113         
19114 2004-02-23  Martin Baulig  <martin@ximian.com>
19115
19116         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
19117
19118 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19119
19120         * mini-x86.c: fixed reg allocation for div/rem.
19121
19122 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
19123
19124         * driver.c (mono_main): Report some configuratio options on --version.
19125
19126 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
19127
19128         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
19129         low in the address space. Correctly flush memory in thunks where we
19130         output native code.
19131
19132 2004-02-20  Martin Baulig  <martin@ximian.com>
19133
19134         * mini.c (mini_get_method): New static method; inflate all generic
19135         methods and methods in open generic instances.
19136         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
19137         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
19138
19139 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19140
19141         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
19142
19143         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
19144
19145 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
19146
19147         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
19148
19149         * mini-sparc.c (flushi mono_arch_output_basic_block): make
19150         it compile using Sun's compiler.
19151
19152 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19153
19154         * 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.
19155
19156         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
19157
19158 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19159
19160         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
19161         code.
19162         * mini-ppc.c: handle calls outside of the allowed range with thunks
19163         allocated using the code manager.
19164         * tramp-ppc.c: use the code manager to hold generated native code.
19165         Fixed the magic trampoline to just patch vtable entries.
19166
19167 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
19168
19169         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
19170         independent file.
19171
19172 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
19173
19174         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
19175         PPC.
19176
19177         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
19178         if we have a working __thread implementation.
19179
19180         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
19181         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
19182
19183 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
19184
19185         * mini-x86.c: Fix compilation under gcc 2.
19186         
19187 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
19188
19189         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
19190         contains a call to the wrapped function.
19191
19192         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
19193         OP_<CALL>_IMM opcodes, and use them under X86.
19194         
19195         * mini.c (mono_jit_find_compiled_method): Fix warning.
19196
19197         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
19198
19199         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
19200
19201         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
19202         functionality to mini.c.
19203
19204         * mini.c (mono_create_jump_trampoline): New function to create a jump
19205         trampoline. Return a compiled method instead of a trampoline if it
19206         exists. Add a cache for jump trampolines.
19207
19208         * mini.c (mono_jit_find_compiled_method): New function to return a
19209         compiled method if it exists.
19210
19211         * mini-x86.c: Call mono_create_jump_trampoline instead of 
19212         mono_arch_create_jit_trampoline.
19213
19214         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
19215         a jump trampoline. Fixes #52092.
19216         
19217 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
19218
19219         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
19220         which is not up-to-date. Add check_corlib_version () instead.
19221
19222         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
19223         have to call it.
19224         
19225         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
19226         since newer valgrind versions do not need it.
19227
19228         * mini.c (mono_jit_compile_method_with_opt): New helper function to
19229         compile a method with a given set of optimizations.
19230
19231         * mini.c: Compile icall wrappers on-demand instead of at startup.
19232
19233         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
19234         wrapper for an icall.
19235
19236 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
19237
19238         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
19239         #54063.
19240
19241         * iltests.il: Add test for non-empty stack before switch instruction.
19242
19243 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
19244
19245         * mini.c: Add support for new stringbuilder marshalling conventions.
19246
19247         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
19248
19249 2004-02-01  Martin Baulig  <martin@ximian.com>
19250
19251         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
19252         in `ginst->mtype_argv'.
19253
19254 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
19255
19256         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
19257         facilitate grepping.
19258
19259 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
19260
19261         * mini.c: fixed buglet in initobj generic implementation for references.
19262
19263 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
19264
19265         * Makefile.am: make the version script conditional.
19266         * jit-icalls.c: handle missing truncl().
19267
19268 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19269
19270         * exceptions.cs: Add more tests for double->int conversion.
19271
19272         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
19273         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
19274
19275 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
19276
19277         * driver.c: make --verbose --version emit an error
19278         if the loaded corlib doesn't match the runtime version.
19279
19280 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19281
19282         * mini-ppc.h: export ppc_patch().
19283         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
19284         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
19285         on par or better than on MacOSX.
19286
19287 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19288
19289         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
19290         mono_lookup_pinvoke_call.
19291
19292         * mini-x86.c: Under windows, the default pinvoke calling convention is
19293         stdcall. Fixes #52834.
19294
19295         * mini.c (optimize_branches): Add an upper bound to the number of
19296         iterations to prevent infinite loops on strange loops. Fixes #53003.
19297
19298 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19299
19300         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
19301         and ISINST. Fixes #52093.
19302
19303         * objects.cs (test_0_vector_array_cast): New tests.
19304         
19305 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
19306
19307         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
19308         checking in Array.Set ().
19309
19310         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
19311         #52590.
19312
19313         * object.cs (test_0_multi_array_cast): New regression test.
19314
19315 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
19316
19317         * exceptions-ppc.c: fix build on Linux/PPC.
19318
19319 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
19320
19321         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
19322         running under valgrind.
19323         (x86_magic_trampoline): Fix build bustage.
19324
19325         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
19326         negative values as well. This is needed for the encoding of the line number
19327         info, since sometimes the line numbers are not in increasing order.
19328
19329 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19330
19331         * cpu-pentium.md (localloc): Increase the size of the localloc 
19332         instruction since it is a loop under Win32.
19333
19334         * debug-mini.c (record_line_number): Get rid of unneccesary memory
19335         allocation.
19336
19337 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19338
19339         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
19340         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
19341         Max Horn (max@quendi.de). Fix file names in comments.
19342
19343 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
19344
19345         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
19346         avoid stack overflow.
19347         (replace_usage): Avoid uninitialized variable warnings.
19348
19349         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
19350         and taking the address of valuetype variables.
19351
19352 2004-01-03  Patrik Torstensson
19353
19354         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
19355         for other purposes than FP later on.
19356
19357 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
19358
19359         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
19360         of tail calls.
19361
19362 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19363
19364         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
19365
19366 2003-12-30  Patrik Torstensson <p@rxc.se>
19367
19368         * mini-x86.h: Decreased number of availiable fp regs.
19369         Solves corner cases with FP spilling.
19370
19371 2003-12-23  Patrik Torstensson <p@rxc.se>
19372
19373         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
19374         for floating point stack tracking / spilling on x86. 
19375         Fixes bug #49012.
19376         
19377         * basic-float.cs: added float mul overflow test.
19378
19379 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
19382
19383 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19384
19385         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
19386         supports for cond branches that overflow the immediate
19387         overflow offset. mcs can compile simple programs.
19388
19389 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19390
19391         * exceptions-ppc.c: exception handling support wip:
19392         finally handlers get run on exception.
19393
19394 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19395
19396         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
19397         profiling.
19398
19399 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19400
19401         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
19402         initial support for stack walking and unwinding.
19403
19404 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * driver.c (mono_main): Make corlib-out-of-sync message more 
19407         descriptive. Also remove verify_corlib call.
19408
19409 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19410
19411         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
19412         not overlap with other call's arguments, too.
19413
19414 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
19415
19416         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
19417         move to arch-specific code the choice of arch-specific
19418         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
19419         * mini.c: ensure emulation calls will not interleave
19420         with other calls.
19421
19422 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
19423
19424         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
19425         the magic trampoline stack frame is dropped before executing
19426         the new method.
19427
19428 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
19429
19430         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
19431         and integer to fp conversions. Added support for overflowing
19432         arguments on the stack. Reserve a couple more registers as temps.
19433         Added support for aot compilation (as output still needs to be
19434         tweaked, though).
19435
19436 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19437
19438         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
19439         Don't overwrite return register in some corner cases.
19440
19441 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19442
19443         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
19444         static constructors when AOT compiling.
19445
19446         * driver.c (mono_main): Call mono_check_corlib_version.
19447
19448 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19449
19450         * cpu-g4.md, basic.cs: fixed div target register.
19451
19452 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
19453
19454         * mini-ppc.c, basic.cs: shl_imm fix with test.
19455
19456 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19457
19458         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
19459         structures by value. Misc fixes.
19460         * objects.cs: more tests.
19461
19462 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
19463
19464         * mini-ppc.c: lconv.ovf.i implemented.
19465
19466 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19467
19468         * mini.c:
19469         (mini_init): don't error out if someone already called g_thread_init.
19470
19471 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19472
19473         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
19474         to be any type per the spec. Fix abnormal memory usage when
19475         the same object is repeatedly thrown.
19476
19477 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
19478
19479         * mini.c: check for overruns in IL code.
19480
19481 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19482
19483         * TODO: Add/remove some todo entries.
19484
19485 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19486
19487         * driver.c (mono_main): Call mono_verify_corlib.
19488
19489 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19490
19491         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
19492         This has been moved to mini.c
19493         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
19494         type being casted is marshalbyref it could be a proxy, so instead of
19495         emitting the type check code, emit a call to a runtime method that will
19496         perform the check by calling CanCastTo if needed.
19497
19498 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
19499
19500         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
19501         methods with large stack frames under Win32.
19502
19503 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19504
19505         * Makefile.am: Distribute regression tests.
19506
19507         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
19508         at the end instead of inserting each variable into the sorted list.
19509
19510         * linear-scan.c (mono_varlist_sort): New helper function.
19511         
19512 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19513
19514         * mini.c: ensure arguments and locals are within bounds.
19515
19516 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19517
19518         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
19519         related fixes.
19520
19521 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19522
19523         * mini.c (mono_cprop_copy_values): Fix crash.
19524
19525         * aot.c: Set verbosity back to 0.
19526         
19527 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19528
19529         * regalloc.c: complete memory leak fix by Laurent Morichetti
19530         (l_m@pacbell.net).
19531
19532 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19533
19534         * driver.c (main_thread_handler): Revert the previous patch.
19535
19536         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
19537         under valgrind.
19538
19539         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
19540         memory from the memory pool.
19541
19542         * driver.c (main_thread_handler): Turn on all optimizations when
19543         --aot is used.
19544
19545         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
19546         an array for better performance.
19547
19548         * regalloc.c (mono_regstate_assign): Fix memory leak.
19549
19550         * debug-mini.c (mono_debug_serialize_debug_info): New function to
19551         serialize the debug info.
19552
19553         * debug-mini.c (mono_debug_add_aot_method): New function to load the
19554         debug info from the serialized representation.
19555
19556         * aot.c: Save debug info into the generated file and load it when 
19557         loading a method.
19558
19559         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19560
19561 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19562
19563         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
19564         More FP-related fixes.
19565
19566 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
19567
19568         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
19569         and register allocation buglet. Hello world now runs.
19570
19571 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19572
19573         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
19574         * tramp-ppc.c: fixed class init trampoline.
19575         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
19576
19577 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19578
19579         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
19580         mini.c: more ppc changes/fixes.
19581
19582 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19583
19584         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
19585         Also optimize the case when the arguments are the same in the caller 
19586         and in the callee.
19587
19588         * iltests.il: Add tests for tail calls with valuetype arguments.
19589
19590 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19591
19592         * mini-ppc.c: fixes for struct return type.
19593
19594 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
19595
19596         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
19597         mono_spillvar_offset() to arch-specific code.
19598
19599 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
19600
19601         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
19602
19603 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19604
19605         * exceptions-x86.c: Fix stack space leaks.
19606         
19607         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
19608         registers from the lmf if the method has save_lmf set.
19609
19610 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19611
19612         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
19613         of icall wrappers into InvokeInDomain, since these are now per-domain.
19614
19615 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
19616
19617         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
19618         make some opcode emulation and intrinsic ops enabled/disabled 
19619         according to the architecture. More fixes.
19620
19621 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
19622
19623         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
19624
19625 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19626
19627         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
19628         arch-specific handling for 'this' and struct return type to
19629         arch-specific code.
19630
19631 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19632
19633         * aot.c: prevent divide by zero error when reporting (it happened with
19634         Accessibility.dll).
19635
19636 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
19637
19638         * mini.h (inst_switch): Remove unused macro.
19639
19640 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19641
19642         * aot.c:
19643         (load_aot_module): free 'info->methods' and 'info' properly. No more
19644         "free(): invalid pointer blah" messages when you have an old aot
19645         compiled assembly.
19646
19647 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
19648
19649         * jit-icalls.c, mini.c: Added support for context static fields.
19650
19651 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19652
19653         * mini.c (mono_method_blittable): Methods which set LastError are not 
19654         blittable either. Fixes #51108.
19655         
19656 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19657
19658         * mini.c: flush icache.
19659         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
19660
19661 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
19664
19665 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19666
19667         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
19668         safe on IA32.
19669
19670         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
19671         vararg calls.
19672
19673         * inssel.brg (CEE_MKREFANY): Fix AOT case.
19674
19675 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19676
19677         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
19678         instruction when the result is discarded.
19679
19680         * iltests.il (test_0_div_regalloc): New regression test.
19681
19682         * arrays.cs: Fix compilation error.
19683
19684 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
19685
19686         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
19687         float rules to inssel-x86.brg: sane architectures with FP registers
19688         don't need to implement these rules.
19689
19690 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19691
19692         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
19693
19694 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19695
19696         * mini.h, inssel-long32.brg: fixed endianess issues in int64
19697         implementation of 32 bit systems.
19698
19699 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19700
19701         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
19702         (Jeroen Zwartepoorte).
19703
19704 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19705
19706         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
19707         the caller and the callee matches.
19708         
19709         * mini.c (mono_method_to_ir): Add comment.
19710
19711         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
19712         signbit is missing on some platforms.
19713
19714 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19715
19716         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
19717
19718         * mini.c (setup_jit_tls_data): Call the new function.
19719         
19720         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
19721
19722         * mini-x86.c: Add experimental support for fast access to the lmf
19723         structure under NPTL/Linux 2.6.x.
19724
19725 2003-11-06  Martin Baulig  <martin@ximian.com>
19726
19727         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
19728         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
19729         the debugger.
19730
19731 2003-11-02  Martin Baulig  <martin@ximian.com>
19732
19733         * mini.c (inflate_generic_field): New static method.
19734         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
19735         generic instance and the field is declared in a generic type, call
19736         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
19737
19738 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * mini.h mini.c (mono_method_same_domain): New function to return
19741         whenever the caller and the callee are in the same domain.
19742
19743         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
19744
19745 2003-10-30  Martin Baulig  <martin@ximian.com>
19746
19747         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
19748         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
19749         method parameters.
19750         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
19751         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
19752
19753 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
19756         propagation.
19757
19758         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
19759         object here, so it is in the correct appdomain etc.
19760
19761 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
19762
19763         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
19764         already done.
19765         (mono_method_to_ir): Avoid freeing the type created returned from
19766         mono_type_create_from_typespec, since it is put into an internal cache
19767         by the function. Fixes pointer.exe.
19768
19769         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
19770         trampolines for icalls and pinvokes as well. Fixes #33569.
19771
19772 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
19773
19774         * mini.c: Update after appdomain changes.
19775
19776         * mini.c (mono_jit_compile_method_inner): Allways compile native
19777         method wrappers in the root domain, since there can only be one
19778         instance of them, whose address is stored in method->info.
19779
19780 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
19781
19782         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
19783         environment variable. Instead detect automatically whenever running
19784         under valgrind using the magic macro RUNNING_ON_VALGRIND from
19785         valgrind.h.
19786
19787 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
19788
19789         * trace.c, trace.h: New files that implement the new trace option
19790         parsing. 
19791
19792         * driver.c: Document new --trace options.
19793
19794         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
19795         mini-x86.c: Apply:
19796
19797         -       if (mono_jit_trace_calls)
19798         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
19799
19800         * mini.h: prototypes.
19801         
19802 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
19803
19804         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
19805
19806         * mini.c inssel.brg: Implement typedefbyref opcodes.
19807
19808         * mini.c (mono_jit_compile_method): Remove unused local variable.
19809
19810         * mini.c (mono_jit_compile_method_inner): Ditto.
19811         
19812 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
19813
19814         * tramp-x86.c (x86_class_init_trampoline): Fix build.
19815         
19816         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
19817
19818 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
19819
19820         * mini.c (mono_no_aot): Remove unused global variable.
19821
19822         * mini.c: Thread safety fixes.
19823
19824 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
19825
19826         * mini.c (mono_create_class_init_trampoline): Add a lock around
19827         class_init_hash_addr.
19828
19829         * arrays.cs (test_0_newarr_emulation): Add new regression test for
19830         #30073.
19831
19832         * mini.c: Decompose the NEWARR instruction before decomposing its
19833         arguments. Fixes #30073.
19834
19835 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
19836
19837         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
19838         convention.
19839
19840 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
19841
19842         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
19843
19844         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
19845
19846         * driver.c: Add support for compiling icall wrappers to --compile.
19847
19848 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
19849
19850         * inssel.brg: The empty value in class->interface_offsets is -1, not
19851         0. Fixes #49287.
19852
19853 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
19854
19855         * objects.cs: New test for 'is' operator on an array of interfaces.
19856
19857 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19858
19859         * tramp-ppc.c: update trampoline code to support jumps
19860         and class initialization.
19861
19862 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
19863
19864         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
19865
19866         * inssel.brg (OP_UNBOXCAST): Fix #46027.
19867
19868         * inssel.brg (OP_UNBOX): Remove unused rule.
19869
19870         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
19871         region instead of one for each method. Fixes #47813.
19872
19873 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
19874
19875         * exceptions.cs (test_0_nested_finally): New regression test for
19876         nested exception handlers.
19877
19878         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
19879
19880         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
19881
19882         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
19883         inlining.
19884
19885         * mini.c (mono_method_check_inlining): Make the inlining limit 
19886         configurable by an environment variable.
19887         
19888         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
19889
19890         * mini.h: Bump AOT file version.
19891
19892         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
19893         token, store the image along with the token, since the token might not 
19894         refer to the same image as the method containing the relocation, 
19895         because of inlining.
19896
19897 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
19898
19899         * mini.c (mono_precompile_assemblies): New function to compile
19900         all methods in all loaded assemblies.
19901
19902         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
19903
19904         * regalloc.h regalloc.c (MonoRegState): Change the type of 
19905         iassign and fassign to int*, since they can contain large negative
19906         values if the register is spilled. Also added some comments. Fixes
19907         #45817.
19908
19909         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
19910         under Win32. Fixes #42964.
19911
19912 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
19913
19914         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
19915
19916         * aot.c: Added support for AOT compiling methods which contain calls
19917         to wrappers. Currently, only remoting-invoke-with-check wrappers are
19918         handled.
19919         
19920         * driver.c (compile_all_methods): Run the compilation in a thread
19921         managed by mono. Fixes #44023.
19922
19923         * mini.c (mono_codegen): Print full method name in verbose output.
19924
19925         * mini-x86.c (mono_arch_patch_code): Fix warning.
19926         
19927         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
19928         jumps, since the method we are jumping to might be domain-specific.
19929
19930         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
19931
19932 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19933
19934         * inssel.brg: string chars are unsigned.
19935
19936 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
19937
19938         * TODO: New todo item.
19939
19940         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
19941         which calls mono_runtime_class_init and patches the call site to
19942         avoid further calls.
19943         (mono_arch_create_class_init_trampoline): New arch specific function 
19944         to create a class init trampoline.
19945         (create_trampoline_code): Generalized so it can create
19946         class init trampolines as well.
19947
19948         * mini.c (helper_sig_class_init_trampoline): New helper variable.
19949         (mono_create_class_init_trampoline): New function to create and cache
19950         class init trampolines.
19951         (mono_find_class_init_trampoline_by_addr): New function to lookup the
19952         vtable given the address of a class init trampoline. Used by the
19953         patching process.
19954         (mono_codegen): Generate a call to a trampoline instead of
19955         mono_runtime_class_init in LDSFLD[A].
19956         (mono_codegen): Add relocations for the new trampoline.
19957         
19958         * mini.h mini-x86.c aot.c: Added a new relocation type: 
19959         MONO_PATCH_INFO_CLASS_INIT.
19960
19961         * mini.h: Bump AOT version number.
19962
19963         * aot.c: Create a copy of the loaded code instead of using the original
19964         so methods which call each other will be close in memory, improving
19965         cache behaviour.
19966         
19967         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
19968         patch since it breaks the regression tests.
19969         
19970         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
19971         for the register saving instruction sequence since the 
19972         frame_state_for function in glibc 2.3.2 don't seem to detect it.
19973
19974 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
19975
19976         * TODO: Fix todo item && remove another.
19977
19978 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
19979
19980         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
19981         previous checkin.
19982
19983         * aot.c: Moved the check for MONO_LASTAOT into the initialization
19984         function of the module.
19985
19986         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
19987         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
19988         --no-aot command line option.
19989
19990 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
19991
19992         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
19993         by Bernie Solomon (bernard@ugsolutions.com).
19994
19995         * inssel.brg: Refactor the interface offset table related code into
19996         its separate functions and add support for the AOT case.
19997
19998 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
19999
20000         * aot.c (mono_aot_get_method_inner): Fix memory leak.
20001         
20002         * aot.c: Added mono_aot_verbose variable and made all debugging
20003         output depend on the value of this variable.
20004
20005         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
20006         method_label and info_label.
20007
20008         * mini.h mini-x86.c aot.c: Added a new relocation type 
20009         MONO_PATCH_INFO_IID for klass->interface_id.
20010
20011         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
20012         the MonoJitInfo structure.
20013
20014         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
20015         a non-root appdomain in shared mode.
20016
20017 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20018
20019         * aot.c: make aot loader less verbose. Remove free of unused variable.
20020
20021 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20022
20023         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
20024
20025         * .cvsignore: Added *.dll.
20026
20027         * mini.c (mono_print_tree_nl): New function callable while debugging.
20028
20029         * mini.c (mono_print_code): Export this.
20030
20031         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
20032         patched code.
20033
20034 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * mini.h (MonoCompile): Added 'jit_info' field.
20037
20038         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
20039         the cfg structure, since it is needed by the AOT compiler.
20040
20041         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20042
20043         * aot.c: A major rewrite. Changes include:
20044         - save exception tables for methods which have them.
20045         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
20046         to g_module_symbol.
20047         - reworked the file format so it is now much smaller and needs
20048         fewer relocation entries.
20049         
20050 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20051
20052         * aot.c (load_aot_module): Fix build bustage on platforms without
20053         Boehm GC.
20054
20055 2003-09-04  Martin Baulig  <martin@ximian.com>
20056
20057         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
20058
20059 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20060
20061         * TODO: Some new optimization ideas.
20062
20063         * aot.c: Move AOT module loading logic here from mono_assembly_open.
20064
20065         * aot.c: Save the optimization flags used to compile the code into
20066         the AOT module.
20067
20068         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
20069         support emitting domain specific code.
20070         
20071         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
20072         no longer domain neutral. It can be made domain neutral by compiling 
20073         with --optimize=shared.
20074
20075         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
20076         between appdomains.
20077
20078         * driver.c mini.h mini.c: New --no-aot debugging option which disables
20079         loading of AOT code.
20080
20081         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
20082         
20083         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
20084         if there is no domain neutrality information.
20085
20086 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20087
20088         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
20089         format version into the generated library.
20090
20091         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
20092         callee method into the caller since one of them could be shared.
20093
20094         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
20095         system exceptions from AOT code now works.
20096
20097         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
20098         method if it is domain neutral and the callee is not.
20099
20100         * graph.c (cfg_emit_one_loop_level): Fix warning.
20101
20102 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20103
20104         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
20105         last checkin.
20106
20107 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20108
20109         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
20110         is needed  by code which is executed before mono_runtime_init ().
20111         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
20112         
20113         * mini.c (mono_thread_abort): Fix warning.
20114         (mono_jit_compile_method): Call static constructor in the AOT case too.
20115
20116         * aot.c (mono_compile_assembly): Fix warning.
20117
20118 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20119
20120         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
20121
20122 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
20123
20124         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
20125
20126         * cpu-pentium.md: Fix the length of call opcodes so they include the
20127         ESP restoring instruction. Fixes #47968.
20128
20129 2003-08-28  Martin Baulig  <martin@ximian.com>
20130
20131         * mini-x86.c (mono_arch_call_opcode): Added support for
20132         MONO_TYPE_GENERICINST.
20133
20134         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
20135
20136 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20137
20138         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
20139         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
20140
20141         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
20142         metadata_section.
20143
20144 2003-08-26  Martin Baulig  <martin@ximian.com>
20145
20146         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
20147         when reporting an error, set this to the actual error location.
20148         (mono_method_to_ir): Report the correct error location if
20149         get_basic_blocks() returned an error.
20150
20151 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20152
20153         * mini.c (mono_type_blittable): OBJECT is not blittable.
20154         (mono_method_blittable): Methods which have marshalling descriptors
20155         are not blittable either. Fixes #47842.
20156
20157 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
20158
20159         * driver.c mini.c: Use an environment variable instead of a global 
20160         variable. Also fix the build.
20161
20162         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
20163         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
20164         reporting this. 
20165
20166         * driver.c mini.c: Added --with-valgrind option to turn off some
20167         code which prevents mono from running under valgrind.
20168
20169         * mini.c (mono_emit_call_args): Fixed warning.
20170
20171         * mini.c (mono_emulate_opcode): Fixed warning.
20172
20173 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20174
20175         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
20176         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
20177         regalloc.c, regalloc.h: specify available registers in arch-specific
20178         code and support floats in the regallocator (patch by Laurent Morichetti 
20179         <l_m@pacbell.net>)
20180
20181 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20182
20183         * mini.c: mono_thread_current() can be called only after
20184         mono_runtime_init(): rearrange code to not call it early on.
20185
20186 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20187
20188         * mini.c: allocate jump tables in the code mempools.
20189
20190 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20191
20192         * mini.c, mini.h: make sure per-thread data allocated by the jit is
20193         freed.
20194
20195 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
20196
20197         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
20198         12 to 16.  This fixes bug #47453.
20199
20200
20201 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20202
20203         * mini-ppc.c: fixed indexed load and unsigned compares.
20204
20205 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
20206
20207         * mini.c: reenabled installation of handler for
20208           thread abort signal.
20209
20210 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20211
20212         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
20213         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
20214         until it's fixed and actually useful.
20215
20216 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20217
20218         * inssel-long32.brg: couple more opcodes implemented.
20219
20220 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20221         
20222         * mini-sparc.c: Even more opcodes implemeted.
20223
20224 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
20225
20226         * mini-sparc.c: More opcodes implemented.
20227
20228 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
20229
20230         * mini-sparc.c: More opcodes implemented.
20231
20232 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20233
20234         * inssel-sparc.brg: Add some needed rules.  Direct
20235         copy from PPC.
20236         * Makefile.am: Use inssel-sparc.brg
20237         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
20238         an assert happy for now.
20239
20240 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
20241
20242         * mini-sparc.c: Fixed compile errors.
20243         * exceptions-sparc.c: Same.  We now produce a mono binary 
20244         on sparc-linux.  Yea.
20245
20246 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
20247
20248         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
20249         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
20250         They compile, but do not work.
20251
20252 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20253
20254         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
20255         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
20256         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
20257         (ct@gentoo.org).
20258
20259 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20260
20261         * mini.c: more opcodes implemented and better support for generics.
20262
20263 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20264
20265         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
20266         * mini.c, mini.h: first cut at generics support: some new instructions 
20267         added and changed the behaviour of some of the existing ones.
20268
20269 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20270
20271         * mini.c: Removed definition of metadata_shared mutex here.
20272
20273 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20274
20275         * mini-x86.c: make vararg calls work for instance methods.
20276
20277 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20278
20279         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
20280         returns the arguments in a separte list, now.
20281
20282 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20283
20284         * aot.c, mini.c: updates for array type representation changes.
20285
20286 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
20287
20288         * mini.c: register function to perform jit shutdown.
20289
20290 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20291
20292         * mini.c: use a faster allocator if possible.
20293
20294 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20295
20296         * aot.c: some cleanups and portability changes.
20297
20298 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20299
20300         * mini.c: use faster allocation for CEE_BOX if possible.
20301
20302 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20303
20304         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
20305         Moved inlined mempcy code to its own function so that is can be
20306         reused. Added an inline memset function as well (optimized initobj).
20307         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
20308
20309 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20310
20311         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
20312
20313 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20314
20315         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
20316         arch code can setup the cpu for CLR execution, if needed.
20317         We use it on x86 to set the precision of FP operations.
20318
20319 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20320
20321         * mini.c: disable some optimizations if we can guess they'll cost too
20322         much for a given method.
20323
20324 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20325
20326         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
20327         
20328 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20329         * mini.h mini.c mini-x86.c: Added instruction level coverage 
20330         info collection support.
20331
20332 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20333
20334         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
20335         is now implemented in the profiling API. Get rid of a couple of
20336         unnecessary global variables.
20337
20338 2003-06-15  Nick Drochak <ndrochak@gol.com>
20339
20340         * basic-long.cs: tests for negative values for bigmul, and unsigned.
20341         * cpu-g4.md: add op_bigmul and op_bigmul_un
20342         * cpu_pentium.md: add op_bigmul_un
20343         * inssel-long32.brg: add rule for unsigned bigmul
20344         * mini-ops.h: define OP_BIGMUL_UN
20345         * mini-x86.c: THE BUG: handle (un)signed properly
20346         * mini.c: choose unsigned opcode if needed.
20347         This set of patches fixes bug #44291
20348
20349 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
20350
20351         * mini.c (optimize_branches): improved to handle all kinds of
20352         conditional branches.
20353
20354 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20355
20356         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
20357         don't raise exceptions.
20358
20359 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20360
20361         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
20362         to arch-specific files.
20363
20364 2003-06-09  Martin Baulig  <martin@ximian.com>
20365
20366         * Makefile.am (libs): Added $(LIBGC_LIBS).
20367
20368 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
20369
20370         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
20371         and OP_ATAN (fixes bug#44293).
20372
20373 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
20374
20375         * Makefile.am, mini-x86.c: rename cpu description array to
20376         pentium_desc, since some compilers define the 'pentium' preprocessor
20377         symbol.
20378
20379 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
20380
20381         * mini.c (mini_select_instructions): add explicit branch if the
20382         following block is not the false target of a conditional branch -
20383         we need this with any optimization that reorder or remove bblocks
20384
20385         * mini.c (optimize_branches): bug fixes
20386
20387 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
20388
20389         * mini.c (mono_method_to_ir): inline static readonly fields
20390
20391         * ssa.c (fold_tree): start cfold support for long (very simple
20392         cases only)
20393
20394         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
20395
20396 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20397
20398         * inssel.brg: fixed memcpy (bug #44219).
20399
20400 2003-06-05  Dick Porter  <dick@ximian.com>
20401
20402         * driver.c: Set the glib log levels to not abort if g_message
20403         recurses.
20404
20405         g_set_prgname() has to happen before mini_init() so that the
20406         process handle gets the info.
20407         
20408 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20409
20410         * driver.c: add intrins to the default optimizations to get wider
20411         exposure.
20412
20413 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20414
20415         * mini.h: some large basic blocks will overflow a 16-bit
20416         integers for symbolic registers.
20417
20418 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20419
20420         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
20421         (mono_arch_output_basic_block): fix bug 43499 
20422
20423 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20424
20425         * mini.c: kill duplicated definition of mono_debug_format.
20426
20427 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
20428
20429         * mini-x86.c, arrays.cs: fixed register allocation bug.
20430
20431 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20432
20433         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
20434
20435         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
20436
20437 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20438
20439         * mini.c:
20440         (print_method_from_ip): also print source location information if
20441         available.
20442
20443 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
20444
20445         * mini.c (mono_find_block_region): bug fix in region code
20446         (mini_method_compile): enable removing unreachable code again, but
20447         only in methods without exception clauses.
20448
20449 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20450
20451         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
20452         Implemented arglist opcode and handling of TypedReference type.
20453         Fixed x86 call convention when a structure is returned.
20454         Minimal support for calling static vararg methods.
20455
20456 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
20457
20458         * mini.c (mini_method_compile):  always remove unreachable code,
20459         because the code in them may be inconsistent  (access to dead
20460         variables for example).
20461
20462 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20463
20464         * driver.c, debug-mini.c: warning fixes.
20465
20466 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
20467
20468         * Makefile.am, jit.h, mini.h: install header for embedding mono.
20469
20470 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
20471
20472         * mini.c: thread-static fields are registered in mono_class_vtable(),
20473         so ensure the function is called before checking for them.
20474
20475 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
20476
20477         * mini.c (optimize_branches): fix for bug 43586
20478
20479         * jit-icalls.c (mono_llmult_ovf): added an additional check for
20480         overflow (fixes Bug #43639)
20481
20482 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20483
20484         * mini.c, objects.cs: allow the use of stobj for primitive types.
20485
20486 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20487
20488         * mini.c: be less strict about argument checking until we support
20489         running the verifier.
20490
20491 2003-05-27  Nick Drochak <ndrochak@gol.com>
20492
20493         * basic-long.cs: tests for (ulong)int * (ulong)int also
20494         * mini.c: use the same trick for (ulong)int * (ulong)int
20495
20496 2003-05-27  Nick Drochak <ndrochak@gol.com>
20497
20498         * basic-long.cs: add regression test for (long)int * (long)int
20499         * cpu-pentium.md: add op_bigmul specification
20500         * inssel-long32.brg: add OP_BIGMUL rule
20501         * mini-ops.h: add OP_BIGMUL
20502         * mini-x86.c: register allocator: handle case where src1 needs to be
20503         in EAX.
20504         * mini.c: substitute special BIGMUL opcode in the tree for 
20505         (long)int * (long)int
20506
20507 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20508
20509         * jit-icalls.c: call the type ctor on field access if needed.
20510
20511 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20512
20513         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
20514         to a method (including results of ldelema, bug#43207).
20515
20516 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20517
20518         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
20519         colors to show exception handler blocks.
20520
20521         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
20522         (fix for pinvoke7.cs).
20523
20524 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20525
20526         * mini.h, mini.c: ensure correct initialization order for types that
20527         require it. Prepare for lazy compilation of jit icall wrappers.
20528         Provide a name for opcode emulation to reduce unneeded mallocing.
20529
20530 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20531
20532         * mini-x86.c: better register restoring code and profiling
20533         support for tail calls.
20534
20535 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20536
20537         * mini.h, driver.c: prepare for leaf methods optimization.
20538
20539 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20540
20541         * mini.c: get targets of branches before converting a method.
20542
20543 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
20544
20545         * mini.c (optimize_branches): added some experimental code (disbaled) 
20546
20547 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
20548
20549         * mini.c (optimize_branches): fix branch to branch optimization 
20550
20551         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
20552
20553         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
20554
20555         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
20556
20557         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
20558         if needed.
20559
20560 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20561
20562         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
20563         enable use of interface variables again.
20564
20565         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
20566         I1 to registers because there is no simply way to sign extend 8bit
20567         quantities in caller saved registers on x86.
20568
20569         * inssel-float.brg: set costs of some rules to 2 so
20570         that monobure always select the arch. specific ones if supplied,
20571         regardless of the order we pass the files to monoburg.
20572
20573 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20574
20575         * mini.c, mini-x86.c: since the magic trampoline for jumps
20576         can't patch the code directly, we do it as soon as the
20577         method gets compiled.
20578
20579 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20580
20581         * mini-x86.c, mini.h: introduce a new patching method
20582         to support CEE_JMP and tail calls.
20583         * mini.c: obey tail.call. Don't precompile methods target
20584         of CEE_JMP.
20585         * tramp-x86.c: new trampoline code to handle methods
20586         reached through a jump.
20587
20588 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
20589
20590         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
20591         bit values to registers
20592
20593 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
20594
20595         * mini.c (mono_compile_get_interface_var): share interface
20596         variables if possible.
20597
20598 2003-05-16  Martin Baulig  <martin@ximian.com>
20599
20600         * debug-mini.c (mono_init_debugger): New function to initialize
20601         the debugger.  This is not in the debugger since it needs to
20602         access some of mini's internals.
20603
20604 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20605
20606         * mini.c (mono_method_to_ir): inlining fixes/cleanups
20607
20608 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
20609
20610         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
20611         for value type handling.
20612
20613 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20614
20615         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
20616         (mono_method_check_inlining): enable inlining of all kinds of wrappers
20617
20618 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
20619
20620         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
20621           the constructor through a proxy.
20622
20623 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20624
20625         * jit-icalls.c, inssel.brg: fixes to array element address
20626         calculations.
20627
20628 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
20629
20630         * mini-x86.c (is_regsize_var): allocate pointer to registers
20631
20632 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20633
20634         * driver.c: fixed typo, added intrins to the set of optimizations
20635         tested with regressions.
20636
20637 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20638
20639         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
20640         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
20641         test case.
20642
20643 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
20644
20645         * inssel.brg: remove some common pop instructions without side effects
20646
20647 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20648
20649         * inssel-x86.brg: fixed thinko in int to double conversions.
20650
20651 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20652
20653         * mini.c, jit-icalls.c: added runtime thread-static variable support.
20654
20655 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20656
20657         * inssel-long32.brg: two more missing instructions.
20658
20659 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
20660
20661         * mini.c (mono_emit_call_args): set the cil_code for all arguments
20662         if not already set.
20663
20664 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
20665
20666         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
20667         correctly.
20668
20669         * basic-float.cs: Added tests for negative zero.
20670
20671 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20672
20673         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
20674         a couple of missing operations for long casts, with test cases.
20675
20676 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20677
20678         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
20679
20680 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
20681
20682         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
20683         code size estimation.
20684
20685 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
20686
20687         * mini.c (mono_jit_create_remoting_trampoline): make it work with
20688         abstract methods (fix bug 42542)
20689
20690         * aot.c: add ability to handle array types
20691         
20692 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
20693
20694         * mini.c: Call the _specific versions of the object allocation
20695         functions if possible.
20696
20697 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20698
20699         * driver.c: call setlocale ().
20700
20701 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20702
20703         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
20704         windows build.
20705
20706 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
20707
20708         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
20709
20710         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
20711         wrappers (fix bug 42122)
20712
20713 2003-05-04  Martin Baulig  <martin@ximian.com>
20714
20715         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
20716
20717         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
20718         s/mini_set_defaults/mono_set_defaults/g.
20719
20720 2003-05-04  Martin Baulig  <martin@ximian.com>
20721
20722         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
20723
20724 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20725
20726         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
20727         (reported by Don Roberts).
20728
20729 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20730
20731         * mini.c: temporarily work around two bugs for this release.
20732
20733 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20734
20735         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
20736         that contains -export-dynamic and it makes using the ld script
20737         useless.
20738         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
20739
20740 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20741
20742         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
20743         specific cpu.
20744
20745 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20746
20747         * mini.c: make sure leave calls all the needed finally blocks,
20748         even when the target jumps out of multiple exception clauses.
20749
20750 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20751
20752         * ldscript, Makefile.am: add linker script to reduce the number of
20753         exported symbols (should also fix the issues with libwine defining
20754         some of the same symbols in io-layer).
20755
20756 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
20757
20758         * driver.c (mini_main): Avoid assertion when no file name is given on 
20759         the command line.
20760
20761 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
20762
20763         * driver.c: added --version/-V command line option.
20764         Added the inline optimization in the regression tests.
20765
20766 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20767
20768         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
20769         to the type in the method signature (fixes bug#42134).
20770
20771 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
20772
20773         * mini.c: when inlining, check this is not null only when needed (bug #42135).
20774
20775 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
20776
20777         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
20778
20779 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20780
20781         * driver.c: fixed bug #42100.
20782
20783 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
20784
20785         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
20786
20787 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20788
20789         * mini.c: moved most of the code required to do inlining to its own
20790         function so it can be reused. Inline also ctors if appropriate.
20791
20792 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
20793
20794         * Makefile.am: Link with -export-dynamic so shared libs loaded by
20795         the runtime can call mono API functions.
20796
20797 2003-04-27  Martin Baulig  <martin@ximian.com>
20798
20799         * debug-mini.c (mono_debug_init_method): Added
20800         `guint32 breakpoint_id' argument; if the method has a breakpoint,
20801         send a notification to the debugger.
20802
20803         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
20804         running in the Mono Debugger, just pass the breakpoint number to
20805         mono_debug_init_method().
20806
20807         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
20808
20809 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
20810
20811         * mini.c: allow some more unsafe compares.
20812
20813 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20814
20815         * mini-x86.c, Makefile.am: make distcheck works (partially from
20816         a patch by Richard Lee <r.h.lee@attbi.com>).
20817         * regset.c, regset.h: removed, they are unused.
20818
20819 2003-04-25  Dick Porter  <dick@ximian.com>
20820
20821         * driver.c: Usage reports the name as 'mono' not 'mini'
20822         * exceptions-x86.c: Build and run on freebsd
20823
20824 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
20825
20826         * Makefile.am: install the program with the 'mono' name and
20827         the library as libmono instead of mini and libmini.
20828
20829 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20830
20831         * driver.c: provide the APIs for the embedding interface of the old jit.
20832
20833 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
20834
20835         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
20836
20837 2003-04-23  Martin Baulig  <martin@ximian.com>
20838
20839         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
20840
20841         * driver.c: Added `--debug' command line argument to enable
20842         debugging support.
20843
20844 2003-04-23  Martin Baulig  <martin@ximian.com>
20845
20846         * debug.[ch]: Removed.  The code is now in
20847         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
20848
20849         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
20850         last six months.
20851
20852 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
20853
20854         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
20855
20856 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20857
20858         * mini.c:
20859         (mini_cleanup): moved mono_runtime_cleanup call after the call to
20860         mono_domain_finalize.
20861         (mini_method_compile): use mono_method_profile* if the the option is
20862         enabled.
20863
20864 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
20865
20866         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20867         methods with their wrapper.
20868
20869         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20870         methods with their wrapper.
20871
20872         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
20873         their wrapper.
20874
20875         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
20876         wrapper.
20877
20878         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
20879         methods.
20880
20881 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
20882
20883         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
20884
20885 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
20886
20887         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
20888         of the mempool. This is slightly faster and uses less memory
20889
20890 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20891
20892         * mini.c: avoid O(n) allocation for variables.
20893
20894 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20895
20896         * mini.c: handle items on the stack after inlining methods.
20897
20898 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20899
20900         * mini.c: make the method->opcode optimization dependent
20901         on MONO_OPT_INSTRINS and do it lazily.
20902
20903 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20904
20905         * driver.c: print overall results at the end of regression run.
20906
20907 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
20908
20909         * inssel.brg: don't overwrite symbolic registers.
20910
20911 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20912
20913         * inssel-x86.brg: fix conversion from long to float.
20914
20915 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
20916
20917         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
20918
20919 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
20920
20921         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
20922
20923         * driver.c: Added --print-vtable option as in the old JIT.
20924
20925 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20926
20927         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
20928
20929 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
20930
20931         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
20932
20933 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
20934
20935         * mini.c regalloc.c regalloc.h: Fix memory leak.
20936
20937 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
20938
20939         * aot.c (mono_aot_get_method): register all used strings
20940
20941 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20942
20943         * mini.c: always intern strings references with ldstr at compile time.
20944
20945 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20946
20947         * Makefile.am: add BUILT_SOURCES.
20948
20949 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20950
20951         * driver.c: give a better error message when the assembly to execute
20952         doesn't have an entry point.
20953
20954 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
20955
20956         * Makefile.am: added hack for automake
20957
20958         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
20959         correct sematics.
20960
20961         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
20962
20963 22003-04-07  Martin Baulig  <martin@ximian.com>
20964
20965         * Makefile.am: Added Makefile.am.
20966
20967         * debugger-main.c: Removed, this is now in the debugger where it
20968         belongs.
20969
20970         * mini.pc.in: Call this package `mini' for the moment.
20971
20972
20973
20974
20975
20976
20977
20978
20979
20980
20981
20982
20983
20984
20985