Struct linera_wasmer_compiler::Artifact
source · pub struct Artifact { /* private fields */ }
Expand description
A compiled wasm module, ready to be instantiated.
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
sourcepub fn register_frame_info(&mut self) -> Result<(), DeserializeError>
👎Deprecated since 4.0.0: done automaticaly by Artifact::from_parts, use ‘take_frame_info_registration’ if you use this method
pub fn register_frame_info(&mut self) -> Result<(), DeserializeError>
Register thie Artifact
stack frame information into the global scope.
This is not required anymore as it’s done automaticaly when creating by ‘Artifact::from_parts’
sourcepub fn take_frame_info_registration(
&mut self,
) -> Option<GlobalFrameInfoRegistration>
👎Deprecated since 4.0.0: done automaticaly by Artifact::from_parts.
pub fn take_frame_info_registration( &mut self, ) -> Option<GlobalFrameInfoRegistration>
The GlobalFrameInfoRegistration needs to be transfered to EngineInner if register_frame_info has been used.
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 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§
source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
source§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
source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.