Skip to main content

runmat_vm/interpreter/dispatch/
control_flow.rs

1use 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}