< prev index next >
src/hotspot/cpu/x86/methodHandles_x86.cpp
Print this page
*** 602,619 ****
__ mov(rbx, rsp); // for retreiving saved_regs
// Note: saved_regs must be in the entered frame for the
// robust stack walking implemented in trace_method_handle_stub.
// save FP result, valid at some call sites (adapter_opt_return_float, ...)
! __ increment(rsp, -2 * wordSize);
if (UseSSE >= 2) {
__ movdbl(Address(rsp, 0), xmm0);
} else if (UseSSE == 1) {
__ movflt(Address(rsp, 0), xmm0);
} else {
__ fst_d(Address(rsp, 0));
}
// Incoming state:
// rcx: method handle
//
// To avoid calling convention issues, build a record on the stack
--- 602,623 ----
__ mov(rbx, rsp); // for retreiving saved_regs
// Note: saved_regs must be in the entered frame for the
// robust stack walking implemented in trace_method_handle_stub.
// save FP result, valid at some call sites (adapter_opt_return_float, ...)
! __ decrement(rsp, 2 * wordSize);
! #ifdef _LP64
! __ movdbl(Address(rsp, 0), xmm0);
! #else
if (UseSSE >= 2) {
__ movdbl(Address(rsp, 0), xmm0);
} else if (UseSSE == 1) {
__ movflt(Address(rsp, 0), xmm0);
} else {
__ fst_d(Address(rsp, 0));
}
+ #endif // LP64
// Incoming state:
// rcx: method handle
//
// To avoid calling convention issues, build a record on the stack
*** 624,640 ****
--- 628,648 ----
__ push(rcx); // slot for adaptername
__ movptr(Address(rsp, 0), (intptr_t) adaptername);
__ super_call_VM_leaf(CAST_FROM_FN_PTR(address, trace_method_handle_stub_wrapper), rsp);
__ increment(rsp, sizeof(MethodHandleStubArguments));
+ #ifdef _LP64
+ __ movdbl(xmm0, Address(rsp, 0));
+ #else
if (UseSSE >= 2) {
__ movdbl(xmm0, Address(rsp, 0));
} else if (UseSSE == 1) {
__ movflt(xmm0, Address(rsp, 0));
} else {
__ fld_d(Address(rsp, 0));
}
+ #endif // LP64
__ increment(rsp, 2 * wordSize);
__ popa();
__ leave();
BLOCK_COMMENT("} trace_method_handle");
< prev index next >