use std::time::Duration;
use crate::bytecode::Value;
use super::fault::Fault;
#[derive(Debug)]
pub enum VmResult {
Complete(Value),
Yield,
Sleep(Duration),
Spawn {
function: u32,
args: Vec<Value>,
dest_reg: u8,
},
SelfPid { dest_reg: u8 },
Send { target_cap: u64, message: Value },
Receive {
dest_reg: u8,
timeout: Option<Duration>,
match_tag: Option<u16>,
},
Ask {
dest_reg: u8,
target_cap: u64,
request: Value,
timeout: Option<Duration>,
},
Monitor { dest_reg: u8, target_cap: u64 },
Demonitor { monitor_reg: u8 },
Link { dest_reg: u8, target_cap: u64 },
Unlink { link_reg: u8 },
Trap(Fault),
}