Expand description
Definitions for checked, safe variants of methods defined on Store and
Linker.
This module defines extensions in the form of new types and new methods. It
only relies on the fact that the Store and the Linker both store a
StoreId. No other changes are required to be made to the main
interpreter for this checked API.
All extension methods defined in this module use special stored objects.
These objects are essentially normal objects like FuncAddr, RunState
or Value. However, they also contain an additional field of type
StoreId as a tag to know to which Store they belong to.
While this is easy for address types like FuncAddr or MemAddr, some
types are enums and their variants are visible to the user. For example,
consider the Value enum, where users have full access to all of its
variants. To be able to attach a tag only to the Value::Ref variant of
this enum, the entire enum has to be re-defined. The result is a completely
new type StoredValue.
Structs§
- Stored
- A generic stored wrapper. This is used to wrap
structtypes such asFuncAddr,MemAddr, etc. - Stored
Instantiation Outcome - A stored variant of
InstantiationOutcome - Stored
RefFunc
Enums§
- Stored
Extern Val - A stored variant of
ExternVal - Stored
Ref - A stored variant of
Ref - Stored
RunState - A stored variant of
RunState - Stored
Value - A stored variant of
Value
Traits§
- Stored
Interop Value - A stored variant of
InteropValue - Stored
Interop Value List - A StoredInteropValueList is an iterable list of StoredInteropValues (i.e. Rust types that can be converted into Wasm StoredValues).