diff --git a/lib/deprecated/runtime-core/src/instance.rs b/lib/deprecated/runtime-core/src/instance.rs index c374f375f..f7d9d63c8 100644 --- a/lib/deprecated/runtime-core/src/instance.rs +++ b/lib/deprecated/runtime-core/src/instance.rs @@ -38,6 +38,13 @@ pub struct Instance { impl Instance { pub(crate) fn new(pre_instance: Box, new_instance: new::wasmer::Instance) -> Self { + // Initialize the `vm::Ctx` + { + let mut vmctx = pre_instance.vmctx.borrow_mut(); + + vmctx.module_info = new_instance.module().info() as *const _; + } + Self { pre_instance, exports: new_instance.exports.clone().into(), diff --git a/lib/deprecated/runtime-core/src/vm.rs b/lib/deprecated/runtime-core/src/vm.rs index 9b3b6e56c..a64d97fd9 100644 --- a/lib/deprecated/runtime-core/src/vm.rs +++ b/lib/deprecated/runtime-core/src/vm.rs @@ -1,8 +1,10 @@ +use crate::module::ModuleInfo; use std::{ffi::c_void, ptr}; #[derive(Debug, Clone)] #[repr(C)] pub struct Ctx { + pub module_info: *const ModuleInfo, pub data: *mut c_void, pub data_finalizer: Option, } @@ -10,6 +12,7 @@ pub struct Ctx { impl Ctx { pub(crate) unsafe fn new_uninit() -> Self { Self { + module_info: ptr::null(), data: ptr::null_mut(), data_finalizer: None, }