Don't allocate a new ISA for each Func::wrap
Instead we can reuse the existing one in `Store`.
This commit is contained in:
@@ -11,14 +11,14 @@ use std::mem;
|
|||||||
use std::panic::{self, AssertUnwindSafe};
|
use std::panic::{self, AssertUnwindSafe};
|
||||||
use wasmtime_environ::entity::PrimaryMap;
|
use wasmtime_environ::entity::PrimaryMap;
|
||||||
use wasmtime_environ::isa::TargetIsa;
|
use wasmtime_environ::isa::TargetIsa;
|
||||||
use wasmtime_environ::{ir, settings, CompiledFunction, EntityIndex, Module};
|
use wasmtime_environ::{ir, CompiledFunction, EntityIndex, Module};
|
||||||
use wasmtime_jit::trampoline::ir::{
|
use wasmtime_jit::trampoline::ir::{
|
||||||
ExternalName, Function, InstBuilder, MemFlags, StackSlotData, StackSlotKind,
|
ExternalName, Function, InstBuilder, MemFlags, StackSlotData, StackSlotKind,
|
||||||
};
|
};
|
||||||
use wasmtime_jit::trampoline::{
|
use wasmtime_jit::trampoline::{
|
||||||
self, binemit, pretty_error, Context, FunctionBuilder, FunctionBuilderContext,
|
self, binemit, pretty_error, Context, FunctionBuilder, FunctionBuilderContext,
|
||||||
};
|
};
|
||||||
use wasmtime_jit::{native, CodeMemory};
|
use wasmtime_jit::CodeMemory;
|
||||||
use wasmtime_runtime::{InstanceHandle, VMContext, VMFunctionBody, VMTrampoline};
|
use wasmtime_runtime::{InstanceHandle, VMContext, VMFunctionBody, VMTrampoline};
|
||||||
|
|
||||||
struct TrampolineState {
|
struct TrampolineState {
|
||||||
@@ -270,13 +270,7 @@ pub unsafe fn create_handle_with_raw_function(
|
|||||||
store: &Store,
|
store: &Store,
|
||||||
state: Box<dyn Any>,
|
state: Box<dyn Any>,
|
||||||
) -> Result<StoreInstanceHandle> {
|
) -> Result<StoreInstanceHandle> {
|
||||||
let isa = {
|
let pointer_type = store.engine().compiler().isa().pointer_type();
|
||||||
let isa_builder = native::builder();
|
|
||||||
let flag_builder = settings::builder();
|
|
||||||
isa_builder.finish(settings::Flags::new(flag_builder))
|
|
||||||
};
|
|
||||||
|
|
||||||
let pointer_type = isa.pointer_type();
|
|
||||||
let sig = ft.get_wasmtime_signature(pointer_type);
|
let sig = ft.get_wasmtime_signature(pointer_type);
|
||||||
|
|
||||||
let mut module = Module::new();
|
let mut module = Module::new();
|
||||||
|
|||||||
Reference in New Issue
Block a user