Trait walrus::ir::Visitor[][src]

pub trait Visitor<'instr>: Sized {
    fn start_instr_seq(&mut self, instr_seq: &'instr InstrSeq) { ... }
fn end_instr_seq(&mut self, instr_seq: &'instr InstrSeq) { ... }
fn visit_instr(
        &mut self,
        instr: &'instr Instr,
        instr_loc: &'instr InstrLocId
    ) { ... }
fn visit_instr_seq_id(&mut self, instr_seq_id: &InstrSeqId) { ... }
fn visit_local_id(&mut self, local: &LocalId) { ... }
fn visit_memory_id(&mut self, memory: &MemoryId) { ... }
fn visit_table_id(&mut self, table: &TableId) { ... }
fn visit_global_id(&mut self, global: &GlobalId) { ... }
fn visit_function_id(&mut self, function: &FunctionId) { ... }
fn visit_data_id(&mut self, function: &DataId) { ... }
fn visit_type_id(&mut self, ty: &TypeId) { ... }
fn visit_element_id(&mut self, elem: &ElementId) { ... }
fn visit_value(&mut self, value: &Value) { ... }
fn visit_block(&mut self, instr: &Block) { ... }
fn visit_loop(&mut self, instr: &Loop) { ... }
fn visit_call(&mut self, instr: &Call) { ... }
fn visit_call_indirect(&mut self, instr: &CallIndirect) { ... }
fn visit_local_get(&mut self, instr: &LocalGet) { ... }
fn visit_local_set(&mut self, instr: &LocalSet) { ... }
fn visit_local_tee(&mut self, instr: &LocalTee) { ... }
fn visit_global_get(&mut self, instr: &GlobalGet) { ... }
fn visit_global_set(&mut self, instr: &GlobalSet) { ... }
fn visit_const(&mut self, instr: &Const) { ... }
fn visit_binop(&mut self, instr: &Binop) { ... }
fn visit_unop(&mut self, instr: &Unop) { ... }
fn visit_select(&mut self, instr: &Select) { ... }
fn visit_unreachable(&mut self, instr: &Unreachable) { ... }
fn visit_br(&mut self, instr: &Br) { ... }
fn visit_br_if(&mut self, instr: &BrIf) { ... }
fn visit_if_else(&mut self, instr: &IfElse) { ... }
fn visit_br_table(&mut self, instr: &BrTable) { ... }
fn visit_drop(&mut self, instr: &Drop) { ... }
fn visit_return(&mut self, instr: &Return) { ... }
fn visit_memory_size(&mut self, instr: &MemorySize) { ... }
fn visit_memory_grow(&mut self, instr: &MemoryGrow) { ... }
fn visit_memory_init(&mut self, instr: &MemoryInit) { ... }
fn visit_data_drop(&mut self, instr: &DataDrop) { ... }
fn visit_memory_copy(&mut self, instr: &MemoryCopy) { ... }
fn visit_memory_fill(&mut self, instr: &MemoryFill) { ... }
fn visit_load(&mut self, instr: &Load) { ... }
fn visit_store(&mut self, instr: &Store) { ... }
fn visit_atomic_rmw(&mut self, instr: &AtomicRmw) { ... }
fn visit_cmpxchg(&mut self, instr: &Cmpxchg) { ... }
fn visit_atomic_notify(&mut self, instr: &AtomicNotify) { ... }
fn visit_atomic_wait(&mut self, instr: &AtomicWait) { ... }
fn visit_atomic_fence(&mut self, instr: &AtomicFence) { ... }
fn visit_table_get(&mut self, instr: &TableGet) { ... }
fn visit_table_set(&mut self, instr: &TableSet) { ... }
fn visit_table_grow(&mut self, instr: &TableGrow) { ... }
fn visit_table_size(&mut self, instr: &TableSize) { ... }
fn visit_table_fill(&mut self, instr: &TableFill) { ... }
fn visit_ref_null(&mut self, instr: &RefNull) { ... }
fn visit_ref_is_null(&mut self, instr: &RefIsNull) { ... }
fn visit_ref_func(&mut self, instr: &RefFunc) { ... }
fn visit_v128_bitselect(&mut self, instr: &V128Bitselect) { ... }
fn visit_i8x16_swizzle(&mut self, instr: &I8x16Swizzle) { ... }
fn visit_i8x16_shuffle(&mut self, instr: &I8x16Shuffle) { ... }
fn visit_load_simd(&mut self, instr: &LoadSimd) { ... }
fn visit_table_init(&mut self, instr: &TableInit) { ... }
fn visit_elem_drop(&mut self, instr: &ElemDrop) { ... }
fn visit_table_copy(&mut self, instr: &TableCopy) { ... } }

A visitor is a set of callbacks that are called when a traversal (such as dfs_in_order) is walking an instruction tree.

Recursion

Do not recursively get nested InstrSeqs for any InstrSeqId you visit! You will blow the stack when processing large Wasm files. Visitors are just heterogenously-typed callbacks, not traversals themselves!

Instead, use walrus::ir::dfs_in_order and other traversal drivers that will walk the tree in a non-recursive, iterative fashion

Provided Methods

Every Visitor trait method has a default, provided implementation that does nothing.

Provided methods

fn start_instr_seq(&mut self, instr_seq: &'instr InstrSeq)[src]

Called before the traversal will start visiting each of the instructions an instruction sequence.

The order in which instruction sequences are visited is defined by the traversal function, e.g. walrus::ir::dfs_in_order.

fn end_instr_seq(&mut self, instr_seq: &'instr InstrSeq)[src]

Called after the traversal finishes visiting each of the instructions in an instruction sequence.

fn visit_instr(&mut self, instr: &'instr Instr, instr_loc: &'instr InstrLocId)[src]

Visit Instr.

fn visit_instr_seq_id(&mut self, instr_seq_id: &InstrSeqId)[src]

Visit InstrSeqId.

fn visit_local_id(&mut self, local: &LocalId)[src]

Visit LocalId.

fn visit_memory_id(&mut self, memory: &MemoryId)[src]

Visit MemoryId.

fn visit_table_id(&mut self, table: &TableId)[src]

Visit TableId.

fn visit_global_id(&mut self, global: &GlobalId)[src]

Visit GlobalId.

fn visit_function_id(&mut self, function: &FunctionId)[src]

Visit FunctionId.

fn visit_data_id(&mut self, function: &DataId)[src]

Visit DataId.

fn visit_type_id(&mut self, ty: &TypeId)[src]

Visit TypeId

fn visit_element_id(&mut self, elem: &ElementId)[src]

Visit ElementId

fn visit_value(&mut self, value: &Value)[src]

Visit Value.

fn visit_block(&mut self, instr: &Block)[src]

Visit Block.

fn visit_loop(&mut self, instr: &Loop)[src]

Visit Loop.

fn visit_call(&mut self, instr: &Call)[src]

Visit Call.

fn visit_call_indirect(&mut self, instr: &CallIndirect)[src]

Visit CallIndirect.

fn visit_local_get(&mut self, instr: &LocalGet)[src]

Visit LocalGet.

fn visit_local_set(&mut self, instr: &LocalSet)[src]

Visit LocalSet.

fn visit_local_tee(&mut self, instr: &LocalTee)[src]

Visit LocalTee.

fn visit_global_get(&mut self, instr: &GlobalGet)[src]

Visit GlobalGet.

fn visit_global_set(&mut self, instr: &GlobalSet)[src]

Visit GlobalSet.

fn visit_const(&mut self, instr: &Const)[src]

Visit Const.

fn visit_binop(&mut self, instr: &Binop)[src]

Visit Binop.

fn visit_unop(&mut self, instr: &Unop)[src]

Visit Unop.

fn visit_select(&mut self, instr: &Select)[src]

Visit Select.

fn visit_unreachable(&mut self, instr: &Unreachable)[src]

Visit Unreachable.

fn visit_br(&mut self, instr: &Br)[src]

Visit Br.

fn visit_br_if(&mut self, instr: &BrIf)[src]

Visit BrIf.

fn visit_if_else(&mut self, instr: &IfElse)[src]

Visit IfElse.

fn visit_br_table(&mut self, instr: &BrTable)[src]

Visit BrTable.

fn visit_drop(&mut self, instr: &Drop)[src]

Visit Drop.

fn visit_return(&mut self, instr: &Return)[src]

Visit Return.

fn visit_memory_size(&mut self, instr: &MemorySize)[src]

Visit MemorySize.

fn visit_memory_grow(&mut self, instr: &MemoryGrow)[src]

Visit MemoryGrow.

fn visit_memory_init(&mut self, instr: &MemoryInit)[src]

Visit MemoryInit.

fn visit_data_drop(&mut self, instr: &DataDrop)[src]

Visit DataDrop.

fn visit_memory_copy(&mut self, instr: &MemoryCopy)[src]

Visit MemoryCopy.

fn visit_memory_fill(&mut self, instr: &MemoryFill)[src]

Visit MemoryFill.

fn visit_load(&mut self, instr: &Load)[src]

Visit Load.

fn visit_store(&mut self, instr: &Store)[src]

Visit Store.

fn visit_atomic_rmw(&mut self, instr: &AtomicRmw)[src]

Visit AtomicRmw.

fn visit_cmpxchg(&mut self, instr: &Cmpxchg)[src]

Visit Cmpxchg.

fn visit_atomic_notify(&mut self, instr: &AtomicNotify)[src]

Visit AtomicNotify.

fn visit_atomic_wait(&mut self, instr: &AtomicWait)[src]

Visit AtomicWait.

fn visit_atomic_fence(&mut self, instr: &AtomicFence)[src]

Visit AtomicFence.

fn visit_table_get(&mut self, instr: &TableGet)[src]

Visit TableGet.

fn visit_table_set(&mut self, instr: &TableSet)[src]

Visit TableSet.

fn visit_table_grow(&mut self, instr: &TableGrow)[src]

Visit TableGrow.

fn visit_table_size(&mut self, instr: &TableSize)[src]

Visit TableSize.

fn visit_table_fill(&mut self, instr: &TableFill)[src]

Visit TableFill.

fn visit_ref_null(&mut self, instr: &RefNull)[src]

Visit RefNull.

fn visit_ref_is_null(&mut self, instr: &RefIsNull)[src]

Visit RefIsNull.

fn visit_ref_func(&mut self, instr: &RefFunc)[src]

Visit RefFunc.

fn visit_v128_bitselect(&mut self, instr: &V128Bitselect)[src]

Visit V128Bitselect.

fn visit_i8x16_swizzle(&mut self, instr: &I8x16Swizzle)[src]

Visit I8x16Swizzle.

fn visit_i8x16_shuffle(&mut self, instr: &I8x16Shuffle)[src]

Visit I8x16Shuffle.

fn visit_load_simd(&mut self, instr: &LoadSimd)[src]

Visit LoadSimd.

fn visit_table_init(&mut self, instr: &TableInit)[src]

Visit TableInit.

fn visit_elem_drop(&mut self, instr: &ElemDrop)[src]

Visit ElemDrop.

fn visit_table_copy(&mut self, instr: &TableCopy)[src]

Visit TableCopy.

Loading content...

Implementors

Loading content...