diff options
| author | Nicholas Nethercote <nnethercote@mozilla.com> | 2016-11-08 14:02:55 +1100 |
|---|---|---|
| committer | Nicholas Nethercote <nnethercote@mozilla.com> | 2016-11-08 15:14:59 +1100 |
| commit | 00e48affde2d349e3b3bfbd3d0f6afb5d76282a7 (patch) | |
| tree | 5432c8fcca66a63397e0f16a907bf6db33384365 /src/librustdoc/html/render.rs | |
| parent | eca1cc957fff157575f485ebfd2aaafb33ee98cb (diff) | |
| download | rust-00e48affde2d349e3b3bfbd3d0f6afb5d76282a7.tar.gz rust-00e48affde2d349e3b3bfbd3d0f6afb5d76282a7.zip | |
Replace FnvHasher use with FxHasher.
This speeds up compilation by 3--6% across most of rustc-benchmarks.
Diffstat (limited to 'src/librustdoc/html/render.rs')
| -rw-r--r-- | src/librustdoc/html/render.rs | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index a848a011f88..2078ad3ffbe 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -59,7 +59,7 @@ use rustc::hir::def_id::{CrateNum, CRATE_DEF_INDEX, DefId, LOCAL_CRATE}; use rustc::middle::privacy::AccessLevels; use rustc::middle::stability; use rustc::hir; -use rustc::util::nodemap::{FnvHashMap, FnvHashSet}; +use rustc::util::nodemap::{FxHashMap, FxHashSet}; use rustc_data_structures::flock; use clean::{self, Attributes, GetDefId, SelfTy, Mutability}; @@ -111,9 +111,9 @@ pub struct SharedContext { /// `true`. pub include_sources: bool, /// The local file sources we've emitted and their respective url-paths. - pub local_sources: FnvHashMap<PathBuf, String>, + pub local_sources: FxHashMap<PathBuf, String>, /// All the passes that were run on this crate. - pub passes: FnvHashSet<String>, + pub passes: FxHashSet<String>, /// The base-URL of the issue tracker for when an item has been tagged with /// an issue number. pub issue_tracker_base_url: Option<String>, @@ -208,7 +208,7 @@ pub struct Cache { /// Mapping of typaram ids to the name of the type parameter. This is used /// when pretty-printing a type (so pretty printing doesn't have to /// painfully maintain a context like this) - pub typarams: FnvHashMap<DefId, String>, + pub typarams: FxHashMap<DefId, String>, /// Maps a type id to all known implementations for that type. This is only /// recognized for intra-crate `ResolvedPath` types, and is used to print @@ -216,35 +216,35 @@ pub struct Cache { /// /// The values of the map are a list of implementations and documentation /// found on that implementation. - pub impls: FnvHashMap<DefId, Vec<Impl>>, + pub impls: FxHashMap<DefId, Vec<Impl>>, /// Maintains a mapping of local crate node ids to the fully qualified name /// and "short type description" of that node. This is used when generating /// URLs when a type is being linked to. External paths are not located in /// this map because the `External` type itself has all the information /// necessary. - pub paths: FnvHashMap<DefId, (Vec<String>, ItemType)>, + pub paths: FxHashMap<DefId, (Vec<String>, ItemType)>, /// Similar to `paths`, but only holds external paths. This is only used for /// generating explicit hyperlinks to other crates. - pub external_paths: FnvHashMap<DefId, (Vec<String>, ItemType)>, + pub external_paths: FxHashMap<DefId, (Vec<String>, ItemType)>, /// This map contains information about all known traits of this crate. /// Implementations of a crate should inherit the documentation of the /// parent trait if no extra documentation is specified, and default methods /// should show up in documentation about trait implementations. - pub traits: FnvHashMap<DefId, clean::Trait>, + pub traits: FxHashMap<DefId, clean::Trait>, /// When rendering traits, it's often useful to be able to list all /// implementors of the trait, and this mapping is exactly, that: a mapping /// of trait ids to the list of known implementors of the trait - pub implementors: FnvHashMap<DefId, Vec<Implementor>>, + pub implementors: FxHashMap<DefId, Vec<Implementor>>, /// Cache of where external crate documentation can be found. - pub extern_locations: FnvHashMap<CrateNum, (String, ExternalLocation)>, + pub extern_locations: FxHashMap<CrateNum, (String, ExternalLocation)>, /// Cache of where documentation for primitives can be found. - pub primitive_locations: FnvHashMap<clean::PrimitiveType, CrateNum>, + pub primitive_locations: FxHashMap<clean::PrimitiveType, CrateNum>, // Note that external items for which `doc(hidden)` applies to are shown as // non-reachable while local items aren't. This is because we're reusing @@ -257,7 +257,7 @@ pub struct Cache { parent_stack: Vec<DefId>, parent_is_trait_impl: bool, search_index: Vec<IndexItem>, - seen_modules: FnvHashSet<DefId>, + seen_modules: FxHashSet<DefId>, seen_mod: bool, stripped_mod: bool, deref_trait_did: Option<DefId>, @@ -275,9 +275,9 @@ pub struct Cache { /// Later on moved into `CACHE_KEY`. #[derive(Default)] pub struct RenderInfo { - pub inlined: FnvHashSet<DefId>, + pub inlined: FxHashSet<DefId>, pub external_paths: ::core::ExternalPaths, - pub external_typarams: FnvHashMap<DefId, String>, + pub external_typarams: FxHashMap<DefId, String>, pub deref_trait_did: Option<DefId>, pub deref_mut_trait_did: Option<DefId>, } @@ -376,10 +376,10 @@ impl ToJson for IndexItemFunctionType { thread_local!(static CACHE_KEY: RefCell<Arc<Cache>> = Default::default()); thread_local!(pub static CURRENT_LOCATION_KEY: RefCell<Vec<String>> = RefCell::new(Vec::new())); -thread_local!(static USED_ID_MAP: RefCell<FnvHashMap<String, usize>> = +thread_local!(static USED_ID_MAP: RefCell<FxHashMap<String, usize>> = RefCell::new(init_ids())); -fn init_ids() -> FnvHashMap<String, usize> { +fn init_ids() -> FxHashMap<String, usize> { [ "main", "search", @@ -406,7 +406,7 @@ pub fn reset_ids(embedded: bool) { *s.borrow_mut() = if embedded { init_ids() } else { - FnvHashMap() + FxHashMap() }; }); } @@ -431,7 +431,7 @@ pub fn derive_id(candidate: String) -> String { pub fn run(mut krate: clean::Crate, external_html: &ExternalHtml, dst: PathBuf, - passes: FnvHashSet<String>, + passes: FxHashSet<String>, css_file_extension: Option<PathBuf>, renderinfo: RenderInfo) -> Result<(), Error> { let src_root = match krate.src.parent() { @@ -442,7 +442,7 @@ pub fn run(mut krate: clean::Crate, src_root: src_root, passes: passes, include_sources: true, - local_sources: FnvHashMap(), + local_sources: FxHashMap(), issue_tracker_base_url: None, layout: layout::Layout { logo: "".to_string(), @@ -510,22 +510,22 @@ pub fn run(mut krate: clean::Crate, .collect(); let mut cache = Cache { - impls: FnvHashMap(), + impls: FxHashMap(), external_paths: external_paths, - paths: FnvHashMap(), - implementors: FnvHashMap(), + paths: FxHashMap(), + implementors: FxHashMap(), stack: Vec::new(), parent_stack: Vec::new(), search_index: Vec::new(), parent_is_trait_impl: false, - extern_locations: FnvHashMap(), - primitive_locations: FnvHashMap(), - seen_modules: FnvHashSet(), + extern_locations: FxHashMap(), + primitive_locations: FxHashMap(), + seen_modules: FxHashSet(), seen_mod: false, stripped_mod: false, access_levels: krate.access_levels.clone(), orphan_impl_items: Vec::new(), - traits: mem::replace(&mut krate.external_traits, FnvHashMap()), + traits: mem::replace(&mut krate.external_traits, FxHashMap()), deref_trait_did: deref_trait_did, deref_mut_trait_did: deref_mut_trait_did, typarams: external_typarams, @@ -572,7 +572,7 @@ pub fn run(mut krate: clean::Crate, /// Build the search index from the collected metadata fn build_index(krate: &clean::Crate, cache: &mut Cache) -> String { - let mut nodeid_to_pathid = FnvHashMap(); + let mut nodeid_to_pathid = FxHashMap(); let mut crate_items = Vec::with_capacity(cache.search_index.len()); let mut crate_paths = Vec::<Json>::new(); @@ -2618,7 +2618,7 @@ fn render_union(w: &mut fmt::Formatter, it: &clean::Item, #[derive(Copy, Clone)] enum AssocItemLink<'a> { Anchor(Option<&'a str>), - GotoSource(DefId, &'a FnvHashSet<String>), + GotoSource(DefId, &'a FxHashSet<String>), } impl<'a> AssocItemLink<'a> { |
