Skip to content

Commit 1024068

Browse files
alexcrichtoncfallin
authored andcommitted
Remove the finished_functions field in Instance
Turns out we don't actually need it anywhere any more! This removes an allocation when instantiating.
1 parent f8fc1f6 commit 1024068

3 files changed

Lines changed: 8 additions & 14 deletions

File tree

crates/jit/src/instantiate.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use std::collections::HashMap;
1414
use std::sync::Arc;
1515
use thiserror::Error;
1616
use wasmtime_debug::create_gdbjit_image;
17-
use wasmtime_environ::entity::{BoxedSlice, PrimaryMap};
17+
use wasmtime_environ::entity::PrimaryMap;
1818
use wasmtime_environ::isa::TargetIsa;
1919
use wasmtime_environ::wasm::{DefinedFuncIndex, SignatureIndex};
2020
use wasmtime_environ::{
@@ -134,7 +134,7 @@ impl CompilationArtifacts {
134134
}
135135
}
136136

137-
struct FinishedFunctions(BoxedSlice<DefinedFuncIndex, *mut [VMFunctionBody]>);
137+
struct FinishedFunctions(PrimaryMap<DefinedFuncIndex, *mut [VMFunctionBody]>);
138138

139139
unsafe impl Send for FinishedFunctions {}
140140
unsafe impl Sync for FinishedFunctions {}
@@ -207,7 +207,7 @@ impl CompiledModule {
207207
None
208208
};
209209

210-
let finished_functions = FinishedFunctions(finished_functions.into_boxed_slice());
210+
let finished_functions = FinishedFunctions(finished_functions);
211211

212212
Ok(Self {
213213
module: Arc::new(module),
@@ -271,12 +271,10 @@ impl CompiledModule {
271271
trampolines.insert(signatures[i], trampoline.clone());
272272
}
273273

274-
let finished_functions = self.finished_functions.0.clone();
275-
276274
InstanceHandle::new(
277275
self.module.clone(),
278276
self.code.clone(),
279-
finished_functions,
277+
&self.finished_functions.0,
280278
trampolines,
281279
imports,
282280
mem_creator,
@@ -310,7 +308,7 @@ impl CompiledModule {
310308
}
311309

312310
/// Returns the map of all finished JIT functions compiled for this module
313-
pub fn finished_functions(&self) -> &BoxedSlice<DefinedFuncIndex, *mut [VMFunctionBody]> {
311+
pub fn finished_functions(&self) -> &PrimaryMap<DefinedFuncIndex, *mut [VMFunctionBody]> {
314312
&self.finished_functions.0
315313
}
316314

crates/runtime/src/instance.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@ pub(crate) struct Instance {
6262
/// get removed. A missing entry is considered equivalent to an empty slice.
6363
passive_data: RefCell<HashMap<DataIndex, Arc<[u8]>>>,
6464

65-
/// Pointers to functions in executable memory.
66-
finished_functions: BoxedSlice<DefinedFuncIndex, *mut [VMFunctionBody]>,
67-
6865
/// Pointers to trampoline functions used to enter particular signatures
6966
trampolines: HashMap<VMSharedSignatureIndex, VMTrampoline>,
7067

@@ -821,7 +818,7 @@ impl InstanceHandle {
821818
pub unsafe fn new(
822819
module: Arc<Module>,
823820
code: Arc<dyn Any>,
824-
finished_functions: BoxedSlice<DefinedFuncIndex, *mut [VMFunctionBody]>,
821+
finished_functions: &PrimaryMap<DefinedFuncIndex, *mut [VMFunctionBody]>,
825822
trampolines: HashMap<VMSharedSignatureIndex, VMTrampoline>,
826823
imports: Imports,
827824
mem_creator: Option<&dyn RuntimeMemoryCreator>,
@@ -864,7 +861,6 @@ impl InstanceHandle {
864861
tables,
865862
passive_elements: Default::default(),
866863
passive_data,
867-
finished_functions,
868864
trampolines,
869865
host_state,
870866
interrupts,
@@ -944,7 +940,7 @@ impl InstanceHandle {
944940
let (func_ptr, vmctx) =
945941
if let Some(def_index) = instance.module.defined_func_index(index) {
946942
(
947-
NonNull::new(instance.finished_functions[def_index] as *mut _).unwrap(),
943+
NonNull::new(finished_functions[def_index] as *mut _).unwrap(),
948944
instance.vmctx_ptr(),
949945
)
950946
} else {

crates/wasmtime/src/trampoline/create_handle.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pub(crate) fn create_handle(
3636
let handle = InstanceHandle::new(
3737
Arc::new(module),
3838
Arc::new(()),
39-
finished_functions.into_boxed_slice(),
39+
&finished_functions,
4040
trampolines,
4141
imports,
4242
store.memory_creator(),

0 commit comments

Comments
 (0)