runmat_vm/interpreter/dispatch/
control_flow.rs1use crate::ops::control_flow::ControlFlowAction;
2
3pub enum DispatchDecision {
4 ContinueLoop,
5 FallThrough,
6 Return,
7}
8
9#[inline]
10pub fn apply_control_flow_action(action: ControlFlowAction, pc: &mut usize) -> DispatchDecision {
11 match action {
12 ControlFlowAction::Jump(target) => {
13 *pc = target;
14 DispatchDecision::ContinueLoop
15 }
16 ControlFlowAction::Next => DispatchDecision::FallThrough,
17 ControlFlowAction::Return => DispatchDecision::Return,
18 }
19}