< prev index next >

src/cpu/x86/vm/stubGenerator_x86_64.cpp

Print this page

        

*** 400,409 **** --- 400,412 ---- // restore rsp __ addptr(rsp, -rsp_after_call_off * wordSize); // return + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ pop(rbp); __ ret(0); // handle return types different from T_INT __ BIND(is_long);
*** 1552,1561 **** --- 1555,1567 ---- __ BIND(L_exit); restore_arg_regs(); inc_counter_np(SharedRuntime::_jbyte_array_copy_ctr); // Update counter after rscratch1 is free __ xorptr(rax, rax); // return 0 + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); // Copy in multi-bytes chunks copy_bytes_forward(end_from, end_to, qword_count, rax, L_copy_bytes, L_copy_8_bytes);
*** 1641,1659 **** --- 1647,1671 ---- __ jcc(Assembler::notZero, L_copy_8_bytes); restore_arg_regs(); inc_counter_np(SharedRuntime::_jbyte_array_copy_ctr); // Update counter after rscratch1 is free __ xorptr(rax, rax); // return 0 + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); // Copy in multi-bytes chunks copy_bytes_backward(from, to, qword_count, rax, L_copy_bytes, L_copy_8_bytes); restore_arg_regs(); inc_counter_np(SharedRuntime::_jbyte_array_copy_ctr); // Update counter after rscratch1 is free __ xorptr(rax, rax); // return 0 + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); return start; }
*** 1744,1753 **** --- 1756,1768 ---- __ BIND(L_exit); restore_arg_regs(); inc_counter_np(SharedRuntime::_jshort_array_copy_ctr); // Update counter after rscratch1 is free __ xorptr(rax, rax); // return 0 + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); // Copy in multi-bytes chunks copy_bytes_forward(end_from, end_to, qword_count, rax, L_copy_bytes, L_copy_8_bytes);
*** 1769,1778 **** --- 1784,1796 ---- __ enter(); // required for proper stackwalking of RuntimeStub frame __ generate_fill(t, aligned, to, value, count, rax, xmm0); + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); return start; }
*** 1845,1863 **** --- 1863,1887 ---- __ jcc(Assembler::notZero, L_copy_8_bytes); restore_arg_regs(); inc_counter_np(SharedRuntime::_jshort_array_copy_ctr); // Update counter after rscratch1 is free __ xorptr(rax, rax); // return 0 + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); // Copy in multi-bytes chunks copy_bytes_backward(from, to, qword_count, rax, L_copy_bytes, L_copy_8_bytes); restore_arg_regs(); inc_counter_np(SharedRuntime::_jshort_array_copy_ctr); // Update counter after rscratch1 is free __ xorptr(rax, rax); // return 0 + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); return start; }
*** 1943,1952 **** --- 1967,1979 ---- if (is_oop) { gen_write_ref_array_post_barrier(saved_to, dword_count, rax); } restore_arg_regs(); inc_counter_np(SharedRuntime::_jint_array_copy_ctr); // Update counter after rscratch1 is free + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ xorptr(rax, rax); // return 0 __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); // Copy in multi-bytes chunks
*** 2028,2037 **** --- 2055,2067 ---- __ jmp(L_exit); } restore_arg_regs(); inc_counter_np(SharedRuntime::_jint_array_copy_ctr); // Update counter after rscratch1 is free __ xorptr(rax, rax); // return 0 + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); // Copy in multi-bytes chunks copy_bytes_backward(from, to, qword_count, rax, L_copy_bytes, L_copy_8_bytes);
*** 2041,2050 **** --- 2071,2083 ---- gen_write_ref_array_post_barrier(to, dword_count, rax); } restore_arg_regs(); inc_counter_np(SharedRuntime::_jint_array_copy_ctr); // Update counter after rscratch1 is free __ xorptr(rax, rax); // return 0 + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); return start; }
*** 2118,2127 **** --- 2151,2163 ---- __ jmp(L_exit); } else { restore_arg_regs(); inc_counter_np(SharedRuntime::_jlong_array_copy_ctr); // Update counter after rscratch1 is free __ xorptr(rax, rax); // return 0 + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); } // Copy in multi-bytes chunks
*** 2135,2144 **** --- 2171,2183 ---- if (is_oop) { inc_counter_np(SharedRuntime::_oop_array_copy_ctr); // Update counter after rscratch1 is free } else { inc_counter_np(SharedRuntime::_jlong_array_copy_ctr); // Update counter after rscratch1 is free } + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ xorptr(rax, rax); // return 0 __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); return start;
*** 2201,2210 **** --- 2240,2252 ---- __ jmp(L_exit); } else { restore_arg_regs(); inc_counter_np(SharedRuntime::_jlong_array_copy_ctr); // Update counter after rscratch1 is free __ xorptr(rax, rax); // return 0 + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); } // Copy in multi-bytes chunks
*** 2218,2227 **** --- 2260,2272 ---- if (is_oop) { inc_counter_np(SharedRuntime::_oop_array_copy_ctr); // Update counter after rscratch1 is free } else { inc_counter_np(SharedRuntime::_jlong_array_copy_ctr); // Update counter after rscratch1 is free } + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ xorptr(rax, rax); // return 0 __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); return start;
*** 3773,3782 **** --- 3818,3830 ---- __ sha256_AVX2(msg, state0, state1, msgtmp0, msgtmp1, msgtmp2, msgtmp3, msgtmp4, buf, state, ofs, limit, rsp, multi_block, shuf_mask); } __ addptr(rsp, 4 * wordSize); + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); __ ret(0); return start; }
*** 3806,3815 **** --- 3854,3867 ---- __ enter(); __ sha512_AVX2(msg, state0, state1, msgtmp0, msgtmp1, msgtmp2, msgtmp3, msgtmp4, buf, state, ofs, limit, rsp, multi_block, shuf_mask); + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } + __ leave(); __ ret(0); return start; }
*** 4279,4289 **** __ jmp(L_ghash_loop); __ BIND(L_exit); __ pshufb(xmm_temp6, xmm_temp10); // Byte swap 16-byte result __ movdqu(Address(state, 0), xmm_temp6); // store the result - __ leave(); __ ret(0); return start; } --- 4331,4340 ----
*** 4319,4328 **** --- 4370,4382 ---- __ enter(); // required for proper stackwalking of RuntimeStub frame __ kernel_crc32(crc, buf, len, table, tmp); __ movl(rax, crc); + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); return start; }
*** 4378,4387 **** --- 4432,4444 ---- __ movl(rax, crc); #ifdef _WIN64 __ pop(z); __ pop(y); #endif + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); return start; }
*** 4491,4500 **** --- 4548,4560 ---- const XMMRegister vec0 = xmm0; const XMMRegister vec1 = xmm1; const XMMRegister vec2 = xmm2; __ vectorized_mismatch(obja, objb, length, scale, result, tmp1, tmp2, vec0, vec1, vec2); + if (VM_Version::supports_avx()) { + __ vzeroupper(); + } __ leave(); __ ret(0); return start;
< prev index next >