diff --git a/crates/jit/src/instantiate.rs b/crates/jit/src/instantiate.rs index 3320fec25e..1062e51274 100644 --- a/crates/jit/src/instantiate.rs +++ b/crates/jit/src/instantiate.rs @@ -14,7 +14,7 @@ use std::collections::HashMap; use std::sync::Arc; use thiserror::Error; use wasmtime_debug::create_gdbjit_image; -use wasmtime_environ::entity::{BoxedSlice, PrimaryMap}; +use wasmtime_environ::entity::PrimaryMap; use wasmtime_environ::isa::TargetIsa; use wasmtime_environ::wasm::{DefinedFuncIndex, SignatureIndex}; use wasmtime_environ::{ @@ -134,7 +134,7 @@ impl CompilationArtifacts { } } -struct FinishedFunctions(BoxedSlice); +struct FinishedFunctions(PrimaryMap); unsafe impl Send for FinishedFunctions {} unsafe impl Sync for FinishedFunctions {} @@ -207,7 +207,7 @@ impl CompiledModule { None }; - let finished_functions = FinishedFunctions(finished_functions.into_boxed_slice()); + let finished_functions = FinishedFunctions(finished_functions); Ok(Self { module: Arc::new(module), @@ -271,12 +271,10 @@ impl CompiledModule { trampolines.insert(signatures[i], trampoline.clone()); } - let finished_functions = self.finished_functions.0.clone(); - InstanceHandle::new( self.module.clone(), self.code.clone(), - finished_functions, + &self.finished_functions.0, trampolines, imports, mem_creator, @@ -310,7 +308,7 @@ impl CompiledModule { } /// Returns the map of all finished JIT functions compiled for this module - pub fn finished_functions(&self) -> &BoxedSlice { + pub fn finished_functions(&self) -> &PrimaryMap { &self.finished_functions.0 } diff --git a/crates/runtime/src/instance.rs b/crates/runtime/src/instance.rs index a0aa85a549..4cd50f50f3 100644 --- a/crates/runtime/src/instance.rs +++ b/crates/runtime/src/instance.rs @@ -62,9 +62,6 @@ pub(crate) struct Instance { /// get removed. A missing entry is considered equivalent to an empty slice. passive_data: RefCell>>, - /// Pointers to functions in executable memory. - finished_functions: BoxedSlice, - /// Pointers to trampoline functions used to enter particular signatures trampolines: HashMap, @@ -821,7 +818,7 @@ impl InstanceHandle { pub unsafe fn new( module: Arc, code: Arc, - finished_functions: BoxedSlice, + finished_functions: &PrimaryMap, trampolines: HashMap, imports: Imports, mem_creator: Option<&dyn RuntimeMemoryCreator>, @@ -864,7 +861,6 @@ impl InstanceHandle { tables, passive_elements: Default::default(), passive_data, - finished_functions, trampolines, host_state, interrupts, @@ -944,7 +940,7 @@ impl InstanceHandle { let (func_ptr, vmctx) = if let Some(def_index) = instance.module.defined_func_index(index) { ( - NonNull::new(instance.finished_functions[def_index] as *mut _).unwrap(), + NonNull::new(finished_functions[def_index] as *mut _).unwrap(), instance.vmctx_ptr(), ) } else { diff --git a/crates/wasmtime/src/trampoline/create_handle.rs b/crates/wasmtime/src/trampoline/create_handle.rs index e876240908..fa303cdcf9 100644 --- a/crates/wasmtime/src/trampoline/create_handle.rs +++ b/crates/wasmtime/src/trampoline/create_handle.rs @@ -36,7 +36,7 @@ pub(crate) fn create_handle( let handle = InstanceHandle::new( Arc::new(module), Arc::new(()), - finished_functions.into_boxed_slice(), + &finished_functions, trampolines, imports, store.memory_creator(),