From c61a5d7cf5891bcd3e8e2ea6c5535d3ebec2eeb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Sch=C3=BCtt?= Date: Thu, 19 Jan 2023 13:08:27 +0100 Subject: [PATCH] Store::default - create new store with BaseTunables --- lib/cli/src/commands/create_exe.rs | 65 +----------------------------- lib/cli/src/store.rs | 6 ++- 2 files changed, 6 insertions(+), 65 deletions(-) diff --git a/lib/cli/src/commands/create_exe.rs b/lib/cli/src/commands/create_exe.rs index 5ea79d90f08..9144d21e3ad 100644 --- a/lib/cli/src/commands/create_exe.rs +++ b/lib/cli/src/commands/create_exe.rs @@ -2,7 +2,7 @@ use super::ObjectFormat; use crate::common::normalize_path; -use crate::store::{CompilerOptions, CompilerType}; +use crate::store::CompilerOptions; use anyhow::{Context, Result}; use clap::Parser; use serde::{Deserialize, Serialize}; @@ -224,22 +224,7 @@ impl CreateExe { return Err(anyhow::anyhow!("input path cannot be a directory")); } - let (_, ct) = self.compiler.get_store_for_target(target.clone())?; - - let compiler_type = if self.compiler.singlepass { - CompilerType::Singlepass - } else if self.compiler.cranelift { - CompilerType::Cranelift - } else if self.compiler.llvm { - CompilerType::LLVM - } else { - ct // default compiler type - }; - - let engine = EngineBuilder::new(get_config(&compiler_type)?).engine(); - - let tunables = BaseTunables::for_target(engine.target()); - let store = Store::new_with_tunables(&engine, tunables); + let (store, compiler_type) = self.compiler.get_store_for_target(target.clone())?; println!("Compiler: {}", compiler_type.to_string()); println!("Target: {}", target.triple()); @@ -318,52 +303,6 @@ impl CreateExe { } } -fn get_config( - compiler: &CompilerType, -) -> Result, anyhow::Error> { - match compiler { - CompilerType::Cranelift => { - #[cfg(feature = "cranelift")] - { - Ok(Box::new(wasmer_compiler_cranelift::Cranelift::default())) - } - #[cfg(not(feature = "cranelift"))] - { - Err(anyhow::anyhow!( - "compiler \"cranelift\" not embedded in wasmer-cli" - )) - } - } - CompilerType::Singlepass => { - #[cfg(feature = "singlepass")] - { - Ok(Box::new(wasmer_compiler_singlepass::Singlepass::default())) - } - #[cfg(not(feature = "singlepass"))] - { - Err(anyhow::anyhow!( - "compiler \"singlepass\" not embedded in wasmer-cli" - )) - } - } - CompilerType::LLVM => { - #[cfg(feature = "llvm")] - { - Ok(Box::new(wasmer_compiler_llvm::LLVM::default())) - } - #[cfg(not(feature = "llvm"))] - { - Err(anyhow::anyhow!( - "compiler \"llvm\" not embedded in wasmer-cli" - )) - } - } - CompilerType::Headless => Err(anyhow::anyhow!( - "cannot compile .wasm files to object files with compiler \"headless\"" - )), - } -} - fn write_entrypoint(directory: &Path, entrypoint: &Entrypoint) -> Result<(), anyhow::Error> { std::fs::write( directory.join("entrypoint.json"), diff --git a/lib/cli/src/store.rs b/lib/cli/src/store.rs index 1d2c55904cb..bf3e44123b4 100644 --- a/lib/cli/src/store.rs +++ b/lib/cli/src/store.rs @@ -105,7 +105,8 @@ impl CompilerOptions { pub fn get_store_for_target(&self, target: Target) -> Result<(Store, CompilerType)> { let (compiler_config, compiler_type) = self.get_compiler_config()?; let engine = self.get_engine(target, compiler_config)?; - let store = Store::new(engine); + let tunables = BaseTunables::for_target(engine.target()); + let store = Store::new_with_tunables(&engine, tunables); Ok((store, compiler_type)) } @@ -313,7 +314,8 @@ impl StoreOptions { pub fn get_store_for_target(&self, target: Target) -> Result<(Store, CompilerType)> { let (compiler_config, compiler_type) = self.compiler.get_compiler_config()?; let engine = self.get_engine_with_compiler(target, compiler_config)?; - let store = Store::new(engine); + let tunables = BaseTunables::for_target(engine.target()); + let store = Store::new_with_tunables(&engine, tunables); Ok((store, compiler_type)) }