Struct wasmer_compiler::engine::artifact::Artifact
source · pub struct Artifact {
id: ArtifactId,
artifact: ArtifactBuildVariant,
allocated: Option<AllocatedArtifact>,
}
Expand description
A compiled wasm module, ready to be instantiated.
Fields§
§id: ArtifactId
§artifact: ArtifactBuildVariant
§allocated: Option<AllocatedArtifact>
Implementations§
source§impl Artifact
impl Artifact
sourcepub fn new(
engine: &Engine,
data: &[u8],
tunables: &dyn Tunables,
hash_algorithm: Option<HashAlgorithm>,
) -> Result<Self, CompileError>
pub fn new( engine: &Engine, data: &[u8], tunables: &dyn Tunables, hash_algorithm: Option<HashAlgorithm>, ) -> Result<Self, CompileError>
Compile a data buffer into a ArtifactBuild
, which may then be instantiated.
sourcepub fn allocated(&self) -> bool
pub fn allocated(&self) -> bool
This indicates if the Artifact is allocated and can be run by the current host. In case it can’t be run (for example, if the artifact is cross compiled to other architecture), it will return false.
sourcepub fn id(&self) -> &ArtifactId
pub fn id(&self) -> &ArtifactId
A unique identifier for this object.
This exists to allow us to compare two Artifacts for equality. Otherwise, comparing two trait objects unsafely relies on implementation details of trait representation.
sourcepub unsafe fn deserialize(
engine: &Engine,
bytes: OwnedBuffer,
) -> Result<Self, DeserializeError>
pub unsafe fn deserialize( engine: &Engine, bytes: OwnedBuffer, ) -> Result<Self, DeserializeError>
Deserialize a serialized artifact.
§Safety
This function loads executable code into memory.
You must trust the loaded bytes to be valid for the chosen engine and
for the host CPU architecture.
In contrast to Self::deserialize_unchecked
the artifact layout is
validated, which increases safety.
sourcepub unsafe fn deserialize_unchecked(
engine: &Engine,
bytes: OwnedBuffer,
) -> Result<Self, DeserializeError>
pub unsafe fn deserialize_unchecked( engine: &Engine, bytes: OwnedBuffer, ) -> Result<Self, DeserializeError>
Deserialize a serialized artifact.
NOTE: You should prefer Self::deserialize
.
§Safety
See Self::deserialize
.
In contrast to the above, this function skips artifact layout validation,
which increases the risk of loading invalid artifacts.
sourcepub fn from_parts(
engine_inner: &mut EngineInner,
artifact: ArtifactBuildVariant,
target: &Target,
) -> Result<Self, DeserializeError>
pub fn from_parts( engine_inner: &mut EngineInner, artifact: ArtifactBuildVariant, target: &Target, ) -> Result<Self, DeserializeError>
Construct a ArtifactBuild
from component parts.
sourcepub fn is_deserializable(bytes: &[u8]) -> bool
pub fn is_deserializable(bytes: &[u8]) -> bool
Check if the provided bytes look like a serialized ArtifactBuild
.
source§impl Artifact
impl Artifact
fn internal_register_frame_info(&mut self) -> Result<(), DeserializeError>
fn internal_take_frame_info_registration( &mut self, ) -> Option<GlobalFrameInfoRegistration>
sourcepub fn finished_functions(
&self,
) -> &BoxedSlice<LocalFunctionIndex, FunctionBodyPtr>
pub fn finished_functions( &self, ) -> &BoxedSlice<LocalFunctionIndex, FunctionBodyPtr>
Returns the functions allocated in memory or this Artifact
ready to be run.
sourcepub fn finished_function_call_trampolines(
&self,
) -> &BoxedSlice<SignatureIndex, VMTrampoline>
pub fn finished_function_call_trampolines( &self, ) -> &BoxedSlice<SignatureIndex, VMTrampoline>
Returns the function call trampolines allocated in memory of this
Artifact
, ready to be run.
sourcepub fn finished_dynamic_function_trampolines(
&self,
) -> &BoxedSlice<FunctionIndex, FunctionBodyPtr>
pub fn finished_dynamic_function_trampolines( &self, ) -> &BoxedSlice<FunctionIndex, FunctionBodyPtr>
Returns the dynamic function trampolines allocated in memory
of this Artifact
, ready to be run.
sourcepub fn signatures(&self) -> &BoxedSlice<SignatureIndex, VMSharedSignatureIndex>
pub fn signatures(&self) -> &BoxedSlice<SignatureIndex, VMSharedSignatureIndex>
Returns the associated VM signatures for this Artifact
.
sourcepub fn preinstantiate(&self) -> Result<(), InstantiationError>
pub fn preinstantiate(&self) -> Result<(), InstantiationError>
Do preinstantiation logic that is executed before instantiating
sourcepub unsafe fn instantiate(
&self,
tunables: &dyn Tunables,
imports: &[VMExtern],
context: &mut StoreObjects,
) -> Result<VMInstance, InstantiationError>
pub unsafe fn instantiate( &self, tunables: &dyn Tunables, imports: &[VMExtern], context: &mut StoreObjects, ) -> Result<VMInstance, InstantiationError>
sourcepub unsafe fn finish_instantiation(
&self,
config: &VMConfig,
trap_handler: Option<*const TrapHandlerFn<'static>>,
handle: &mut VMInstance,
) -> Result<(), InstantiationError>
pub unsafe fn finish_instantiation( &self, config: &VMConfig, trap_handler: Option<*const TrapHandlerFn<'static>>, handle: &mut VMInstance, ) -> Result<(), InstantiationError>
Finishes the instantiation of a just created VMInstance
.
§Safety
sourcepub fn generate_metadata<'data>(
data: &'data [u8],
compiler: &dyn Compiler,
tunables: &dyn Tunables,
features: &Features,
) -> Result<(CompileModuleInfo, PrimaryMap<LocalFunctionIndex, FunctionBodyData<'data>>, Vec<DataInitializer<'data>>, Option<ModuleTranslationState>), CompileError>
pub fn generate_metadata<'data>( data: &'data [u8], compiler: &dyn Compiler, tunables: &dyn Tunables, features: &Features, ) -> Result<(CompileModuleInfo, PrimaryMap<LocalFunctionIndex, FunctionBodyData<'data>>, Vec<DataInitializer<'data>>, Option<ModuleTranslationState>), CompileError>
Generate a compilation
sourcepub fn metadata<'a>(
compiler: &dyn Compiler,
data: &'a [u8],
metadata_prefix: Option<&str>,
target: &Target,
tunables: &dyn Tunables,
features: &Features,
) -> Result<(ModuleMetadata, Option<ModuleTranslationState>, PrimaryMap<LocalFunctionIndex, FunctionBodyData<'a>>), CompileError>
pub fn metadata<'a>( compiler: &dyn Compiler, data: &'a [u8], metadata_prefix: Option<&str>, target: &Target, tunables: &dyn Tunables, features: &Features, ) -> Result<(ModuleMetadata, Option<ModuleTranslationState>, PrimaryMap<LocalFunctionIndex, FunctionBodyData<'a>>), CompileError>
Generate the metadata object for the module
sourcepub fn generate_object<'data>(
compiler: &dyn Compiler,
data: &[u8],
metadata_prefix: Option<&str>,
target: &'data Target,
tunables: &dyn Tunables,
features: &Features,
) -> Result<(ModuleInfo, Object<'data>, usize, Box<dyn SymbolRegistry>), CompileError>
pub fn generate_object<'data>( compiler: &dyn Compiler, data: &[u8], metadata_prefix: Option<&str>, target: &'data Target, tunables: &dyn Tunables, features: &Features, ) -> Result<(ModuleInfo, Object<'data>, usize, Box<dyn SymbolRegistry>), CompileError>
Compile a module into an object file, which can be statically linked against.
The metadata_prefix
is an optional prefix for the object name to make the
function names in the object file unique. When set, the function names will
be wasmer_function_{prefix}_{id}
and the object metadata will be addressable
using WASMER_METADATA_{prefix}_LENGTH
and WASMER_METADATA_{prefix}_DATA
.
fn get_byte_slice( input: &[u8], start: usize, end: usize, ) -> Result<&[u8], DeserializeError>
sourcepub unsafe fn deserialize_object(
engine: &Engine,
bytes: OwnedBuffer,
) -> Result<Self, DeserializeError>
pub unsafe fn deserialize_object( engine: &Engine, bytes: OwnedBuffer, ) -> Result<Self, DeserializeError>
Deserialize a ArtifactBuild from an object file
§Safety
The object must be a valid static object generated by wasmer.
Trait Implementations§
source§impl<'a> ArtifactCreate<'a> for Artifact
impl<'a> ArtifactCreate<'a> for Artifact
§type OwnedDataInitializer = <ArtifactBuildVariant as ArtifactCreate<'a>>::OwnedDataInitializer
type OwnedDataInitializer = <ArtifactBuildVariant as ArtifactCreate<'a>>::OwnedDataInitializer
OwnedDataInitializer
returned by the data_initializers
method§type OwnedDataInitializerIterator = <ArtifactBuildVariant as ArtifactCreate<'a>>::OwnedDataInitializerIterator
type OwnedDataInitializerIterator = <ArtifactBuildVariant as ArtifactCreate<'a>>::OwnedDataInitializerIterator
data_initializers
methodsource§fn set_module_info_name(&mut self, name: String) -> bool
fn set_module_info_name(&mut self, name: String) -> bool
ModuleInfo
namesource§fn create_module_info(&self) -> Arc<ModuleInfo>
fn create_module_info(&self) -> Arc<ModuleInfo>
ModuleInfo
for instantiationsource§fn module_info(&self) -> &ModuleInfo
fn module_info(&self) -> &ModuleInfo
ModuleInfo
for instantiationsource§fn cpu_features(&self) -> EnumSet<CpuFeature>
fn cpu_features(&self) -> EnumSet<CpuFeature>
source§fn data_initializers(&'a self) -> Self::OwnedDataInitializerIterator
fn data_initializers(&'a self) -> Self::OwnedDataInitializerIterator
VMInstance::initialize
source§fn memory_styles(&self) -> &PrimaryMap<MemoryIndex, MemoryStyle>
fn memory_styles(&self) -> &PrimaryMap<MemoryIndex, MemoryStyle>
Artifact
.source§fn table_styles(&self) -> &PrimaryMap<TableIndex, TableStyle>
fn table_styles(&self) -> &PrimaryMap<TableIndex, TableStyle>
Artifact
.source§impl PartialEq for Artifact
impl PartialEq for Artifact
impl Eq for Artifact
Auto Trait Implementations§
impl Freeze for Artifact
impl RefUnwindSafe for Artifact
impl Send for Artifact
impl Sync for Artifact
impl Unpin for Artifact
impl UnwindSafe for Artifact
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.