Skip to main content

Compiler

Struct Compiler 

Source
pub struct Compiler<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> { /* private fields */ }

Trait Implementations§

Source§

impl<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> BaseVisitor for Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

Source§

type Error = ValidationError

Source§

type State = TextBuilder<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

Source§

fn unreachable(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn nop(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_load( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_load( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn f32_load( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn f64_load( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i32_load8_s( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i32_load8_u( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i32_load16_s( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i32_load16_u( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_load8_s( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_load8_u( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_load16_s( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_load16_u( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_load32_s( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_load32_u( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i32_store( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_store( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn f32_store( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn f64_store( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i32_store8( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i32_store16( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_store8( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_store16( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_store32( &self, m: MemArg, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn memory_size(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn memory_grow(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_const(&self, n: i32, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_const(&self, n: i64, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_const(&self, z: f32, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_const(&self, z: f64, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_eqz(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_eq(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_ne(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_lt_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_lt_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_gt_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_gt_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_le_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_le_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_ge_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_ge_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_eqz(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_eq(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_ne(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_lt_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_lt_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_gt_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_gt_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_le_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_le_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_ge_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_ge_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_eq(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_ne(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_lt(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_gt(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_le(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_ge(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_eq(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_ne(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_lt(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_gt(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_le(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_ge(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_clz(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_ctz(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_popcnt(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_add(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_sub(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_mul(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_div_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_div_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_rem_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_rem_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_and(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_or(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_xor(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_shl(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_shr_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_shr_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_rotl(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_rotr(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_clz(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_ctz(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_popcnt(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_add(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_sub(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_mul(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_div_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_div_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_rem_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_rem_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_and(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_or(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_xor(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_shl(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_shr_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_shr_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_rotl(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_rotr(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_abs(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_neg(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_ceil(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_floor(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_trunc(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_nearest(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_sqrt(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_add(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_sub(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_mul(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_div(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_min(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_max(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_copysign(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_abs(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_neg(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_ceil(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_floor(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_trunc(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_nearest(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_sqrt(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_add(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_sub(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_mul(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_div(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_min(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_max(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_copysign(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_wrap_i64(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_trunc_f32_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_trunc_f32_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_trunc_f64_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i32_trunc_f64_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_extend_i32_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_extend_i32_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_trunc_f32_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_trunc_f32_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_trunc_f64_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn i64_trunc_f64_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_convert_i32_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_convert_i32_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_convert_i64_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_convert_i64_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f32_demote_f64(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_convert_i32_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_convert_i32_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_convert_i64_s(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_convert_i64_u(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn f64_promote_f32(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn malformed_ir(&self, state: &mut Self::State) -> Result<(), Self::Error>

The decoder reached an opcode or immediate it cannot interpret.
Source§

impl<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> Default for Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

Source§

fn default() -> Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

Returns the “default value” for a type. Read more
Source§

impl<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> WasmVisitor for Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

Source§

fn drop(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn select(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn enter_block( &self, block_type: ResultType, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn exit_block(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn finish(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn loop_( &self, block_type: ResultType, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn if_( &self, block_type: ResultType, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn else_(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn br(&self, l: LabelIdx, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn br_if(&self, l: LabelIdx, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn br_table_start( &self, len: u32, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn br_table_branch( &self, br: LabelIdx, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn br_table_finish( &self, default_: LabelIdx, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn return_(&self, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn call(&self, x: FuncIdx, state: &mut Self::State) -> Result<(), Self::Error>

Source§

fn call_indirect( &self, x: TypeIdx, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn local_get( &self, x: LocalIdx, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn local_set( &self, x: LocalIdx, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn local_tee( &self, x: LocalIdx, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn global_get( &self, x: GlobalIdx, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn global_set( &self, x: GlobalIdx, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i32_reinterpret_f32( &self, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn f64_reinterpret_i64( &self, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn f32_reinterpret_i32( &self, state: &mut Self::State, ) -> Result<(), Self::Error>

Source§

fn i64_reinterpret_f64( &self, state: &mut Self::State, ) -> Result<(), Self::Error>

Auto Trait Implementations§

§

impl<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> Freeze for Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

§

impl<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> RefUnwindSafe for Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

§

impl<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> Send for Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

§

impl<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> Sync for Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

§

impl<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> Unpin for Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

§

impl<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> UnsafeUnpin for Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

§

impl<'a, const MAX_CONTROL_FRAMES: usize, const MAX_STACK_DEPTH: usize> UnwindSafe for Compiler<'a, MAX_CONTROL_FRAMES, MAX_STACK_DEPTH>

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.