BlockEmitter

Struct BlockEmitter 

Source
pub struct BlockEmitter<'a> {
    indent: &'a str,
    func_args: u8,
    callee_args: &'a BTreeMap<u32, u8>,
    used_s: &'a mut BTreeSet<usize>,
    out: String,
    stack: Vec<Expr>,
    non_volatile_global_count: u16,
    volatile_global_count: u16,
}

Fields§

§indent: &'a str§func_args: u8§callee_args: &'a BTreeMap<u32, u8>§used_s: &'a mut BTreeSet<usize>§out: String§stack: Vec<Expr>§non_volatile_global_count: u16§volatile_global_count: u16

Implementations§

Source§

impl<'a> BlockEmitter<'a>

Source

pub fn new( indent: &'a str, func_args: u8, callee_args: &'a BTreeMap<u32, u8>, used_s: &'a mut BTreeSet<usize>, non_volatile_global_count: u16, volatile_global_count: u16, ) -> Self

Source

pub fn init_stack(&mut self, depth: usize)

Source

pub fn take_output(self) -> String

Source

fn emit_line(&mut self, line: &str)

Source

fn pop(&mut self) -> Expr

Source

fn push(&mut self, e: Expr)

Source

fn stack_slot_get(&self, idx: i8) -> String

Source

fn materialize_all_stack_slots(&mut self)

Source

pub fn emit_inst(&mut self, inst: &Instruction)

Source

pub fn emit_terminator(&mut self, term: BlockTerm, succs: &[usize])

Auto Trait Implementations§

§

impl<'a> Freeze for BlockEmitter<'a>

§

impl<'a> RefUnwindSafe for BlockEmitter<'a>

§

impl<'a> Send for BlockEmitter<'a>

§

impl<'a> Sync for BlockEmitter<'a>

§

impl<'a> Unpin for BlockEmitter<'a>

§

impl<'a> !UnwindSafe for BlockEmitter<'a>

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.