struct CallFrame {
lambda: Rc<Lambda>,
upvalues: Rc<Upvalues>,
ip: CodeIdx,
stack_offset: usize,
}Fields§
§lambda: Rc<Lambda>The lambda currently being executed.
upvalues: Rc<Upvalues>Optional captured upvalues of this frame (if a thunk or closure if being evaluated).
ip: CodeIdxInstruction pointer to the instruction currently being executed.
stack_offset: usizeStack offset, i.e. the frames “view” into the VM’s full stack.
Implementations§
Source§impl CallFrame
impl CallFrame
Sourcefn upvalue(&self, idx: UpvalueIdx) -> &Value
fn upvalue(&self, idx: UpvalueIdx) -> &Value
Retrieve an upvalue from this frame at the given index.
Sourcefn inc_ip(&mut self) -> Op
fn inc_ip(&mut self) -> Op
Increment this frame’s instruction pointer and return the operation that the pointer moved past.
Sourcefn read_uvarint(&mut self) -> u64
fn read_uvarint(&mut self) -> u64
Read a varint-encoded operand and return it. The frame pointer is incremented internally.
Sourcepub fn error<T>(&self, vm: &VM<'_>, kind: ErrorKind) -> Result<T, Error>
pub fn error<T>(&self, vm: &VM<'_>, kind: ErrorKind) -> Result<T, Error>
Construct an error result from the given ErrorKind and the source span of the current instruction.
Sourcepub fn current_span(&self) -> Span
pub fn current_span(&self) -> Span
Returns the current span. This is potentially expensive and should only be used when actually constructing an error or warning.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CallFrame
impl !RefUnwindSafe for CallFrame
impl !Send for CallFrame
impl !Sync for CallFrame
impl Unpin for CallFrame
impl !UnwindSafe for CallFrame
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more