Mercurial > hg > openjdk6-mips
changeset 8:fc40477e29ae
Fix the failure of TruncatedClass test in regression.
When jvm passes more than two obj arguments to a native method, the bug occurs.
author | Ao Qi <aoqi@loongson.cn> |
---|---|
date | Tue, 12 Oct 2010 18:28:27 +0800 |
parents | 3053c0d361b6 |
children | 3713353e23db |
files | hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp hotspot/src/share/vm/memory/defNewGeneration.cpp |
diffstat | 2 files changed, 2 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp Sat Oct 09 18:14:02 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp Tue Oct 12 18:28:27 2010 +0800 @@ -1643,12 +1643,13 @@ // Oop is in an a register we must store it to the space we reserve // on the stack for oop_handles const Register rOop = src.first()->as_Register(); + assert( (rOop->encoding() >= A0->encoding()) && (rOop->encoding() <= T0->encoding()),"wrong register"); // const Register rHandle = eax; const Register rHandle = V0; // int oop_slot = (rOop == ecx ? 0 : 1) * VMRegImpl::slots_per_word // + oop_handle_offset; //FIXME , refer to java_calling_convertion - int oop_slot = (rOop == T0 ? 0 : 1) * VMRegImpl::slots_per_word + oop_handle_offset; + int oop_slot = (rOop == T0 ? 0 : (rOop->encoding() - V1->encoding())) * VMRegImpl::slots_per_word + oop_handle_offset; int offset = oop_slot*VMRegImpl::stack_slot_size; Label skip; // __ movl(Address(esp, offset), rOop);
--- a/hotspot/src/share/vm/memory/defNewGeneration.cpp Sat Oct 09 18:14:02 2010 +0800 +++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp Tue Oct 12 18:28:27 2010 +0800 @@ -902,7 +902,6 @@ } void DefNewGeneration::verify(bool allow_dirty) { - print_on(tty); eden()->verify(allow_dirty); from()->verify(allow_dirty); to()->verify(allow_dirty);