@@ -35,6 +35,8 @@ use rustc_span::def_id::LOCAL_CRATE;
3535
3636use crate::QueryConfigRestored;
3737
38+ /// Implements [`QueryContext`] for use by [`rustc_query_system`], since that
39+ /// crate does not have direct access to [`TyCtxt`].
3840#[derive(Copy, Clone)]
3941pub struct QueryCtxt<'tcx> {
4042 pub tcx: TyCtxt<'tcx>,
@@ -47,15 +49,6 @@ impl<'tcx> QueryCtxt<'tcx> {
4749 }
4850}
4951
50- impl<'tcx> std::ops::Deref for QueryCtxt<'tcx> {
51- type Target = TyCtxt<'tcx>;
52-
53- #[inline]
54- fn deref(&self) -> &Self::Target {
55- &self.tcx
56- }
57- }
58-
5952impl<'tcx> HasDepContext for QueryCtxt<'tcx> {
6053 type Deps = rustc_middle::dep_graph::DepsType;
6154 type DepContext = TyCtxt<'tcx>;
@@ -69,14 +62,16 @@ impl<'tcx> HasDepContext for QueryCtxt<'tcx> {
6962impl QueryContext for QueryCtxt<'_> {
7063 #[inline]
7164 fn jobserver_proxy(&self) -> &Proxy {
72- &* self.jobserver_proxy
65+ &self.tcx .jobserver_proxy
7366 }
7467
7568 #[inline]
7669 fn next_job_id(self) -> QueryJobId {
7770 QueryJobId(
78- NonZero::new(self.query_system.jobs.fetch_add(1, std::sync::atomic::Ordering::Relaxed))
79- .unwrap(),
71+ NonZero::new(
72+ self.tcx.query_system.jobs.fetch_add(1, std::sync::atomic::Ordering::Relaxed),
73+ )
74+ .unwrap(),
8075 )
8176 }
8277
@@ -113,7 +108,8 @@ impl QueryContext for QueryCtxt<'_> {
113108 self,
114109 prev_dep_node_index: SerializedDepNodeIndex,
115110 ) -> Option<QuerySideEffect> {
116- self.query_system
111+ self.tcx
112+ .query_system
117113 .on_disk_cache
118114 .as_ref()
119115 .and_then(|c| c.load_side_effect(self.tcx, prev_dep_node_index))
@@ -122,7 +118,7 @@ impl QueryContext for QueryCtxt<'_> {
122118 #[inline(never)]
123119 #[cold]
124120 fn store_side_effect(self, dep_node_index: DepNodeIndex, side_effect: QuerySideEffect) {
125- if let Some(c) = self.query_system.on_disk_cache.as_ref() {
121+ if let Some(c) = self.tcx. query_system.on_disk_cache.as_ref() {
126122 c.store_side_effect(dep_node_index, side_effect)
127123 }
128124 }
@@ -140,7 +136,9 @@ impl QueryContext for QueryCtxt<'_> {
140136 // as `self`, so we use `with_related_context` to relate the 'tcx lifetimes
141137 // when accessing the `ImplicitCtxt`.
142138 tls::with_related_context(self.tcx, move |current_icx| {
143- if depth_limit && !self.recursion_limit().value_within_limit(current_icx.query_depth) {
139+ if depth_limit
140+ && !self.tcx.recursion_limit().value_within_limit(current_icx.query_depth)
141+ {
144142 self.depth_limit_error(token);
145143 }
146144
@@ -161,16 +159,16 @@ impl QueryContext for QueryCtxt<'_> {
161159 let query_map = self.collect_active_jobs(true).expect("failed to collect active queries");
162160 let (info, depth) = job.find_dep_kind_root(query_map);
163161
164- let suggested_limit = match self.recursion_limit() {
162+ let suggested_limit = match self.tcx. recursion_limit() {
165163 Limit(0) => Limit(2),
166164 limit => limit * 2,
167165 };
168166
169- self.sess.dcx().emit_fatal(QueryOverflow {
167+ self.tcx. sess.dcx().emit_fatal(QueryOverflow {
170168 span: info.job.span,
171169 note: QueryOverflowNote { desc: info.query.description, depth },
172170 suggested_limit,
173- crate_name: self.crate_name(LOCAL_CRATE),
171+ crate_name: self.tcx. crate_name(LOCAL_CRATE),
174172 });
175173 }
176174}
@@ -367,7 +365,7 @@ pub(crate) fn encode_query_results<'a, 'tcx, Q>(
367365 Q: super::QueryConfigRestored<'tcx>,
368366 Q::RestoredValue: Encodable<CacheEncoder<'a, 'tcx>>,
369367{
370- let _timer = qcx.profiler() .generic_activity_with_arg("encode_query_results_for", query.name());
368+ let _timer = qcx.tcx.prof .generic_activity_with_arg("encode_query_results_for", query.name());
371369
372370 assert!(query.query_state(qcx).all_inactive());
373371 let cache = query.query_cache(qcx);
@@ -389,8 +387,7 @@ pub(crate) fn query_key_hash_verify<'tcx>(
389387 query: impl QueryConfig<QueryCtxt<'tcx>>,
390388 qcx: QueryCtxt<'tcx>,
391389) {
392- let _timer =
393- qcx.profiler().generic_activity_with_arg("query_key_hash_verify_for", query.name());
390+ let _timer = qcx.tcx.prof.generic_activity_with_arg("query_key_hash_verify_for", query.name());
394391
395392 let mut map = UnordMap::default();
396393
0 commit comments