wasmtime: Initial, partial support for externref
This is enough to get an `externref -> externref` identity function passing. However, `externref`s that are dropped by compiled Wasm code are (safely) leaked. Follow up work will leverage cranelift's stack maps to resolve this issue.
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
use crate::wasm_config_t;
|
||||
use wasmtime::{Engine, HostRef};
|
||||
use wasmtime::Engine;
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Clone)]
|
||||
pub struct wasm_engine_t {
|
||||
pub(crate) engine: HostRef<Engine>,
|
||||
pub(crate) engine: Engine,
|
||||
}
|
||||
|
||||
wasmtime_c_api_macros::declare_own!(wasm_engine_t);
|
||||
@@ -22,7 +22,7 @@ pub extern "C" fn wasm_engine_new() -> Box<wasm_engine_t> {
|
||||
drop(env_logger::try_init());
|
||||
|
||||
Box::new(wasm_engine_t {
|
||||
engine: HostRef::new(Engine::default()),
|
||||
engine: Engine::default(),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -30,6 +30,6 @@ pub extern "C" fn wasm_engine_new() -> Box<wasm_engine_t> {
|
||||
pub extern "C" fn wasm_engine_new_with_config(c: Box<wasm_config_t>) -> Box<wasm_engine_t> {
|
||||
let config = c.config;
|
||||
Box::new(wasm_engine_t {
|
||||
engine: HostRef::new(Engine::new(&config)),
|
||||
engine: Engine::new(&config),
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user