Trait orca_wasm::opcode::Opcode

source ·
pub trait Opcode<'a>: Inject<'a> {
Show 139 methods // Provided methods fn call(&mut self, idx: FunctionID) -> &mut Self { ... } fn return_stmt(&mut self) -> &mut Self { ... } fn nop(&mut self) -> &mut Self { ... } fn unreachable(&mut self) -> &mut Self { ... } fn if_stmt(&mut self, block_type: BlockType) -> &mut Self { ... } fn else_stmt(&mut self) -> &mut Self { ... } fn end(&mut self) -> &mut Self { ... } fn block(&mut self, block_type: BlockType) -> &mut Self { ... } fn loop_stmt(&mut self, block_type: BlockType) -> &mut Self { ... } fn br(&mut self, relative_depth: u32) -> &mut Self { ... } fn br_if(&mut self, relative_depth: u32) -> &mut Self { ... } fn local_get(&mut self, idx: LocalID) -> &mut Self { ... } fn local_set(&mut self, idx: LocalID) -> &mut Self { ... } fn local_tee(&mut self, idx: LocalID) -> &mut Self { ... } fn i32_const(&mut self, value: i32) -> &mut Self { ... } fn i32_add(&mut self) -> &mut Self { ... } fn i32_sub(&mut self) -> &mut Self { ... } fn i32_mul(&mut self) -> &mut Self { ... } fn i32_div_signed(&mut self) -> &mut Self { ... } fn i32_div_unsigned(&mut self) -> &mut Self { ... } fn i32_rem_unsigned(&mut self) -> &mut Self { ... } fn i32_rem_signed(&mut self) -> &mut Self { ... } fn i32_and(&mut self) -> &mut Self { ... } fn i32_or(&mut self) -> &mut Self { ... } fn i32_xor(&mut self) -> &mut Self { ... } fn i32_shl(&mut self) -> &mut Self { ... } fn i32_shr_signed(&mut self) -> &mut Self { ... } fn i32_shr_unsigned(&mut self) -> &mut Self { ... } fn i32_rotl(&mut self) -> &mut Self { ... } fn i32_rotr(&mut self) -> &mut Self { ... } fn i32_eq(&mut self) -> &mut Self { ... } fn i32_eqz(&mut self) -> &mut Self { ... } fn i32_ne(&mut self) -> &mut Self { ... } fn i32_lt_unsigned(&mut self) -> &mut Self { ... } fn i32_lt_signed(&mut self) -> &mut Self { ... } fn i32_gt_unsigned(&mut self) -> &mut Self { ... } fn i32_gt_signed(&mut self) -> &mut Self { ... } fn i32_lte_unsigned(&mut self) -> &mut Self { ... } fn i32_lte_signed(&mut self) -> &mut Self { ... } fn i32_gte_unsigned(&mut self) -> &mut Self { ... } fn i32_gte_signed(&mut self) -> &mut Self { ... } fn i32_wrap_i64(&mut self) -> &mut Self { ... } fn i64_const(&mut self, value: i64) -> &mut Self { ... } fn i64_add(&mut self) -> &mut Self { ... } fn i64_sub(&mut self) -> &mut Self { ... } fn i64_mul(&mut self) -> &mut Self { ... } fn i64_div_signed(&mut self) -> &mut Self { ... } fn i64_div_unsigned(&mut self) -> &mut Self { ... } fn i64_rem_unsigned(&mut self) -> &mut Self { ... } fn i64_rem_signed(&mut self) -> &mut Self { ... } fn i64_and(&mut self) -> &mut Self { ... } fn i64_or(&mut self) -> &mut Self { ... } fn i64_xor(&mut self) -> &mut Self { ... } fn i64_shl(&mut self) -> &mut Self { ... } fn i64_shr_signed(&mut self) -> &mut Self { ... } fn i64_shr_unsigned(&mut self) -> &mut Self { ... } fn i64_rotl(&mut self) -> &mut Self { ... } fn i64_rotr(&mut self) -> &mut Self { ... } fn i64_eq(&mut self) -> &mut Self { ... } fn i64_eqz(&mut self) -> &mut Self { ... } fn i64_ne(&mut self) -> &mut Self { ... } fn i64_lt_unsigned(&mut self) -> &mut Self { ... } fn i64_lt_signed(&mut self) -> &mut Self { ... } fn i64_gt_unsigned(&mut self) -> &mut Self { ... } fn i64_gt_signed(&mut self) -> &mut Self { ... } fn i64_lte_unsigned(&mut self) -> &mut Self { ... } fn i64_lte_signed(&mut self) -> &mut Self { ... } fn i64_gte_unsigned(&mut self) -> &mut Self { ... } fn i64_gte_signed(&mut self) -> &mut Self { ... } fn i64_extend_i32u(&mut self) -> &mut Self { ... } fn f32_const(&mut self, val: f32) -> &mut Self { ... } fn f32_abs(&mut self) -> &mut Self { ... } fn f32_ceil(&mut self) -> &mut Self { ... } fn f32_floor(&mut self) -> &mut Self { ... } fn f32_trunc(&mut self) -> &mut Self { ... } fn f32_sqrt(&mut self) -> &mut Self { ... } fn f32_add(&mut self) -> &mut Self { ... } fn f32_sub(&mut self) -> &mut Self { ... } fn f32_mul(&mut self) -> &mut Self { ... } fn f32_div(&mut self) -> &mut Self { ... } fn f32_min(&mut self) -> &mut Self { ... } fn f32_max(&mut self) -> &mut Self { ... } fn f32_eq(&mut self) -> &mut Self { ... } fn f32_ne(&mut self) -> &mut Self { ... } fn f32_gt(&mut self) -> &mut Self { ... } fn f32_ge(&mut self) -> &mut Self { ... } fn f32_lt(&mut self) -> &mut Self { ... } fn f32_le(&mut self) -> &mut Self { ... } fn f32_convert_i32s(&mut self) -> &mut Self { ... } fn f32_demote_f64(&mut self) -> &mut Self { ... } fn f64_const(&mut self, val: f64) -> &mut Self { ... } fn f64_abs(&mut self) -> &mut Self { ... } fn f64_ceil(&mut self) -> &mut Self { ... } fn f64_floor(&mut self) -> &mut Self { ... } fn f64_trunc(&mut self) -> &mut Self { ... } fn f64_sqrt(&mut self) -> &mut Self { ... } fn f64_add(&mut self) -> &mut Self { ... } fn f64_sub(&mut self) -> &mut Self { ... } fn f64_mul(&mut self) -> &mut Self { ... } fn f64_div(&mut self) -> &mut Self { ... } fn f64_min(&mut self) -> &mut Self { ... } fn f64_max(&mut self) -> &mut Self { ... } fn f64_eq(&mut self) -> &mut Self { ... } fn f64_ne(&mut self) -> &mut Self { ... } fn f64_gt(&mut self) -> &mut Self { ... } fn f64_ge(&mut self) -> &mut Self { ... } fn f64_lt(&mut self) -> &mut Self { ... } fn f64_le(&mut self) -> &mut Self { ... } fn f64_reinterpret_i64(&mut self) -> &mut Self { ... } fn f64_promote_f32(&mut self) -> &mut Self { ... } fn f64_convert_i32s(&mut self) -> &mut Self { ... } fn memory_init(&mut self, data_index: u32, mem: u32) -> &mut Self { ... } fn memory_size(&mut self, mem: u32) -> &mut Self { ... } fn memory_grow(&mut self, mem: u32) -> &mut Self { ... } fn memory_fill(&mut self, mem: u32) -> &mut Self { ... } fn memory_copy(&mut self, dst_mem: u32, src_mem: u32) -> &mut Self { ... } fn memory_discard(&mut self, mem: u32) -> &mut Self { ... } fn data_drop(&mut self, data_index: u32) -> &mut Self { ... } fn drop(&mut self) -> &mut Self { ... } fn i32_load8_s(&mut self, memarg: MemArg) -> &mut Self { ... } fn i32_load8_u(&mut self, memarg: MemArg) -> &mut Self { ... } fn i32_load16_s(&mut self, memarg: MemArg) -> &mut Self { ... } fn i32_load16_u(&mut self, memarg: MemArg) -> &mut Self { ... } fn i32_load(&mut self, memarg: MemArg) -> &mut Self { ... } fn i32_store(&mut self, memarg: MemArg) -> &mut Self { ... } fn i64_load8_s(&mut self, memarg: MemArg) -> &mut Self { ... } fn i64_load8_u(&mut self, memarg: MemArg) -> &mut Self { ... } fn i64_load16_s(&mut self, memarg: MemArg) -> &mut Self { ... } fn i64_load16_u(&mut self, memarg: MemArg) -> &mut Self { ... } fn i64_load32_s(&mut self, memarg: MemArg) -> &mut Self { ... } fn i64_load32_u(&mut self, memarg: MemArg) -> &mut Self { ... } fn i64_load(&mut self, memarg: MemArg) -> &mut Self { ... } fn i64_store(&mut self, memarg: MemArg) -> &mut Self { ... } fn f32_load(&mut self, memarg: MemArg) -> &mut Self { ... } fn f32_store(&mut self, memarg: MemArg) -> &mut Self { ... } fn f64_load(&mut self, memarg: MemArg) -> &mut Self { ... } fn f64_store(&mut self, memarg: MemArg) -> &mut Self { ... } fn global_get(&mut self, idx: GlobalID) -> &mut Self { ... } fn global_set(&mut self, idx: GlobalID) -> &mut Self { ... }
}
Expand description

