diff --git a/lib/api/src/sys/engine.rs b/lib/api/src/sys/engine.rs index cf90d8b00be..6623b1408b0 100644 --- a/lib/api/src/sys/engine.rs +++ b/lib/api/src/sys/engine.rs @@ -96,7 +96,7 @@ pub trait NativeEngineExt { unsafe fn deserialize_from_mmapped_file_unchecked( &self, file_ref: &Path, - ) -> Result, DeserializeError>; + ) -> Result; /// Load a serialized WebAssembly module from a memory mapped file and deserialize it. /// @@ -105,7 +105,7 @@ pub trait NativeEngineExt { unsafe fn deserialize_from_mmapped_file( &self, file_ref: &Path, - ) -> Result, DeserializeError>; + ) -> Result; } impl NativeEngineExt for crate::engine::Engine { @@ -133,23 +133,26 @@ impl NativeEngineExt for crate::engine::Engine { unsafe fn deserialize_from_mmapped_file_unchecked( &self, file_ref: &Path, - ) -> Result, DeserializeError> { + ) -> Result { let bytes = std::fs::read(file_ref)?; - Ok(Arc::new(Artifact::deserialize_unchecked( - &self.0, - bytes.into(), - )?)) + let artifact = Arc::new(Artifact::deserialize_unchecked(&self.0, bytes.into())?); + Ok(crate::Module(super::module::Module::from_artifact( + artifact, + ))) } unsafe fn deserialize_from_mmapped_file( &self, file_ref: &Path, - ) -> Result, DeserializeError> { + ) -> Result { let file = std::fs::File::open(file_ref)?; - Ok(Arc::new(Artifact::deserialize( + let artifact = Arc::new(Artifact::deserialize( &self.0, OwnedBuffer::from_file(&file) .map_err(|e| DeserializeError::Generic(format!("{e:?}")))?, - )?)) + )?); + Ok(crate::Module(super::module::Module::from_artifact( + artifact, + ))) } } diff --git a/lib/api/src/sys/module.rs b/lib/api/src/sys/module.rs index 11dbab2e791..cde59c4ce3f 100644 --- a/lib/api/src/sys/module.rs +++ b/lib/api/src/sys/module.rs @@ -120,7 +120,7 @@ impl Module { Ok(Self::from_artifact(artifact)) } - fn from_artifact(artifact: Arc) -> Self { + pub(super) fn from_artifact(artifact: Arc) -> Self { Self { artifact } }