pub trait Tunables {
// Required methods
fn memory_style(&self, memory: &MemoryType) -> MemoryStyle;
fn table_style(&self, table: &TableType) -> TableStyle;
fn create_host_memory(
&self,
ty: &MemoryType,
style: &MemoryStyle
) -> Result<VMMemory, MemoryError>;
unsafe fn create_vm_memory(
&self,
ty: &MemoryType,
style: &MemoryStyle,
vm_definition_location: NonNull<VMMemoryDefinition>
) -> Result<VMMemory, MemoryError>;
fn create_host_table(
&self,
ty: &TableType,
style: &TableStyle
) -> Result<VMTable, String>;
unsafe fn create_vm_table(
&self,
ty: &TableType,
style: &TableStyle,
vm_definition_location: NonNull<VMTableDefinition>
) -> Result<VMTable, String>;
// Provided methods
fn create_global(&self, ty: GlobalType) -> Result<VMGlobal, String> { ... }
unsafe fn create_memories(
&self,
context: &mut StoreObjects,
module: &ModuleInfo,
memory_styles: &PrimaryMap<MemoryIndex, MemoryStyle>,
memory_definition_locations: &[NonNull<VMMemoryDefinition>]
) -> Result<PrimaryMap<LocalMemoryIndex, InternalStoreHandle<VMMemory>>, LinkError> { ... }
unsafe fn create_tables(
&self,
context: &mut StoreObjects,
module: &ModuleInfo,
table_styles: &PrimaryMap<TableIndex, TableStyle>,
table_definition_locations: &[NonNull<VMTableDefinition>]
) -> Result<PrimaryMap<LocalTableIndex, InternalStoreHandle<VMTable>>, LinkError> { ... }
fn create_globals(
&self,
context: &mut StoreObjects,
module: &ModuleInfo
) -> Result<PrimaryMap<LocalGlobalIndex, InternalStoreHandle<VMGlobal>>, LinkError> { ... }
fn vmconfig(&self) -> &VMConfig { ... }
}
Expand description
An engine delegates the creation of memories, tables, and globals to a foreign implementor of this trait.
Required Methods§
fn memory_style(&self, memory: &MemoryType) -> MemoryStyle
fn memory_style(&self, memory: &MemoryType) -> MemoryStyle
Construct a MemoryStyle
for the provided MemoryType
fn table_style(&self, table: &TableType) -> TableStyle
fn table_style(&self, table: &TableType) -> TableStyle
Construct a TableStyle
for the provided TableType
fn create_host_memory(
&self,
ty: &MemoryType,
style: &MemoryStyle
) -> Result<VMMemory, MemoryError>
fn create_host_memory( &self, ty: &MemoryType, style: &MemoryStyle ) -> Result<VMMemory, MemoryError>
Create a memory owned by the host given a MemoryType
and a MemoryStyle
.
unsafe fn create_vm_memory(
&self,
ty: &MemoryType,
style: &MemoryStyle,
vm_definition_location: NonNull<VMMemoryDefinition>
) -> Result<VMMemory, MemoryError>
unsafe fn create_vm_memory( &self, ty: &MemoryType, style: &MemoryStyle, vm_definition_location: NonNull<VMMemoryDefinition> ) -> Result<VMMemory, MemoryError>
Create a memory owned by the VM given a MemoryType
and a MemoryStyle
.
Safety
vm_definition_location
must point to a valid location in VM memory.
fn create_host_table(
&self,
ty: &TableType,
style: &TableStyle
) -> Result<VMTable, String>
fn create_host_table( &self, ty: &TableType, style: &TableStyle ) -> Result<VMTable, String>
Create a table owned by the host given a TableType
and a TableStyle
.
unsafe fn create_vm_table(
&self,
ty: &TableType,
style: &TableStyle,
vm_definition_location: NonNull<VMTableDefinition>
) -> Result<VMTable, String>
unsafe fn create_vm_table( &self, ty: &TableType, style: &TableStyle, vm_definition_location: NonNull<VMTableDefinition> ) -> Result<VMTable, String>
Create a table owned by the VM given a TableType
and a TableStyle
.
Safety
vm_definition_location
must point to a valid location in VM memory.
Provided Methods§
fn create_global(&self, ty: GlobalType) -> Result<VMGlobal, String>
fn create_global(&self, ty: GlobalType) -> Result<VMGlobal, String>
Create a global with an unset value.
unsafe fn create_memories(
&self,
context: &mut StoreObjects,
module: &ModuleInfo,
memory_styles: &PrimaryMap<MemoryIndex, MemoryStyle>,
memory_definition_locations: &[NonNull<VMMemoryDefinition>]
) -> Result<PrimaryMap<LocalMemoryIndex, InternalStoreHandle<VMMemory>>, LinkError>
unsafe fn create_memories( &self, context: &mut StoreObjects, module: &ModuleInfo, memory_styles: &PrimaryMap<MemoryIndex, MemoryStyle>, memory_definition_locations: &[NonNull<VMMemoryDefinition>] ) -> Result<PrimaryMap<LocalMemoryIndex, InternalStoreHandle<VMMemory>>, LinkError>
Allocate memory for just the memories of the current module.
Safety
memory_definition_locations
must point to a valid locations in VM memory.
unsafe fn create_tables(
&self,
context: &mut StoreObjects,
module: &ModuleInfo,
table_styles: &PrimaryMap<TableIndex, TableStyle>,
table_definition_locations: &[NonNull<VMTableDefinition>]
) -> Result<PrimaryMap<LocalTableIndex, InternalStoreHandle<VMTable>>, LinkError>
unsafe fn create_tables( &self, context: &mut StoreObjects, module: &ModuleInfo, table_styles: &PrimaryMap<TableIndex, TableStyle>, table_definition_locations: &[NonNull<VMTableDefinition>] ) -> Result<PrimaryMap<LocalTableIndex, InternalStoreHandle<VMTable>>, LinkError>
fn create_globals(
&self,
context: &mut StoreObjects,
module: &ModuleInfo
) -> Result<PrimaryMap<LocalGlobalIndex, InternalStoreHandle<VMGlobal>>, LinkError>
fn create_globals( &self, context: &mut StoreObjects, module: &ModuleInfo ) -> Result<PrimaryMap<LocalGlobalIndex, InternalStoreHandle<VMGlobal>>, LinkError>
Allocate memory for just the globals of the current module, with initializers applied.
fn vmconfig(&self) -> &VMConfig
fn vmconfig(&self) -> &VMConfig
Get the VMConfig for this tunables Currently, VMConfig have optional Stack size If wasm_stack_size is left to None (the default value) then the global stack size will be use Else the defined stack size will be used. Size is in byte and the value might be rounded to sane value is needed.
Trait Implementations§
§impl Tunables for Box<dyn Tunables + Sync + Send, Global>
impl Tunables for Box<dyn Tunables + Sync + Send, Global>
§fn memory_style(&self, memory: &MemoryType) -> MemoryStyle
fn memory_style(&self, memory: &MemoryType) -> MemoryStyle
MemoryStyle
for the provided MemoryType
§fn table_style(&self, table: &TableType) -> TableStyle
fn table_style(&self, table: &TableType) -> TableStyle
TableStyle
for the provided TableType
§fn create_host_memory(
&self,
ty: &MemoryType,
style: &MemoryStyle
) -> Result<VMMemory, MemoryError>
fn create_host_memory( &self, ty: &MemoryType, style: &MemoryStyle ) -> Result<VMMemory, MemoryError>
MemoryType
and a MemoryStyle
.§unsafe fn create_vm_memory(
&self,
ty: &MemoryType,
style: &MemoryStyle,
vm_definition_location: NonNull<VMMemoryDefinition>
) -> Result<VMMemory, MemoryError>
unsafe fn create_vm_memory( &self, ty: &MemoryType, style: &MemoryStyle, vm_definition_location: NonNull<VMMemoryDefinition> ) -> Result<VMMemory, MemoryError>
§fn create_host_table(
&self,
ty: &TableType,
style: &TableStyle
) -> Result<VMTable, String>
fn create_host_table( &self, ty: &TableType, style: &TableStyle ) -> Result<VMTable, String>
TableType
and a TableStyle
.