Defines injection behaviour. Takes a wasmparser::Operator and instructions are defined here.

Provided Methods§

source

fn call(&mut self, idx: FunctionID) -> &mut Self

Inject a call instruction

source

fn return_stmt(&mut self) -> &mut Self

Inject a return statement

source

fn nop(&mut self) -> &mut Self

Inject a no op instruction

source

fn unreachable(&mut self) -> &mut Self

Inject an unreachable instruction

source

fn if_stmt(&mut self, block_type: BlockType) -> &mut Self

Inject an if statement

source

fn else_stmt(&mut self) -> &mut Self

Inject an else statement

source

fn end(&mut self) -> &mut Self

Inject an end statement. Indicates the end of the current scope

source

fn block(&mut self, block_type: BlockType) -> &mut Self

Inject a block statement. Indicates the start of a block

source

fn loop_stmt(&mut self, block_type: BlockType) -> &mut Self

Inject a loop statement

source

fn br(&mut self, relative_depth: u32) -> &mut Self

Inject a break statement

source

fn br_if(&mut self, relative_depth: u32) -> &mut Self

Inject a conditional break statement

source

fn local_get(&mut self, idx: LocalID) -> &mut Self

Inject a local.get

source

fn local_set(&mut self, idx: LocalID) -> &mut Self

