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§
fn 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.
fn memory_at(&self, at: u32) -> Option<MemoryType>
fn memory_at(&self, at: u32) -> Option<MemoryType>
Returns the linear memory at given index.
fn 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.
fn 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.
fn 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.
fn 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.
fn 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.
fn 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.
fn 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.
fn 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.
fn element_count(&self) -> u32
fn element_count(&self) -> u32
Returns the number of elements.
fn data_count(&self) -> Option<u32>
fn data_count(&self) -> Option<u32>
Returns the number of bytes in the Wasm data section.
fn 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§
fn 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.
fn 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.