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 InstrSeq
s for any InstrSeqId
you
visit! You will blow the stack when processing large Wasm
files. Visitor
s 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§
sourcefn start_instr_seq(&mut self, instr_seq: &'instr InstrSeq)
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
.
sourcefn end_instr_seq(&mut self, instr_seq: &'instr InstrSeq)
fn end_instr_seq(&mut self, instr_seq: &'instr InstrSeq)
Called after the traversal finishes visiting each of the instructions in an instruction sequence.
sourcefn visit_instr(&mut self, instr: &'instr Instr, instr_loc: &'instr InstrLocId)
fn visit_instr(&mut self, instr: &'instr Instr, instr_loc: &'instr InstrLocId)
Visit Instr
.
sourcefn visit_instr_seq_id(&mut self, instr_seq_id: &InstrSeqId)
fn visit_instr_seq_id(&mut self, instr_seq_id: &InstrSeqId)
Visit InstrSeqId
.
sourcefn visit_local_id(&mut self, local: &LocalId)
fn visit_local_id(&mut self, local: &LocalId)
Visit LocalId
.
sourcefn visit_memory_id(&mut self, memory: &MemoryId)
fn visit_memory_id(&mut self, memory: &MemoryId)
Visit MemoryId
.
sourcefn visit_table_id(&mut self, table: &TableId)
fn visit_table_id(&mut self, table: &TableId)
Visit TableId
.
sourcefn visit_global_id(&mut self, global: &GlobalId)
fn visit_global_id(&mut self, global: &GlobalId)
Visit GlobalId
.
sourcefn visit_function_id(&mut self, function: &FunctionId)
fn visit_function_id(&mut self, function: &FunctionId)
Visit FunctionId
.
sourcefn visit_data_id(&mut self, function: &DataId)
fn visit_data_id(&mut self, function: &DataId)
Visit DataId
.
sourcefn visit_type_id(&mut self, ty: &TypeId)
fn visit_type_id(&mut self, ty: &TypeId)
Visit TypeId
sourcefn visit_element_id(&mut self, elem: &ElementId)
fn visit_element_id(&mut self, elem: &ElementId)
Visit ElementId
sourcefn visit_value(&mut self, value: &Value)
fn visit_value(&mut self, value: &Value)
Visit Value
.
sourcefn visit_block(&mut self, instr: &Block)
fn visit_block(&mut self, instr: &Block)
Visit Block
.
sourcefn visit_loop(&mut self, instr: &Loop)
fn visit_loop(&mut self, instr: &Loop)
Visit Loop
.
sourcefn visit_call(&mut self, instr: &Call)
fn visit_call(&mut self, instr: &Call)
Visit Call
.
sourcefn visit_call_indirect(&mut self, instr: &CallIndirect)
fn visit_call_indirect(&mut self, instr: &CallIndirect)
Visit CallIndirect
.
sourcefn visit_local_get(&mut self, instr: &LocalGet)
fn visit_local_get(&mut self, instr: &LocalGet)
Visit LocalGet
.
sourcefn visit_local_set(&mut self, instr: &LocalSet)
fn visit_local_set(&mut self, instr: &LocalSet)
Visit LocalSet
.
sourcefn visit_local_tee(&mut self, instr: &LocalTee)
fn visit_local_tee(&mut self, instr: &LocalTee)
Visit LocalTee
.
sourcefn visit_global_get(&mut self, instr: &GlobalGet)
fn visit_global_get(&mut self, instr: &GlobalGet)
Visit GlobalGet
.
sourcefn visit_global_set(&mut self, instr: &GlobalSet)
fn visit_global_set(&mut self, instr: &GlobalSet)
Visit GlobalSet
.
sourcefn visit_const(&mut self, instr: &Const)
fn visit_const(&mut self, instr: &Const)
Visit Const
.
sourcefn visit_binop(&mut self, instr: &Binop)
fn visit_binop(&mut self, instr: &Binop)
Visit Binop
.
sourcefn visit_unop(&mut self, instr: &Unop)
fn visit_unop(&mut self, instr: &Unop)
Visit Unop
.
sourcefn visit_select(&mut self, instr: &Select)
fn visit_select(&mut self, instr: &Select)
Visit Select
.
sourcefn visit_unreachable(&mut self, instr: &Unreachable)
fn visit_unreachable(&mut self, instr: &Unreachable)
Visit Unreachable
.
sourcefn visit_br_if(&mut self, instr: &BrIf)
fn visit_br_if(&mut self, instr: &BrIf)
Visit BrIf
.
sourcefn visit_if_else(&mut self, instr: &IfElse)
fn visit_if_else(&mut self, instr: &IfElse)
Visit IfElse
.
sourcefn visit_br_table(&mut self, instr: &BrTable)
fn visit_br_table(&mut self, instr: &BrTable)
Visit BrTable
.
sourcefn visit_drop(&mut self, instr: &Drop)
fn visit_drop(&mut self, instr: &Drop)
Visit Drop
.
sourcefn visit_return(&mut self, instr: &Return)
fn visit_return(&mut self, instr: &Return)
Visit Return
.
sourcefn visit_memory_size(&mut self, instr: &MemorySize)
fn visit_memory_size(&mut self, instr: &MemorySize)
Visit MemorySize
.
sourcefn visit_memory_grow(&mut self, instr: &MemoryGrow)
fn visit_memory_grow(&mut self, instr: &MemoryGrow)
Visit MemoryGrow
.
sourcefn visit_memory_init(&mut self, instr: &MemoryInit)
fn visit_memory_init(&mut self, instr: &MemoryInit)
Visit MemoryInit
.
sourcefn visit_data_drop(&mut self, instr: &DataDrop)
fn visit_data_drop(&mut self, instr: &DataDrop)
Visit DataDrop
.
sourcefn visit_memory_copy(&mut self, instr: &MemoryCopy)
fn visit_memory_copy(&mut self, instr: &MemoryCopy)
Visit MemoryCopy
.
sourcefn visit_memory_fill(&mut self, instr: &MemoryFill)
fn visit_memory_fill(&mut self, instr: &MemoryFill)
Visit MemoryFill
.
sourcefn visit_load(&mut self, instr: &Load)
fn visit_load(&mut self, instr: &Load)
Visit Load
.
sourcefn visit_store(&mut self, instr: &Store)
fn visit_store(&mut self, instr: &Store)
Visit Store
.
sourcefn visit_atomic_rmw(&mut self, instr: &AtomicRmw)
fn visit_atomic_rmw(&mut self, instr: &AtomicRmw)
Visit AtomicRmw
.
sourcefn visit_cmpxchg(&mut self, instr: &Cmpxchg)
fn visit_cmpxchg(&mut self, instr: &Cmpxchg)
Visit Cmpxchg
.
sourcefn visit_atomic_notify(&mut self, instr: &AtomicNotify)
fn visit_atomic_notify(&mut self, instr: &AtomicNotify)
Visit AtomicNotify
.
sourcefn visit_atomic_wait(&mut self, instr: &AtomicWait)
fn visit_atomic_wait(&mut self, instr: &AtomicWait)
Visit AtomicWait
.
sourcefn visit_atomic_fence(&mut self, instr: &AtomicFence)
fn visit_atomic_fence(&mut self, instr: &AtomicFence)
Visit AtomicFence
.
sourcefn visit_table_get(&mut self, instr: &TableGet)
fn visit_table_get(&mut self, instr: &TableGet)
Visit TableGet
.
sourcefn visit_table_set(&mut self, instr: &TableSet)
fn visit_table_set(&mut self, instr: &TableSet)
Visit TableSet
.
sourcefn visit_table_grow(&mut self, instr: &TableGrow)
fn visit_table_grow(&mut self, instr: &TableGrow)
Visit TableGrow
.
sourcefn visit_table_size(&mut self, instr: &TableSize)
fn visit_table_size(&mut self, instr: &TableSize)
Visit TableSize
.
sourcefn visit_table_fill(&mut self, instr: &TableFill)
fn visit_table_fill(&mut self, instr: &TableFill)
Visit TableFill
.
sourcefn visit_ref_null(&mut self, instr: &RefNull)
fn visit_ref_null(&mut self, instr: &RefNull)
Visit RefNull
.
sourcefn visit_ref_is_null(&mut self, instr: &RefIsNull)
fn visit_ref_is_null(&mut self, instr: &RefIsNull)
Visit RefIsNull
.
sourcefn visit_ref_func(&mut self, instr: &RefFunc)
fn visit_ref_func(&mut self, instr: &RefFunc)
Visit RefFunc
.
sourcefn visit_v128_bitselect(&mut self, instr: &V128Bitselect)
fn visit_v128_bitselect(&mut self, instr: &V128Bitselect)
Visit V128Bitselect
.
sourcefn visit_i8x16_swizzle(&mut self, instr: &I8x16Swizzle)
fn visit_i8x16_swizzle(&mut self, instr: &I8x16Swizzle)
Visit I8x16Swizzle
.
sourcefn visit_i8x16_shuffle(&mut self, instr: &I8x16Shuffle)
fn visit_i8x16_shuffle(&mut self, instr: &I8x16Shuffle)
Visit I8x16Shuffle
.
sourcefn visit_load_simd(&mut self, instr: &LoadSimd)
fn visit_load_simd(&mut self, instr: &LoadSimd)
Visit LoadSimd
.
sourcefn visit_table_init(&mut self, instr: &TableInit)
fn visit_table_init(&mut self, instr: &TableInit)
Visit TableInit
.
sourcefn visit_elem_drop(&mut self, instr: &ElemDrop)
fn visit_elem_drop(&mut self, instr: &ElemDrop)
Visit ElemDrop
.
sourcefn visit_table_copy(&mut self, instr: &TableCopy)
fn visit_table_copy(&mut self, instr: &TableCopy)
Visit TableCopy
.