mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-09 22:28:21 +00:00
61 lines
1.7 KiB
Rust
61 lines
1.7 KiB
Rust
use std::any::Any;
|
|
use std::fmt;
|
|
|
|
/// The store represents all global state that can be manipulated by
|
|
/// WebAssembly programs. It consists of the runtime representation
|
|
/// of all instances of functions, tables, memories, and globals that
|
|
/// have been allocated during the lifetime of the abstract machine.
|
|
///
|
|
/// 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)]
|
|
pub struct Store {}
|
|
|
|
impl Store {
|
|
/// Creates a new `Store`.
|
|
pub fn new() -> Self {
|
|
Self {}
|
|
}
|
|
|
|
/// Checks whether two stores are identical. A store is considered
|
|
/// equal to another store if both have the same engine. The
|
|
/// tunables are excluded from the logic.
|
|
pub fn same(a: &Self, b: &Self) -> bool {
|
|
true
|
|
}
|
|
}
|
|
|
|
impl PartialEq for Store {
|
|
fn eq(&self, other: &Self) -> bool {
|
|
Self::same(self, other)
|
|
}
|
|
}
|
|
|
|
// This is required to be able to set the trap_handler in the
|
|
// Store.
|
|
unsafe impl Send for Store {}
|
|
unsafe impl Sync for Store {}
|
|
|
|
impl Default for Store {
|
|
fn default() -> Self {
|
|
Self::new()
|
|
}
|
|
}
|
|
|
|
impl fmt::Debug for Store {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
f.debug_struct("Store").finish()
|
|
}
|
|
}
|
|
|
|
/// A trait represinting any object that lives in the `Store`.
|
|
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 {
|
|
true
|
|
}
|
|
}
|