# HG changeset patch # User Thomas Wuerthinger # Date 1363698831 -3600 # Node ID 25691fcb505a408f350330aeafb15958f9d1cb52 # Parent 5981ea5996e8d86304800efddfb904c85b8e0f3f Transmit deoptimization reason in thread local instead of scratch register. diff -r 5981ea5996e8 -r 25691fcb505a src/cpu/x86/vm/graalRuntime_x86.cpp --- a/src/cpu/x86/vm/graalRuntime_x86.cpp Tue Mar 19 11:35:25 2013 +0100 +++ b/src/cpu/x86/vm/graalRuntime_x86.cpp Tue Mar 19 14:13:51 2013 +0100 @@ -100,7 +100,7 @@ restore_live_registers(this, false); movptr(Address(thread, Thread::pending_exception_offset()), NULL_WORD); leave(); - movl(rscratch1, Deoptimization::make_trap_request(Deoptimization::Reason_constraint, Deoptimization::Action_reinterpret)); + movl(Address(thread, ThreadShadow::pending_deoptimization_offset()), Deoptimization::make_trap_request(Deoptimization::Reason_constraint, Deoptimization::Action_reinterpret)); jump(RuntimeAddress(SharedRuntime::deopt_blob()->uncommon_trap())); bind(L); } diff -r 5981ea5996e8 -r 25691fcb505a src/cpu/x86/vm/sharedRuntime_x86_64.cpp --- a/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Tue Mar 19 11:35:25 2013 +0100 +++ b/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Tue Mar 19 14:13:51 2013 +0100 @@ -3419,7 +3419,7 @@ __ set_last_Java_frame(noreg, noreg, NULL); __ movl(c_rarg1, Address(r15_thread, in_bytes(ThreadShadow::pending_deoptimization_offset()))); - __ movl(Address(r15_thread, in_bytes(ThreadShadow::pending_deoptimization_offset())), 0); + __ movl(Address(r15_thread, in_bytes(ThreadShadow::pending_deoptimization_offset())), -1); __ movl(r14, (int32_t)Deoptimization::Unpack_reexecute); __ mov(c_rarg0, r15_thread);