< prev index next >

src/cpu/x86/vm/macroAssembler_x86.cpp

Print this page

        

*** 761,775 **** --- 761,777 ---- movptr(Address(r15_thread, JavaThread::last_Java_fp_offset()), NULL_WORD); } // Always clear the pc because it could have been set by make_walkable() movptr(Address(r15_thread, JavaThread::last_Java_pc_offset()), NULL_WORD); + vzeroupper(); } void MacroAssembler::set_last_Java_frame(Register last_java_sp, Register last_java_fp, address last_java_pc) { + vzeroupper(); // determine last_java_sp register if (!last_java_sp->is_valid()) { last_java_sp = rsp; }
*** 3670,3679 **** --- 3672,3682 ---- } // Always clear the pc because it could have been set by make_walkable() movptr(Address(java_thread, JavaThread::last_Java_pc_offset()), NULL_WORD); + vzeroupper(); } void MacroAssembler::restore_rax(Register tmp) { if (tmp == noreg) pop(rax); else if (tmp != rax) mov(rax, tmp);
*** 3712,3721 **** --- 3715,3725 ---- // has to be reset to 0. This is required to allow proper stack traversal. void MacroAssembler::set_last_Java_frame(Register java_thread, Register last_java_sp, Register last_java_fp, address last_java_pc) { + vzeroupper(); // determine java_thread register if (!java_thread->is_valid()) { java_thread = rdi; get_thread(java_thread); }
*** 6485,6498 **** ldmxcsr(ExternalAddress(StubRoutines::addr_mxcsr_std())); } else if (CheckJNICalls) { call(RuntimeAddress(StubRoutines::x86::verify_mxcsr_entry())); } } - if (VM_Version::supports_avx()) { // Clear upper bits of YMM registers to avoid SSE <-> AVX transition penalty. vzeroupper(); - } #ifndef _LP64 // Either restore the x87 floating pointer control word after returning // from the JNI call or verify that it wasn't changed. if (CheckJNICalls) { --- 6489,6500 ----
< prev index next >