8261846: [JVMCI] c2v_iterateFrames can get out of sync with the StackFrameStream

Reviewed-by: kvn
This commit is contained in:
Tom Rodriguez 2021-02-18 06:35:42 +00:00
parent b8fd61420c
commit 97e1657ba2
3 changed files with 14 additions and 5 deletions

View file

@ -1230,7 +1230,7 @@ C2V_VMENTRY_NULL(jobject, iterateFrames, (JNIEnv* env, jobject compilerToVM, job
jobjectArray methods = initial_methods;
int frame_number = 0;
vframe* vf = vframe::new_vframe(fst.current(), fst.register_map(), thread);
vframe* vf = vframe::new_vframe(fst, thread);
while (true) {
// look for the given method
@ -1340,7 +1340,7 @@ C2V_VMENTRY_NULL(jobject, iterateFrames, (JNIEnv* env, jobject compilerToVM, job
if (fst.current()->sp() != stack_pointer) {
THROW_MSG_NULL(vmSymbols::java_lang_IllegalStateException(), "stack frame not found after deopt")
}
vf = vframe::new_vframe(fst.current(), fst.register_map(), thread);
vf = vframe::new_vframe(fst, thread);
if (!vf->is_compiled_frame()) {
THROW_MSG_NULL(vmSymbols::java_lang_IllegalStateException(), "compiled stack frame expected")
}
@ -1367,7 +1367,7 @@ C2V_VMENTRY_NULL(jobject, iterateFrames, (JNIEnv* env, jobject compilerToVM, job
break;
}
fst.next();
vf = vframe::new_vframe(fst.current(), fst.register_map(), thread);
vf = vframe::new_vframe(fst, thread);
frame_number = 0;
} // end of frame loop