Remove the finished_functions field in Instance

Turns out we don't actually need it anywhere any more! This removes an
allocation when instantiating.
This commit is contained in:
Alex Crichton
2020-10-20 22:43:47 -07:00
parent 76998f0404
commit 461ed42772
3 changed files with 8 additions and 14 deletions

View File

@@ -62,9 +62,6 @@ pub(crate) struct Instance {
/// get removed. A missing entry is considered equivalent to an empty slice.
passive_data: RefCell<HashMap<DataIndex, Arc<[u8]>>>,
/// Pointers to functions in executable memory.
finished_functions: BoxedSlice<DefinedFuncIndex, *mut [VMFunctionBody]>,
/// Pointers to trampoline functions used to enter particular signatures
trampolines: HashMap<VMSharedSignatureIndex, VMTrampoline>,
@@ -821,7 +818,7 @@ impl InstanceHandle {
pub unsafe fn new(
module: Arc<Module>,
code: Arc<dyn Any>,
finished_functions: BoxedSlice<DefinedFuncIndex, *mut [VMFunctionBody]>,
finished_functions: &PrimaryMap<DefinedFuncIndex, *mut [VMFunctionBody]>,
trampolines: HashMap<VMSharedSignatureIndex, VMTrampoline>,
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 {