mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-06 20:58:28 +00:00
Added spec docs to app API public objects
This commit is contained in:
19
lib/api/src/externals/function.rs
vendored
19
lib/api/src/externals/function.rs
vendored
@@ -38,6 +38,14 @@ pub enum FunctionDefinition {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// A WebAssembly `function`.
|
/// A WebAssembly `function`.
|
||||||
|
///
|
||||||
|
/// A function instance is the runtime representation of a function.
|
||||||
|
/// It effectively is a closure of the original function over the runtime
|
||||||
|
/// `Instance` of its originating `Module`. The module instance is used
|
||||||
|
/// to resolve references to other definitions during execution of the
|
||||||
|
/// function.
|
||||||
|
///
|
||||||
|
/// Spec: https://webassembly.github.io/spec/core/exec/runtime.html#function-instances
|
||||||
#[derive(Clone, PartialEq)]
|
#[derive(Clone, PartialEq)]
|
||||||
pub struct Function {
|
pub struct Function {
|
||||||
pub(crate) store: Store,
|
pub(crate) store: Store,
|
||||||
@@ -46,7 +54,7 @@ pub struct Function {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Function {
|
impl Function {
|
||||||
/// Creates a new `Function` that is:
|
/// Creates a new host `Function` that is:
|
||||||
///
|
///
|
||||||
/// 1. Static/Monomorphic, i.e. all inputs and outputs have a
|
/// 1. Static/Monomorphic, i.e. all inputs and outputs have a
|
||||||
/// unique _statically declared type_. The outputs can be
|
/// unique _statically declared type_. The outputs can be
|
||||||
@@ -77,7 +85,7 @@ impl Function {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new `Function` that is:
|
/// Creates a new host `Function` that is:
|
||||||
///
|
///
|
||||||
/// 1. Static/Monomorphic, i.e. all inputs and outputs have a
|
/// 1. Static/Monomorphic, i.e. all inputs and outputs have a
|
||||||
/// unique statically declared type. The outputs can be wrapped
|
/// unique statically declared type. The outputs can be wrapped
|
||||||
@@ -115,7 +123,7 @@ impl Function {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new `Function` that is:
|
/// Creates a new host `Function` that is:
|
||||||
///
|
///
|
||||||
/// 1. Dynamic/Polymorphic, i.e. all inputs are received in a
|
/// 1. Dynamic/Polymorphic, i.e. all inputs are received in a
|
||||||
/// slice of `Val` (the set of all Wasm values), and all
|
/// slice of `Val` (the set of all Wasm values), and all
|
||||||
@@ -150,7 +158,7 @@ impl Function {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new `Function` that is:
|
/// Creates a new host `Function` that is:
|
||||||
///
|
///
|
||||||
/// 1. Dynamic/Polymorphic, i.e. all inputs are received in a
|
/// 1. Dynamic/Polymorphic, i.e. all inputs are received in a
|
||||||
/// slice of `Val` (the set of all Wasm values), and all
|
/// slice of `Val` (the set of all Wasm values), and all
|
||||||
@@ -187,11 +195,12 @@ impl Function {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the underlying type of this function.
|
/// Returns the underlying [`FunctionType`] corresponding to this runtime `Function`.
|
||||||
pub fn ty(&self) -> &FunctionType {
|
pub fn ty(&self) -> &FunctionType {
|
||||||
&self.exported.signature
|
&self.exported.signature
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the [`Store`] that owns this `Function`.
|
||||||
pub fn store(&self) -> &Store {
|
pub fn store(&self) -> &Store {
|
||||||
&self.store
|
&self.store
|
||||||
}
|
}
|
||||||
|
|||||||
18
lib/api/src/externals/global.rs
vendored
18
lib/api/src/externals/global.rs
vendored
@@ -8,6 +8,12 @@ use crate::RuntimeError;
|
|||||||
use std::fmt;
|
use std::fmt;
|
||||||
use wasmer_vm::{Export, ExportGlobal, VMGlobalDefinition};
|
use wasmer_vm::{Export, ExportGlobal, VMGlobalDefinition};
|
||||||
|
|
||||||
|
/// A WebAssembly `global`.
|
||||||
|
///
|
||||||
|
/// A global instance is the runtime representation of a global variable.
|
||||||
|
/// It holds an individual value and a flag indicating whether it is mutable.
|
||||||
|
///
|
||||||
|
/// Spec: https://webassembly.github.io/spec/core/exec/runtime.html#global-instances
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Global {
|
pub struct Global {
|
||||||
store: Store,
|
store: Store,
|
||||||
@@ -15,12 +21,14 @@ pub struct Global {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Global {
|
impl Global {
|
||||||
|
/// Create a new `Global` with the initial value [`Val`].
|
||||||
pub fn new(store: &Store, val: Val) -> Global {
|
pub fn new(store: &Store, val: Val) -> Global {
|
||||||
// Note: we unwrap because the provided type should always match
|
// Note: we unwrap because the provided type should always match
|
||||||
// the value type, so it's safe to unwrap.
|
// the value type, so it's safe to unwrap.
|
||||||
Self::from_type(store, GlobalType::new(val.ty(), Mutability::Const), val).unwrap()
|
Self::from_type(store, GlobalType::new(val.ty(), Mutability::Const), val).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Create a mutable `Global` with the initial value [`Val`].
|
||||||
pub fn new_mut(store: &Store, val: Val) -> Global {
|
pub fn new_mut(store: &Store, val: Val) -> Global {
|
||||||
// Note: we unwrap because the provided type should always match
|
// Note: we unwrap because the provided type should always match
|
||||||
// the value type, so it's safe to unwrap.
|
// the value type, so it's safe to unwrap.
|
||||||
@@ -52,14 +60,17 @@ impl Global {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the underlying [`GlobalType`] corresponding to this runtime `Global`.
|
||||||
pub fn ty(&self) -> &GlobalType {
|
pub fn ty(&self) -> &GlobalType {
|
||||||
&self.exported.global
|
&self.exported.global
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the [`Store`] that owns this `Global`.
|
||||||
pub fn store(&self) -> &Store {
|
pub fn store(&self) -> &Store {
|
||||||
&self.store
|
&self.store
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Retrieves the current value [`Val`] that the Global has.
|
||||||
pub fn get(&self) -> Val {
|
pub fn get(&self) -> Val {
|
||||||
unsafe {
|
unsafe {
|
||||||
let definition = &mut *self.exported.definition;
|
let definition = &mut *self.exported.definition;
|
||||||
@@ -73,6 +84,13 @@ impl Global {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Sets a custom value [`Val`] to the runtime Global.
|
||||||
|
///
|
||||||
|
/// # Errors
|
||||||
|
///
|
||||||
|
/// This function will error if:
|
||||||
|
/// * The global is not mutable
|
||||||
|
/// * The type of the `Val` doesn't matches the Global type.
|
||||||
pub fn set(&self, val: Val) -> Result<(), RuntimeError> {
|
pub fn set(&self, val: Val) -> Result<(), RuntimeError> {
|
||||||
if self.ty().mutability != Mutability::Var {
|
if self.ty().mutability != Mutability::Var {
|
||||||
return Err(RuntimeError::new(
|
return Err(RuntimeError::new(
|
||||||
|
|||||||
25
lib/api/src/externals/memory.rs
vendored
25
lib/api/src/externals/memory.rs
vendored
@@ -7,6 +7,17 @@ use std::sync::Arc;
|
|||||||
use wasm_common::{Pages, ValueType};
|
use wasm_common::{Pages, ValueType};
|
||||||
use wasmer_vm::{Export, ExportMemory, Memory as RuntimeMemory, MemoryError};
|
use wasmer_vm::{Export, ExportMemory, Memory as RuntimeMemory, MemoryError};
|
||||||
|
|
||||||
|
/// A WebAssembly `memory`.
|
||||||
|
///
|
||||||
|
/// A memory instance is the runtime representation of a linear memory.
|
||||||
|
/// It holds a vector of bytes and an optional maximum size.
|
||||||
|
///
|
||||||
|
/// The length of the vector always is a multiple of the WebAssembly
|
||||||
|
/// page size, which is defined to be the constant 65536 – abbreviated 64Ki.
|
||||||
|
/// Like in a memory type, the maximum size in a memory instance is
|
||||||
|
/// given in units of this page size.
|
||||||
|
///
|
||||||
|
/// Spec: https://webassembly.github.io/spec/core/exec/runtime.html#memory-instances
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Memory {
|
pub struct Memory {
|
||||||
store: Store,
|
store: Store,
|
||||||
@@ -14,6 +25,9 @@ pub struct Memory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Memory {
|
impl Memory {
|
||||||
|
/// Creates a new host `Memory` from the provided [`MemoryType`].
|
||||||
|
///
|
||||||
|
/// This function will construct the `Memory` using the store [`Tunables`].
|
||||||
pub fn new(store: &Store, ty: MemoryType) -> Result<Memory, MemoryError> {
|
pub fn new(store: &Store, ty: MemoryType) -> Result<Memory, MemoryError> {
|
||||||
let tunables = store.tunables();
|
let tunables = store.tunables();
|
||||||
let style = tunables.memory_style(&ty);
|
let style = tunables.memory_style(&ty);
|
||||||
@@ -25,10 +39,12 @@ impl Memory {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the underlying [`MemoryType`] corresponding to this runtime `Memory`.
|
||||||
pub fn ty(&self) -> &MemoryType {
|
pub fn ty(&self) -> &MemoryType {
|
||||||
self.memory.ty()
|
self.memory.ty()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the [`Store`] that owns this `Memory`.
|
||||||
pub fn store(&self) -> &Store {
|
pub fn store(&self) -> &Store {
|
||||||
&self.store
|
&self.store
|
||||||
}
|
}
|
||||||
@@ -55,22 +71,31 @@ impl Memory {
|
|||||||
slice::from_raw_parts_mut(def.base, def.current_length)
|
slice::from_raw_parts_mut(def.base, def.current_length)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the pointer to the `Memory`.
|
||||||
pub fn data_ptr(&self) -> *mut u8 {
|
pub fn data_ptr(&self) -> *mut u8 {
|
||||||
let definition = self.memory.vmmemory();
|
let definition = self.memory.vmmemory();
|
||||||
let def = unsafe { definition.as_ref() };
|
let def = unsafe { definition.as_ref() };
|
||||||
def.base
|
def.base
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the size (in bytes) of the `Memory`.
|
||||||
pub fn data_size(&self) -> usize {
|
pub fn data_size(&self) -> usize {
|
||||||
let definition = self.memory.vmmemory();
|
let definition = self.memory.vmmemory();
|
||||||
let def = unsafe { definition.as_ref() };
|
let def = unsafe { definition.as_ref() };
|
||||||
def.current_length
|
def.current_length
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the size (in [`Pages`]) of the `Memory`.
|
||||||
pub fn size(&self) -> Pages {
|
pub fn size(&self) -> Pages {
|
||||||
self.memory.size()
|
self.memory.size()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Grow memory by the specified amount of WebAssembly [`Pages`].
|
||||||
|
///
|
||||||
|
/// # Errors
|
||||||
|
///
|
||||||
|
/// Returns an error if memory can't be grown by the specified amount
|
||||||
|
/// of pages.
|
||||||
pub fn grow<IntoPages>(&self, delta: IntoPages) -> Result<Pages, MemoryError>
|
pub fn grow<IntoPages>(&self, delta: IntoPages) -> Result<Pages, MemoryError>
|
||||||
where
|
where
|
||||||
IntoPages: Into<Pages>,
|
IntoPages: Into<Pages>,
|
||||||
|
|||||||
9
lib/api/src/externals/mod.rs
vendored
9
lib/api/src/externals/mod.rs
vendored
@@ -15,15 +15,24 @@ use crate::store::{Store, StoreObject};
|
|||||||
use crate::ExternType;
|
use crate::ExternType;
|
||||||
use wasmer_vm::Export;
|
use wasmer_vm::Export;
|
||||||
|
|
||||||
|
/// An external value is the runtime representation of an entity that
|
||||||
|
/// can be imported or exported.
|
||||||
|
///
|
||||||
|
/// Spec: https://webassembly.github.io/spec/core/exec/runtime.html#external-values
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub enum Extern {
|
pub enum Extern {
|
||||||
|
/// A external [`Function`]
|
||||||
Function(Function),
|
Function(Function),
|
||||||
|
/// A external [`Global`]
|
||||||
Global(Global),
|
Global(Global),
|
||||||
|
/// A external [`Table`]
|
||||||
Table(Table),
|
Table(Table),
|
||||||
|
/// A external [`Memory`]
|
||||||
Memory(Memory),
|
Memory(Memory),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Extern {
|
impl Extern {
|
||||||
|
/// Return the undelying type of the inner `Extern`.
|
||||||
pub fn ty(&self) -> ExternType {
|
pub fn ty(&self) -> ExternType {
|
||||||
match self {
|
match self {
|
||||||
Extern::Function(ft) => ExternType::Function(ft.ty().clone()),
|
Extern::Function(ft) => ExternType::Function(ft.ty().clone()),
|
||||||
|
|||||||
5
lib/api/src/externals/table.rs
vendored
5
lib/api/src/externals/table.rs
vendored
@@ -12,6 +12,8 @@ use wasmer_vm::{Export, ExportTable, Table as RuntimeTable, VMCallerCheckedAnyfu
|
|||||||
///
|
///
|
||||||
/// A table created by the host or in WebAssembly code will be accessible and
|
/// A table created by the host or in WebAssembly code will be accessible and
|
||||||
/// mutable from both host and WebAssembly.
|
/// mutable from both host and WebAssembly.
|
||||||
|
///
|
||||||
|
/// Spec: https://webassembly.github.io/spec/core/exec/runtime.html#table-instances
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Table {
|
pub struct Table {
|
||||||
store: Store,
|
store: Store,
|
||||||
@@ -30,6 +32,8 @@ impl Table {
|
|||||||
/// Creates a new `Table` with the provided [`TableType`] definition.
|
/// Creates a new `Table` with the provided [`TableType`] definition.
|
||||||
///
|
///
|
||||||
/// All the elements in the table will be set to the `init` value.
|
/// All the elements in the table will be set to the `init` value.
|
||||||
|
///
|
||||||
|
/// This function will construct the `Table` using the store [`Tunables`].
|
||||||
pub fn new(store: &Store, ty: TableType, init: Val) -> Result<Table, RuntimeError> {
|
pub fn new(store: &Store, ty: TableType, init: Val) -> Result<Table, RuntimeError> {
|
||||||
let item = init.into_checked_anyfunc(store)?;
|
let item = init.into_checked_anyfunc(store)?;
|
||||||
let tunables = store.tunables();
|
let tunables = store.tunables();
|
||||||
@@ -54,6 +58,7 @@ impl Table {
|
|||||||
self.table.ty()
|
self.table.ty()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the [`Store`] that owns this `Table`.
|
||||||
pub fn store(&self) -> &Store {
|
pub fn store(&self) -> &Store {
|
||||||
&self.store
|
&self.store
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ use wasmer_vm::InstanceHandle;
|
|||||||
/// Instance objects contain all the exported WebAssembly
|
/// Instance objects contain all the exported WebAssembly
|
||||||
/// functions, memories, tables and globals that allow
|
/// functions, memories, tables and globals that allow
|
||||||
/// interacting with WebAssembly.
|
/// interacting with WebAssembly.
|
||||||
|
///
|
||||||
|
/// Spec: https://webassembly.github.io/spec/core/exec/runtime.html#module-instances
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Instance {
|
pub struct Instance {
|
||||||
handle: InstanceHandle,
|
handle: InstanceHandle,
|
||||||
@@ -94,6 +96,7 @@ impl Instance {
|
|||||||
&self.module
|
&self.module
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the [`Store`] that owns this `Instance`.
|
||||||
pub fn store(&self) -> &Store {
|
pub fn store(&self) -> &Store {
|
||||||
self.module.store()
|
self.module.store()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,25 @@
|
|||||||
//! Wasmer API
|
//! Wasmer API
|
||||||
#![deny(intra_doc_link_resolution_failure)]
|
#![deny(
|
||||||
|
missing_docs,
|
||||||
|
trivial_numeric_casts,
|
||||||
|
unused_extern_crates,
|
||||||
|
intra_doc_link_resolution_failure
|
||||||
|
)]
|
||||||
|
#![warn(unused_import_braces)]
|
||||||
|
#![cfg_attr(feature = "cargo-clippy", allow(clippy::new_without_default))]
|
||||||
|
#![cfg_attr(
|
||||||
|
feature = "cargo-clippy",
|
||||||
|
warn(
|
||||||
|
clippy::float_arithmetic,
|
||||||
|
clippy::mut_mut,
|
||||||
|
clippy::nonminimal_bool,
|
||||||
|
clippy::option_map_unwrap_or,
|
||||||
|
clippy::option_map_unwrap_or_else,
|
||||||
|
clippy::print_stdout,
|
||||||
|
clippy::unicode_not_nfc,
|
||||||
|
clippy::use_self
|
||||||
|
)
|
||||||
|
)]
|
||||||
|
|
||||||
mod exports;
|
mod exports;
|
||||||
mod externals;
|
mod externals;
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ impl Module {
|
|||||||
Module::from_binary(store, bytes.as_ref())
|
Module::from_binary(store, bytes.as_ref())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a new WebAssembly module from a file path.
|
||||||
pub fn from_file(store: &Store, file: impl AsRef<Path>) -> Result<Module, IoCompileError> {
|
pub fn from_file(store: &Store, file: impl AsRef<Path>) -> Result<Module, IoCompileError> {
|
||||||
let file_ref = file.as_ref();
|
let file_ref = file.as_ref();
|
||||||
let canonical = file_ref.canonicalize()?;
|
let canonical = file_ref.canonicalize()?;
|
||||||
@@ -120,7 +121,7 @@ impl Module {
|
|||||||
Ok(module)
|
Ok(module)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new WebAssembly module from a binary.
|
/// Creates a new WebAssembly module from a binary.
|
||||||
///
|
///
|
||||||
/// Opposed to [`Module::new`], this function is not compatible with
|
/// Opposed to [`Module::new`], this function is not compatible with
|
||||||
/// the WebAssembly text format (if the "wat" feature is enabled for
|
/// the WebAssembly text format (if the "wat" feature is enabled for
|
||||||
@@ -394,6 +395,7 @@ impl Module {
|
|||||||
self.artifact.module_ref().custom_sections(name)
|
self.artifact.module_ref().custom_sections(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the [`Store`] that owns this `Instance`.
|
||||||
pub fn store(&self) -> &Store {
|
pub fn store(&self) -> &Store {
|
||||||
&self.store
|
&self.store
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ use wasmer_vm::{
|
|||||||
ExportFunction, VMContext, VMDynamicFunctionContext, VMFunctionBody, VMFunctionKind,
|
ExportFunction, VMContext, VMDynamicFunctionContext, VMFunctionBody, VMFunctionKind,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// A WebAssembly function that can be called natively
|
||||||
|
/// (using the Native ABI).
|
||||||
pub struct NativeFunc<'a, Args = (), Rets = ()> {
|
pub struct NativeFunc<'a, Args = (), Rets = ()> {
|
||||||
definition: FunctionDefinition,
|
definition: FunctionDefinition,
|
||||||
store: Store,
|
store: Store,
|
||||||
|
|||||||
@@ -6,11 +6,16 @@ use wasmer_engine::Tunables as BaseTunables;
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use wasmer_engine::Engine;
|
use wasmer_engine::Engine;
|
||||||
|
|
||||||
/// The store is what holds the directives to the `wasmer` crate, and
|
/// The store represents all global state that can be manipulated by
|
||||||
/// siblings, to act as expected. It holds the engine (that is
|
/// WebAssembly programs. It consists of the runtime representation
|
||||||
/// —amongst many things— used to compile the Wasm bytes into a valid
|
/// of all instances of functions, tables, memories, and globals that
|
||||||
/// module artifact), in addition to the tunables (that is used to
|
/// have been allocated during the life time of the abstract machine.
|
||||||
/// create the memories, tables and globals).
|
///
|
||||||
|
/// The `Store` holds the engine (that is —amongst many things— used to compile
|
||||||
|
/// the Wasm bytes into a valid module artifact), in addition to the
|
||||||
|
/// [`Tunables`] (that are used to create the memories, tables and globals).
|
||||||
|
///
|
||||||
|
/// Spec: https://webassembly.github.io/spec/core/exec/runtime.html#store
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Store {
|
pub struct Store {
|
||||||
engine: Arc<dyn Engine + Send + Sync>,
|
engine: Arc<dyn Engine + Send + Sync>,
|
||||||
@@ -18,7 +23,7 @@ pub struct Store {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Store {
|
impl Store {
|
||||||
/// Creates a new `Store` with a specific `Engine`.
|
/// Creates a new `Store` with a specific [`Engine`].
|
||||||
pub fn new<E>(engine: &E) -> Self
|
pub fn new<E>(engine: &E) -> Self
|
||||||
where
|
where
|
||||||
E: Engine + ?Sized,
|
E: Engine + ?Sized,
|
||||||
@@ -29,8 +34,7 @@ impl Store {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new `Store` with a specific `Engine` and a specific
|
/// Creates a new `Store` with a specific [`Engine`] and [`Tunables`].
|
||||||
/// `Tunables`.
|
|
||||||
pub fn new_with_tunables<E>(
|
pub fn new_with_tunables<E>(
|
||||||
engine: &E,
|
engine: &E,
|
||||||
tunables: impl BaseTunables + Send + Sync + 'static,
|
tunables: impl BaseTunables + Send + Sync + 'static,
|
||||||
@@ -44,12 +48,12 @@ impl Store {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the tunables.
|
/// Returns the [`Tunables`].
|
||||||
pub fn tunables(&self) -> &dyn BaseTunables {
|
pub fn tunables(&self) -> &dyn BaseTunables {
|
||||||
self.tunables.as_ref()
|
self.tunables.as_ref()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the engine.
|
/// Returns the [`Engine`].
|
||||||
pub fn engine(&self) -> &Arc<dyn Engine + Send + Sync> {
|
pub fn engine(&self) -> &Arc<dyn Engine + Send + Sync> {
|
||||||
&self.engine
|
&self.engine
|
||||||
}
|
}
|
||||||
@@ -115,6 +119,8 @@ impl Default for Store {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A trait represinting any object that lives in the `Store`.
|
||||||
pub trait StoreObject {
|
pub trait StoreObject {
|
||||||
|
/// Return true if the object `Store` is the same as the provided `Store`.
|
||||||
fn comes_from_same_store(&self, store: &Store) -> bool;
|
fn comes_from_same_store(&self, store: &Store) -> bool;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,11 @@ pub use wasm_common::{
|
|||||||
MemoryType, Mutability, TableType, Type as ValType,
|
MemoryType, Mutability, TableType, Type as ValType,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// WebAssembly computations manipulate values of basic value types:
|
||||||
|
/// * Integers (32 or 64 bit width)
|
||||||
|
/// * Floating-point (32 or 64 bit width)
|
||||||
|
///
|
||||||
|
/// Spec: https://webassembly.github.io/spec/core/exec/runtime.html#values
|
||||||
pub type Val = Value<Function>;
|
pub type Val = Value<Function>;
|
||||||
|
|
||||||
impl StoreObject for Val {
|
impl StoreObject for Val {
|
||||||
|
|||||||
Reference in New Issue
Block a user