8244920: Access violation in frames::interpreter_frame_method

Reviewed-by: mgronlun, coleenp
This commit is contained in:
Erik Österlund 2020-06-09 16:22:54 +00:00
parent ac2828ddf1
commit f160c80e3b

View file

@ -664,9 +664,17 @@ JRT_LEAF(BasicType, Deoptimization::unpack_frames(JavaThread* thread, int exec_m
UnrollBlock* info = array->unroll_block();
// We set the last_Java frame. But the stack isn't really parsable here. So we
// clear it to make sure JFR understands not to try and walk stacks from events
// in here.
intptr_t* sp = thread->frame_anchor()->last_Java_sp();
thread->frame_anchor()->set_last_Java_sp(NULL);
// Unpack the interpreter frames and any adapter frame (c2 only) we might create.
array->unpack_to_stack(stub_frame, exec_mode, info->caller_actual_parameters());
thread->frame_anchor()->set_last_Java_sp(sp);
BasicType bt = info->return_type();
// If we have an exception pending, claim that the return type is an oop
@ -802,7 +810,6 @@ JRT_LEAF(BasicType, Deoptimization::unpack_frames(JavaThread* thread, int exec_m
}
#endif /* !PRODUCT */
return bt;
JRT_END