9712 // Resotres back legacy GPRs state from stack.
9713 void MacroAssembler::restore_legacy_gprs() {
9714 movq(r15, Address(rsp, 0));
9715 movq(r14, Address(rsp, wordSize));
9716 movq(r13, Address(rsp, 2 * wordSize));
9717 movq(r12, Address(rsp, 3 * wordSize));
9718 movq(r11, Address(rsp, 4 * wordSize));
9719 movq(r10, Address(rsp, 5 * wordSize));
9720 movq(r9, Address(rsp, 6 * wordSize));
9721 movq(r8, Address(rsp, 7 * wordSize));
9722 movq(rdi, Address(rsp, 8 * wordSize));
9723 movq(rsi, Address(rsp, 9 * wordSize));
9724 movq(rbp, Address(rsp, 10 * wordSize));
9725 movq(rbx, Address(rsp, 12 * wordSize));
9726 movq(rdx, Address(rsp, 13 * wordSize));
9727 movq(rcx, Address(rsp, 14 * wordSize));
9728 movq(rax, Address(rsp, 15 * wordSize));
9729 addq(rsp, 16 * wordSize);
9730 }
9731
9732 void MacroAssembler::setcc(Assembler::Condition comparison, Register dst) {
9733 if (VM_Version::supports_apx_f()) {
9734 esetzucc(comparison, dst);
9735 } else {
9736 setb(comparison, dst);
9737 movzbl(dst, dst);
9738 }
9739 }
|
9712 // Resotres back legacy GPRs state from stack.
9713 void MacroAssembler::restore_legacy_gprs() {
9714 movq(r15, Address(rsp, 0));
9715 movq(r14, Address(rsp, wordSize));
9716 movq(r13, Address(rsp, 2 * wordSize));
9717 movq(r12, Address(rsp, 3 * wordSize));
9718 movq(r11, Address(rsp, 4 * wordSize));
9719 movq(r10, Address(rsp, 5 * wordSize));
9720 movq(r9, Address(rsp, 6 * wordSize));
9721 movq(r8, Address(rsp, 7 * wordSize));
9722 movq(rdi, Address(rsp, 8 * wordSize));
9723 movq(rsi, Address(rsp, 9 * wordSize));
9724 movq(rbp, Address(rsp, 10 * wordSize));
9725 movq(rbx, Address(rsp, 12 * wordSize));
9726 movq(rdx, Address(rsp, 13 * wordSize));
9727 movq(rcx, Address(rsp, 14 * wordSize));
9728 movq(rax, Address(rsp, 15 * wordSize));
9729 addq(rsp, 16 * wordSize);
9730 }
9731
9732 void MacroAssembler::load_aotrc_address(Register reg, address a) {
9733 #if INCLUDE_CDS
9734 assert(AOTRuntimeConstants::contains(a), "address out of range for data area");
9735 if (AOTCodeCache::is_on_for_dump()) {
9736 // all aotrc field addresses should be registered in the AOTCodeCache address table
9737 lea(reg, ExternalAddress(a));
9738 } else {
9739 mov64(reg, (uint64_t)a);
9740 }
9741 #else
9742 ShouldNotReachHere();
9743 #endif
9744 }
9745
9746 void MacroAssembler::setcc(Assembler::Condition comparison, Register dst) {
9747 if (VM_Version::supports_apx_f()) {
9748 esetzucc(comparison, dst);
9749 } else {
9750 setb(comparison, dst);
9751 movzbl(dst, dst);
9752 }
9753 }
|