From f42ca84480ae2a6d792478b8fa9a3e36748a2ccf Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Sun, 26 May 2019 14:44:17 -0500 Subject: [PATCH] Add calling convention to function signatures --- lib/clif-backend/src/code.rs | 21 ++++++++++++++++++++- lib/clif-backend/src/module.rs | 21 --------------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/lib/clif-backend/src/code.rs b/lib/clif-backend/src/code.rs index 034c64963..303070282 100644 --- a/lib/clif-backend/src/code.rs +++ b/lib/clif-backend/src/code.rs @@ -8,6 +8,7 @@ use crate::{ use cranelift_codegen::entity::EntityRef; use cranelift_codegen::ir::{self, Ebb, Function, InstBuilder}; +use cranelift_codegen::isa::CallConv; use cranelift_codegen::{cursor::FuncCursor, isa}; use cranelift_frontend::{FunctionBuilder, Position, Variable}; use cranelift_wasm::{self, FuncTranslator}; @@ -322,8 +323,10 @@ impl ModuleCodeGenerator fn feed_signatures(&mut self, signatures: Map) -> Result<(), CodegenError> { self.signatures = Some(Arc::new(signatures)); + let call_conv = self.isa.frontend_config().default_call_conv; for (_sig_idx, func_sig) in self.signatures.as_ref().unwrap().iter() { - self.clif_signatures.push(Converter(func_sig).into()); + self.clif_signatures + .push(convert_func_sig(func_sig, call_conv)); } Ok(()) } @@ -345,6 +348,22 @@ impl ModuleCodeGenerator } } +fn convert_func_sig(sig: &FuncSig, call_conv: CallConv) -> ir::Signature { + ir::Signature { + params: sig + .params() + .iter() + .map(|params| Converter(*params).into()) + .collect::>(), + returns: sig + .returns() + .iter() + .map(|returns| Converter(*returns).into()) + .collect::>(), + call_conv, + } +} + impl From for CodegenError { fn from(other: CompileError) -> CodegenError { CodegenError { diff --git a/lib/clif-backend/src/module.rs b/lib/clif-backend/src/module.rs index 77660a55f..94593f1c7 100644 --- a/lib/clif-backend/src/module.rs +++ b/lib/clif-backend/src/module.rs @@ -9,7 +9,6 @@ use std::sync::Arc; use wasmer_runtime_core::cache::{Artifact, Error as CacheError}; -use cranelift_codegen::isa::CallConv; use wasmer_runtime_core::{ backend::{Backend, CompilerConfig}, error::CompileResult, @@ -169,26 +168,6 @@ impl From> for FuncSig { } } -impl From> for ir::Signature { - fn from(sig: Converter<&FuncSig>) -> Self { - ir::Signature { - params: sig - .0 - .params() - .iter() - .map(|params| Converter(*params).into()) - .collect::>(), - returns: sig - .0 - .returns() - .iter() - .map(|returns| Converter(*returns).into()) - .collect::>(), - call_conv: CallConv::SystemV, // TODO should come from isa - } - } -} - impl From> for Type { fn from(ty: Converter) -> Self { match ty.0 {