--- old/src/cpu/x86/vm/macroAssembler_x86.cpp 2017-04-10 17:29:57.228476700 -0700 +++ new/src/cpu/x86/vm/macroAssembler_x86.cpp 2017-04-10 17:29:56.725476700 -0700 @@ -763,11 +763,17 @@ // Always clear the pc because it could have been set by make_walkable() movptr(Address(r15_thread, JavaThread::last_Java_pc_offset()), NULL_WORD); + if (VM_Version::supports_avx()) { + vzeroupper(); + } } void MacroAssembler::set_last_Java_frame(Register last_java_sp, Register last_java_fp, address last_java_pc) { + if (VM_Version::supports_avx()) { + vzeroupper(); + } // determine last_java_sp register if (!last_java_sp->is_valid()) { last_java_sp = rsp; @@ -3672,6 +3678,9 @@ // Always clear the pc because it could have been set by make_walkable() movptr(Address(java_thread, JavaThread::last_Java_pc_offset()), NULL_WORD); + if (VM_Version::supports_avx()) { + vzeroupper(); + } } void MacroAssembler::restore_rax(Register tmp) { @@ -3714,6 +3723,9 @@ Register last_java_sp, Register last_java_fp, address last_java_pc) { + if (VM_Version::supports_avx()) { + vzeroupper(); + } // determine java_thread register if (!java_thread->is_valid()) { java_thread = rdi;