Struct netsblox_vm::process::Process
source · pub struct Process<'gc, C: CustomTypes<S>, S: System<C>> { /* private fields */ }Expand description
Implementations§
source§impl<'gc, C: CustomTypes<S>, S: System<C>> Process<'gc, C, S>
impl<'gc, C: CustomTypes<S>, S: System<C>> Process<'gc, C, S>
sourcepub fn new(
global_context: Gc<'gc, RefLock<GlobalContext<'gc, C, S>>>,
entity: Gc<'gc, RefLock<Entity<'gc, C, S>>>,
start_pos: usize
) -> Self
pub fn new( global_context: Gc<'gc, RefLock<GlobalContext<'gc, C, S>>>, entity: Gc<'gc, RefLock<Entity<'gc, C, S>>>, start_pos: usize ) -> Self
Creates a new Process that is tied to a given start_pos (entry point) in the ByteCode and associated with the specified entity and system.
The created process is initialized to an idle (non-running) state; use Process::initialize to begin execution.
sourcepub fn is_running(&self) -> bool
pub fn is_running(&self) -> bool
Checks if the process is currently running.
Note that the process will not run on its own (see Process::step).
sourcepub fn get_global_context(&self) -> Gc<'gc, RefLock<GlobalContext<'gc, C, S>>>
pub fn get_global_context(&self) -> Gc<'gc, RefLock<GlobalContext<'gc, C, S>>>
Gets the global context that this process is tied to (see Process::new).
sourcepub fn get_call_stack(&self) -> &[CallStackEntry<'gc, C, S>]
pub fn get_call_stack(&self) -> &[CallStackEntry<'gc, C, S>]
Gets a reference to the current call stack.
This gives access to stack trace information including all local scopes in the call chain.
Note that the call stack is never empty, and that the always-present first element (denoting the initial execution request) is a special
entry which has an invalid value for CallStackEntry::called_from, namely usize::MAX.
sourcepub fn initialize(&mut self, context: ProcContext<'gc, C, S>)
pub fn initialize(&mut self, context: ProcContext<'gc, C, S>)
Prepares the process to execute starting at the main entry point (see Process::new) with the provided input local variables.
A Barrier may also be set, which will be destroyed upon termination, either due to completion or an error.
Any previous process state is wiped when performing this action.
sourcepub fn step(
&mut self,
mc: &Mutation<'gc>
) -> Result<ProcessStep<'gc, C, S>, ExecError<C, S>>
pub fn step( &mut self, mc: &Mutation<'gc> ) -> Result<ProcessStep<'gc, C, S>, ExecError<C, S>>
Executes a single bytecode instruction. The return value can be used to determine what additional effects the script has requested, as well as to retrieve the return value or execution error in the event that the process terminates.
The process transitions to the idle state (see Process::is_running) upon failing with Err or succeeding with ProcessStep::Terminate.
Trait Implementations§
source§impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for Process<'gc, C, S>where
usize: 'static,
bool: 'static,
Option<Barrier>: 'static,
Option<S::InternReplyKey>: 'static,
Vec<Handler>: 'static,
Vec<String>: 'static,
Option<Defer<C, S>>: 'static,
impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for Process<'gc, C, S>where usize: 'static, bool: 'static, Option<Barrier>: 'static, Option<S::InternReplyKey>: 'static, Vec<Handler>: 'static, Vec<String>: 'static, Option<Defer<C, S>>: 'static,
source§fn needs_trace() -> bool
fn needs_trace() -> bool
Gc pointer and trace is unnecessary
to call, you may implement this method and return false. The default implementation returns
true, signaling that Collect::trace must be called.source§fn trace(&self, cc: &Collection)
fn trace(&self, cc: &Collection)
Collect::trace on all held Gc pointers. If this type holds inner types that
implement Collect, a valid implementation would simply call Collect::trace on all the
held values to ensure this.