1.1 --- a/src/share/vm/runtime/frame.cpp Thu Aug 01 03:44:03 2019 +0100 1.2 +++ b/src/share/vm/runtime/frame.cpp Mon Aug 12 18:30:40 2019 +0300 1.3 @@ -239,6 +239,19 @@ 1.4 return NULL; 1.5 } 1.6 1.7 +bool frame::is_entry_frame_valid(JavaThread* thread) const { 1.8 + // Validate the JavaCallWrapper an entry frame must have 1.9 + address jcw = (address)entry_frame_call_wrapper(); 1.10 + bool jcw_safe = (jcw < thread->stack_base()) && (jcw > (address)fp()); // less than stack base 1.11 + if (!jcw_safe) { 1.12 + return false; 1.13 + } 1.14 + 1.15 + // Validate sp saved in the java frame anchor 1.16 + JavaFrameAnchor* jfa = entry_frame_call_wrapper()->anchor(); 1.17 + return (jfa->last_Java_sp() > sp()); 1.18 +} 1.19 + 1.20 bool frame::should_be_deoptimized() const { 1.21 if (_deopt_state == is_deoptimized || 1.22 !is_compiled_frame() ) return false;