impl Show for CfgRegionRootBlockimpl Show for HotAnalysispub struct HotAnalysisCache {
owner_roots : Array[Int]?
cfg : HotCacheEntry[HotCfg]?
orders : HotCacheEntry[HotCfgOrders]?
dom : HotCacheEntry[HotDominators]?
postdom : HotCacheEntry[HotPostDominators]?
loop_info : HotCacheEntry[HotLoopInfo]?
use_def : HotCacheEntry[HotUseDef]?
liveness : HotCacheEntry[HotLiveness]?
effects : HotCacheEntry[HotEffectsSummary]?
ssa : HotCacheEntry[HotLocalSsa]?
} derive(Eq, Debug)impl Show for HotCacheEntry[T]impl Show for HotCallSigpub struct HotCfg {
operands_expanded : Bool
blocks : Array[HotBlockInfo]
node_to_block : Array[Int]
region_roots : Array[CfgRegionRootBlock]
entry_block : Int
exit_block : Int
exceptional_exit_block : Int?
} derive(Eq, Debug)pub struct HotControlRegionSlotInfo {
slot : Int
role : HotControlRegionRole
required : Bool
} derive(Eq, Debug)pub struct HotFunc {
nodes : Array[HotNode]
children : Array[Int]
roots : Array[Int]
locals : HotLocals
types : Array[HotTypeInfo]
type_ids : HashMap[String, Int]
value_types : Array[ValType]
value_type_ids : Array[Int]
block_types : Array[BlockType]
block_type_ids : Array[Int]
labels : Array[HotLabelInfo]
consts : Array[HotConstPayload]
memargs : Array[HotMemArg]
branch_tables : Array[HotBranchTable]
catches : Array[HotCatchInfo]
call_sigs : Array[HotCallSig]
instr_payloads : Array[HotInstrPayload]
body_result_type : Int
func_type_idx : TypeIdx?
free_nodes : Array[Int]
deleted_nodes : Array[Bool]
revision : Int
validation_env : Env?
lifted_local_accesses : HotLiftLocalAccesses?
}pub struct HotLabelInfo {
kind : HotLabelKind
result_type : Int
owner : Int
branch_arity : Int
} derive(Eq, Debug)impl Show for HotLabelInfopub struct HotLocalSsa {
revision : Int
value_types : Array[ValType]
value_origins : Array[HotSsaValueOrigin]
phis : Array[HotSsaPhi]
entry_defs : Array[Int]
phi_value_ids : Array[Int]
block_phis : Array[Array[Int]]
phi_inputs : Array[Array[HotSsaPhiInput]]
local_get_values : Array[Int]
local_write_defs : Array[Int]
value_uses : Array[Array[HotSsaUseOrigin]]
} derive(Eq, Debug)impl Show for HotLocalSsafn HotLocalSsa::new(revision? : Int, value_types? : Array[ValType], value_origins? : Array[HotSsaValueOrigin], phis? : Array[HotSsaPhi], entry_defs? : Array[Int], phi_value_ids? : Array[Int], block_phis? : Array[Array[Int]], phi_inputs? : Array[Array[HotSsaPhiInput]], local_get_values? : Array[Int], local_write_defs? : Array[Int], value_uses? : Array[Array[HotSsaUseOrigin]]) -> HotLocalSsaimpl Show for HotLoopExitpub struct HotLowerOptions {
preserve_if_arm_single_nops : Bool
preserve_dead_local_tee_drops : Bool
preserve_nontrailing_nops : Bool
preserve_trailing_nops : Bool
preserve_typed_loop_const_prefix_spills : Bool
preserve_flat_ir_spills : Bool
flatten_unused_result_blocks : Bool
preserve_struct_set_value_blocks : Bool
}fn HotLowerOptions::new(preserve_if_arm_single_nops? : Bool, preserve_dead_local_tee_drops? : Bool, preserve_nontrailing_nops? : Bool, preserve_trailing_nops? : Bool, preserve_typed_loop_const_prefix_spills? : Bool, preserve_flat_ir_spills? : Bool, flatten_unused_result_blocks? : Bool, preserve_struct_set_value_blocks? : Bool) -> HotLowerOptionspub struct HotModuleContext {
subtypes : Array[SubType]
type_groups : Array[Array[SubType]]
func_type_idxs : Array[TypeIdx]
func_types : Array[FuncType]
func_type_slots : Array[TypeIdx?]
func_imports : Array[(Name, Name)?]
func_annotations : Array[Array[FuncAnnotation]]
tables : Array[TableType]
mems : Array[MemType]
globals : Array[GlobalType]
global_inits : Array[Expr?]
global_const_inits : Array[HotConstPayload?]
elems : Array[Elem]
datas : Array[Data]
tags : Array[TagType]
imported_tag_count : Int
uses_custom_descriptors : Bool
} derive(Eq, Debug)pub enum HotOp {
Nop
Unreachable
Block
Loop
If
Try
TryTable
Br
BrIf
BrTable
BrOnNull
BrOnNonNull
BrOnCast
BrOnCastFail
Return
Call
CallIndirect
CallRef
ReturnCall
ReturnCallIndirect
ReturnCallRef
LocalGet
LocalSet
LocalTee
GlobalGet
GlobalSet
Load
Store
MemorySize
MemoryGrow
MemoryCopy
MemoryFill
MemoryInit
DataDrop
TableGet
TableSet
TableSize
TableGrow
TableFill
TableCopy
TableInit
ElemDrop
Const
Drop
Select
RefNull
RefIsNull
RefFunc
RefGetDesc
RefTest
RefCast
RefTestDesc
RefCastDescEq
Heap
Continuation
Unary
Binary
Compare
Convert
TupleMake
TupleExtract
StringOp
Throw
Rethrow
ThrowRef
Delegate
Catch
CatchAll
Atomic
Simd
} derive(Eq, Debug)pub struct HotPassDescriptor {
name : String
requires : Array[HotAnalysis]
invalidates : Array[HotAnalysis]
} derive(Eq, Debug)impl Show for HotPassDescriptorfn HotPassDescriptor::new(name : String, requires? : Array[HotAnalysis], invalidates? : Array[HotAnalysis]) -> HotPassDescriptorimpl Show for HotRegionReffn HotSsaConcreteLocals::new(value_locals? : Array[Int], extra_local_types? : Array[ValType]) -> HotSsaConcreteLocalsimpl Show for HotSsaDestructionPolicyimpl Show for HotSsaRenamePolicyimpl Show for HotSsaUseOriginimpl Show for HotStringBuiltinimpl Show for HotUseSlotKindpub enum HotVerifyError {
InvalidBodyResultType(Int)
MissingTypeKey(Int, String)
MismatchedTypeKey(Int, String, Int)
InvalidRoot(Int, Int)
InvalidNodeType(Int, Int)
InvalidNodeFlags(Int, UInt, UInt)
InvalidChildSpan(Int, Int, Int)
InvalidChildRef(Int, Int, Int)
InvalidLabelResultType(Int, Int)
InvalidLabelOwner(Int, Int)
InvalidLabelOwnerKind(Int, HotLabelKind, HotOp)
InvalidControlLabel(Int, Int)
InvalidSideTableRef(Int, HotSideTableKind, Int)
InvalidControlChildCount(Int, Int, Int)
InvalidControlChild(Int, Int, Int)
InvalidCatchPayload(Int, String)
InvalidBranchTarget(Int, Int)
InvalidBranchArity(Int, Int, Int, Int)
InvalidCfgEntry(Int)
InvalidCfgExit(Int)
InvalidCfgBlockId(Int, Int)
InvalidCfgEdge(Int, CfgEdge)
InvalidCfgEdgeSymmetry(Int, CfgEdge)
InvalidCfgNodeMapping(Int, Int)
InvalidCfgBlockNode(Int, Int)
InvalidCfgRegionRoot(Int, Int, Int)
InvalidCfgShape(String, Int, Int)
InvalidDomEntry(Int, Int)
InvalidDomShape(String, Int, Int)
InvalidDomReachable(Int)
InvalidDomIdom(Int, Int)
InvalidDomChild(Int, Int)
InvalidDomFrontier(Int, Int)
InvalidSsaRevision(Int, Int)
InvalidSsaShape(String, Int, Int)
InvalidSsaValue(Int)
InvalidSsaPhi(Int)
InvalidSsaLocal(Int)
InvalidSsaNode(Int)
InvalidSsaValueOrigin(Int, HotSsaValueOrigin)
InvalidSsaPhiInput(Int, Int, Int)
InvalidSsaPhiAlignment(Int, Int, Int, Int)
InvalidSsaType(Int, ValType, ValType)
InvalidSsaUse(Int, HotSsaUseOrigin)
InvalidSsaDominance(Int, Int, Int)
InvalidAnalysisOwner
InvalidAnalysisRevision(HotAnalysis, Int, Int)
InvalidAnalysisDependency(HotAnalysis, HotAnalysis)
} derive(Eq, Debug)impl Show for HotVerifyErrorfn cfg_region_root_can_reach_next(func : HotFunc, cfg : HotCfg, region_ref : HotRegionRef, slot : Int) -> Boolfn effects_atomic_orders_conflict(earlier : UInt, later : UInt, earlier_shared~ : Bool, later_shared~ : Bool) -> Boolfn hot_build_atomic(func : HotFunc, result_types : Array[ValType], instr : Instruction, children : Array[Int]) -> Intfn hot_build_heap(func : HotFunc, result_types : Array[ValType], instr : Instruction, children : Array[Int]) -> Intfn hot_build_simd(func : HotFunc, result_types : Array[ValType], instr : Instruction, children : Array[Int]) -> Intfn[S, E] hot_for_each_child(func : HotFunc, parent_id : Int, initial : S, visit : (S, Int, Int) -> HotVisitCtl[S, E]) -> Result[S, E]fn[S, E] hot_for_each_root(func : HotFunc, initial : S, visit : (S, Int, Int) -> HotVisitCtl[S, E]) -> Result[S, E]fn hot_label_alloc(func : HotFunc, kind : HotLabelKind, result_type : Int, owner : Int, branch_arity : Int) -> Intfn hot_lift_body_result(body : Expr, locals : HotLocals, body_result_type? : BlockType) -> Result[HotFunc, HotLiftError]fn hot_lift_body_with_context(body : Expr, locals : HotLocals, ctx : HotModuleContext, body_result_type? : BlockType) -> HotFuncfn hot_lift_body_with_context_result(body : Expr, locals : HotLocals, ctx : HotModuleContext, body_result_type? : BlockType) -> Result[HotFunc, HotLiftError]fn hot_lift_body_with_context_unverified(body : Expr, locals : HotLocals, ctx : HotModuleContext, body_result_type? : BlockType) -> HotFuncfn hot_lift_func_with_context_result(mod_ : Module, func_idx : FuncIdx, ctx : HotModuleContext, capture_stack_locals? : Bool, materialize_multi_values? : Bool, record_local_accesses? : Bool, record_capture_sources? : Bool) -> Result[HotFunc, HotLiftError]fn hot_lift_func_with_context_unverified(mod_ : Module, func_idx : FuncIdx, ctx : HotModuleContext) -> HotFuncfn hot_module_func_has_annotation(ctx : HotModuleContext, func_idx : FuncIdx, name : String) -> Boolfn hot_module_func_import_matches(ctx : HotModuleContext, func_idx : FuncIdx, module_name : String, base_name : String) -> Boolfn hot_module_resolve_block_results(ctx : HotModuleContext, block_type : BlockType) -> Array[ValType]?fn hot_module_resolve_global_const_init(ctx : HotModuleContext, global_idx : GlobalIdx) -> HotConstPayload?fn hot_module_resolve_struct_fields(ctx : HotModuleContext, type_idx : TypeIdx) -> Array[FieldType]?fn hot_region_insert(func : HotFunc, region_ref : HotRegionRef, idx : Int, node_ids : Array[Int]) -> Unitfn hot_region_is_strict_no_work_block_chain(func : HotFunc, region_ref : HotRegionRef, label_is_used : (Int) -> Bool) -> Boolfn hot_region_is_strict_no_work_forest(func : HotFunc, region_ref : HotRegionRef, label_is_used : (Int) -> Bool) -> Boolfn hot_region_remove(func : HotFunc, region_ref : HotRegionRef, idx : Int, count : Int) -> Array[Int]fn hot_region_repeated_live_block_body_or_self(func : HotFunc, region_ref : HotRegionRef) -> HotRegionReffn hot_region_replace_body(func : HotFunc, region_ref : HotRegionRef, node_ids : Array[Int]) -> Unitfn hot_region_single_live_block_body_or_self(func : HotFunc, region_ref : HotRegionRef) -> HotRegionReffn hot_region_splice(func : HotFunc, region_ref : HotRegionRef, idx : Int, remove_count : Int, node_ids : Array[Int]) -> Array[Int]fn hot_region_split_trailing_payload_roots(func : HotFunc, region_ref : HotRegionRef, result_arity : Int) -> (Array[Int], Array[Int])?fn hot_region_split_trailing_plain_br_root(func : HotFunc, region_ref : HotRegionRef) -> (Array[Int], Int)?fn hot_region_split_trailing_plain_br_target(func : HotFunc, region_ref : HotRegionRef) -> (Array[Int], Int)?fn hot_region_truncate_suffix(func : HotFunc, region_ref : HotRegionRef, keep_count : Int) -> Array[Int]fn hot_replace_child_spans_and_control_result_type(func : HotFunc, control_id : Int, ty : Int, rewrites : Array[HotChildSpanRewrite]) -> Unitfn[S, E] hot_rewrite_children_by_slot(func : HotFunc, parent_id : Int, initial : S, rewrite : (S, Int, Int, Int) -> HotRewriteCtl[S, E]) -> Result[S, E]fn hot_type_resolve_results(func : HotFunc, ctx : HotModuleContext, type_id : Int) -> Array[ValType]?fn hot_verify_cached_analyses(func : HotFunc, cache : HotAnalysisCache) -> Result[Unit, HotVerifyError]fn[S, E] hot_walk_control_regions(func : HotFunc, control_id : Int, initial : S, visit : (S, Int, HotControlRegionSlotInfo, Int) -> HotVisitCtl[S, E]) -> Result[S, E]fn[S, E] hot_walk_region(func : HotFunc, region_id : Int, initial : S, visit : (S, Int, Int) -> HotVisitCtl[S, E]) -> Result[S, E]fn[S, E] hot_walk_subtree_postorder(func : HotFunc, root_id : Int, initial : S, visit : (S, Int) -> HotVisitCtl[S, E]) -> Result[S, E]fn[S, E] hot_walk_subtree_preorder(func : HotFunc, root_id : Int, initial : S, visit : (S, Int) -> HotVisitCtl[S, E]) -> Result[S, E]fn[S, E] hot_worklist_walk(func : HotFunc, seeds : Array[Int], initial : S, visit : (S, Int) -> HotVisitCtl[S, E]) -> Result[S, E]fn liveness_build(cfg : HotCfg, use_def : HotUseDef, include_exceptional_edges? : Bool) -> HotLivenessfn liveness_build_from_func(func : HotFunc, cfg : HotCfg, include_exceptional_edges? : Bool) -> HotLivenessfn local_graph_build_read_sources(func : HotFunc, cfg : HotCfg, selected_gets? : Array[Bool]?) -> HotLocalReadSourcesfn local_graph_can_move_set_past_node(func : HotFunc, cfg : HotCfg, graph : HotLocalGraph, set_id : Int, obstacle_id : Int) -> Array[Int]fn local_graph_reaching_source_for_get(graph : HotLocalGraph, node_id : Int, source_index : Int) -> HotLocalGraphSourcefn local_graph_reaching_source_value_for_get(graph : HotLocalGraph, node_id : Int, source_index : Int) -> HotLocalGraphSourceValuefn local_graph_reaching_sources_for_get(graph : HotLocalGraph, node_id : Int) -> Array[HotLocalGraphSource]fn local_graph_source_is_defaultable_entry(graph : HotLocalGraph, source : HotLocalGraphSource) -> Boolfn local_read_source_value_for_get(graph : HotLocalReadSources, node_id : Int, source_index : Int) -> HotLocalGraphSourceValuefn ssa_assign_concrete_locals(func : HotFunc, ssa : HotLocalSsa, preserve_write_nodes? : BitSet) -> HotSsaConcreteLocalsfn ssa_build_local(func : HotFunc, cfg : HotCfg, dom : HotDominators, liveness : HotLiveness, use_def : HotUseDef) -> HotLocalSsafn ssa_destroy_into_hot(func : HotFunc, cfg : HotCfg, ssa : HotLocalSsa, policy? : HotSsaDestroyPolicy, preserve_write_nodes? : BitSet) -> HotSsaConcreteLocalsfn ssa_insert_predecessor_copies(func : HotFunc, region_ref : HotRegionRef, predecessor_block : HotBlockInfo, copies : Array[HotSsaCopy]) -> Array[Int]fn ssa_phi_placement_blocks(func : HotFunc, cfg : HotCfg, dom : HotDominators, liveness : HotLiveness, use_def : HotUseDef, rpo : Array[Int], local_id : Int) -> Array[Int]fn ssa_simple_drop_result_if_allowed(func : HotFunc, drop_id : Int, operand_slot : Int, if_id : Int) -> Boolfn ssa_simple_drop_value_block_allowed(func : HotFunc, drop_id : Int, operand_slot : Int, block_id : Int) -> BoolInstall
Download zipWebAssembly parsing, validation, encoding, and optimization toolkit