feat(clif-backend,singlepass-backend) Feed imported functions with FuncCtx.vmctx.

This commit is contained in:
Ivan Enderlin
2019-11-11 23:12:40 +01:00
parent 98e4ef066a
commit 11f34a9285
3 changed files with 38 additions and 3 deletions

View File

@ -558,6 +558,7 @@ impl ModuleCodeGenerator<X64FunctionCode, X64ExecutionContext, CodegenError>
let imported_func = vm::ImportedFunc::size() as usize * id;
let imported_func_addr = imported_func + vm::ImportedFunc::offset_func() as usize;
let imported_func_ctx_addr = imported_func + vm::ImportedFunc::offset_func_ctx() as usize;
let imported_func_ctx_vmctx_addr = vm::FuncCtx::offset_vmctx() as usize;
a.emit_mov(
Size::S64,
@ -569,6 +570,11 @@ impl ModuleCodeGenerator<X64FunctionCode, X64ExecutionContext, CodegenError>
Location::Memory(GPR::RAX, imported_func_ctx_addr as i32),
Location::GPR(GPR::RDI),
);
a.emit_mov(
Size::S64,
Location::Memory(GPR::RDI, imported_func_ctx_vmctx_addr as i32),
Location::GPR(GPR::RDI),
);
a.emit_mov(
Size::S64,
Location::Memory(GPR::RAX, imported_func_addr as i32),