@@ -156,19 +156,22 @@ impl<'hir> Map<'hir> {
156
156
157
157
#[ inline]
158
158
pub fn definitions ( & self ) -> & ' hir Definitions {
159
- & self . tcx . definitions
159
+ // Accessing the definitions is ok, since all its contents are tracked by the query system.
160
+ & self . tcx . untracked_resolutions . definitions
160
161
}
161
162
162
163
pub fn def_key ( & self , def_id : LocalDefId ) -> DefKey {
163
- self . tcx . definitions . def_key ( def_id)
164
+ // Accessing the definitions is ok, since all its contents are tracked by the query system.
165
+ self . tcx . untracked_resolutions . definitions . def_key ( def_id)
164
166
}
165
167
166
168
pub fn def_path_from_hir_id ( & self , id : HirId ) -> Option < DefPath > {
167
169
self . opt_local_def_id ( id) . map ( |def_id| self . def_path ( def_id) )
168
170
}
169
171
170
172
pub fn def_path ( & self , def_id : LocalDefId ) -> DefPath {
171
- self . tcx . definitions . def_path ( def_id)
173
+ // Accessing the definitions is ok, since all its contents are tracked by the query system.
174
+ self . tcx . untracked_resolutions . definitions . def_path ( def_id)
172
175
}
173
176
174
177
#[ inline]
@@ -184,16 +187,19 @@ impl<'hir> Map<'hir> {
184
187
185
188
#[ inline]
186
189
pub fn opt_local_def_id ( & self , hir_id : HirId ) -> Option < LocalDefId > {
187
- self . tcx . definitions . opt_hir_id_to_local_def_id ( hir_id)
190
+ // Accessing the definitions is ok, since all its contents are tracked by the query system.
191
+ self . tcx . untracked_resolutions . definitions . opt_hir_id_to_local_def_id ( hir_id)
188
192
}
189
193
190
194
#[ inline]
191
195
pub fn local_def_id_to_hir_id ( & self , def_id : LocalDefId ) -> HirId {
192
- self . tcx . definitions . local_def_id_to_hir_id ( def_id)
196
+ // Accessing the definitions is ok, since all its contents are tracked by the query system.
197
+ self . tcx . untracked_resolutions . definitions . local_def_id_to_hir_id ( def_id)
193
198
}
194
199
195
200
pub fn iter_local_def_id ( & self ) -> impl Iterator < Item = LocalDefId > + ' _ {
196
- self . tcx . definitions . iter_local_def_id ( )
201
+ // Accessing the definitions is ok, since all its contents are tracked by the query system.
202
+ self . tcx . untracked_resolutions . definitions . iter_local_def_id ( )
197
203
}
198
204
199
205
pub fn opt_def_kind ( & self , local_def_id : LocalDefId ) -> Option < DefKind > {
@@ -932,9 +938,15 @@ impl<'hir> intravisit::Map<'hir> for Map<'hir> {
932
938
pub ( super ) fn index_hir < ' tcx > ( tcx : TyCtxt < ' tcx > , ( ) : ( ) ) -> & ' tcx IndexedHir < ' tcx > {
933
939
let _prof_timer = tcx. sess . prof . generic_activity ( "build_hir_map" ) ;
934
940
941
+ // We can access untracked state since we are an eval_always query.
935
942
let hcx = tcx. create_stable_hashing_context ( ) ;
936
- let mut collector =
937
- NodeCollector :: root ( tcx. sess , & * * tcx. arena , tcx. untracked_crate , & tcx. definitions , hcx) ;
943
+ let mut collector = NodeCollector :: root (
944
+ tcx. sess ,
945
+ & * * tcx. arena ,
946
+ tcx. untracked_crate ,
947
+ & tcx. untracked_resolutions . definitions ,
948
+ hcx,
949
+ ) ;
938
950
intravisit:: walk_crate ( & mut collector, tcx. untracked_crate ) ;
939
951
940
952
let map = collector. finalize_and_compute_crate_hash ( ) ;
@@ -944,14 +956,15 @@ pub(super) fn index_hir<'tcx>(tcx: TyCtxt<'tcx>, (): ()) -> &'tcx IndexedHir<'tc
944
956
pub ( super ) fn crate_hash ( tcx : TyCtxt < ' _ > , crate_num : CrateNum ) -> Svh {
945
957
assert_eq ! ( crate_num, LOCAL_CRATE ) ;
946
958
959
+ // We can access untracked state since we are an eval_always query.
947
960
let mut hcx = tcx. create_stable_hashing_context ( ) ;
948
961
949
962
let mut hir_body_nodes: Vec < _ > = tcx
950
963
. index_hir ( ( ) )
951
964
. map
952
965
. iter_enumerated ( )
953
966
. filter_map ( |( def_id, hod) | {
954
- let def_path_hash = tcx. definitions . def_path_hash ( def_id) ;
967
+ let def_path_hash = tcx. untracked_resolutions . definitions . def_path_hash ( def_id) ;
955
968
let mut hasher = StableHasher :: new ( ) ;
956
969
hod. as_ref ( ) ?. hash_stable ( & mut hcx, & mut hasher) ;
957
970
AttributeMap { map : & tcx. untracked_crate . attrs , prefix : def_id }
@@ -968,7 +981,7 @@ pub(super) fn crate_hash(tcx: TyCtxt<'_>, crate_num: CrateNum) -> Svh {
968
981
} ,
969
982
) ;
970
983
971
- let upstream_crates = upstream_crates ( & * tcx. cstore ) ;
984
+ let upstream_crates = upstream_crates ( & * tcx. untracked_resolutions . cstore ) ;
972
985
973
986
// We hash the final, remapped names of all local source files so we
974
987
// don't have to include the path prefix remapping commandline args.
0 commit comments