pub trait Tunables {
Show 13 methods
// 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> { ... }
fn create_tag(
&self,
kind: TagKind,
ty: FunctionType,
) -> Result<VMTag, 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_tags(
&self,
context: &mut StoreObjects,
module: &ModuleInfo,
) -> Result<PrimaryMap<LocalTagIndex, InternalStoreHandle<VMTag>>, 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§
Sourcefn memory_style(&self, memory: &MemoryType) -> MemoryStyle
fn memory_style(&self, memory: &MemoryType) -> MemoryStyle
Construct a MemoryStyle
for the provided MemoryType
Sourcefn table_style(&self, table: &TableType) -> TableStyle
fn table_style(&self, table: &TableType) -> TableStyle
Construct a TableStyle
for the provided TableType
Sourcefn 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
.
Sourceunsafe 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.
Sourcefn 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
.
Sourceunsafe 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§
Sourcefn create_global(&self, ty: GlobalType) -> Result<VMGlobal, String>
fn create_global(&self, ty: GlobalType) -> Result<VMGlobal, String>
Create a global with an unset value.
Sourcefn create_tag(&self, kind: TagKind, ty: FunctionType) -> Result<VMTag, String>
fn create_tag(&self, kind: TagKind, ty: FunctionType) -> Result<VMTag, String>
Create a new tag.
Sourceunsafe 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.
Sourceunsafe 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>
Allocate memory for just the tags of the current module, with initializers applied.
Sourcefn 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.
Sourcefn 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§
Source§impl Tunables for Box<dyn Tunables + Send + Sync>
impl Tunables for Box<dyn Tunables + Send + Sync>
Source§fn memory_style(&self, memory: &MemoryType) -> MemoryStyle
fn memory_style(&self, memory: &MemoryType) -> MemoryStyle
MemoryStyle
for the provided MemoryType
Source§fn table_style(&self, table: &TableType) -> TableStyle
fn table_style(&self, table: &TableType) -> TableStyle
TableStyle
for the provided TableType
Source§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
.Source§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>
Source§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
.