Skip to content

Commit

Permalink
Remove the IGNORED_ATTR_NAMES thread local
Browse files Browse the repository at this point in the history
  • Loading branch information
Zoxc committed Jan 21, 2018
1 parent 8d3e93b commit 643e71e
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 16 deletions.
21 changes: 6 additions & 15 deletions src/librustc/ich/hcx.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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.
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion src/librustc/ich/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 6 additions & 0 deletions src/librustc/session/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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};
Expand Down Expand Up @@ -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,

Expand Down Expand Up @@ -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)),
Expand Down

0 comments on commit 643e71e

Please sign in to comment.