struct BytecodeFrame {
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 BytecodeFrame
impl BytecodeFrame
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, IO>(&self, vm: &VM<'_, IO>, kind: ErrorKind) -> Result<T, Error>
pub fn error<T, IO>(&self, vm: &VM<'_, IO>, 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 BytecodeFrame
impl !RefUnwindSafe for BytecodeFrame
impl !Send for BytecodeFrame
impl !Sync for BytecodeFrame
impl Unpin for BytecodeFrame
impl !UnwindSafe for BytecodeFrame
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§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