pub trait WasmModuleResources {
Show 17 methods
// Required methods
fn table_at(&self, at: u32) -> Option<TableType>;
fn memory_at(&self, at: u32) -> Option<MemoryType>;
fn tag_at(&self, at: u32) -> Option<&FuncType>;
fn global_at(&self, at: u32) -> Option<GlobalType>;
fn sub_type_at(&self, type_index: u32) -> Option<&SubType>;
fn type_id_of_function(&self, func_idx: u32) -> Option<CoreTypeId>;
fn type_index_of_function(&self, func_index: u32) -> Option<u32>;
fn element_type_at(&self, at: u32) -> Option<RefType>;
fn is_subtype(&self, a: ValType, b: ValType) -> bool;
fn is_shared(&self, ty: RefType) -> bool;
fn check_heap_type(
&self,
heap_type: &mut HeapType,
offset: usize,
) -> Result<(), BinaryReaderError>;
fn top_type(&self, heap_type: &HeapType) -> HeapType;
fn element_count(&self) -> u32;
fn data_count(&self) -> Option<u32>;
fn is_function_referenced(&self, idx: u32) -> bool;
// Provided methods
fn check_value_type(
&self,
t: &mut ValType,
features: &WasmFeatures,
offset: usize,
) -> Result<(), BinaryReaderError> { ... }
fn check_ref_type(
&self,
ref_type: &mut RefType,
offset: usize,
) -> Result<(), BinaryReaderError> { ... }
}
Expand description
Types that qualify as Wasm validation database.
§Note
The wasmparser
crate provides a builtin validation framework but allows
users of this crate to also feed the parsed Wasm into their own data
structure while parsing and also validate at the same time without
the need of an additional parsing or validation step or copying data around.
Required Methods§
sourcefn table_at(&self, at: u32) -> Option<TableType>
fn table_at(&self, at: u32) -> Option<TableType>
Returns the table at given index if any.
The table element type must be canonicalized.
sourcefn memory_at(&self, at: u32) -> Option<MemoryType>
fn memory_at(&self, at: u32) -> Option<MemoryType>
Returns the linear memory at given index.
sourcefn tag_at(&self, at: u32) -> Option<&FuncType>
fn tag_at(&self, at: u32) -> Option<&FuncType>
Returns the tag at given index.
The tag’s function type must be canonicalized.
sourcefn global_at(&self, at: u32) -> Option<GlobalType>
fn global_at(&self, at: u32) -> Option<GlobalType>
Returns the global variable at given index.
The global’s value type must be canonicalized.
sourcefn sub_type_at(&self, type_index: u32) -> Option<&SubType>
fn sub_type_at(&self, type_index: u32) -> Option<&SubType>
Returns the SubType
associated with the given type index.
The sub type must be canonicalized.
sourcefn type_id_of_function(&self, func_idx: u32) -> Option<CoreTypeId>
fn type_id_of_function(&self, func_idx: u32) -> Option<CoreTypeId>
Returns the type ID associated with the given function index.
sourcefn type_index_of_function(&self, func_index: u32) -> Option<u32>
fn type_index_of_function(&self, func_index: u32) -> Option<u32>
Returns the type index associated with the given function index.
sourcefn element_type_at(&self, at: u32) -> Option<RefType>
fn element_type_at(&self, at: u32) -> Option<RefType>
Returns the element type at the given index.
The RefType
must be canonicalized.
sourcefn is_subtype(&self, a: ValType, b: ValType) -> bool
fn is_subtype(&self, a: ValType, b: ValType) -> bool
Is a
a subtype of b
?
Is the given reference type shared
?
While abstract heap types do carry along a shared
flag, concrete heap
types do not. This function resolves those concrete heap types to
determine shared
-ness.
sourcefn check_heap_type(
&self,
heap_type: &mut HeapType,
offset: usize,
) -> Result<(), BinaryReaderError>
fn check_heap_type( &self, heap_type: &mut HeapType, offset: usize, ) -> Result<(), BinaryReaderError>
Checks that a HeapType
is valid and then additionally place it in its
canonical form.
Similar to check_value_type
but for heap types.
sourcefn element_count(&self) -> u32
fn element_count(&self) -> u32
Returns the number of elements.
sourcefn data_count(&self) -> Option<u32>
fn data_count(&self) -> Option<u32>
Returns the number of bytes in the Wasm data section.
sourcefn is_function_referenced(&self, idx: u32) -> bool
fn is_function_referenced(&self, idx: u32) -> bool
Returns whether the function index is referenced in the module anywhere outside of the start/function sections.
Provided Methods§
sourcefn check_value_type(
&self,
t: &mut ValType,
features: &WasmFeatures,
offset: usize,
) -> Result<(), BinaryReaderError>
fn check_value_type( &self, t: &mut ValType, features: &WasmFeatures, offset: usize, ) -> Result<(), BinaryReaderError>
Check and canonicalize a value type.
This will validate that t
is valid under the features
provided and
then additionally validate the structure of t
. For example any type
references that t
makes are validated and canonicalized.
sourcefn check_ref_type(
&self,
ref_type: &mut RefType,
offset: usize,
) -> Result<(), BinaryReaderError>
fn check_ref_type( &self, ref_type: &mut RefType, offset: usize, ) -> Result<(), BinaryReaderError>
Check and canonicalize a reference type.