Inject a local.set

source

fn local_tee(&mut self, idx: LocalID) -> &mut Self

source

fn i32_const(&mut self, value: i32) -> &mut Self

Inject an i32.const instruction

source

fn i32_add(&mut self) -> &mut Self

Inject an i32.add instruction

source

fn i32_sub(&mut self) -> &mut Self

Inject an i32.sub instruction

source

fn i32_mul(&mut self) -> &mut Self

Inject an i32.mul instruction

source

fn i32_div_signed(&mut self) -> &mut Self

Inject an i32.divs instruction

source

fn i32_div_unsigned(&mut self) -> &mut Self

Inject an i32.divu instruction

source

fn i32_rem_unsigned(&mut self) -> &mut Self

Inject an i32.remu instruction

source

fn i32_rem_signed(&mut self) -> &mut Self

Inject an i32.rems instruction

source

fn i32_and(&mut self) -> &mut Self

Inject an i32.and instruction

source

fn i32_or(&mut self) -> &mut Self

Inject an i32.or instruction

source

fn i32_xor(&mut self) -> &mut Self

Inject an i32.xor instruction

source

fn i32_shl(&mut self) -> &mut Self

Inject an i32.shl instruction

source

fn i32_shr_signed(&mut self) -> &mut Self

Inject an i32.shrs instruction

