< prev index next >

src/cpu/x86/vm/stubGenerator_x86_64.cpp

Print this page

        

*** 365,384 **** __ lea(rsp, rsp_after_call); #ifdef ASSERT // verify that threads correspond { ! Label L, S; __ cmpptr(r15_thread, thread); ! __ jcc(Assembler::notEqual, S); __ get_thread(rbx); __ cmpptr(r15_thread, rbx); ! __ jcc(Assembler::equal, L); ! __ bind(S); ! __ jcc(Assembler::equal, L); __ stop("StubRoutines::call_stub: threads must correspond"); ! __ bind(L); } #endif // restore regs belonging to calling function #ifdef _WIN64 --- 365,388 ---- __ lea(rsp, rsp_after_call); #ifdef ASSERT // verify that threads correspond { ! Label L1, L2, L3; __ cmpptr(r15_thread, thread); ! __ 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, L3); __ stop("StubRoutines::call_stub: threads must correspond"); ! __ bind(L3); } #endif // restore regs belonging to calling function #ifdef _WIN64
*** 448,466 **** const Address thread (rbp, thread_off * wordSize); #ifdef ASSERT // verify that threads correspond { ! Label L, S; __ cmpptr(r15_thread, thread); ! __ jcc(Assembler::notEqual, S); __ get_thread(rbx); __ cmpptr(r15_thread, rbx); ! __ jcc(Assembler::equal, L); ! __ bind(S); __ stop("StubRoutines::catch_exception: threads must correspond"); ! __ bind(L); } #endif // set pending exception __ verify_oop(rax); --- 452,475 ---- const Address thread (rbp, thread_off * wordSize); #ifdef ASSERT // verify that threads correspond { ! Label L1, L2, L3; __ cmpptr(r15_thread, thread); ! __ 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, L3); __ stop("StubRoutines::catch_exception: threads must correspond"); ! __ bind(L3); } #endif // set pending exception __ verify_oop(rax);
< prev index next >