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

source

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.

source

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.

source

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.

source

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.

source

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.

source

pub fn from_parts( engine_inner: &mut EngineInner, artifact: ArtifactBuildVariant, target: &Target, ) -> Result<Self, DeserializeError>

Construct a ArtifactBuild from component parts.

source

pub fn is_deserializable(bytes: &[u8]) -> bool

Check if the provided bytes look like a serialized ArtifactBuild.

source§

impl Artifact

source

fn internal_register_frame_info(&mut self) -> Result<(), DeserializeError>

source

fn internal_take_frame_info_registration( &mut self, ) -> Option<GlobalFrameInfoRegistration>

source

pub fn finished_functions( &self, ) -> &BoxedSlice<LocalFunctionIndex, FunctionBodyPtr>

Returns the functions allocated in memory or this Artifact ready to be run.

source

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.

source

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.

source

pub fn signatures(&self) -> &BoxedSlice<SignatureIndex, VMSharedSignatureIndex>

Returns the associated VM signatures for this Artifact.

source

pub fn preinstantiate(&self) -> Result<(), InstantiationError>

Do preinstantiation logic that is executed before instantiating

source

pub unsafe fn instantiate( &self, tunables: &dyn Tunables, imports: &[VMExtern], context: &mut StoreObjects, ) -> Result<VMInstance, InstantiationError>

Crate an Instance from this Artifact.

§Safety

See VMInstance::new.

source

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

See VMInstance::finish_instantiation.

source

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

source

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

source

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.

source

fn get_byte_slice( input: &[u8], start: usize, end: usize, ) -> Result<&[u8], DeserializeError>

source

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

§

type OwnedDataInitializer = <ArtifactBuildVariant as ArtifactCreate<'a>>::OwnedDataInitializer

Type of OwnedDataInitializer returned by the data_initializers method
§

type OwnedDataInitializerIterator = <ArtifactBuildVariant as ArtifactCreate<'a>>::OwnedDataInitializerIterator

Type of iterator returned by the data_initializers method
source§

fn set_module_info_name(&mut self, name: String) -> bool

Sets the ModuleInfo name
source§

fn create_module_info(&self) -> Arc<ModuleInfo>

Create a ModuleInfo for instantiation
source§

fn module_info(&self) -> &ModuleInfo

Returns the ModuleInfo for instantiation
source§

fn features(&self) -> &Features

Returns the features for this Artifact
source§

fn cpu_features(&self) -> EnumSet<CpuFeature>

Returns the CPU features for this Artifact
source§

fn data_initializers(&'a self) -> Self::OwnedDataInitializerIterator

Returns data initializers to pass to VMInstance::initialize
source§

fn memory_styles(&self) -> &PrimaryMap<MemoryIndex, MemoryStyle>

Returns the memory styles associated with this Artifact.
source§

fn table_styles(&self) -> &PrimaryMap<TableIndex, TableStyle>

Returns the table plans associated with this Artifact.
source§

fn serialize(&self) -> Result<Vec<u8>, SerializeError>

Serializes an artifact into bytes
source§

impl Debug for Artifact

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for Artifact

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Artifact

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> LayoutRaw for T

§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
§

impl<T> Pointee for T

§

type Metadata = ()

The metadata type for pointers and references to this type.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Upcastable for T
where T: Any + Send + Sync + 'static,

source§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
source§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
source§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

upcast boxed dyn