[−][src]Trait walrus::ir::Visitor
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
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
.
fn end_instr_seq(&mut self, instr_seq: &'instr InstrSeq)
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)
Visit Instr
.
fn visit_instr_seq_id(&mut self, instr_seq_id: &InstrSeqId)
Visit InstrSeqId
.
fn visit_local_id(&mut self, local: &LocalId)
Visit LocalId
.
fn visit_memory_id(&mut self, memory: &MemoryId)
Visit MemoryId
.
fn visit_table_id(&mut self, table: &TableId)
Visit TableId
.
fn visit_global_id(&mut self, global: &GlobalId)
Visit GlobalId
.
fn visit_function_id(&mut self, function: &FunctionId)
Visit FunctionId
.
fn visit_data_id(&mut self, function: &DataId)
Visit DataId
.
fn visit_type_id(&mut self, ty: &TypeId)
Visit TypeId
fn visit_value(&mut self, value: &Value)
Visit Value
.
fn visit_block(&mut self, instr: &Block)
Visit Block
.
fn visit_loop(&mut self, instr: &Loop)
Visit Loop
.
fn visit_call(&mut self, instr: &Call)
Visit Call
.
fn visit_call_indirect(&mut self, instr: &CallIndirect)
Visit CallIndirect
.
fn visit_local_get(&mut self, instr: &LocalGet)
Visit LocalGet
.
fn visit_local_set(&mut self, instr: &LocalSet)
Visit LocalSet
.
fn visit_local_tee(&mut self, instr: &LocalTee)
Visit LocalTee
.
fn visit_global_get(&mut self, instr: &GlobalGet)
Visit GlobalGet
.
fn visit_global_set(&mut self, instr: &GlobalSet)
Visit GlobalSet
.
fn visit_const(&mut self, instr: &Const)
Visit Const
.
fn visit_binop(&mut self, instr: &Binop)
Visit Binop
.
fn visit_unop(&mut self, instr: &Unop)
Visit Unop
.
fn visit_select(&mut self, instr: &Select)
Visit Select
.
fn visit_unreachable(&mut self, instr: &Unreachable)
Visit Unreachable
.
fn visit_br(&mut self, instr: &Br)
Visit Br
.
fn visit_br_if(&mut self, instr: &BrIf)
Visit BrIf
.
fn visit_if_else(&mut self, instr: &IfElse)
Visit IfElse
.
fn visit_br_table(&mut self, instr: &BrTable)
Visit BrTable
.
fn visit_drop(&mut self, instr: &Drop)
Visit Drop
.
fn visit_return(&mut self, instr: &Return)
Visit Return
.
fn visit_memory_size(&mut self, instr: &MemorySize)
Visit MemorySize
.
fn visit_memory_grow(&mut self, instr: &MemoryGrow)
Visit MemoryGrow
.
fn visit_memory_init(&mut self, instr: &MemoryInit)
Visit MemoryInit
.
fn visit_data_drop(&mut self, instr: &DataDrop)
Visit DataDrop
.
fn visit_memory_copy(&mut self, instr: &MemoryCopy)
Visit MemoryCopy
.
fn visit_memory_fill(&mut self, instr: &MemoryFill)
Visit MemoryFill
.
fn visit_load(&mut self, instr: &Load)
Visit Load
.
fn visit_store(&mut self, instr: &Store)
Visit Store
.
fn visit_atomic_rmw(&mut self, instr: &AtomicRmw)
Visit AtomicRmw
.
fn visit_cmpxchg(&mut self, instr: &Cmpxchg)
Visit Cmpxchg
.
fn visit_atomic_notify(&mut self, instr: &AtomicNotify)
Visit AtomicNotify
.
fn visit_atomic_wait(&mut self, instr: &AtomicWait)
Visit AtomicWait
.
fn visit_atomic_fence(&mut self, instr: &AtomicFence)
Visit AtomicFence
.
fn visit_table_get(&mut self, instr: &TableGet)
Visit TableGet
.
fn visit_table_set(&mut self, instr: &TableSet)
Visit TableSet
.
fn visit_table_grow(&mut self, instr: &TableGrow)
Visit TableGrow
.
fn visit_table_size(&mut self, instr: &TableSize)
Visit TableSize
.
fn visit_ref_null(&mut self, instr: &RefNull)
Visit RefNull
.
fn visit_ref_is_null(&mut self, instr: &RefIsNull)
Visit RefIsNull
.
fn visit_v128_bitselect(&mut self, instr: &V128Bitselect)
Visit V128Bitselect
.
fn visit_v128_swizzle(&mut self, instr: &V128Swizzle)
Visit V128Swizzle
.
fn visit_v128_shuffle(&mut self, instr: &V128Shuffle)
Visit V128Shuffle
.
fn visit_load_splat(&mut self, instr: &LoadSplat)
Visit LoadSplat
.