< 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 >