--- old/src/cpu/x86/vm/stubGenerator_x86_64.cpp Tue Aug 25 01:30:27 2015 +++ new/src/cpu/x86/vm/stubGenerator_x86_64.cpp Tue Aug 25 01:30:25 2015 @@ -367,16 +367,20 @@ #ifdef ASSERT // verify that threads correspond { - Label L, S; + Label L1, L2, L3; __ cmpptr(r15_thread, thread); - __ jcc(Assembler::notEqual, S); + __ jcc(Assembler::equal, L1); + __ stop("StubRoutines::call_stub: r15_thread is corrupted"); + __ bind(L1); __ get_thread(rbx); + __ cmpptr(r15_thread, thread); + __ jcc(Assembler::equal, L2); + __ stop("StubRoutines::call_stub: r15_thread is modified by call"); + __ bind(L2); __ cmpptr(r15_thread, rbx); - __ jcc(Assembler::equal, L); - __ bind(S); - __ jcc(Assembler::equal, L); + __ jcc(Assembler::equal, L3); __ stop("StubRoutines::call_stub: threads must correspond"); - __ bind(L); + __ bind(L3); } #endif @@ -450,15 +454,20 @@ #ifdef ASSERT // verify that threads correspond { - Label L, S; + Label L1, L2, L3; __ cmpptr(r15_thread, thread); - __ jcc(Assembler::notEqual, S); + __ jcc(Assembler::equal, L1); + __ stop("StubRoutines::catch_exception: r15_thread is corrupted"); + __ bind(L1); __ get_thread(rbx); + __ cmpptr(r15_thread, thread); + __ jcc(Assembler::equal, L2); + __ stop("StubRoutines::catch_exception: r15_thread is modified by call"); + __ bind(L2); __ cmpptr(r15_thread, rbx); - __ jcc(Assembler::equal, L); - __ bind(S); + __ jcc(Assembler::equal, L3); __ stop("StubRoutines::catch_exception: threads must correspond"); - __ bind(L); + __ bind(L3); } #endif