Skip to main content

BytecodeEmitter

Struct BytecodeEmitter 

Source
pub struct BytecodeEmitter { /* private fields */ }

Implementations§

Source§

impl BytecodeEmitter

Source

pub fn new() -> Self

Source

pub fn register_agents(&self, vm: &mut BetVm)

After emit_program, call this to wire agent handler addresses into a VM.

Source

pub fn emit_program(&mut self, program: &Program)

Source

pub fn emit_function(&mut self, func: &Function)

Source

pub fn emit_stmt(&mut self, stmt: &Stmt)

Source

pub fn emit_entry_call(&mut self, func_name: &str)

Emit a TCALL to a named function. Call this after emit_program() to create an entry point that executes a specific function (typically main). The TJMP in emit_program already points past all function bodies, so code appended here is what actually runs at startup.

The function’s return value will be on the stack when the VM halts.

Source

pub fn finalize(self) -> Vec<u8>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.