< prev index next >
src/hotspot/cpu/x86/macroAssembler_x86.cpp
Print this page
rev 50307 : [mq]: cont
*** 991,1000 ****
--- 991,1020 ----
if (target % modulus != 0) {
nop(modulus - (target % modulus));
}
}
+ void MacroAssembler::push_f(XMMRegister r) {
+ subptr(rsp, wordSize);
+ movflt(Address(rsp, 0), r);
+ }
+
+ void MacroAssembler::pop_f(XMMRegister r) {
+ movflt(r, Address(rsp, 0));
+ addptr(rsp, wordSize);
+ }
+
+ void MacroAssembler::push_d(XMMRegister r) {
+ subptr(rsp, 2 * wordSize);
+ movdbl(Address(rsp, 0), r);
+ }
+
+ void MacroAssembler::pop_d(XMMRegister r) {
+ movdbl(r, Address(rsp, 0));
+ addptr(rsp, 2 * Interpreter::stackElementSize);
+ }
+
void MacroAssembler::andpd(XMMRegister dst, AddressLiteral src) {
// Used in sign-masking with aligned address.
assert((UseAVX > 0) || (((intptr_t)src.target() & 15) == 0), "SSE mode requires address alignment 16 bytes");
if (reachable(src)) {
Assembler::andpd(dst, as_Address(src));
*** 3684,3693 ****
--- 3704,3724 ----
fxrstor(Address(rsp, 0));
#endif
addptr(rsp, FPUStateSizeInWords * wordSize);
}
+ #ifdef ASSERT
+ void MacroAssembler::stop_if_in_cont(Register cont, const char* name) {
+ Label no_cont;
+ movptr(cont, Address(r15_thread, in_bytes(JavaThread::continuation_offset())));
+ testl(cont, cont);
+ jcc(Assembler::zero, no_cont);
+ stop(name);
+ bind(no_cont);
+ }
+ #endif
+
void MacroAssembler::pop_IU_state() {
popa();
LP64_ONLY(addq(rsp, 8));
popf();
}
< prev index next >