# HG changeset patch # User Thomas Wuerthinger # Date 1288798838 -3600 # Node ID f8ab19e5acae2b3139d57ddfb4557e7d496c89ca # Parent 4d1d3bd140f9b72f9bc375fc057052912c96508d Fix oop relocation for static stub calls. diff -r 4d1d3bd140f9 -r f8ab19e5acae c1x4hotspotsrc/hotspot/hotspot SciMark.launch --- a/c1x4hotspotsrc/hotspot/hotspot SciMark.launch Mon Nov 01 23:50:37 2010 +0100 +++ b/c1x4hotspotsrc/hotspot/hotspot SciMark.launch Wed Nov 03 16:40:38 2010 +0100 @@ -1,24 +1,48 @@ + + + + + + + + + + + + + + + - + + + - + + - + - - + + + + + + + + @@ -26,5 +50,8 @@ + + + diff -r 4d1d3bd140f9 -r f8ab19e5acae domake --- a/domake Mon Nov 01 23:50:37 2010 +0100 +++ b/domake Wed Nov 03 16:40:38 2010 +0100 @@ -19,6 +19,7 @@ pushd $(dirname "$me")/make ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk/ LANG=C ARCH_DATA_MODEL=64 HOTSPOT_BUILD_JOBS=2 make jvmg1 +echo "Copying binaries to JRE7 directory $JRE7" cp ../build/linux/linux_amd64_compiler1/jvmg/libjvm.so $JRE7/lib/amd64/client cp ../build/linux/linux_amd64_compiler1/jvmg/libjsig.so $JRE7/lib/amd64/client popd diff -r 4d1d3bd140f9 -r f8ab19e5acae src/share/vm/c1x/c1x_CodeInstaller.cpp --- a/src/share/vm/c1x/c1x_CodeInstaller.cpp Mon Nov 01 23:50:37 2010 +0100 +++ b/src/share/vm/c1x/c1x_CodeInstaller.cpp Wed Nov 03 16:40:38 2010 +0100 @@ -591,6 +591,7 @@ oop ref = ((oop*) references->base(T_OBJECT))[0]; address call_pc = _instructions->start() + CiTargetMethod_Site::pcOffset(ref); _instructions->relocate(instruction, static_stub_Relocation::spec(call_pc)); + _instructions->relocate(instruction, oop_Relocation::spec_for_immediate(), Assembler::imm_operand); break; } case MARK_INVOKE_INVALID: diff -r 4d1d3bd140f9 -r f8ab19e5acae src/share/vm/c1x/c1x_VMExits.hpp --- a/src/share/vm/c1x/c1x_VMExits.hpp Mon Nov 01 23:50:37 2010 +0100 +++ b/src/share/vm/c1x/c1x_VMExits.hpp Wed Nov 03 16:40:38 2010 +0100 @@ -80,8 +80,10 @@ }; inline void check_pending_exception(const char* message) { - if (Thread::current()->has_pending_exception()) { - Thread::current()->pending_exception()->print(); + Thread* THREAD = Thread::current(); + if (THREAD->has_pending_exception()) { + java_lang_Throwable::print(PENDING_EXCEPTION, tty); + java_lang_Throwable::print_stack_trace(PENDING_EXCEPTION, tty); fatal(message); } } diff -r 4d1d3bd140f9 -r f8ab19e5acae src/share/vm/runtime/sharedRuntime.cpp --- a/src/share/vm/runtime/sharedRuntime.cpp Mon Nov 01 23:50:37 2010 +0100 +++ b/src/share/vm/runtime/sharedRuntime.cpp Wed Nov 03 16:40:38 2010 +0100 @@ -612,7 +612,6 @@ _implicit_null_throws++; #endif if (UseC1X) { - tty->print("implicit null at %08x%08x", ((long)pc) >> 32, pc); target_pc = Runtime1::entry_for(Runtime1::c1x_global_implicit_null_id); } else { target_pc = nm->continuation_for_implicit_exception(pc);