11use crate :: arena:: Arena ;
22use crate :: hir:: map:: Map ;
33use crate :: hir:: { IndexedHir , OwnerNodes , ParentedNode } ;
4- use rustc_data_structures:: fingerprint:: Fingerprint ;
54use rustc_data_structures:: fx:: FxHashMap ;
6- use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ;
75use rustc_hir as hir;
86use rustc_hir:: def_id:: LocalDefId ;
97use rustc_hir:: def_id:: CRATE_DEF_ID ;
108use rustc_hir:: definitions;
119use rustc_hir:: intravisit:: { self , NestedVisitorMap , Visitor } ;
1210use rustc_hir:: * ;
1311use rustc_index:: vec:: { Idx , IndexVec } ;
14- use rustc_query_system:: ich:: StableHashingContext ;
1512use rustc_session:: Session ;
1613use rustc_span:: source_map:: SourceMap ;
1714use rustc_span:: { Span , DUMMY_SP } ;
@@ -37,8 +34,6 @@ pub(super) struct NodeCollector<'a, 'hir> {
3734 current_dep_node_owner : LocalDefId ,
3835
3936 definitions : & ' a definitions:: Definitions ,
40-
41- hcx : StableHashingContext < ' a > ,
4237}
4338
4439fn insert_vec_map < K : Idx , V : Clone > ( map : & mut IndexVec < K , Option < V > > , k : K , v : V ) {
@@ -51,27 +46,12 @@ fn insert_vec_map<K: Idx, V: Clone>(map: &mut IndexVec<K, Option<V>>, k: K, v: V
5146 map[ k] = Some ( v) ;
5247}
5348
54- fn hash_body < ' s , ' hir : ' s > (
55- hcx : & mut StableHashingContext < ' s > ,
56- item_like : impl for < ' a > HashStable < StableHashingContext < ' a > > ,
57- hash_bodies : bool ,
58- owner : LocalDefId ,
59- bodies : & ' hir IndexVec < ItemLocalId , Option < & ' hir Body < ' hir > > > ,
60- ) -> Fingerprint {
61- let mut stable_hasher = StableHasher :: new ( ) ;
62- hcx. with_hir_bodies ( hash_bodies, owner, bodies, |hcx| {
63- item_like. hash_stable ( hcx, & mut stable_hasher)
64- } ) ;
65- stable_hasher. finish ( )
66- }
67-
6849impl < ' a , ' hir : ' a > NodeCollector < ' a , ' hir > {
6950 pub ( super ) fn root (
7051 sess : & ' a Session ,
7152 arena : & ' hir Arena < ' hir > ,
7253 krate : & ' hir Crate < ' hir > ,
7354 definitions : & ' a definitions:: Definitions ,
74- hcx : StableHashingContext < ' a > ,
7555 ) -> NodeCollector < ' a , ' hir > {
7656 let mut collector = NodeCollector {
7757 arena,
@@ -80,7 +60,6 @@ impl<'a, 'hir: 'a> NodeCollector<'a, 'hir> {
8060 parent_node : hir:: CRATE_HIR_ID ,
8161 current_dep_node_owner : CRATE_DEF_ID ,
8262 definitions,
83- hcx,
8463 map : IndexVec :: from_fn_n ( |_| None , definitions. def_index_count ( ) ) ,
8564 parenting : FxHashMap :: default ( ) ,
8665 } ;
@@ -97,10 +76,10 @@ impl<'a, 'hir: 'a> NodeCollector<'a, 'hir> {
9776 let mut nodes = IndexVec :: new ( ) ;
9877 nodes. push ( Some ( ParentedNode { parent : ItemLocalId :: new ( 0 ) , node : node. into ( ) } ) ) ;
9978
100- let bodies = & self . krate . owners [ owner] . as_ref ( ) . unwrap ( ) . bodies ;
101-
102- let hash = hash_body ( & mut self . hcx , node , true , owner , bodies ) ;
103- let node_hash = hash_body ( & mut self . hcx , node , false , owner , bodies) ;
79+ let info = self . krate . owners [ owner] . as_ref ( ) . unwrap ( ) ;
80+ let hash = info . hash ;
81+ let node_hash = info . node_hash ;
82+ let bodies = & info . bodies ;
10483
10584 debug_assert ! ( self . map[ owner] . is_none( ) ) ;
10685 self . map [ owner] = Some ( self . arena . alloc ( OwnerNodes { hash, node_hash, nodes, bodies } ) ) ;
0 commit comments