source

fn i32_shr_unsigned(&mut self) -> &mut Self

Inject an i32.shru instruction

source

fn i32_rotl(&mut self) -> &mut Self

Inject an i32.rotl instruction

source

fn i32_rotr(&mut self) -> &mut Self

Inject and i32.rotr instruction

source

fn i32_eq(&mut self) -> &mut Self

Inject an i32.eq instruction

source

fn i32_eqz(&mut self) -> &mut Self

Inject an i32.eqz instruction

source

fn i32_ne(&mut self) -> &mut Self

Inject an i32.ne instruction

source

fn i32_lt_unsigned(&mut self) -> &mut Self

Inject an i32.ltu instruction

source

fn i32_lt_signed(&mut self) -> &mut Self

Inject an i32.lts instruction

source

fn i32_gt_unsigned(&mut self) -> &mut Self

Inject an i32.gtu instruction

source

fn i32_gt_signed(&mut self) -> &mut Self

Inject an i32.gts instruction

source

fn i32_lte_unsigned(&mut self) -> &mut Self

Inject an i32.lteu instruction

source

fn i32_lte_signed(&mut self) -> &mut Self

Inject an i32.ltes instruction

source

fn i32_gte_unsigned(&mut self) -> &mut Self

Inject an i32.gteu instruction

source

fn i32_gte_signed(&mut self) -> &mut Self

Inject an i32.gtes instruction

source

fn i32_wrap_i64(&mut self) -> &mut Self

source

fn i64_const(&mut self, value: i64) -> &mut Self

Inject an i64.const

source

fn i64_add(&mut self) -> &mut Self

Inject an i64.add instruction

source

fn i64_sub(&mut self) -> &mut Self

Inject an i64.sub instruction

source

fn i64_mul(&mut self) -> &mut Self

Inject an i64.mul instruction

source

fn i64_div_signed(&mut self) -> &mut Self

Inject an i64.divs instruction

source

fn i64_div_unsigned(&mut self) -> &mut Self

Inject an i64.divu instruction

source

fn i64_rem_unsigned(&mut self) -> &mut Self

Inject an i64.remu instruction

source

fn i64_rem_signed(&mut self) -> &mut Self

Inject an i64.rems instruction

source

fn i64_and(&mut self) -> &mut Self

Inject an i64.and instruction

source

fn i64_or(&mut self) -> &mut Self

Inject an i64.or instruction

source

fn i64_xor(&mut self) -> &mut Self

Inject an i64.xor instruction

source

fn i64_shl(&mut self) -> &mut Self

Inject an i64.shl instruction

source

fn i64_shr_signed(&mut self) -> &mut Self

Inject an i64.shrs instruction

source

fn i64_shr_unsigned(&mut self) -> &mut Self

Inject an i64.shru instruction

source

fn i64_rotl(&mut self) -> &mut Self

Inject an i64.rotl instruction

source

fn i64_rotr(&mut self) -> &mut Self

Inject an i64.rotr instruction

source

fn i64_eq(&mut self) -> &mut Self

Inject an i64.eq instruction

source

fn i64_eqz(&mut self) -> &mut Self

Inject an i64.eqz instruction

source

fn i64_ne(&mut self) -> &mut Self

Inject an i64.ne instruction

source

fn i64_lt_unsigned(&mut self) -> &mut Self

Inject an i64.ltu instruction

source

fn i64_lt_signed(&mut self) -> &mut Self

Inject an i64.lts instruction

source

fn i64_gt_unsigned(&mut self) -> &mut Self

Inject an i64.gtu instruction

