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

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_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_v128_swizzle(&mut self, instr: &V128Swizzle) { ... }
fn visit_v128_shuffle(&mut self, instr: &V128Shuffle) { ... }
fn visit_load_splat(&mut self, instr: &LoadSplat) { ... } }

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)

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_table_fill(&mut self, instr: &TableFill)

Visit TableFill.

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

Visit RefNull.

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

Visit RefIsNull.

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

Visit RefFunc.

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.

Loading content...

Implementors

Loading content...