pub struct Module {Show 22 fields
pub name: Option<String>,
pub initializers: Vec<Initializer>,
pub exports: IndexMap<String, EntityIndex>,
pub start_func: Option<FuncIndex>,
pub table_initialization: TableInitialization,
pub memory_initialization: MemoryInitialization,
pub passive_elements: Vec<TableSegmentElements>,
pub passive_elements_map: BTreeMap<ElemIndex, usize>,
pub passive_data_map: BTreeMap<DataIndex, Range<u32>>,
pub types: PrimaryMap<TypeIndex, EngineOrModuleTypeIndex>,
pub num_imported_funcs: usize,
pub num_imported_tables: usize,
pub num_imported_memories: usize,
pub num_imported_globals: usize,
pub num_imported_tags: usize,
pub num_escaped_funcs: usize,
pub functions: PrimaryMap<FuncIndex, FunctionType>,
pub tables: PrimaryMap<TableIndex, Table>,
pub memories: PrimaryMap<MemoryIndex, Memory>,
pub globals: PrimaryMap<GlobalIndex, Global>,
pub global_initializers: PrimaryMap<DefinedGlobalIndex, ConstExpr>,
pub tags: PrimaryMap<TagIndex, Tag>,
}
Expand description
A translated WebAssembly module, excluding the function bodies and memory initializers.
Fields§
§name: Option<String>
The name of this wasm module, often found in the wasm file.
initializers: Vec<Initializer>
All import records, in the order they are declared in the module.
exports: IndexMap<String, EntityIndex>
Exported entities.
start_func: Option<FuncIndex>
The module “start” function, if present.
table_initialization: TableInitialization
WebAssembly table initialization data, per table.
memory_initialization: MemoryInitialization
WebAssembly linear memory initializer.
passive_elements: Vec<TableSegmentElements>
WebAssembly passive elements.
passive_elements_map: BTreeMap<ElemIndex, usize>
The map from passive element index (element segment index space) to index in passive_elements
.
passive_data_map: BTreeMap<DataIndex, Range<u32>>
The map from passive data index (data segment index space) to index in passive_data
.
types: PrimaryMap<TypeIndex, EngineOrModuleTypeIndex>
Types declared in the wasm module.
num_imported_funcs: usize
Number of imported or aliased functions in the module.
num_imported_tables: usize
Number of imported or aliased tables in the module.
num_imported_memories: usize
Number of imported or aliased memories in the module.
num_imported_globals: usize
Number of imported or aliased globals in the module.
Number of imported or aliased tags in the module.
num_escaped_funcs: usize
Number of functions that “escape” from this module may need to have a
VMFuncRef
constructed for them.
This is also the number of functions in the functions
array below with
an func_ref
index (and is the maximum func_ref index).
functions: PrimaryMap<FuncIndex, FunctionType>
Types of functions, imported and local.
tables: PrimaryMap<TableIndex, Table>
WebAssembly tables.
memories: PrimaryMap<MemoryIndex, Memory>
WebAssembly linear memory plans.
globals: PrimaryMap<GlobalIndex, Global>
WebAssembly global variables.
global_initializers: PrimaryMap<DefinedGlobalIndex, ConstExpr>
WebAssembly global initializers for locally-defined globals.
WebAssembly exception and control tags.
Implementations§
Source§impl Module
impl Module
Sourcepub fn func_index(&self, defined_func: DefinedFuncIndex) -> FuncIndex
pub fn func_index(&self, defined_func: DefinedFuncIndex) -> FuncIndex
Convert a DefinedFuncIndex
into a FuncIndex
.
Sourcepub fn defined_func_index(&self, func: FuncIndex) -> Option<DefinedFuncIndex>
pub fn defined_func_index(&self, func: FuncIndex) -> Option<DefinedFuncIndex>
Convert a FuncIndex
into a DefinedFuncIndex
. Returns None if the
index is an imported function.
Sourcepub fn is_imported_function(&self, index: FuncIndex) -> bool
pub fn is_imported_function(&self, index: FuncIndex) -> bool
Test whether the given function index is for an imported function.
Sourcepub fn table_index(&self, defined_table: DefinedTableIndex) -> TableIndex
pub fn table_index(&self, defined_table: DefinedTableIndex) -> TableIndex
Convert a DefinedTableIndex
into a TableIndex
.
Sourcepub fn defined_table_index(
&self,
table: TableIndex,
) -> Option<DefinedTableIndex>
pub fn defined_table_index( &self, table: TableIndex, ) -> Option<DefinedTableIndex>
Convert a TableIndex
into a DefinedTableIndex
. Returns None if the
index is an imported table.
Sourcepub fn is_imported_table(&self, index: TableIndex) -> bool
pub fn is_imported_table(&self, index: TableIndex) -> bool
Test whether the given table index is for an imported table.
Sourcepub fn memory_index(&self, defined_memory: DefinedMemoryIndex) -> MemoryIndex
pub fn memory_index(&self, defined_memory: DefinedMemoryIndex) -> MemoryIndex
Convert a DefinedMemoryIndex
into a MemoryIndex
.
Sourcepub fn defined_memory_index(
&self,
memory: MemoryIndex,
) -> Option<DefinedMemoryIndex>
pub fn defined_memory_index( &self, memory: MemoryIndex, ) -> Option<DefinedMemoryIndex>
Convert a MemoryIndex
into a DefinedMemoryIndex
. Returns None if the
index is an imported memory.
Sourcepub fn owned_memory_index(&self, memory: DefinedMemoryIndex) -> OwnedMemoryIndex
pub fn owned_memory_index(&self, memory: DefinedMemoryIndex) -> OwnedMemoryIndex
Convert a DefinedMemoryIndex
into an OwnedMemoryIndex
. Returns None
if the index is an imported memory.
Sourcepub fn is_imported_memory(&self, index: MemoryIndex) -> bool
pub fn is_imported_memory(&self, index: MemoryIndex) -> bool
Test whether the given memory index is for an imported memory.
Sourcepub fn global_index(&self, defined_global: DefinedGlobalIndex) -> GlobalIndex
pub fn global_index(&self, defined_global: DefinedGlobalIndex) -> GlobalIndex
Convert a DefinedGlobalIndex
into a GlobalIndex
.
Sourcepub fn defined_global_index(
&self,
global: GlobalIndex,
) -> Option<DefinedGlobalIndex>
pub fn defined_global_index( &self, global: GlobalIndex, ) -> Option<DefinedGlobalIndex>
Convert a GlobalIndex
into a DefinedGlobalIndex
. Returns None if the
index is an imported global.
Sourcepub fn is_imported_global(&self, index: GlobalIndex) -> bool
pub fn is_imported_global(&self, index: GlobalIndex) -> bool
Test whether the given global index is for an imported global.
Sourcepub fn is_imported_tag(&self, index: TagIndex) -> bool
pub fn is_imported_tag(&self, index: TagIndex) -> bool
Test whether the given tag index is for an imported tag.
Sourcepub fn tag_index(&self, defined_tag: DefinedTagIndex) -> TagIndex
pub fn tag_index(&self, defined_tag: DefinedTagIndex) -> TagIndex
Convert a DefinedTagIndex
into a TagIndex
.
Sourcepub fn defined_tag_index(&self, tag: TagIndex) -> Option<DefinedTagIndex>
pub fn defined_tag_index(&self, tag: TagIndex) -> Option<DefinedTagIndex>
Convert a TagIndex
into a DefinedTagIndex
. Returns None if the
index is an imported tag.
Sourcepub fn imports(&self) -> impl ExactSizeIterator<Item = (&str, &str, EntityType)>
pub fn imports(&self) -> impl ExactSizeIterator<Item = (&str, &str, EntityType)>
Returns an iterator of all the imports in this module, along with their module name, field name, and type that’s being imported.
Sourcepub fn type_of(&self, index: EntityIndex) -> EntityType
pub fn type_of(&self, index: EntityIndex) -> EntityType
Returns the type of an item based on its index
Sourcepub fn push_tag(
&mut self,
signature: impl Into<EngineOrModuleTypeIndex>,
) -> TagIndex
pub fn push_tag( &mut self, signature: impl Into<EngineOrModuleTypeIndex>, ) -> TagIndex
Appends a new tag to this module with the given type information.
Sourcepub fn push_function(
&mut self,
signature: impl Into<EngineOrModuleTypeIndex>,
) -> FuncIndex
pub fn push_function( &mut self, signature: impl Into<EngineOrModuleTypeIndex>, ) -> FuncIndex
Appends a new function to this module with the given type information, used for functions that either don’t escape or aren’t certain whether they escape yet.
Sourcepub fn defined_func_indices(
&self,
) -> impl Iterator<Item = DefinedFuncIndex> + use<>
pub fn defined_func_indices( &self, ) -> impl Iterator<Item = DefinedFuncIndex> + use<>
Returns an iterator over all of the defined function indices in this module.
Sourcepub fn num_defined_tables(&self) -> usize
pub fn num_defined_tables(&self) -> usize
Returns the number of tables defined by this module itself: all tables minus imported tables.
Sourcepub fn num_defined_memories(&self) -> usize
pub fn num_defined_memories(&self) -> usize
Returns the number of memories defined by this module itself: all memories minus imported memories.
Returns the number of tags defined by this module itself: all tags minus imported tags.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Module
impl<'de> Deserialize<'de> for Module
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl TypeTrace for Module
impl TypeTrace for Module
Source§fn trace_mut<F, E>(&mut self, func: &mut F) -> Result<(), E>
fn trace_mut<F, E>(&mut self, func: &mut F) -> Result<(), E>
Source§fn trace_engine_indices<F, E>(&self, func: &mut F) -> Result<(), E>
fn trace_engine_indices<F, E>(&self, func: &mut F) -> Result<(), E>
VMSharedTypeIndex
edges, ignoring other edges.Source§fn canonicalize_for_runtime_usage<F>(&mut self, module_to_engine: &mut F)
fn canonicalize_for_runtime_usage<F>(&mut self, module_to_engine: &mut F)
self
by rewriting all type references inside self
from
module-level interned type indices to engine-level interned type
indices. Read moreSource§fn is_canonicalized_for_runtime_usage(&self) -> bool
fn is_canonicalized_for_runtime_usage(&self) -> bool
Source§fn canonicalize_for_hash_consing<F>(
&mut self,
rec_group_range: Range<ModuleInternedTypeIndex>,
module_to_engine: &mut F,
)
fn canonicalize_for_hash_consing<F>( &mut self, rec_group_range: Range<ModuleInternedTypeIndex>, module_to_engine: &mut F, )
self
by rewriting all type references inside self
from
module-level interned type indices to either engine-level interned type
indices or recgroup-relative indices. Read more