source

fn i64_gt_signed(&mut self) -> &mut Self

Inject an i64.gts instruction

source

fn i64_lte_unsigned(&mut self) -> &mut Self

Inject an i64.lteu instruction

source

fn i64_lte_signed(&mut self) -> &mut Self

Inject an i64.ltes instruction

source

fn i64_gte_unsigned(&mut self) -> &mut Self

Inject an i64.gteu instruction

source

fn i64_gte_signed(&mut self) -> &mut Self

Inject an i64.gtes instruction

source

fn i64_extend_i32u(&mut self) -> &mut Self

source

fn f32_const(&mut self, val: f32) -> &mut Self

Inject a f32.const instruction

source

fn f32_abs(&mut self) -> &mut Self

Inject a f32.abs instruction

source

fn f32_ceil(&mut self) -> &mut Self

Inject a f32.ceil instruction

source

fn f32_floor(&mut self) -> &mut Self

Inject a f32.floor instruction

source

fn f32_trunc(&mut self) -> &mut Self

Inject a f32.trunc instruction

source

fn f32_sqrt(&mut self) -> &mut Self

Inject a f32.sqrt instruction

source

fn f32_add(&mut self) -> &mut Self

Inject a f32.add instruction

source

fn f32_sub(&mut self) -> &mut Self

Inject a f32.sub instruction

source

fn f32_mul(&mut self) -> &mut Self

Inject a f32.mul instruction

source

fn f32_div(&mut self) -> &mut Self

Inject a f32.div instruction

source

fn f32_min(&mut self) -> &mut Self

Inject a f32.min instruction

source

fn f32_max(&mut self) -> &mut Self

Inject a f32.max instruction

source

fn f32_eq(&mut self) -> &mut Self

Inject a f32.eq instruction

source

fn f32_ne(&mut self) -> &mut Self

Inject a f32.ne instruction

source

fn f32_gt(&mut self) -> &mut Self

Inject a f32.gt instruction

source

fn f32_ge(&mut self) -> &mut Self

Inject a f32.ge instruction

source

fn f32_lt(&mut self) -> &mut Self

Inject a f32.lt instruction

source

fn f32_le(&mut self) -> &mut Self

Inject a f32.le instruction

source

fn f32_convert_i32s(&mut self) -> &mut Self

Inject a f32_convert_i32s instruction

source

fn f32_demote_f64(&mut self) -> &mut Self

Inject a f32_demote_f64 instruction

source

fn f64_const(&mut self, val: f64) -> &mut Self

Inject a f64.const instruction

source

fn f64_abs(&mut self) -> &mut Self

Inject a f64.abs instruction

source

fn f64_ceil(&mut self) -> &mut Self

Inject a f64.ceil instruction

source

fn f64_floor(&mut self) -> &mut Self

Inject a f64.floor instruction

source

fn f64_trunc(&mut self) -> &mut Self

Inject a f64.trunc instruction

source

fn f64_sqrt(&mut self) -> &mut Self

Inject a f64.sqrt instruction

source

fn f64_add(&mut self) -> &mut Self

Inject a f64.add instruction

source

fn f64_sub(&mut self) -> &mut Self

Inject a f64.sub instruction

source

fn f64_mul(&mut self) -> &mut Self

Inject a f64.mul instruction

source

fn f64_div(&mut self) -> &mut Self

Inject a f64.div instruction

source

fn f64_min(&mut self) -> &mut Self

Inject a f64.min instruction

source

fn f64_max(&mut self) -> &mut Self

Inject a f64.max instruction

source

fn f64_eq(&mut self) -> &mut Self

Inject a f64.eq instruction

source

fn f64_ne(&mut self) -> &mut Self

Inject a f64.ne instruction

source

fn f64_gt(&mut self) -> &mut Self

Inject a f64.gt instruction

source

fn f64_ge(&mut self) -> &mut Self

Inject a f64.ge instruction

source

fn f64_lt(&mut self) -> &mut Self

