Skip to content

Commit f98c273

Browse files
Auto merge of #147387 - azhogin:azhogin/hir_owner_parent_opt, r=<try>
hir_owner_parent optimized to inlined call for non-incremental build
2 parents 828c2a9 + acb23dc commit f98c273

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

compiler/rustc_middle/src/hir/mod.rs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,26 @@ impl<'tcx> TyCtxt<'tcx> {
203203
}
204204
})
205205
}
206+
207+
#[inline]
208+
pub fn hir_owner_parent(self, owner_id: OwnerId) -> HirId {
209+
if self.dep_graph.is_fully_enabled() {
210+
self.hir_owner_parent_q(owner_id)
211+
} else {
212+
self.opt_local_parent(owner_id.def_id).map_or(CRATE_HIR_ID, |parent_def_id| {
213+
let parent_owner_id = self.local_def_id_to_hir_id(parent_def_id).owner;
214+
HirId {
215+
owner: parent_owner_id,
216+
local_id: self.hir_crate(()).owners[parent_owner_id.def_id]
217+
.unwrap()
218+
.parenting
219+
.get(&owner_id.def_id)
220+
.copied()
221+
.unwrap_or(ItemLocalId::ZERO),
222+
}
223+
})
224+
}
225+
}
206226
}
207227

208228
/// Hashes computed by [`TyCtxt::hash_owner_nodes`] if necessary.
@@ -224,7 +244,7 @@ pub fn provide(providers: &mut Providers) {
224244
};
225245
providers.opt_hir_owner_nodes =
226246
|tcx, id| tcx.hir_crate(()).owners.get(id)?.as_owner().map(|i| &i.nodes);
227-
providers.hir_owner_parent = |tcx, owner_id| {
247+
providers.hir_owner_parent_q = |tcx, owner_id| {
228248
tcx.opt_local_parent(owner_id.def_id).map_or(CRATE_HIR_ID, |parent_def_id| {
229249
let parent_owner_id = tcx.local_def_id_to_hir_id(parent_def_id).owner;
230250
HirId {

compiler/rustc_middle/src/query/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ rustc_queries! {
255255
///
256256
/// This can be conveniently accessed by `tcx.hir_*` methods.
257257
/// Avoid calling this query directly.
258-
query hir_owner_parent(key: hir::OwnerId) -> hir::HirId {
258+
query hir_owner_parent_q(key: hir::OwnerId) -> hir::HirId {
259259
desc { |tcx| "getting HIR parent of `{}`", tcx.def_path_str(key) }
260260
}
261261

0 commit comments

Comments
 (0)