From 675f00bfa864f792ab42d1ab33e9e2d0cf62057d Mon Sep 17 00:00:00 2001 From: ljedrz Date: Wed, 10 Oct 2018 15:30:53 +0200 Subject: [PATCH] rustc/session: improve allocations --- src/librustc/session/config.rs | 7 ++++--- src/librustc/session/filesearch.rs | 2 +- src/librustc/session/search_paths.rs | 2 +- src/librustc_driver/driver.rs | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index 8b921a4b46c20..d2020ac852d0c 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -490,10 +490,10 @@ pub enum Input { } impl Input { - pub fn filestem(&self) -> String { + pub fn filestem(&self) -> &str { match *self { - Input::File(ref ifile) => ifile.file_stem().unwrap().to_str().unwrap().to_string(), - Input::Str { .. } => "rust_out".to_string(), + Input::File(ref ifile) => ifile.file_stem().unwrap().to_str().unwrap(), + Input::Str { .. } => "rust_out", } } @@ -1406,6 +1406,7 @@ pub fn default_configuration(sess: &Session) -> ast::CrateConfig { let atomic_cas = sess.target.target.options.atomic_cas; let mut ret = FxHashSet::default(); + ret.reserve(6); // the minimum number of insertions // Target bindings. ret.insert((Symbol::intern("target_os"), Some(Symbol::intern(os)))); if let Some(ref fam) = sess.target.target.options.target_family { diff --git a/src/librustc/session/filesearch.rs b/src/librustc/session/filesearch.rs index e55b82c63c3e5..fb8bf8be1c246 100644 --- a/src/librustc/session/filesearch.rs +++ b/src/librustc/session/filesearch.rs @@ -41,7 +41,7 @@ impl<'a> FileSearch<'a> { F: FnMut(&Path, PathKind) { let mut visited_dirs = FxHashSet::default(); - + visited_dirs.reserve(self.search_paths.paths.len() + 1); for (path, kind) in self.search_paths.iter(self.kind) { f(path, kind); visited_dirs.insert(path.to_path_buf()); diff --git a/src/librustc/session/search_paths.rs b/src/librustc/session/search_paths.rs index be1bfcc0894dd..768d4f1e5fb65 100644 --- a/src/librustc/session/search_paths.rs +++ b/src/librustc/session/search_paths.rs @@ -14,7 +14,7 @@ use session::{early_error, config}; #[derive(Clone, Debug)] pub struct SearchPaths { - paths: Vec<(PathKind, PathBuf)>, + crate paths: Vec<(PathKind, PathBuf)>, } pub struct Iter<'a> { diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index b4f95b915eb8d..223df7cbb1874 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -1657,7 +1657,7 @@ pub fn build_output_filenames( .crate_name .clone() .or_else(|| attr::find_crate_name(attrs).map(|n| n.to_string())) - .unwrap_or_else(|| input.filestem()); + .unwrap_or_else(|| input.filestem().to_owned()); OutputFilenames { out_directory: dirpath,