
Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, objectc.cs: handle large structs passed by value
	(fixes bug #69972).

2004-11-29  Zoltan Varga  <vargaz@freemail.hu>

	* cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
	Fixes #69929.

2004-11-24  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Disable inlining for methods containing
	localloc. Fixes #69678.

	* iltests.il (test_0_localloc_inline): Add regression test for #69678.
	
Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: adjust initial prolog size (bug #69691).

2004-11-18  Zoltan Varga  <vargaz@freemail.hu>

	* cpu-pentium.md (localloc): Increase max instruction len. Fixes
	#69664.

2004-11-03  Sebastien Pouliot  <sebastien@ximian.com>

	* mini.c: Fix pointer overwrite in mini_method_compile.

2004-11-02  Zoltan Varga  <vargaz@freemail.hu>

	* trace.c (get_spec): Allow tracing of classes without a namespace.

2004-11-2  Geoff Norton  <gnorton@customerdna.com>

        * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
        The darwin ABI needs some special handling for 1 and 2 byte structs
        Lets use lbz/lhz instead of lwz everywhere.
        * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
        for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
        Use stb/sth for the former, and put the latter always on stack instead of in
        argument registers.

2004-10-30  Zoltan Varga  <vargaz@freemail.hu>

	* trace.c (is_filenamechar): Add '_'.

2004-10-15  Geoff Norton  <gnorton@customerdna.com>

	* mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
        methods as their native size, fixed bug #57543, #57545.
	* mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
        This saves a temporary register and mullw call down into 1 (minor perf
        increase for cases like sum = sum * 5;  This use to translate into:
            li r11,5
            mullw r28,r28,r11
        It now translates to
            mulli r28,r28,5

2004-10-15  Zoltan Varga  <vargaz@freemail.hu>

	* trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
	#68388.

2004-09-17  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
	
2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>

	* inssel.brg: make ldelema check aot friendly.

Thu Sep 9 20:57:53 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-*.c, mini-ops.h, inssel-long32.brg: introduced
	OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
	set the carry/borrow flag). The sparc and s390 implementations
	can now use optimized versions (and simplify the code). ppc bugfixes.

2004-09-02  Zoltan Varga  <vargaz@freemail.hu>

	* inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.

2004-08-23  Zoltan Varga  <vargaz@freemail.hu>

	* inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.

	* mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
	allocation. Fixes #63085.

2004-08-09  Zoltan Varga  <vargaz@freemail.hu>

	* inssel-x86.brg: Set dreg of LOCALLOC correctly.

Tue Aug 3 11:20:09 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: mul.ovf.un exception name fix.

Tue Aug 3 11:19:07 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: reg allocator fix.

Tue Aug 3 11:17:07 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: make sure temp regs are not used for global reg
	allocation.

Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
	numbers in the debug info (spotted by Geoff Norton,
	<gnorton@customerdna.com>).

Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* inssel-ppc.brg: arguments on the stack are always
	relative to the stack pointer (spotted by Neale Ferguson).

2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
 	* exceptions-x86.c: delay appending the method name to the trace until
 	after mono_jit_info_table_find is called, as this gets the real
 	MonoMethod.
 
2004-07-08  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (handle_stack_args): Handle some corner cases. Fixes 
	58863.

2004-07-05  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (optimize_branches): Fix linking of bblocks in branch->branch
	optimization.
	
Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c: reinstated mono_compile_get_interface_var()
	on x86, too, since the change breaks the Gtk# build there as well.

Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* driver.c: remove loop from the default optimizations: it seems to
	interact badly with some of the other options (see bug #60613).

2004-06-25  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
	(fld@informatik.uni-bremen.de): Add Solaris x86 support.

Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, cpu-g4.md: small updates to be able to compile
	vararg-using methods.

2004-06-21  Martin Baulig  <martin@ximian.com>

	* mini/mini-exceptions.c
	(mono_handle_exception): Added `gpointer original_ip' argument.
	After calling mono_unhandled_exception(), call
	mono_debugger_unhandled_exception() and if that returns true,
	restore the context and return.

Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: prefer the use of relative branches so
	they won't need to be patched in aot code (patch from Patrick Beard).

Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* aot.c: patch from Patrick Beard to make the output assembly
	more correct for the MacOSX assembler. Small tweak to
	generate sane images on Linux/PPC, too.

Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
	case until bug #59509 is fixed (shows up in #60332).

Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c: make sure the needed wrappers are compiled, too, with
	precomp.

Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* driver.c: remove NPTL reference in --version output.

Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* aot.c: patch from Patrick Beard (pcbeard@mac.com) to
	generate valid assembly for the Mach-O assembler.

Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* driver.c: don't include abcrem in the all optimization specifier
	since it slows down jit compilation too much for now.

2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>

	* mini.c: use BIGMUL only if both operands have the same signage.
	* iltests.il: Test for bug 60056. (errors related to signage in
	BIGMUL).

	r=lupus.

Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c, aot.c: memory leak fixes.

Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* inssel-long32.brg: implemented a few missing ulong cast opcodes.

Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* Makefile.am: remove the -static hack completely, it links in
	statically glib as well.

Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* iltests.il, mini.c: fixed bug#59580 in branch optimization.
	* exceptions.cs: make it compile with new mcs/csc.

2004-06-03 Massimiliano Mantione <massi@ximian.com>
	* cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
	and added relevant test case.

Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
	regressions in gtk-sharp.

2004-05-29  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions.cs: New regression tests.

	* jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.

Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c: emit castclass/isinst in their own trees (bug #54209/59057).

2004-05-28  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.

	* cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.

2004-05-28	Patrik Torstensson <totte@hiddenpeaks.com>

	* mini.c (mono_jit_runtime_invoke): Init class in this
	method instead of trusting mono_jit_compile_method to
	do the work (because wrappers can be in object class)

2004-05-27  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.

	* basic-long.cs: New regression test.

Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
	and div/rem checks.

Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* Makefile.am: fix miguel's change to build mono statically against
	libmono (track build dependencies).

2004-05-26  Zoltan Varga  <vargaz@freemail.hu>

	* cfold.c: Some glib versions do not have G_MININT32.

2004-05-26  Massimiliano Mantione  <massi@ximian.com>

	* mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
	with precision of tan, atan, sin and cos, and implemented related
	regressions tests (fixes bug 54467, but one new problem appeared and
	is not fixed yet).

2004-05-26  Zoltan Varga  <vargaz@freemail.hu>

	* cfold.c (FOLD_BINOPZ): Avoid division by zero.

	* exceptions.cs: Add test for constant folding && division by zero.

	* driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
	since driver.c is in libmono too, so the optimization was useless.

	* driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
	variable to driver.c so the compiler can emit more efficient code to
	access them.

2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* Makefile.am: don't distribute generated inssel.[ch] files.

2004-05-25  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
	into the default appdomain. Fixes #58707.

	* jit-icalls.c: Remove the broken approximation for truncl, doing
	no conversion is better.

	* mini.c (handle_stack_args): Avoid reusing variables for stack slots.
	Fixes #58863.

Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
	of the mcrxr instruction which is not available on some processors
	even if it's documented to be. Implement add and sub overflow correctly
	(still not complete for long unsigned). Speed up icalls a bit.

2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>

	* mini.c (mono_jit_compile_method_with_opt): Make sure that
	we run .cctor in the current domain instead of target_domain.
	
	Fixes bug #58558, .cctor not being called in -O=shared.

Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.

2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>

	* mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
	which can be done with an imm8, do it that way.
	(mono_arch_output_basic_block): ditto for a jmp
	(mono_arch_emit_prolog): Computate maximum offset of a label.

2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>

	* mini-x86.c (mono_arch_local_regalloc): the reg allocator
	now tries to allocate prefered physical reg's for virtual
	regs. This reduces the number of emited spills/loads with
	20-30% on our core assemblies.

Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* jit-icalls.c: truncl() is not needed and trunc() is
	the correct thing to do anyway (bug #58287).

2004-05-24  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
	if available.

Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* driver.c: enable loop optimizations by default.

Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-x86.c: fix calc of max loop size when aligning loops start.

2004-05-23  Zoltan Varga  <vargaz@freemail.hu>

	* ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
	the stack.

2004-05-22  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
	should set carry.

	* basic-long.cs: Add tests for add/subtract of immediates with carry.

	* mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
	
	* mini.c (inline_method): Allways inline some wrappers even if the cost
	is too large. Fixes #58785.

	* mini.c: Add support for MARSHAL_CONV_FTN_DEL.
	
2004-05-21  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
	(crichton@gimp.org). Beginning of support for sparc/linux.

	* mini-sparc.c: Optimize retrieval of LMF address.

Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c:  handle alloca in methods with clauses.

Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.

2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>

	* mini.c: Delegate most of the abort signal work to 
	  mono_thread_request_interruption, which also handles Stop and Suspend
	  states.

2004-05-20  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c mini.h: Allow inlining of icall wrappers if the backend 
	supports the save/restore lmf opcodes.

2004-05-19  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
	by gcc-3.4 as well.

	* mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.

2004-05-18  Zoltan Varga  <vargaz@freemail.hu>

	* mini.h mini.c (mini_method_compile): Only run abc removal pass on 
	methods which contain array accesses.

	* mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
	boundaries. Fixes #58537.

	* iltests.il: Add regression test for #58537.

2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>

	* mini-x86.c (mono_arch_local_regalloc): Last part of
	fix for bug #58633 (releasing register to early).

2004-05-18  Miguel de Icaza  <miguel@ximian.com>

	* basic-long.cs: Add new regression test.

2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>

	* mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
	register too early on the chain.

2004-05-18  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (create_helper_signature): Use a helper function to reduce
	the code which needs to be written. Also set the calling convention of
	icalls on windows. Fixes #57840.

Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
	exceptions-ppc.c: added helper function to get the instruction address
	from a signal handler context.

2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>

	* helpers.c: use g_get_tmp_dir. Invokes happyness 
	from gonzalo.

2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>

	* helpers.c: Add new env variable to pass args to objdump.
	Specifically for those of us who love -Mintel. r=miguel, gonzalo.

2004-05-17  Radek Doulik  <rodo@ximian.com>

	* Makefile.am (common_sources): added abcremoval.h so it get
	disted and daily mono packages on go-mono.com will build again

2004-05-17  Massimiliano Mantione  <massi@ximian.com>

	* abcremoval.c: Fixed coding style, added copyright header.

	* abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.

	* mini.h: Added prototype for abc removal main function.

	* build_relations_propagation_table.pl: Added copyright header.

2004-05-16	Patrik Torstensson <totte@hiddenpeaks.com>

	* basic-long.cs: reg test for complex ceq_long bug.

2004-05-16	Patrik Torstensson <totte@hiddenpeaks.com>

	* mini-x86.c (mono_arch_local_regalloc): Correctly free 
	reg in long and clob case (bug #58343). Fixed/added comments.

2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>

	* mini.c (mono_jit_runtime_invoke): Follow new convention
	of calling the invoke method with an function pointer.

2004-05-14  Zoltan Varga  <vargaz@freemail.hu>

	* ChangeLog: Fix author of memory leak patch.

Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* Makefile.am: fix make dist as well...


2004-05-14  Massimiliano Mantione  <massi@ximian.com>

	* cfold.c: Made so that conversions from pointer to int4 are no-ops
	on archs where pointers are 4 bytes long.

	* Makefile.am: Added abcremoval.c source file.

	* abcremoval.c: Added abcremoval.c.

	* abcremoval.h: Added abcremoval.h.

	* build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.

	* inssel.brg: Enabled bounds check removal.

	* mini.c: Added support for abcrem optimization.

	* mini.h: Added abcrem optimization label.

	* driver.c: Added support for abcrem optimization.

	* propagated_relations_table.def: Added propagated_relations_table.def.

Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c, cfold.c: fix style.

Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c: handle issue with the low-level implementation of
	some long opcodes (bug #54209).

2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>

	* basic.cs: test for my new cmov stuff.

2004-05-13	Patrik Torstensson

	* mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
	opt and added peephole documentation.

Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* tramp-ppc.c: rewrote the generic trampoline code.

2004-05-11	Patrik Torstensson

	* mini-x86.c: optimize long shl/shr asm code (one less branch)

2004-05-11  Zoltan Varga  <vargaz@freemail.hu>

	* basic.cs basic-long.cs objects.cs: Make these compile under MS csc.

	* mini.h mini.c dominators.c: Applied patch from Derek Woo
	(derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.

	* mini.c: Add new icalls for AsAny marshalling.

Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* tramp-ppc.c, mini-ppc.c: more cleanups.

2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* mini.c: no warnings.

Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, mini.c: use mono_resolve_patch_target ().

2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>

	* mini.c: In the thread abort signal handler, if the thread is in the
	process of being stoped, don't throw the Abort exception, just stop the
	thread.

Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* tramp-ppc.c: removed old code.

Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
	do some simple speed optimizations on ppc.

Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
	and large offsets in load/store.

2004-05-07  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
	it causes regressions.

2004-05-07  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
	support.

Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* jit-icalls.c: remove warnings.
	* inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
	speedups for unsafe code.

2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>

	* inssel.brg: Optimize Stind.[ui][12]. r=zoltan.

2004-05-06  Zoltan Varga  <vargaz@freemail.hu>

	* basic-calls.cs: Add new regression test.

	* mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
	more portable.

	* mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.

	* mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
	is no longer used.

2004-05-06	Patrik Torstensson

	* mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
	long reg allocation in any reg (not only eax:edx) and implemented 
	long shl/shr ops in asm instead of helpers.

2004-05-05  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.h: Fix warnings.

	* exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
	stack.

	* mini-exceptions.c (mono_handle_exception): Call the filter in a
	separate statement for clarity.

	* mini-sparc.c: Update status.

2004-05-04  Zoltan Varga  <vargaz@freemail.hu>

	* mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
	here.

Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* inssel-ppc.brg: another small pre-release workaround:
	we don't do overflow detection for long_sub_un.

Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
	(also works around a weird ppc bug: 57957).

Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>

	* tramp-ppc.c: trampoline fixes.

Fri Apr 30 15:54:26 EDT 2004	Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: fixed typos.

Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, exceptions-ppc.c: more code saves registers
	at the top of the stack. Fixed typos. Use a frame registers
	for all the methods with exception clauses.

Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c: restore fp registers.

Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, exceptions-ppc.c: save the registers in reverse
	order from the stack top (moved the stack room to save the
	return value for trace after the param area). Fixed corruption
	in restoring registers on unwind.

Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.

Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
	and prolog/epilog for methods that use it. Allow
	enough param area room for varargs methods. Fix miguel's
	breakage in exception handling.

Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* Makefile.am: run genmdesc only on current arch.

2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* exceptions-x86.c:
	* mini-x86.h: fix the build on windows.

2004-04-28  Zoltan Varga  <vargaz@freemail.hu>

	* 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.

	* exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.

	* mini-exceptions.c: New file.
	
	* mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
	Move some parts of the x86 exception handling code to an 
	arch-independent file so it can be shared with other ports.

Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.

2004-04-26  David Waite  <mass@akuma.org>

	* driver.c: remove comma from end of enumeration declaration

2004-04-26  Jackson Harper  <jackson@ximian.com>

	* driver.c: parse config file before loading first assembly. This
	allows the user gac to be enabled/disabled. 
	
2004-04-23  Miguel de Icaza  <miguel@ximian.com>

	* mini-ppc.c (ppc_patch): Replaced the branch code patching with a
	simpler mechanism: we do not care what is encoded initially
	(branch absolute or relative), we care about the code and its
	target.  I kept the old code for reference for now.

	The new code tries first to determine if the jump is anywhere in
	the -/+32 absolute meg range, if it succeeds, it encodes using the
	absolute branch;  If not, it tried to find something in the
	relative range, if not, it uses the handle_thunk code. 

Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c: use the correct ip register on macosx.

Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>

	* exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.

Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
	Raise exception on integer divide by zero by hand since the hw
	doesn't support it. Handle NaNs in FP compares.

Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
	code reducing duplication between the platforms and enabled
	signal exception handling (on linux for now).

Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c: more macosx support.

Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.

Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.

2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>

	* iltests.il: more tests.

2004-04-19  Zoltan Varga  <vargaz@freemail.hu>

	* mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
	vars as well.

Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.

2004-04-19  Zoltan Varga  <vargaz@freemail.hu>

	* liveness.c: Mark variables as volatile in all basic blocks reachable
	from exception clauses.

2004-04-18  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions.cs (test_0_rethow_stacktrace): Make this work with
	inlining.

2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>

	* iltests.il, basic.cs: more tests for regalloc.

2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>

	* iltests.il: Some tests for register allocation modifications
	I have locally.

2004-04-16  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions.cs: Add regression test for bug #56782.

	* exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
	original stack trace if an exception is rethrown. Fixes #56782. Oh,
	the beauty of fixing the same thing in 5 different files...

2004-04-15  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Do not compute coverage for inlined
	methods.

2004-04-14  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c: Add support for STRWLPARRAY marshalling convention.

Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
	to init the context to setup the regs pointer).

Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c: more exceptions work.

Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c: avoid reusing the same MonoInst on multiple trees: this is
	not allowed.

2004-04-13  Miguel de Icaza  <miguel@ximian.com>

	* inssel-x86.brg (reg): Add new rules for add, sub and mul that
	can use the memory directly.

	* cpu-pentium.md: Update documentation from a post from Zoltan. 

	add x86_add_membase, x86_sub_membase, x86_mul_membase

2004-04-13  Miguel de Icaza  <miguel@ximian.com>

	* mini-ppc.c: Remove unused definitions FLOAT_REGS and
	GENERAL_REGS they were also hardcoded for all PPC ports.

	(add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.

	Remove hard-coded limit for floating point registers, use
	PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.

	Notice that in MacOS X calling conventions you can fit a lot more
	floating point values in registers, so I should update the PInvoke
	test to excercise the passing of floating point values on the
	stack (currently broken).
	
2004-04-06  Miguel de Icaza  <miguel@ximian.com>

	* tramp-ppc.c (create_trampoline_code): Added
	JUMP_TRAMPOLINE_SIZE. 
	(ppc_magic_trampoline): Follow the pattern from
	x86_magic_trampoline: if code is set to zero, return. 
	(create_trampoline_code): Always pass MonoMethod to the jump
	trampoline, before it was passing a null.
	(mono_arch_create_jump_trampoline): Implement the jump stub, could
	share the code with mono_arch_create_jit_trampoline. 

	* mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
	implemented.
	(mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
	implemented.  

	* cpu-g4.md: Added length for jmp instruction, the worst case
	scenario is 92 bytes (4 mandatory bytes, potential 19 registers
	for save_lmf).

2004-04-08  Zoltan Varga  <vargaz@freemail.hu>

	* aot.c (mono_compile_assembly): Add back unlink removed by mistake.

2004-04-07  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c: Only set bblock->real_offset when adding a new bblock, and
	before each IL instruction.

	* mini.c (CEE_BOX): Fix warnings.

2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* mini.c: removed a few unused vars and extra whitespace.

2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>

	* inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
	checks.
	(MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
	index.
	(OP_GETCHR): use the above
	(CEE_LDELEMA): use the above.

	* inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
	version of the generic impl.
	(MONO_EMIT_BOUNDS_CHECK_IMM): the same
	(CEE_LDELEMA): use the above.

2004-04-05  Zoltan Varga  <vargaz@freemail.hu>

	* inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
	Fixes #56317.

	* iltests.il: Added new regression test for #56317.

2004-04-05  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
	under NetBSD. Fixes #56450.

	* liveness.c (update_gen_kill_set): Fix previous patch.

2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.

2004-04-02  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
	ldsfld and ldsflda.

	* inssel-sparc.brg: Add more optimizations.

	* mini-sparc.c: Replace multiply/divide with shifts if possible.

2004-04-01  Martin Baulig  <martin@ximian.com>

	* mini.c (handle_box): New static function; moved the
	implementation of CEE_BOX here.
	(mono_method_to_ir): Added `constrained_call' variable.
	(mono_method_to_ir:CEE_CONSTRAINED_): Set it.
	(mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
	mono_method_get_constrained() to get the method.

2004-04-01  Martin Baulig  <martin@ximian.com>

	* mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
	(MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
	(mono_method_to_ir): We don't need these macros anymore since
	mono_class_get_full() already takes care of it.	

2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
	use @function (as doesn't accept #function here) and check the return
	value of system and stop if fails.

2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* mini.c: set the timeout to 2s when calling mono_domain_finalize.

2004-03-31  Zoltan Varga  <vargaz@freemail.hu>

	* mini-ppc.c (mono_arch_patch_code): Fix ppc build.

	* inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.

	* inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
	#56223.

	* basic-long.cs: Add test for negation of Int64.MinValue.

2004-03-30  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.c: Update status.

	* mini-sparc.c tramp-sparc.c: Save lmf in trampolines.

	* exceptions-sparc.c: Fix return value in filters.

	* inssel-sparc.brg: Fix register allocation in some rules.

2004-03-28  Martin Baulig  <martin@ximian.com>

	* mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
	if neccessary.	

2004-03-28  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c (mono_arch_patch_code): Fix warnings.
	
	* mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
	dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
	remove unused conv_u4 opcode.

	* mini-x86.c: Remove valgrind workaround since it slows down things
	even when mono is not run under valgrind.

2004-03-26  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.c: Update status.

	* inssel-sparc.brg: Add some optimizations.

	* inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
	future delay slot filling. Add support for varargs, tail calls and JMP.

	* inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
	CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.

	* inssel.brg: Fix register allocation in OP_ARGLIST.

	* inssel.brg: Fix warnings.

2004-03-25  Martin Baulig  <martin@ximian.com>

	* mini.c (inflate_generic_field): Removed.
	(mini_get_method): Removed, use mono_get_method_full(),
	(mini_get_class): Removed, use mono_class_get_full().
	(mono_method_to_ir): Pass our generic context to
	mono_field_from_token().	

2004-03-25  Martin Baulig  <martin@ximian.com>

	* mini.c (mini_get_class): Take a `MonoGenericContext *' instead
	of a `MonoMethod *'.
	(mini_get_method): Take a `MonoGenericContext *' instead
	of a `MonoMethod *'.
	(TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
	a new local variable called `generic_context' which holds the
	current `MonoGenericContext *'; use it to lookup things.

2004-03-24  Martin Baulig  <martin@ximian.com>

	* mini.c (mini_get_class): New static method; if we're inside a
	generic instance, inflate the class if neccessary.
	(mono_method_to_ir): Use mini_get_class() instead of mono_class_get().

2004-03-24  Zoltan Varga  <vargaz@freemail.hu>

	* iltests.il: New regression test for #55976.

	* mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
	#55976.

2004-03-23  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
	output.

2004-03-23  Zoltan Varga  <vargaz@freemail.hu>

	* liveness.c: Consider SSA stores as well as loads when making vars
	volatile.

	* exceptions.cs: New regression tests for register allocation.
	
2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>

	* mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
	* mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
	  domain lock only to protect puntual access to data structures.
	  Added access lock for sighash, jit_icall_hash_name, 
	  jit_icall_hash_addr and domain->code_mp.

2004-03-20  Zoltan Varga  <vargaz@freemail.hu>

	* driver.c: Print SIGSEGV handling method.

	* mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.

	* mini.c (setup_jit_tls_data): Handle case when this is called
	multiple times for a thread.

	* mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
	is different from fbxx_un. Fixes #54303. Also use constants instead of
	magic numbers in a lot of places.

2004-03-19  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions.cs: Fix cctor test when --regression is used.

Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, exceptions-ppc.c: basic exceptions support 
	for Linux/ppc.

Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>

	* inssel-ppc.brg: fixed register assignments for some rules.

2004-03-17  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions.cs: Add test for exceptions in static constructors.

	* mini.c (mono_jit_compile_method_with_out): Move the calling of
	static constructors outside the domain lock. Fixes #55720.

2004-03-17  Martin Baulig  <martin@ximian.com>

	* mini.c (get_generic_field_inst): Removed, this'll never happen.
	(inflate_generic_field): Take the `MonoMethod *' instead of the
	`MonoClass *' and added support for generic method.
	(mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
	have a `field->parent->gen_params', only inflate the field if it's
	an open constructed type.

2004-03-17  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions-x86.c (mono_arch_handle_exception): Allocate a new
	exception object instead of the preconstructed ones.

2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* mini.c: reverted changed to sigsegv_signal_handler commited
	accidentally in the previous patch.

2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* mini.c:
	(mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
	running --aot with an old assembly.

2004-03-16  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
	point values.

	* mini-sparc.c: Add support for v9 branches with prediction.

2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>

	* mini.c (mini_init): #warning is GNUC only

	* mini-sparc.h: implement __builtin_frame_address
	and __builtin_return_address for Sun C compiler

2004-03-15  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.

2004-03-14  Zoltan Varga  <vargaz@freemail.hu>

	* basic-calls.cs: Add test for unaligned byref long argument passing.

	* mini-ops.h: Add sparcv9 compare and branch instructions.

	* inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
	v9 instructions if we have a v9 cpu.

	* mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
	registers for global allocation.

	* exceptions-sparc.c: Fixes.
	
2004-03-11  Zoltan Varga  <vargaz@freemail.hu>

	* liveness.c (mono_analyze_liveness): Optimized version.

	* inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.

	* mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
	sparc work.

	* basic-float.cs basic-calls.cs: New regression tests.

2004-03-10  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
	sigaltstack implementation.

	* mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
	
	* mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
	stuff if SIGSEGV_ON_ALTSTACK is not defined.

2004-03-09  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c: Fix warnings.
	
	* mini.c (mono_resolve_patch_target): New function which contains the
	arch independent part of the patching process.

	* mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
	patching code to a separate function.

2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>

	* mini.c (add_signal_handler): ifdef out on Windows

2004-03-08  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
	cpu-sparc.md: Add exception handling support + other fixes.

	* driver.c: Print --help output to stdout. Fixes #55261. Also fix
	typed GC detection in --version.

	* basic.cs exceptions.cs: New regression tests.

	* mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
	the arch specific code can store data during a compilation.

	* mini-ops.h: Add OP_SETFRET.

	* mini.c (mini_get_ldelema_ins): Instead of allways calling the same
	function, register a separate icall for each arity, so the icalls can
	get a wrapper.
	
	* mini.c (mono_print_tree): Print negative offsets in a more readable
	form.
	
	* mini.c: Make signal handling work on sparc.
	
	* mini.c (mini_init): Add emulation for lconv_to_r8_un.

	* inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.

	* jit-icalls.c: Emulate truncl by aintl on solaris.

	* jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.

2004-03-05  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mini_init): fconv_to_ovf can raise exceptions.

2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>

	* mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
	a MarshalByRef type, inline a method that performs the check, taking into
	account that the object can be a proxy. Also implemented tow new opcodes:
	CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
	* inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
	OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.

Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: if a relative branch displacement is too big
	but it points to and area reachable with an absolute branch, 
	avoid the thunks.

Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c: optimize small copies in cpblk.

2004-03-01  Zoltan Varga  <vargaz@freemail.hu>

	* basic-calls.cs basic-float.cs: New regression tests.

	* mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
	negative offsets from %fp. Implement localloc. Fix local register 
	allocation. Fix the case when the this argument needs to be saved to
	the stack. Implement some missing opcodes.

2004-02-26  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mini_method_compile): Reenable global regalloc in methods
	with exception handlers.

	* linear-scan.c (mono_varlist_sort): Fix warning.

	* linear-scan.c (mono_linear_scan): Fix computation of used_regs.

	* mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
	regalloc costs.

	* liveness.c: Make all variables uses in exception clauses volatile, to
	prevent them from being allocated to registers. Fixes #42136.

2004-02-25  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
	causes regressions.

	* mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
	argument to mono_arch_regalloc_cost.

	* mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
	precisely.

2004-02-24  Zoltan Varga  <vargaz@freemail.hu>

	* mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
	Make the cost of allocating a variable to a register arch dependent.

	* basic-calls.cs: Fix compilation of tests.
	
	* mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
	helper function to cut back on the number of #ifdefs needed.

	* mini-ppc.c: Fix compilation.

	* basic-calls.cs: New regression tests.

	* mini-sparc.c (mono_sparc_is_virtual_call): New helper function.

	* tramp-sparc.c (create_specific_trampoline): Use g5 register instead
	of l0 since that is callee saved.

	* tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
	to virtual calls.

	* mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
	of delay instruction.

	* inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.

	* mini.h (MonoCallInst): Add 'virtual' flag.

	* inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.

2004-02-23  Zoltan Varga  <vargaz@freemail.hu>

	* *.cs: New regression tests.

	* mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
	work.

	* mini.c (mono_runtime_install_handlers): Fix build.

	* mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
	'signal_stack_size' members.

	* mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
	alternate signal stack.

	* exceptions-x86.c: Add stack overflow handling.

	* mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
	functions to arch independent code.

	* mini.c (mono_print_tree): Print more detailed info for load_membase
	opcodes.
	
2004-02-23  Martin Baulig  <martin@ximian.com>

	* mini.c (mini_get_method): Set `gmethod->generic_inst'.

Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>

	* mini-x86.c: fixed reg allocation for div/rem.

2004-02-22  Miguel de Icaza  <miguel@ximian.com>

	* driver.c (mono_main): Report some configuratio options on --version.

Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
	low in the address space. Correctly flush memory in thunks where we
	output native code.

2004-02-20  Martin Baulig  <martin@ximian.com>

	* mini.c (mini_get_method): New static method; inflate all generic
	methods and methods in open generic instances.
	(mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
	(ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.

2004-02-19  Zoltan Varga  <vargaz@freemail.hu>

	* mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.

	* tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.

2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>

	* helpers.c (mono_disassemble_code): use Sun's dis if not using gcc

	* mini-sparc.c (flushi mono_arch_output_basic_block): make
	it compile using Sun's compiler.

2004-02-19  Zoltan Varga  <vargaz@freemail.hu>

	* 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.

	* basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.

Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>

	* aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
	code.
	* mini-ppc.c: handle calls outside of the allowed range with thunks
	allocated using the code manager.
	* tramp-ppc.c: use the code manager to hold generated native code.
	Fixed the magic trampoline to just patch vtable entries.

2004-02-17  Zoltan Varga  <vargaz@freemail.hu>

	* inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
	independent file.

2004-02-16  Zoltan Varga  <vargaz@freemail.hu>

	* tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
	PPC.

	* mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
	if we have a working __thread implementation.

	* mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
	OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.

2004-02-15  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c: Fix compilation under gcc 2.
	
2004-02-14  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
	contains a call to the wrapped function.

	* mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
	OP_<CALL>_IMM opcodes, and use them under X86.
	
	* mini.c (mono_jit_find_compiled_method): Fix warning.

	* cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.

	* jit-icalls.c (mono_ldftn_nosync): New JIT icall.

	* tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
	functionality to mini.c.

	* mini.c (mono_create_jump_trampoline): New function to create a jump
	trampoline. Return a compiled method instead of a trampoline if it
	exists. Add a cache for jump trampolines.

	* mini.c (mono_jit_find_compiled_method): New function to return a
	compiled method if it exists.

	* mini-x86.c: Call mono_create_jump_trampoline instead of 
	mono_arch_create_jit_trampoline.

	* jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
	a jump trampoline. Fixes #52092.
	
2004-02-11  Zoltan Varga  <vargaz@freemail.hu>

	* debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
	which is not up-to-date. Add check_corlib_version () instead.

	* mini.c (mini_init): Call mono_thread_attach () so embedders do not 
	have to call it.
	
	* mini.c (mono_runtime_install_handlers): Remove check for valgrind
	since newer valgrind versions do not need it.

	* mini.c (mono_jit_compile_method_with_opt): New helper function to
	compile a method with a given set of optimizations.

	* mini.c: Compile icall wrappers on-demand instead of at startup.

	* mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
	wrapper for an icall.

2004-02-10  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
	#54063.

	* iltests.il: Add test for non-empty stack before switch instruction.

2004-02-02  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c: Add support for new stringbuilder marshalling conventions.

	* mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.

2004-02-01  Martin Baulig  <martin@ximian.com>

	* mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
	in `ginst->mtype_argv'.

2004-01-31  Miguel de Icaza  <miguel@ximian.com>

	* mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
	facilitate grepping.

Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>

	* mini.c: fixed buglet in initobj generic implementation for references.

Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>

	* Makefile.am: make the version script conditional.
	* jit-icalls.c: handle missing truncl().

2004-01-23  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions.cs: Add more tests for double->int conversion.

	* jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
	we don't throw exceptions when converting 1.1 to a long. Fixes #53250.

Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>

	* driver.c: make --verbose --version emit an error
	if the loaded corlib doesn't match the runtime version.

Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.h: export ppc_patch().
	* mini-ppc.c: call convention fixes. Added assert in ppc_patch().
	* tramp-ppc.c: call convention fixes: Linux/PPC support should be
	on par or better than on MacOSX.

2004-01-19  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
	mono_lookup_pinvoke_call.

	* mini-x86.c: Under windows, the default pinvoke calling convention is
	stdcall. Fixes #52834.

	* mini.c (optimize_branches): Add an upper bound to the number of
	iterations to prevent infinite loops on strange loops. Fixes #53003.

2004-01-16  Zoltan Varga  <vargaz@freemail.hu>

	* inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
	and ISINST. Fixes #52093.

	* objects.cs (test_0_vector_array_cast): New tests.
	
2004-01-15  Zoltan Varga  <vargaz@freemail.hu>

	* jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
	checking in Array.Set ().

	* mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
	#52590.

	* object.cs (test_0_multi_array_cast): New regression test.

Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c: fix build on Linux/PPC.

2004-01-14  Zoltan Varga  <vargaz@freemail.hu>

	* tramp-x86.c (x86_magic_trampoline): Disable code patching when
	running under valgrind.
	(x86_magic_trampoline): Fix build bustage.

	* debug-mini.c: Modify the debug info serialize/deserialize code so it handles
	negative values as well. This is needed for the encoding of the line number
	info, since sometimes the line numbers are not in increasing order.

2004-01-13  Zoltan Varga  <vargaz@freemail.hu>

	* cpu-pentium.md (localloc): Increase the size of the localloc 
	instruction since it is a loop under Win32.

	* debug-mini.c (record_line_number): Get rid of unneccesary memory
	allocation.

2004-01-09  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
	tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
	Max Horn (max@quendi.de). Fix file names in comments.

2004-01-03  Zoltan Varga  <vargaz@freemail.hu>

	* ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
	avoid stack overflow.
	(replace_usage): Avoid uninitialized variable warnings.

	* mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
	and taking the address of valuetype variables.

2004-01-03  Patrik Torstensson

	* mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
	for other purposes than FP later on.

2004-01-02  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Prevent register allocation for arguments
	of tail calls.

Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>

	* mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.

2003-12-30  Patrik Torstensson <p@rxc.se>

	* mini-x86.h: Decreased number of availiable fp regs.
	Solves corner cases with FP spilling.

2003-12-23  Patrik Torstensson <p@rxc.se>

	* mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
	for floating point stack tracking / spilling on x86. 
	Fixes bug #49012.
	
	* basic-float.cs: added float mul overflow test.

2003-12-23  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Add workaround for bug #51126.

Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
	supports for cond branches that overflow the immediate
	overflow offset. mcs can compile simple programs.

Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c: exception handling support wip:
	finally handlers get run on exception.

2003-12-19  Zoltan Varga  <vargaz@freemail.hu>

	* aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
	profiling.

Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>

	* cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
	initial support for stack walking and unwinding.

2003-12-18  Zoltan Varga  <vargaz@freemail.hu>

	* driver.c (mono_main): Make corlib-out-of-sync message more 
	descriptive. Also remove verify_corlib call.

Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: make CEE_NEWARR calls and other emulated opcodes 
	not overlap with other call's arguments, too.

Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
	move to arch-specific code the choice of arch-specific
	intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
	* mini.c: ensure emulation calls will not interleave
	with other calls.

Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>

	* tramp-ppc.c, basic-calls.cs: rework trampolines so that
	the magic trampoline stack frame is dropped before executing
	the new method.

Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
	and integer to fp conversions. Added support for overflowing
	arguments on the stack. Reserve a couple more registers as temps.
	Added support for aot compilation (as output still needs to be
	tweaked, though).

Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, basic-long.cs: fix jumps to known labels.
	Don't overwrite return register in some corner cases.

2003-12-13  Zoltan Varga  <vargaz@freemail.hu>

	* mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
	static constructors when AOT compiling.

	* driver.c (mono_main): Call mono_check_corlib_version.

Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>

	* cpu-g4.md, basic.cs: fixed div target register.

Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, basic.cs: shl_imm fix with test.

Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>

	* inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
	structures by value. Misc fixes.
	* objects.cs: more tests.

Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: lconv.ovf.i implemented.

2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* mini.c:
	(mini_init): don't error out if someone already called g_thread_init.

Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>

	* exceptions-x86.c, exceptions-ppc.c: allow the exception object
	to be any type per the spec. Fix abnormal memory usage when
	the same object is repeatedly thrown.

Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: check for overruns in IL code.

2003-12-09  Zoltan Varga  <vargaz@freemail.hu>

	* TODO: Add/remove some todo entries.

2003-12-08  Zoltan Varga  <vargaz@freemail.hu>

	* driver.c (mono_main): Call mono_verify_corlib.

2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>

	* inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
	This has been moved to mini.c
	* mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
	type being casted is marshalbyref it could be a proxy, so instead of
	emitting the type check code, emit a call to a runtime method that will
	perform the check by calling CanCastTo if needed.

2003-12-06  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
	methods with large stack frames under Win32.

2003-12-04  Zoltan Varga  <vargaz@freemail.hu>

	* Makefile.am: Distribute regression tests.

	* mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
	at the end instead of inserting each variable into the sorted list.

	* linear-scan.c (mono_varlist_sort): New helper function.
	
Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: ensure arguments and locals are within bounds.

Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
	related fixes.

2003-12-03  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_cprop_copy_values): Fix crash.

	* aot.c: Set verbosity back to 0.
	
Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>

	* regalloc.c: complete memory leak fix by Laurent Morichetti
	(l_m@pacbell.net).

2003-12-03  Zoltan Varga  <vargaz@freemail.hu>

	* driver.c (main_thread_handler): Revert the previous patch.

	* tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
	under valgrind.

	* mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
	memory from the memory pool.

	* driver.c (main_thread_handler): Turn on all optimizations when
	--aot is used.

	* mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
	an array for better performance.

	* regalloc.c (mono_regstate_assign): Fix memory leak.

	* debug-mini.c (mono_debug_serialize_debug_info): New function to
	serialize the debug info.

	* debug-mini.c (mono_debug_add_aot_method): New function to load the
	debug info from the serialized representation.

	* aot.c: Save debug info into the generated file and load it when 
	loading a method.

	* mini.h (MONO_AOT_FILE_VERSION): Bump version number.

Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
	More FP-related fixes.

Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
	and register allocation buglet. Hello world now runs.

Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>

	* cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
	* tramp-ppc.c: fixed class init trampoline.
	* inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.

Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>

	* cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
	mini.c: more ppc changes/fixes.

2003-11-27  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
	Also optimize the case when the arguments are the same in the caller 
	and in the callee.

	* iltests.il: Add tests for tail calls with valuetype arguments.

Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: fixes for struct return type.

Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
	mono_spillvar_offset() to arch-specific code.

Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.

2003-11-27  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions-x86.c: Fix stack space leaks.
	
	* exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
	registers from the lmf if the method has save_lmf set.

2003-11-26  Zoltan Varga  <vargaz@freemail.hu>

	* tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
	of icall wrappers into InvokeInDomain, since these are now per-domain.

Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
	make some opcode emulation and intrinsic ops enabled/disabled 
	according to the architecture. More fixes.

Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.

Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
	arch-specific handling for 'this' and struct return type to
	arch-specific code.

2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* aot.c: prevent divide by zero error when reporting (it happened with
	Accessibility.dll).

2003-11-25  Zoltan Varga  <vargaz@freemail.hu>

	* mini.h (inst_switch): Remove unused macro.

2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* aot.c:
	(load_aot_module): free 'info->methods' and 'info' properly. No more
	"free(): invalid pointer blah" messages when you have an old aot
	compiled assembly.

2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>

	* jit-icalls.c, mini.c: Added support for context static fields.

2003-11-18  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_blittable): Methods which set LastError are not 
	blittable either. Fixes #51108.
	
Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: flush icache.
	* cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.

2003-11-18  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.

2003-11-17  Zoltan Varga  <vargaz@freemail.hu>

	* tramp-x86.c (x86_class_init_trampoline): Make code patching thread
	safe on IA32.

	* mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
	vararg calls.

	* inssel.brg (CEE_MKREFANY): Fix AOT case.

2003-11-16  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
	instruction when the result is discarded.

	* iltests.il (test_0_div_regalloc): New regression test.

	* arrays.cs: Fix compilation error.

Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>

	* inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
	float rules to inssel-x86.brg: sane architectures with FP registers
	don't need to implement these rules.

Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.

Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>

	* mini.h, inssel-long32.brg: fixed endianess issues in int64
	implementation of 32 bit systems.

Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>

	* exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
	(Jeroen Zwartepoorte).

2003-11-12  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
	the caller and the callee matches.
	
	* mini.c (mono_method_to_ir): Add comment.

	* mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
	signbit is missing on some platforms.

2003-11-06  Zoltan Varga  <vargaz@freemail.hu>

	* mini.h (mono_arch_setup_jit_tls_data): New arch specific function.

	* mini.c (setup_jit_tls_data): Call the new function.
	
	* mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.

	* mini-x86.c: Add experimental support for fast access to the lmf
	structure under NPTL/Linux 2.6.x.

2003-11-06  Martin Baulig  <martin@ximian.com>

	* ldscript: Make `GC_push_all_stack', `GC_start_blocking',
	`GC_end_blocking' and 'gc_thread_vtable' public; they're used by
	the debugger.

2003-11-02  Martin Baulig  <martin@ximian.com>

	* mini.c (inflate_generic_field): New static method.
	(mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
	generic instance and the field is declared in a generic type, call
	inflate_generic_field() to inflate it.  Fixes gen-28.cs.

2003-10-31  Zoltan Varga  <vargaz@freemail.hu>

	* mini.h mini.c (mono_method_same_domain): New function to return
	whenever the caller and the callee are in the same domain.

	* tramp-x86.c (x86_magic_trampoline): Use the new function.	

2003-10-30  Martin Baulig  <martin@ximian.com>

	* mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
	similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
	method parameters.
	(mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
	MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS().	

2003-10-29  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c mini-ops.h inssel.brg: Implement undeniable exception 
	propagation.

	* mini.c (sigusr1_signal_handler): Move creation of the thread abort
	object here, so it is in the correct appdomain etc.

2003-10-27  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
	already done.
	(mono_method_to_ir): Avoid freeing the type created returned from
	mono_type_create_from_typespec, since it is put into an internal cache
	by the function. Fixes pointer.exe.

	* mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
	trampolines for icalls and pinvokes as well. Fixes #33569.

2003-10-24  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c: Update after appdomain changes.

	* mini.c (mono_jit_compile_method_inner): Allways compile native
	method wrappers in the root domain, since there can only be one
	instance of them, whose address is stored in method->info.

2003-10-16  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
	environment variable. Instead detect automatically whenever running
	under valgrind using the magic macro RUNNING_ON_VALGRIND from
	valgrind.h.

2003-10-16  Miguel de Icaza  <miguel@ximian.com>

	* trace.c, trace.h: New files that implement the new trace option
	parsing. 

	* driver.c: Document new --trace options.

	* exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
	mini-x86.c: Apply:

	-       if (mono_jit_trace_calls)
	+       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))

	* mini.h: prototypes.
	
2003-10-15  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.

	* mini.c inssel.brg: Implement typedefbyref opcodes.

	* mini.c (mono_jit_compile_method): Remove unused local variable.

	* mini.c (mono_jit_compile_method_inner): Ditto.
	
2003-10-12  Zoltan Varga  <vargaz@freemail.hu>

	* tramp-x86.c (x86_class_init_trampoline): Fix build.
	
	* tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.

2003-10-10  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_no_aot): Remove unused global variable.

	* mini.c: Thread safety fixes.

2003-10-09  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_create_class_init_trampoline): Add a lock around
	class_init_hash_addr.

	* arrays.cs (test_0_newarr_emulation): Add new regression test for
	#30073.

	* mini.c: Decompose the NEWARR instruction before decomposing its
	arguments. Fixes #30073.

2003-10-08  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
	convention.

2003-10-06  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.

	* inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.

	* driver.c: Add support for compiling icall wrappers to --compile.

2003-10-05  Zoltan Varga  <vargaz@freemail.hu>

	* inssel.brg: The empty value in class->interface_offsets is -1, not
	0. Fixes #49287.

2003-10-03  Zoltan Varga  <vargaz@freemail.hu>

	* objects.cs: New test for 'is' operator on an array of interfaces.

Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* tramp-ppc.c: update trampoline code to support jumps
	and class initialization.

2003-09-30  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_jit_compile_method): Fix reading of freed memory.

	* inssel.brg (OP_UNBOXCAST): Fix #46027.

	* inssel.brg (OP_UNBOX): Remove unused rule.

	* mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
	region instead of one for each method. Fixes #47813.

2003-09-29  Zoltan Varga  <vargaz@freemail.hu>

	* exceptions.cs (test_0_nested_finally): New regression test for
	nested exception handlers.

	* mini.c (mono_jit_runtime_invoke): Fix for the previous fix.

	* mini.c (mono_method_to_ir): Avoid inlining tail calls.

	* mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
	inlining.

	* mini.c (mono_method_check_inlining): Make the inlining limit 
	configurable by an environment variable.
	
	* mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.

	* mini.h: Bump AOT file version.

	* mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
	token, store the image along with the token, since the token might not 
	refer to the same image as the method containing the relocation, 
	because of inlining.

2003-09-27  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_precompile_assemblies): New function to compile
	all methods in all loaded assemblies.

	* mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.

	* regalloc.h regalloc.c (MonoRegState): Change the type of 
	iassign and fassign to int*, since they can contain large negative
	values if the register is spilled. Also added some comments. Fixes
	#45817.

	* exceptions-x86.c (seh_handler): Fix handling of system exceptions
	under Win32. Fixes #42964.

2003-09-26  Zoltan Varga  <vargaz@freemail.hu>

	* mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.

	* aot.c: Added support for AOT compiling methods which contain calls
	to wrappers. Currently, only remoting-invoke-with-check wrappers are
	handled.
	
	* driver.c (compile_all_methods): Run the compilation in a thread
	managed by mono. Fixes #44023.

	* mini.c (mono_codegen): Print full method name in verbose output.

	* mini-x86.c (mono_arch_patch_code): Fix warning.
	
	* mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
	jumps, since the method we are jumping to might be domain-specific.

	* aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.

Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel.brg: string chars are unsigned.

2003-09-15  Zoltan Varga  <vargaz@freemail.hu>

	* TODO: New todo item.

	* tramp-x86.c (x86_class_init_trampoline): New trampoline function
	which calls mono_runtime_class_init and patches the call site to
	avoid further calls.
	(mono_arch_create_class_init_trampoline): New arch specific function 
	to create a class init trampoline.
	(create_trampoline_code): Generalized so it can create
	class init trampolines as well.

	* mini.c (helper_sig_class_init_trampoline): New helper variable.
	(mono_create_class_init_trampoline): New function to create and cache
	class init trampolines.
	(mono_find_class_init_trampoline_by_addr): New function to lookup the
	vtable given the address of a class init trampoline. Used by the
	patching process.
	(mono_codegen): Generate a call to a trampoline instead of
	mono_runtime_class_init in LDSFLD[A].
	(mono_codegen): Add relocations for the new trampoline.
	
	* mini.h mini-x86.c aot.c: Added a new relocation type: 
	MONO_PATCH_INFO_CLASS_INIT.

	* mini.h: Bump AOT version number.

	* aot.c: Create a copy of the loaded code instead of using the original
	so methods which call each other will be close in memory, improving
	cache behaviour.
	
	* exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
	patch since it breaks the regression tests.
	
	* exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
	for the register saving instruction sequence since the 
	frame_state_for function in glibc 2.3.2 don't seem to detect it.

2003-09-14  Zoltan Varga  <vargaz@freemail.hu>

	* TODO: Fix todo item && remove another.

2003-09-12  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
	previous checkin.

	* aot.c: Moved the check for MONO_LASTAOT into the initialization
	function of the module.

	* mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
	turning on/off the usage of AOT code. Got rid of mono_no_aot and the
	--no-aot command line option.

2003-09-11  Zoltan Varga  <vargaz@freemail.hu>

	* helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
	by Bernie Solomon (bernard@ugsolutions.com).

	* inssel.brg: Refactor the interface offset table related code into
	its separate functions and add support for the AOT case.

2003-09-10  Zoltan Varga  <vargaz@freemail.hu>

	* aot.c (mono_aot_get_method_inner): Fix memory leak.
	
	* aot.c: Added mono_aot_verbose variable and made all debugging
	output depend on the value of this variable.

	* aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
	method_label and info_label.

	* mini.h mini-x86.c aot.c: Added a new relocation type 
	MONO_PATCH_INFO_IID for klass->interface_id.

	* mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
	the MonoJitInfo structure.

	* mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
	a non-root appdomain in shared mode.

Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* aot.c: make aot loader less verbose. Remove free of unused variable.

2003-09-08  Zoltan Varga  <vargaz@freemail.hu>

	* aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.

	* .cvsignore: Added *.dll.

	* mini.c (mono_print_tree_nl): New function callable while debugging.

	* mini.c (mono_print_code): Export this.

	* tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
	patched code.

2003-09-05  Zoltan Varga  <vargaz@freemail.hu>

	* mini.h (MonoCompile): Added 'jit_info' field.

	* mini.c (mini_method_compile): Save the generated MonoJitInfo into
	the cfg structure, since it is needed by the AOT compiler.

	* mini.h (MONO_AOT_FILE_VERSION): Bump version number.

	* aot.c: A major rewrite. Changes include:
	- save exception tables for methods which have them.
	- cache failed lookups in aot_get_method () to avoid the (slow) calls 
	to g_module_symbol.
	- reworked the file format so it is now much smaller and needs
	fewer relocation entries.
	
2003-09-04  Zoltan Varga  <vargaz@freemail.hu>

	* aot.c (load_aot_module): Fix build bustage on platforms without
	Boehm GC.

2003-09-04  Martin Baulig  <martin@ximian.com>

	* Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).

2003-09-04  Zoltan Varga  <vargaz@freemail.hu>

	* TODO: Some new optimization ideas.

	* aot.c: Move AOT module loading logic here from mono_assembly_open.

	* aot.c: Save the optimization flags used to compile the code into
	the AOT module.

	* mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
	support emitting domain specific code.
	
	* mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
	no longer domain neutral. It can be made domain neutral by compiling 
	with --optimize=shared.

	* aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
	between appdomains.

	* driver.c mini.h mini.c: New --no-aot debugging option which disables
	loading of AOT code.

	* inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
	
	* tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
	if there is no domain neutrality information.

2003-09-01  Zoltan Varga  <vargaz@freemail.hu>

	* aot.c (mono_compile_assembly): Emit a symbol containing the file 
	format version into the generated library.

	* mini-x86.c (mono_arch_patch_code): Do not emit the address of the
	callee method into the caller since one of them could be shared.

	* mini.h mini-x86.c aot.c: Added two new relocations so throwing
	system exceptions from AOT code now works.

	* tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
	method if it is domain neutral and the callee is not.

	* graph.c (cfg_emit_one_loop_level): Fix warning.

2003-08-30  Zoltan Varga  <vargaz@freemail.hu>

	* aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
	last checkin.

2003-08-29  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mini_init): Call mono_marshal_init () explicitly since it
	is needed  by code which is executed before mono_runtime_init ().
	Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
	
	* mini.c (mono_thread_abort): Fix warning.
	(mono_jit_compile_method): Call static constructor in the AOT case too.

	* aot.c (mono_compile_assembly): Fix warning.

2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* mini.c: register a SIGINT handler if MONO_DEBUG is defined.

2003-08-28  Zoltan Varga  <vargaz@freemail.hu>

	* inssel.brg (OP_UNBOXCAST): Add support for the AOT case.

	* cpu-pentium.md: Fix the length of call opcodes so they include the
	ESP restoring instruction. Fixes #47968.

2003-08-28  Martin Baulig  <martin@ximian.com>

	* mini-x86.c (mono_arch_call_opcode): Added support for
	MONO_TYPE_GENERICINST.

	* mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.	

2003-08-27  Zoltan Varga  <vargaz@freemail.hu>

	* Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
	a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).

	* mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
	metadata_section.

2003-08-26  Martin Baulig  <martin@ximian.com>

	* mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
	when reporting an error, set this to the actual error location.
	(mono_method_to_ir): Report the correct error location if
	get_basic_blocks() returned an error.

2003-08-25  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_type_blittable): OBJECT is not blittable.
	(mono_method_blittable): Methods which have marshalling descriptors
	are not blittable either. Fixes #47842.

2003-08-22  Zoltan Varga  <vargaz@freemail.hu>

	* driver.c mini.c: Use an environment variable instead of a global 
	variable. Also fix the build.

	* mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
	Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
	reporting this.	

	* driver.c mini.c: Added --with-valgrind option to turn off some
	code which prevents mono from running under valgrind.

	* mini.c (mono_emit_call_args): Fixed warning.

	* mini.c (mono_emulate_opcode): Fixed warning.

Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
	* linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
	regalloc.c, regalloc.h: specify available registers in arch-specific
	code and support floats in the regallocator (patch by Laurent Morichetti 
	<l_m@pacbell.net>)

Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: mono_thread_current() can be called only after
	mono_runtime_init(): rearrange code to not call it early on.

Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: allocate jump tables in the code mempools.

Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini.h: make sure per-thread data allocated by the jit is
	freed.

2003-08-10  Miguel de Icaza  <miguel@ximian.com>

	* cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
	12 to 16.  This fixes bug #47453.


Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.c: fixed indexed load and unsigned compares.

2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>

	* mini.c: reenabled installation of handler for
	  thread abort signal.

Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
	by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
	until it's fixed and actually useful.

Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel-long32.brg: couple more opcodes implemented.

Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
	
	* mini-sparc.c: Even more opcodes implemeted.

Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>

	* mini-sparc.c: More opcodes implemented.

Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>

	* mini-sparc.c: More opcodes implemented.

Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>

	* inssel-sparc.brg: Add some needed rules.  Direct
	copy from PPC.
	* Makefile.am: Use inssel-sparc.brg
	* exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
	an assert happy for now.

Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>

	* mini-sparc.c: Fixed compile errors.
	* exceptions-sparc.c: Same.  We now produce a mono binary 
	on sparc-linux.  Yea.

Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>

	* mini-sparc.c: Renamed registers.  Also some macro cleanups.
	* exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
	They compile, but do not work.

Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
	mini-sparc.h, tramp-sparc.c: Beginning of sparc support
	from Mark Crichton <crichton@gimp.org> and Christopher Taylor
	(ct@gentoo.org).

Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: more opcodes implemented and better support for generics.

Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* cpu-g4.md, cpu-pentium.md: updates for new instructions.
	* mini.c, mini.h: first cut at generics support: some new instructions 
	added and changed the behaviour of some of the existing ones.

2003-07-21  Miguel de Icaza  <miguel@ximian.com>

	* mini.c: Removed definition of metadata_shared mutex here.

Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini-x86.c: make vararg calls work for instance methods.

Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
	returns the arguments in a separte list, now.

Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* aot.c, mini.c: updates for array type representation changes.

Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: register function to perform jit shutdown.

Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: use a faster allocator if possible.

Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* aot.c: some cleanups and portability changes.

Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: use faster allocation for CEE_BOX if possible.

Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
	Moved inlined mempcy code to its own function so that is can be
	reused. Added an inline memset function as well (optimized initobj).
	* cpu-pentium.md, inssel-x86.brg: add and use lea_membase.

Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.

Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
	arch code can setup the cpu for CLR execution, if needed.
	We use it on x86 to set the precision of FP operations.

Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: disable some optimizations if we can guess they'll cost too
	much for a given method.

2003-06-17  Zoltan Varga  <vargaz@freemail.hu>

	* mini.h mini.c: Rework last patch based on suggestions by Paolo.
	
2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
	* mini.h mini.c mini-x86.c: Added instruction level coverage 
	info collection support.

Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
	is now implemented in the profiling API. Get rid of a couple of
	unnecessary global variables.

2003-06-15  Nick Drochak <ndrochak@gol.com>

	* basic-long.cs: tests for negative values for bigmul, and unsigned.
	* cpu-g4.md: add op_bigmul and op_bigmul_un
	* cpu_pentium.md: add op_bigmul_un
	* inssel-long32.brg: add rule for unsigned bigmul
	* mini-ops.h: define OP_BIGMUL_UN
	* mini-x86.c: THE BUG: handle (un)signed properly
	* mini.c: choose unsigned opcode if needed.
	This set of patches fixes bug #44291

2003-06-13  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (optimize_branches): improved to handle all kinds of
	conditional branches.

Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
	don't raise exceptions.

Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
	to arch-specific files.

2003-06-09  Martin Baulig  <martin@ximian.com>

	* Makefile.am (libs): Added $(LIBGC_LIBS).

Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
	and OP_ATAN (fixes bug#44293).

Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* Makefile.am, mini-x86.c: rename cpu description array to
	pentium_desc, since some compilers define the 'pentium' preprocessor
	symbol.

2003-05-28  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mini_select_instructions): add explicit branch if the
	following block is not the false target of a conditional branch -
	we need this with any optimization that reorder or remove bblocks

	* mini.c (optimize_branches): bug fixes

2003-06-06  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_method_to_ir): inline static readonly fields

	* ssa.c (fold_tree): start cfold support for long (very simple
	cases only)

	* cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)

Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel.brg: fixed memcpy (bug #44219).

2003-06-05  Dick Porter  <dick@ximian.com>

	* driver.c: Set the glib log levels to not abort if g_message
	recurses.

	g_set_prgname() has to happen before mini_init() so that the
	process handle gets the info.
	
Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* driver.c: add intrins to the default optimizations to get wider
	exposure.

Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.h: some large basic blocks will overflow a 16-bit
	integers for symbolic registers.

2003-06-04  Dietmar Maurer  <dietmar@ximian.com>

	* mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
	(mono_arch_output_basic_block): fix bug 43499 

Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: kill duplicated definition of mono_debug_format.

Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini-x86.c, arrays.cs: fixed register allocation bug.

2003-06-04  Dietmar Maurer  <dietmar@ximian.com>

	* mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1

	* mini.c (mini_get_opcode_for_method): inline IEEERemainder

2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* mini.c:
	(print_method_from_ip): also print source location information if
	available.

2003-06-02  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_find_block_region): bug fix in region code
	(mini_method_compile): enable removing unreachable code again, but
	only in methods without exception clauses.

Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
	Implemented arglist opcode and handling of TypedReference type.
	Fixed x86 call convention when a structure is returned.
	Minimal support for calling static vararg methods.

2003-05-30  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mini_method_compile):  always remove unreachable code,
	because the code in them may be inconsistent  (access to dead
	variables for example).

Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* driver.c, debug-mini.c: warning fixes.

Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* Makefile.am, jit.h, mini.h: install header for embedding mono.

Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: thread-static fields are registered in mono_class_vtable(),
	so ensure the function is called before checking for them.

2003-05-27  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (optimize_branches): fix for bug 43586

	* jit-icalls.c (mono_llmult_ovf): added an additional check for
	overflow (fixes Bug #43639)

Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, objects.cs: allow the use of stobj for primitive types.

Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: be less strict about argument checking until we support
	running the verifier.

2003-05-27  Nick Drochak <ndrochak@gol.com>

	* basic-long.cs: tests for (ulong)int * (ulong)int also
	* mini.c: use the same trick for (ulong)int * (ulong)int

2003-05-27  Nick Drochak <ndrochak@gol.com>

	* basic-long.cs: add regression test for (long)int * (long)int
	* cpu-pentium.md: add op_bigmul specification
	* inssel-long32.brg: add OP_BIGMUL rule
	* mini-ops.h: add OP_BIGMUL
	* mini-x86.c: register allocator: handle case where src1 needs to be
	in EAX.
	* mini.c: substitute special BIGMUL opcode in the tree for 
	(long)int * (long)int

Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* jit-icalls.c: call the type ctor on field access if needed.

Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
	to a method (including results of ldelema, bug#43207).

2003-05-26  Dietmar Maurer  <dietmar@ximian.com>

	* graph.c (cfg_emit_one_loop_level): loop over all blocks. use
	colors to show exception handler blocks.

	* inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
	(fix for pinvoke7.cs).

Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.h, mini.c: ensure correct initialization order for types that
	require it. Prepare for lazy compilation of jit icall wrappers.
	Provide a name for opcode emulation to reduce unneeded mallocing.

Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini-x86.c: better register restoring code and profiling
	support for tail calls.

Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.h, driver.c: prepare for leaf methods optimization.

Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: get targets of branches before converting a method.

2003-05-23  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (optimize_branches): added some experimental code (disbaled) 

2003-05-22  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (optimize_branches): fix branch to branch optimization 

	* exceptions-x86.c (mono_arch_handle_exception): bug fix.

	* mini-x86.c (mono_arch_output_basic_block): cleanup up exception code

	* inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER

	* mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
	if needed.

2003-05-21  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
	enable use of interface variables again.

	* mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
	I1 to registers because there is no simply way to sign extend 8bit
	quantities in caller saved registers on x86.

	* inssel-float.brg: set costs of some rules to 2 so
	that monobure always select the arch. specific ones if supplied,
	regardless of the order we pass the files to monoburg.

Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini-x86.c: since the magic trampoline for jumps
	can't patch the code directly, we do it as soon as the
	method gets compiled.

Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini-x86.c, mini.h: introduce a new patching method
	to support CEE_JMP and tail calls.
	* mini.c: obey tail.call. Don't precompile methods target
	of CEE_JMP.
	* tramp-x86.c: new trampoline code to handle methods
	reached through a jump.

2003-05-20  Dietmar Maurer  <dietmar@ximian.com>

	* mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
	bit values to registers

2003-05-19  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_compile_get_interface_var): share interface
	variables if possible.

2003-05-16  Martin Baulig  <martin@ximian.com>

	* debug-mini.c (mono_init_debugger): New function to initialize
	the debugger.  This is not in the debugger since it needs to
	access some of mini's internals.

2003-05-16  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_method_to_ir): inlining fixes/cleanups

Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, mini-opts.h, inssel.brg: inline small memcpy
	for value type handling.

2003-05-16  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
	(mono_method_check_inlining): enable inlining of all kinds of wrappers

2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>

	* mini.c: fixed little bug in CEE_NEWOBJ case when calling
	  the constructor through a proxy.

Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* jit-icalls.c, inssel.brg: fixes to array element address
	calculations.

2003-05-15  Dietmar Maurer  <dietmar@ximian.com>

	* mini-x86.c (is_regsize_var): allocate pointer to registers

Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* driver.c: fixed typo, added intrins to the set of optimizations
	tested with regressions.

Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
	* jit-icalls.c, exceptions.cs: fixed index out of range checks, added
	test case.

2003-05-14  Dietmar Maurer  <dietmar@ximian.com>

	* inssel.brg: remove some common pop instructions without side effects

Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel-x86.brg: fixed thinko in int to double conversions.

Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, jit-icalls.c: added runtime thread-static variable support.

Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel-long32.brg: two more missing instructions.

2003-05-13  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_emit_call_args): set the cil_code for all arguments
	if not already set.

2003-05-12  Zoltan Varga  <vargaz@freemail.hu>

	* mini-x86.c (mono_arch_output_basic_block): Handle negative zero
	correctly.

	* basic-float.cs: Added tests for negative zero.

Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel-long32.brg, basic-long.cs, exceptions.cs: handle
	a couple of missing operations for long casts, with test cases.

2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.

2003-05-09  Dietmar Maurer  <dietmar@ximian.com>

	* mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
	code size estimation.

2003-05-08  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_jit_create_remoting_trampoline): make it work with
	abstract methods (fix bug 42542)

	* aot.c: add ability to handle array types
	
2003-05-08  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c: Call the _specific versions of the object allocation
	functions if possible.

Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* driver.c: call setlocale ().

Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
	windows build.

2003-05-05  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)

	* exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
	wrappers (fix bug 42122)

2003-05-04  Martin Baulig  <martin@ximian.com>

	* mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.

	* driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
	s/mini_set_defaults/mono_set_defaults/g.

2003-05-04  Martin Baulig  <martin@ximian.com>

	* driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.

Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
	(reported by Don Roberts).

Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: temporarily work around two bugs for this release.

Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* Makefile.am: avoid linking libmono with GMODULE_LIBS, because
	that contains -export-dynamic and it makes using the ld script
	useless.
	* mini.h, main.c, driver.c: s/mini_main/mono_main/g.

Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.h, mini-x86.c, driver.c: disable optimizations not available on a
	specific cpu.

Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: make sure leave calls all the needed finally blocks,
	even when the target jumps out of multiple exception clauses.

Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* ldscript, Makefile.am: add linker script to reduce the number of
	exported symbols (should also fix the issues with libwine defining
	some of the same symbols in io-layer).

2003-05-01  Zoltan Varga  <vargaz@freemail.hu>

	* driver.c (mini_main): Avoid assertion when no file name is given on 
	the command line.

Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* driver.c: added --version/-V command line option.
	Added the inline optimization in the regression tests.

Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c, basic-calls.cs: when inlining, save arguments to locals according 
	to the type in the method signature (fixes bug#42134).

Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: when inlining, check this is not null only when needed (bug #42135).

Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.

2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* driver.c: fixed bug #42100.

2003-04-29  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_method_to_ir): UNBOX need to CAST objects first

Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: moved most of the code required to do inlining to its own
	function so it can be reused. Inline also ctors if appropriate.

2003-04-28  Zoltan Varga  <vargaz@freemail.hu>

	* Makefile.am: Link with -export-dynamic so shared libs loaded by
	the runtime can call mono API functions.

2003-04-27  Martin Baulig  <martin@ximian.com>

	* debug-mini.c (mono_debug_init_method): Added
	`guint32 breakpoint_id' argument; if the method has a breakpoint,
	send a notification to the debugger.

	* mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
	running in the Mono Debugger, just pass the breakpoint number to
	mono_debug_init_method().

	* tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.

Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: allow some more unsafe compares.

Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini-x86.c, Makefile.am: make distcheck works (partially from
	a patch by Richard Lee <r.h.lee@attbi.com>).
	* regset.c, regset.h: removed, they are unused.

2003-04-25  Dick Porter  <dick@ximian.com>

	* driver.c: Usage reports the name as 'mono' not 'mini'
	* exceptions-x86.c: Build and run on freebsd

Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* Makefile.am: install the program with the 'mono' name and
	the library as libmono instead of mini and libmini.

Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* driver.c: provide the APIs for the embedding interface of the old jit.

2003-04-23  Dietmar Maurer  <dietmar@ximian.com>

	* jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)

2003-04-23  Martin Baulig  <martin@ximian.com>

	* tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.

	* driver.c: Added `--debug' command line argument to enable
	debugging support.

2003-04-23  Martin Baulig  <martin@ximian.com>

	* debug.[ch]: Removed.  The code is now in
	../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].

	* debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
	last six months.

2003-04-22  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)

2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* mini.c:
	(mini_cleanup): moved mono_runtime_cleanup call after the call to
	mono_domain_finalize.
	(mini_method_compile): use mono_method_profile* if the the option is
	enabled.

2003-04-17  Zoltan Varga  <vargaz@freemail.hu>

	* tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
	methods with their wrapper.

	* tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
	methods with their wrapper.

	* jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
	their wrapper.

	* mini.c (mono_method_to_ir): Subsitute synchronized methods with their
	wrapper.

	* mini.c (mono_method_check_inlining): Avoid inlining synchronized
	methods.

2003-04-17  Dietmar Maurer  <dietmar@ximian.com>

	* exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252

2003-04-16  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
	of the mempool. This is slightly faster and uses less memory

Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: avoid O(n) allocation for variables.

Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: handle items on the stack after inlining methods.

Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: make the method->opcode optimization dependent
	on MONO_OPT_INSTRINS and do it lazily.

Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* driver.c: print overall results at the end of regression run.

Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel.brg: don't overwrite symbolic registers.

Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel-x86.brg: fix conversion from long to float.

2003-04-11  Dietmar Maurer  <dietmar@ximian.com>

	* mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)

2003-04-10  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.

	* driver.c: Added --print-vtable option as in the old JIT.

Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel-long32.brg, exceptions.cs: fix conversions from long, too.

Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* inssel.brg, basic.cs: fixed checked conversions to byte and short.

2003-04-09  Zoltan Varga  <vargaz@freemail.hu>

	* mini.c regalloc.c regalloc.h: Fix memory leak.

2003-04-09  Dietmar Maurer  <dietmar@ximian.com>

	* aot.c (mono_aot_get_method): register all used strings

Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* mini.c: always intern strings references with ldstr at compile time.

Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* Makefile.am: add BUILT_SOURCES.

Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>

	* driver.c: give a better error message when the assembly to execute
	doesn't have an entry point.

2003-04-07  Dietmar Maurer  <dietmar@ximian.com>

	* Makefile.am: added hack for automake

	* mono/mini/mini.c (mono_save_args): always copy arguments to keep
	correct sematics.

	* mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls

22003-04-07  Martin Baulig  <martin@ximian.com>

	* Makefile.am: Added Makefile.am.

	* debugger-main.c: Removed, this is now in the debugger where it
	belongs.

	* mini.pc.in: Call this package `mini' for the moment.




