Remove NodeIdHashingMode.
This commit is contained in:
parent
341883d051
commit
443333dc1f
16 changed files with 54 additions and 358 deletions
|
@ -2,8 +2,7 @@ use crate::ich;
|
|||
use rustc_ast as ast;
|
||||
use rustc_data_structures::fx::FxHashSet;
|
||||
use rustc_data_structures::sorted_map::SortedMap;
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
use rustc_data_structures::stable_hasher::{HashingControls, NodeIdHashingMode};
|
||||
use rustc_data_structures::stable_hasher::{HashStable, HashingControls, StableHasher};
|
||||
use rustc_data_structures::sync::Lrc;
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::def_id::{DefId, LocalDefId};
|
||||
|
@ -69,10 +68,7 @@ impl<'a> StableHashingContext<'a> {
|
|||
incremental_ignore_spans: sess.opts.debugging_opts.incremental_ignore_spans,
|
||||
caching_source_map: None,
|
||||
raw_source_map: sess.source_map(),
|
||||
hashing_controls: HashingControls {
|
||||
hash_spans: hash_spans_initial,
|
||||
node_id_hashing_mode: NodeIdHashingMode::HashDefPath,
|
||||
},
|
||||
hashing_controls: HashingControls { hash_spans: hash_spans_initial },
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -138,18 +134,6 @@ impl<'a> StableHashingContext<'a> {
|
|||
self.hashing_controls.hash_spans = prev_hash_spans;
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn with_node_id_hashing_mode<F: FnOnce(&mut Self)>(
|
||||
&mut self,
|
||||
mode: NodeIdHashingMode,
|
||||
f: F,
|
||||
) {
|
||||
let prev = self.hashing_controls.node_id_hashing_mode;
|
||||
self.hashing_controls.node_id_hashing_mode = mode;
|
||||
f(self);
|
||||
self.hashing_controls.node_id_hashing_mode = prev;
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn def_path_hash(&self, def_id: DefId) -> DefPathHash {
|
||||
if let Some(def_id) = def_id.as_local() {
|
||||
|
@ -233,9 +217,7 @@ impl<'a> rustc_span::HashStableContext for StableHashingContext<'a> {
|
|||
|
||||
impl<'a> rustc_data_structures::intern::InternedHashingContext for StableHashingContext<'a> {
|
||||
fn with_def_path_and_no_spans(&mut self, f: impl FnOnce(&mut Self)) {
|
||||
self.while_hashing_spans(false, |hcx| {
|
||||
hcx.with_node_id_hashing_mode(NodeIdHashingMode::HashDefPath, |hcx| f(hcx))
|
||||
});
|
||||
self.while_hashing_spans(false, f);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,28 +2,11 @@
|
|||
//! types in no particular order.
|
||||
|
||||
use crate::ich::hcx::BodyResolver;
|
||||
use crate::ich::{NodeIdHashingMode, StableHashingContext};
|
||||
use crate::ich::StableHashingContext;
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
use rustc_hir as hir;
|
||||
use std::mem;
|
||||
|
||||
impl<'ctx> rustc_hir::HashStableContext for StableHashingContext<'ctx> {
|
||||
#[inline]
|
||||
fn hash_hir_id(&mut self, hir_id: hir::HirId, hasher: &mut StableHasher) {
|
||||
let hcx = self;
|
||||
match hcx.hashing_controls.node_id_hashing_mode {
|
||||
NodeIdHashingMode::Ignore => {
|
||||
// Don't do anything.
|
||||
}
|
||||
NodeIdHashingMode::HashDefPath => {
|
||||
let hir::HirId { owner, local_id } = hir_id;
|
||||
|
||||
hcx.local_def_path_hash(owner).hash_stable(hcx, hasher);
|
||||
local_id.hash_stable(hcx, hasher);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn hash_body_id(&mut self, id: hir::BodyId, hasher: &mut StableHasher) {
|
||||
let hcx = self;
|
||||
|
@ -37,19 +20,11 @@ impl<'ctx> rustc_hir::HashStableContext for StableHashingContext<'ctx> {
|
|||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn hash_reference_to_item(&mut self, id: hir::HirId, hasher: &mut StableHasher) {
|
||||
let hcx = self;
|
||||
|
||||
hcx.with_node_id_hashing_mode(NodeIdHashingMode::HashDefPath, |hcx| {
|
||||
id.hash_stable(hcx, hasher);
|
||||
})
|
||||
}
|
||||
|
||||
fn hash_hir_expr(&mut self, expr: &hir::Expr<'_>, hasher: &mut StableHasher) {
|
||||
self.while_hashing_hir_bodies(true, |hcx| {
|
||||
let hir::Expr { hir_id: _, ref span, ref kind } = *expr;
|
||||
let hir::Expr { hir_id, ref span, ref kind } = *expr;
|
||||
|
||||
hir_id.hash_stable(hcx, hasher);
|
||||
span.hash_stable(hcx, hasher);
|
||||
kind.hash_stable(hcx, hasher);
|
||||
})
|
||||
|
@ -57,66 +32,11 @@ impl<'ctx> rustc_hir::HashStableContext for StableHashingContext<'ctx> {
|
|||
|
||||
fn hash_hir_ty(&mut self, ty: &hir::Ty<'_>, hasher: &mut StableHasher) {
|
||||
self.while_hashing_hir_bodies(true, |hcx| {
|
||||
let hir::Ty { hir_id: _, ref kind, ref span } = *ty;
|
||||
let hir::Ty { hir_id, ref kind, ref span } = *ty;
|
||||
|
||||
hir_id.hash_stable(hcx, hasher);
|
||||
kind.hash_stable(hcx, hasher);
|
||||
span.hash_stable(hcx, hasher);
|
||||
})
|
||||
}
|
||||
|
||||
fn hash_hir_visibility_kind(
|
||||
&mut self,
|
||||
vis: &hir::VisibilityKind<'_>,
|
||||
hasher: &mut StableHasher,
|
||||
) {
|
||||
let hcx = self;
|
||||
mem::discriminant(vis).hash_stable(hcx, hasher);
|
||||
match *vis {
|
||||
hir::VisibilityKind::Public | hir::VisibilityKind::Inherited => {
|
||||
// No fields to hash.
|
||||
}
|
||||
hir::VisibilityKind::Crate(sugar) => {
|
||||
sugar.hash_stable(hcx, hasher);
|
||||
}
|
||||
hir::VisibilityKind::Restricted { ref path, hir_id } => {
|
||||
hcx.with_node_id_hashing_mode(NodeIdHashingMode::HashDefPath, |hcx| {
|
||||
hir_id.hash_stable(hcx, hasher);
|
||||
});
|
||||
path.hash_stable(hcx, hasher);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn hash_hir_item_like<F: FnOnce(&mut Self)>(&mut self, f: F) {
|
||||
let prev_hash_node_ids = self.hashing_controls.node_id_hashing_mode;
|
||||
self.hashing_controls.node_id_hashing_mode = NodeIdHashingMode::Ignore;
|
||||
|
||||
f(self);
|
||||
|
||||
self.hashing_controls.node_id_hashing_mode = prev_hash_node_ids;
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn hash_hir_trait_candidate(&mut self, tc: &hir::TraitCandidate, hasher: &mut StableHasher) {
|
||||
self.with_node_id_hashing_mode(NodeIdHashingMode::HashDefPath, |hcx| {
|
||||
let hir::TraitCandidate { def_id, import_ids } = tc;
|
||||
|
||||
def_id.hash_stable(hcx, hasher);
|
||||
import_ids.hash_stable(hcx, hasher);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> HashStable<StableHashingContext<'a>> for hir::Body<'_> {
|
||||
#[inline]
|
||||
fn hash_stable(&self, hcx: &mut StableHashingContext<'a>, hasher: &mut StableHasher) {
|
||||
let hir::Body { params, value, generator_kind } = self;
|
||||
|
||||
hcx.with_node_id_hashing_mode(NodeIdHashingMode::Ignore, |hcx| {
|
||||
params.hash_stable(hcx, hasher);
|
||||
value.hash_stable(hcx, hasher);
|
||||
generator_kind.hash_stable(hcx, hasher);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
//! ICH - Incremental Compilation Hash
|
||||
|
||||
pub use self::hcx::StableHashingContext;
|
||||
pub use rustc_data_structures::stable_hasher::NodeIdHashingMode;
|
||||
use rustc_span::symbol::{sym, Symbol};
|
||||
|
||||
mod hcx;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue