diff options
| author | kennytm <kennytm@gmail.com> | 2018-01-23 17:03:42 +0800 |
|---|---|---|
| committer | kennytm <kennytm@gmail.com> | 2018-01-23 22:30:57 +0800 |
| commit | 9d26a25bb627e8cee8476331cf25212a5aacebd1 (patch) | |
| tree | 7303dc3425ac6686fb68f9cf614f641568feda76 | |
| parent | cb0a8bf7d157d91db9be5b628c1b43e14f5b5d7c (diff) | |
| parent | 643e71e2e125a1859793f729bdb2149bc0e6b23c (diff) | |
| download | rust-9d26a25bb627e8cee8476331cf25212a5aacebd1.tar.gz rust-9d26a25bb627e8cee8476331cf25212a5aacebd1.zip | |
Rollup merge of #47635 - Zoxc:remove-attr, r=michaelwoerister
Remove the IGNORED_ATTR_NAMES thread local
| -rw-r--r-- | src/librustc/ich/hcx.rs | 21 | ||||
| -rw-r--r-- | src/librustc/ich/mod.rs | 2 | ||||
| -rw-r--r-- | src/librustc/session/mod.rs | 6 |
3 files changed, 13 insertions, 16 deletions
diff --git a/src/librustc/ich/hcx.rs b/src/librustc/ich/hcx.rs index 2945b1ab912..67f6c0c2e49 100644 --- a/src/librustc/ich/hcx.rs +++ b/src/librustc/ich/hcx.rs @@ -19,8 +19,8 @@ use session::Session; use std::cmp::Ord; use std::hash as std_hash; -use std::cell::RefCell; use std::collections::HashMap; +use std::cell::RefCell; use syntax::ast; @@ -36,8 +36,10 @@ use rustc_data_structures::stable_hasher::{HashStable, StableHashingContextProvi use rustc_data_structures::accumulate_vec::AccumulateVec; use rustc_data_structures::fx::{FxHashSet, FxHashMap}; -thread_local!(static IGNORED_ATTR_NAMES: RefCell<FxHashSet<Symbol>> = - RefCell::new(FxHashSet())); +pub fn compute_ignored_attr_names() -> FxHashSet<Symbol> { + debug_assert!(ich::IGNORED_ATTRIBUTES.len() > 0); + ich::IGNORED_ATTRIBUTES.iter().map(|&s| Symbol::intern(s)).collect() +} /// This is the context state available during incr. comp. hashing. It contains /// enough information to transform DefIds and HirIds into stable DefPaths (i.e. @@ -90,15 +92,6 @@ impl<'gcx> StableHashingContext<'gcx> { -> Self { let hash_spans_initial = !sess.opts.debugging_opts.incremental_ignore_spans; - debug_assert!(ich::IGNORED_ATTRIBUTES.len() > 0); - IGNORED_ATTR_NAMES.with(|names| { - let mut names = names.borrow_mut(); - if names.is_empty() { - names.extend(ich::IGNORED_ATTRIBUTES.iter() - .map(|&s| Symbol::intern(s))); - } - }); - StableHashingContext { sess, body_resolver: BodyResolver(krate), @@ -186,9 +179,7 @@ impl<'gcx> StableHashingContext<'gcx> { #[inline] pub fn is_ignored_attr(&self, name: Symbol) -> bool { - IGNORED_ATTR_NAMES.with(|names| { - names.borrow().contains(&name) - }) + self.sess.ignored_attr_names.contains(&name) } pub fn hash_hir_item_like<F: FnOnce(&mut Self)>(&mut self, f: F) { diff --git a/src/librustc/ich/mod.rs b/src/librustc/ich/mod.rs index cbd76ee14db..ce1bd07b14c 100644 --- a/src/librustc/ich/mod.rs +++ b/src/librustc/ich/mod.rs @@ -13,7 +13,7 @@ pub use self::fingerprint::Fingerprint; pub use self::caching_codemap_view::CachingCodemapView; pub use self::hcx::{StableHashingContext, NodeIdHashingMode, - hash_stable_trait_impls}; + hash_stable_trait_impls, compute_ignored_attr_names}; mod fingerprint; mod caching_codemap_view; mod hcx; diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs index 94fcfb7e2aa..36f716a4a76 100644 --- a/src/librustc/session/mod.rs +++ b/src/librustc/session/mod.rs @@ -14,6 +14,7 @@ pub use self::code_stats::{SizeKind, TypeSizeInfo, VariantInfo}; use hir::def_id::CrateNum; use ich::Fingerprint; +use ich; use lint; use middle::allocator::AllocatorKind; use middle::dependency_format; @@ -28,6 +29,7 @@ use errors::{self, DiagnosticBuilder, DiagnosticId}; use errors::emitter::{Emitter, EmitterWriter}; use syntax::json::JsonEmitter; use syntax::feature_gate; +use syntax::symbol::Symbol; use syntax::parse; use syntax::parse::ParseSess; use syntax::{ast, codemap}; @@ -112,6 +114,9 @@ pub struct Session { incr_comp_session: RefCell<IncrCompSession>, + /// A cache of attributes ignored by StableHashingContext + pub ignored_attr_names: FxHashSet<Symbol>, + /// Some measurements that are being gathered during compilation. pub perf_stats: PerfStats, @@ -975,6 +980,7 @@ pub fn build_session_(sopts: config::Options, injected_panic_runtime: Cell::new(None), imported_macro_spans: RefCell::new(HashMap::new()), incr_comp_session: RefCell::new(IncrCompSession::NotInitialized), + ignored_attr_names: ich::compute_ignored_attr_names(), perf_stats: PerfStats { svh_time: Cell::new(Duration::from_secs(0)), incr_comp_hashes_time: Cell::new(Duration::from_secs(0)), |
