use wasmer_types::{Features, target::Target};
#[derive(Clone, Debug)]
pub struct Engine;
impl Engine {
pub(crate) fn deterministic_id(&self) -> String {
String::from("js-generic")
}
pub fn supported_features() -> Features {
let mut features = Features::default();
features.bulk_memory(true);
features.reference_types(true);
features.simd(true);
features.threads(true);
features.multi_value(true);
features.exceptions(false);
features
}
pub fn default_features() -> Features {
Self::supported_features()
}
}
impl Default for Engine {
fn default() -> Self {
Self
}
}
pub(crate) fn default_engine() -> Engine {
Engine
}
impl crate::Engine {
pub fn into_js(self) -> crate::backend::js::engine::Engine {
match self.be {
crate::BackendEngine::Js(s) => s,
_ => panic!("Not a `js` engine!"),
}
}
pub fn as_js(&self) -> &crate::backend::js::engine::Engine {
match self.be {
crate::BackendEngine::Js(ref s) => s,
_ => panic!("Not a `js` engine!"),
}
}
pub fn as_js_mut(&mut self) -> &mut crate::backend::js::engine::Engine {
match self.be {
crate::BackendEngine::Js(ref mut s) => s,
_ => panic!("Not a `js` engine!"),
}
}
pub fn is_js(&self) -> bool {
matches!(self.be, crate::BackendEngine::Js(_))
}
}
impl From<Engine> for crate::Engine {
fn from(val: Engine) -> Self {
Self {
be: crate::BackendEngine::Js(val),
id: Self::atomic_next_engine_id(),
}
}
}