Trait walrus::ir::Visitor [−][src]
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)
[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
.