Inject a f64.lt instruction

source

fn f64_le(&mut self) -> &mut Self

Inject a f64.le instruction

source

fn f64_reinterpret_i64(&mut self) -> &mut Self

Inject a f64_reinterpret_i64 instruction

source

fn f64_promote_f32(&mut self) -> &mut Self

Inject a f64_promote_f32 instruction

source

fn f64_convert_i32s(&mut self) -> &mut Self

Inject a f64_convert_i32s instruction

source

fn memory_init(&mut self, data_index: u32, mem: u32) -> &mut Self

Inject a memory.init instruction

source

fn memory_size(&mut self, mem: u32) -> &mut Self

Inject a memory.size instruction

source

fn memory_grow(&mut self, mem: u32) -> &mut Self

Inject a memory.grow instruction

source

fn memory_fill(&mut self, mem: u32) -> &mut Self

Inject a memory.fill instruction

source

fn memory_copy(&mut self, dst_mem: u32, src_mem: u32) -> &mut Self

Inject a memory.copy instruction

source

fn memory_discard(&mut self, mem: u32) -> &mut Self

Inject a memory.discard instruction

source

fn data_drop(&mut self, data_index: u32) -> &mut Self

Inject a data drop instruction

source

fn drop(&mut self) -> &mut Self

Inject a drop instruction

source

fn i32_load8_s(&mut self, memarg: MemArg) -> &mut Self

load 1 byte and sign-extend i8 to i32

source

fn i32_load8_u(&mut self, memarg: MemArg) -> &mut Self

load 1 byte and zero-extend i8 to i32

source

fn i32_load16_s(&mut self, memarg: MemArg) -> &mut Self

load 2 bytes and sign-extend i16 to i32

source

fn i32_load16_u(&mut self, memarg: MemArg) -> &mut Self

load 2 bytes and zero-extend i16 to i32

source

fn i32_load(&mut self, memarg: MemArg) -> &mut Self

load 4 bytes as i32

source

fn i32_store(&mut self, memarg: MemArg) -> &mut Self

source

fn i64_load8_s(&mut self, memarg: MemArg) -> &mut Self

load 1 byte and sign-extend i8 to i64

source

fn i64_load8_u(&mut self, memarg: MemArg) -> &mut Self

load 1 byte and zero-extend i8 to i64

source

fn i64_load16_s(&mut self, memarg: MemArg) -> &mut Self

load 2 bytes and sign-extend i16 to i64

source

fn i64_load16_u(&mut self, memarg: MemArg) -> &mut Self

load 2 bytes and zero-extend i16 to i64

source

fn i64_load32_s(&mut self, memarg: MemArg) -> &mut Self

load 4 bytes and sign-extend i32 to i64

source

fn i64_load32_u(&mut self, memarg: MemArg) -> &mut Self

load 4 bytes and zero-extend i32 to i64

source

fn i64_load(&mut self, memarg: MemArg) -> &mut Self

load 4 bytes as i64

source

fn i64_store(&mut self, memarg: MemArg) -> &mut Self

source

fn f32_load(&mut self, memarg: MemArg) -> &mut Self

load 4 bytes as f32

source

fn f32_store(&mut self, memarg: MemArg) -> &mut Self

source

fn f64_load(&mut self, memarg: MemArg) -> &mut Self

load 8 bytes as f64

source

fn f64_store(&mut self, memarg: MemArg) -> &mut Self

Inject an f64_store instruction

source

fn global_get(&mut self, idx: GlobalID) -> &mut Self

Inject a global.get

source

fn global_set(&mut self, idx: GlobalID) -> &mut Self

Inject a global.set

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'a> Opcode<'a> for FunctionBuilder<'a>

source§

impl<'a> Opcode<'a> for ModuleIterator<'_, 'a>

source§

impl<'a, 'b> Opcode<'b> for FunctionModifier<'a, 'b>

source§

impl<'a, 'b> Opcode<'b> for ComponentIterator<'a, 'b>