Trait walrus::ir::Visitor

source ·
pub trait Visitor<'instr>: Sized {
Show 61 methods // Provided methods 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) { ... }
}
Expand description

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§

source

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

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.

source

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

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

source

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

Visit Instr.

source

fn visit_instr_seq_id(&mut self, instr_seq_id: &InstrSeqId)

Visit InstrSeqId.

source

fn visit_local_id(&mut self, local: &LocalId)

Visit LocalId.

source

fn visit_memory_id(&mut self, memory: &MemoryId)

Visit MemoryId.

source

fn visit_table_id(&mut self, table: &TableId)

Visit TableId.

source

fn visit_global_id(&mut self, global: &GlobalId)

Visit GlobalId.

source

fn visit_function_id(&mut self, function: &FunctionId)

Visit FunctionId.

source

fn visit_data_id(&mut self, function: &DataId)

Visit DataId.

source

fn visit_type_id(&mut self, ty: &TypeId)

Visit TypeId

source

fn visit_element_id(&mut self, elem: &ElementId)

Visit ElementId

source

fn visit_value(&mut self, value: &Value)

Visit Value.

source

fn visit_block(&mut self, instr: &Block)

Visit Block.

source

fn visit_loop(&mut self, instr: &Loop)

Visit Loop.

source

fn visit_call(&mut self, instr: &Call)

Visit Call.

source

fn visit_call_indirect(&mut self, instr: &CallIndirect)

Visit CallIndirect.

source

fn visit_local_get(&mut self, instr: &LocalGet)

Visit LocalGet.

source

fn visit_local_set(&mut self, instr: &LocalSet)

Visit LocalSet.

source

fn visit_local_tee(&mut self, instr: &LocalTee)

Visit LocalTee.

source

fn visit_global_get(&mut self, instr: &GlobalGet)

Visit GlobalGet.

source

fn visit_global_set(&mut self, instr: &GlobalSet)

Visit GlobalSet.

source

fn visit_const(&mut self, instr: &Const)

Visit Const.

source

fn visit_binop(&mut self, instr: &Binop)

Visit Binop.

source

fn visit_unop(&mut self, instr: &Unop)

Visit Unop.

source

fn visit_select(&mut self, instr: &Select)

Visit Select.

source

fn visit_unreachable(&mut self, instr: &Unreachable)

Visit Unreachable.

source

fn visit_br(&mut self, instr: &Br)

Visit Br.

source

fn visit_br_if(&mut self, instr: &BrIf)

Visit BrIf.

source

fn visit_if_else(&mut self, instr: &IfElse)

Visit IfElse.

source

fn visit_br_table(&mut self, instr: &BrTable)

Visit BrTable.

source

fn visit_drop(&mut self, instr: &Drop)

Visit Drop.

source

fn visit_return(&mut self, instr: &Return)

Visit Return.

source

fn visit_memory_size(&mut self, instr: &MemorySize)

Visit MemorySize.

source

fn visit_memory_grow(&mut self, instr: &MemoryGrow)

Visit MemoryGrow.

source

fn visit_memory_init(&mut self, instr: &MemoryInit)

Visit MemoryInit.

source

fn visit_data_drop(&mut self, instr: &DataDrop)

Visit DataDrop.

source

fn visit_memory_copy(&mut self, instr: &MemoryCopy)

Visit MemoryCopy.

source

fn visit_memory_fill(&mut self, instr: &MemoryFill)

Visit MemoryFill.

source

fn visit_load(&mut self, instr: &Load)

Visit Load.

source

fn visit_store(&mut self, instr: &Store)

Visit Store.

source

fn visit_atomic_rmw(&mut self, instr: &AtomicRmw)

Visit AtomicRmw.

source

fn visit_cmpxchg(&mut self, instr: &Cmpxchg)

Visit Cmpxchg.

source

fn visit_atomic_notify(&mut self, instr: &AtomicNotify)

Visit AtomicNotify.

source

fn visit_atomic_wait(&mut self, instr: &AtomicWait)

Visit AtomicWait.

source

fn visit_atomic_fence(&mut self, instr: &AtomicFence)

Visit AtomicFence.

source

fn visit_table_get(&mut self, instr: &TableGet)

Visit TableGet.

source

fn visit_table_set(&mut self, instr: &TableSet)

Visit TableSet.

source

fn visit_table_grow(&mut self, instr: &TableGrow)

Visit TableGrow.

source

fn visit_table_size(&mut self, instr: &TableSize)

Visit TableSize.

source

fn visit_table_fill(&mut self, instr: &TableFill)

Visit TableFill.

source

fn visit_ref_null(&mut self, instr: &RefNull)

Visit RefNull.

source

fn visit_ref_is_null(&mut self, instr: &RefIsNull)

Visit RefIsNull.

source

fn visit_ref_func(&mut self, instr: &RefFunc)

Visit RefFunc.

source

fn visit_v128_bitselect(&mut self, instr: &V128Bitselect)

Visit V128Bitselect.

source

fn visit_i8x16_swizzle(&mut self, instr: &I8x16Swizzle)

Visit I8x16Swizzle.

source

fn visit_i8x16_shuffle(&mut self, instr: &I8x16Shuffle)

Visit I8x16Shuffle.

source

fn visit_load_simd(&mut self, instr: &LoadSimd)

Visit LoadSimd.

source

fn visit_table_init(&mut self, instr: &TableInit)

Visit TableInit.

source

fn visit_elem_drop(&mut self, instr: &ElemDrop)

Visit ElemDrop.

source

fn visit_table_copy(&mut self, instr: &TableCopy)

Visit TableCopy.

Object Safety§

This trait is not object safe.

Implementors§