Struct wasmer::Artifact

source ·
pub struct Artifact { /* private fields */ }
Expand description

A compiled wasm module, ready to be instantiated.

Implementations§

source§

impl Artifact

source

pub fn new( engine: &Engine, data: &[u8], tunables: &dyn Tunables ) -> Result<Artifact, 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<Artifact, 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<Artifact, 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<Artifact, 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

pub 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

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’

source

pub fn take_frame_info_registration( &mut self ) -> Option<GlobalFrameInfoRegistration>

👎Deprecated since 4.0.0: done automaticaly by Artifact::from_parts.

The GlobalFrameInfoRegistration needs to be transfered to EngineInner if register_frame_info has been used.

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, unsafe extern "C" fn(_: *mut VMContext, _: *const VMFunctionBody, _: *mut RawValue)>

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 dyn Fn(*mut EXCEPTION_POINTERS) -> bool + Sync + Send>, 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>, Global>, 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, Global>), 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

pub unsafe fn deserialize_object( engine: &Engine, bytes: OwnedBuffer ) -> Result<Artifact, 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, Global>

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 ) -> <Artifact as ArtifactCreate<'a>>::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, Global>, SerializeError>

Serializes an artifact into bytes
source§

impl Debug for Artifact

source§

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

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

impl PartialEq<Artifact> for Artifact

source§

fn eq(&self, other: &Artifact) -> 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 Twhere 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 Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
§

impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

§

fn deserialize( &self, deserializer: &mut D ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
source§

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

source§

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

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

impl<Q, K> Equivalent<K> for Qwhere 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
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere 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>

Gets the layout of the type.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Pointee for T

§

type Metadata = ()

The type for metadata in pointers and references to Self.
source§

impl<T, U> TryFrom<U> for Twhere 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 Twhere 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 Twhere 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, Global>) -> Box<dyn Any, Global>

upcast boxed dyn
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more