< prev index next >
src/hotspot/cpu/s390/frame_s390.cpp
Print this page
rev 58072 : [mq]: v2
*** 64,85 ****
if (!thread->is_in_usable_stack(sp)) {
return false;
}
// Unextended sp must be within the stack
! bool unextended_sp_safe = (unextended_sp < thread->stack_base());
!
! if (!unextended_sp_safe) {
return false;
}
// An fp must be within the stack and above (but not equal) sp.
! bool fp_safe = (fp < thread->stack_base()) && (fp > sp);
// An interpreter fp must be within the stack and above (but not equal) sp.
// Moreover, it must be at least the size of the z_ijava_state structure.
! bool fp_interp_safe = (fp < thread->stack_base()) && (fp > sp) &&
! ((fp - sp) >= z_ijava_state_size);
// We know sp/unextended_sp are safe, only fp is questionable here
// If the current frame is known to the code cache then we can attempt to
// to construct the sender and do some validation of it. This goes a long way
--- 64,82 ----
if (!thread->is_in_usable_stack(sp)) {
return false;
}
// Unextended sp must be within the stack
! if (!thread->is_in_full_stack(unextended_sp)) {
return false;
}
// An fp must be within the stack and above (but not equal) sp.
! bool fp_safe = thread->is_in_stack_range_excl(fp, sp);
// An interpreter fp must be within the stack and above (but not equal) sp.
// Moreover, it must be at least the size of the z_ijava_state structure.
! bool fp_interp_safe = fp_safe && ((fp - sp) >= z_ijava_state_size);
// We know sp/unextended_sp are safe, only fp is questionable here
// If the current frame is known to the code cache then we can attempt to
// to construct the sender and do some validation of it. This goes a long way
*** 134,144 ****
// Do we have a valid fp?
address sender_fp = (address) sender.fp();
// sender_fp must be within the stack and above (but not
// equal) current frame's fp.
! if (sender_fp >= thread->stack_base() || sender_fp <= fp) {
return false;
}
// If the potential sender is the interpreter then we can do some more checking.
if (Interpreter::contains(sender_pc)) {
--- 131,141 ----
// Do we have a valid fp?
address sender_fp = (address) sender.fp();
// sender_fp must be within the stack and above (but not
// equal) current frame's fp.
! if (!thread->is_in_stack_range_excl(sender_fp, fp)) {
return false;
}
// If the potential sender is the interpreter then we can do some more checking.
if (Interpreter::contains(sender_pc)) {
< prev index next >