< prev index next >
src/hotspot/cpu/x86/frame_x86.cpp
Print this page
*** 715,727 ****
intptr_t* frame::repair_sender_sp(intptr_t* sender_sp, intptr_t** saved_fp_addr) const {
CompiledMethod* cm = _cb->as_compiled_method_or_null();
if (cm != NULL && cm->needs_stack_repair()) {
// The stack increment resides just below the saved rbp on the stack
// and does not account for the return address.
! intptr_t* sp_inc_addr = (intptr_t*) (saved_fp_addr - 1);
! int sp_inc = (*sp_inc_addr) / wordSize;
! int real_frame_size = sp_inc;
if (!cm->is_compiled_by_c1()) {
// Add size of return address (C1 already includes the RA size)
real_frame_size += 1;
}
assert(real_frame_size >= _cb->frame_size(), "invalid frame size");
--- 715,726 ----
intptr_t* frame::repair_sender_sp(intptr_t* sender_sp, intptr_t** saved_fp_addr) const {
CompiledMethod* cm = _cb->as_compiled_method_or_null();
if (cm != NULL && cm->needs_stack_repair()) {
// The stack increment resides just below the saved rbp on the stack
// and does not account for the return address.
! intptr_t* real_frame_size_addr = (intptr_t*) (saved_fp_addr - 1);
! int real_frame_size = (*real_frame_size_addr) / wordSize;
if (!cm->is_compiled_by_c1()) {
// Add size of return address (C1 already includes the RA size)
real_frame_size += 1;
}
assert(real_frame_size >= _cb->frame_size(), "invalid frame size");
< prev index next >