# HG changeset patch # User ghaug # Date 1535460906 -7200 # Node ID 0157a3ab61b18a21d86ad197a7d54d921ae5e6de # Parent 0c4f2b26849ee0bb500551baa0209c88699107a6 8209996: [PPC64] Fix JFR profiling Reviewed-by: mdoerr, simonis diff -r 0c4f2b26849e -r 0157a3ab61b1 src/hotspot/cpu/ppc/frame_ppc.cpp --- a/src/hotspot/cpu/ppc/frame_ppc.cpp Wed Aug 29 10:46:59 2018 -0400 +++ b/src/hotspot/cpu/ppc/frame_ppc.cpp Tue Aug 28 14:55:06 2018 +0200 @@ -67,8 +67,8 @@ return false; } - // Unextended sp must be within the stack and above or equal sp - bool unextended_sp_safe = (unextended_sp < thread->stack_base()) && (unextended_sp >= sp); + // Unextended sp must be within the stack + bool unextended_sp_safe = (unextended_sp < thread->stack_base()); if (!unextended_sp_safe) { return false; @@ -76,9 +76,10 @@ // 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 - bool fp_interp_safe = (fp <= thread->stack_base()) && (fp > sp) && - ((fp - sp) >= (ijava_state_size + top_ijava_frame_abi_size)); + // An interpreter fp must be within the stack and above (but not equal) sp. + // Moreover, it must be at least the size of the ijava_state structure. + bool fp_interp_safe = (fp <= thread->stack_base()) && (fp > sp) && + ((fp - sp) >= ijava_state_size); // We know sp/unextended_sp are safe, only fp is questionable here