You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
if std::hint::unlikely(exec_state.exit_code.as_ref().unwrap().is_some()){
59
+
#ctx_type::on_terminate(exec_state);
59
60
// terminate
60
61
returnOk(());
61
62
}
63
+
if #ctx_type::should_suspend(exec_state){
64
+
returnOk(());
65
+
}
62
66
// exec_state.pc should have been updated by execute_impl at this point
63
-
let next_handler = interpreter.get_handler(exec_state.pc)?;
64
-
become next_handler(interpreter, exec_state)
67
+
let next_handler = interpreter.get_handler(exec_state.vm_state.pc)?;
68
+
69
+
// The `become` keyword has a bug that is not re-passing the `interpreter`, `exec_state` references properly. But llvm seems to almost always guarantee tail call elimination when the function signature is the same as the current function.
0 commit comments