Auto merge of #109772 - petrochenkov:slimchild, r=cjgillot
rustc_metadata: Remove `Span` from `ModChild` It can be decoded on demand from regular `def_span` tables. Partially mitigates perf regressions from https://github.com/rust-lang/rust/pull/109500.
This commit is contained in:
commit
c609da59d9
5 changed files with 12 additions and 16 deletions
|
@ -998,9 +998,8 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
|
||||||
let ident = self.item_ident(id, sess);
|
let ident = self.item_ident(id, sess);
|
||||||
let res = Res::Def(self.def_kind(id), self.local_def_id(id));
|
let res = Res::Def(self.def_kind(id), self.local_def_id(id));
|
||||||
let vis = self.get_visibility(id);
|
let vis = self.get_visibility(id);
|
||||||
let span = self.get_span(id, sess);
|
|
||||||
|
|
||||||
ModChild { ident, res, vis, span, reexport_chain: Default::default() }
|
ModChild { ident, res, vis, reexport_chain: Default::default() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Iterates over all named children of the given module,
|
/// Iterates over all named children of the given module,
|
||||||
|
|
|
@ -831,6 +831,8 @@ fn should_encode_span(def_kind: DefKind) -> bool {
|
||||||
| DefKind::AssocFn
|
| DefKind::AssocFn
|
||||||
| DefKind::AssocConst
|
| DefKind::AssocConst
|
||||||
| DefKind::Macro(_)
|
| DefKind::Macro(_)
|
||||||
|
| DefKind::ExternCrate
|
||||||
|
| DefKind::Use
|
||||||
| DefKind::AnonConst
|
| DefKind::AnonConst
|
||||||
| DefKind::InlineConst
|
| DefKind::InlineConst
|
||||||
| DefKind::OpaqueTy
|
| DefKind::OpaqueTy
|
||||||
|
@ -838,9 +840,7 @@ fn should_encode_span(def_kind: DefKind) -> bool {
|
||||||
| DefKind::Impl { .. }
|
| DefKind::Impl { .. }
|
||||||
| DefKind::Closure
|
| DefKind::Closure
|
||||||
| DefKind::Generator => true,
|
| DefKind::Generator => true,
|
||||||
DefKind::ExternCrate
|
DefKind::ForeignMod
|
||||||
| DefKind::Use
|
|
||||||
| DefKind::ForeignMod
|
|
||||||
| DefKind::ImplTraitPlaceholder
|
| DefKind::ImplTraitPlaceholder
|
||||||
| DefKind::LifetimeParam
|
| DefKind::LifetimeParam
|
||||||
| DefKind::GlobalAsm => false,
|
| DefKind::GlobalAsm => false,
|
||||||
|
|
|
@ -4,7 +4,6 @@ use rustc_hir::def::Res;
|
||||||
use rustc_macros::HashStable;
|
use rustc_macros::HashStable;
|
||||||
use rustc_span::def_id::DefId;
|
use rustc_span::def_id::DefId;
|
||||||
use rustc_span::symbol::Ident;
|
use rustc_span::symbol::Ident;
|
||||||
use rustc_span::Span;
|
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
/// A simplified version of `ImportKind` from resolve.
|
/// A simplified version of `ImportKind` from resolve.
|
||||||
|
@ -41,8 +40,6 @@ pub struct ModChild {
|
||||||
pub res: Res<!>,
|
pub res: Res<!>,
|
||||||
/// Visibility of the item.
|
/// Visibility of the item.
|
||||||
pub vis: ty::Visibility<DefId>,
|
pub vis: ty::Visibility<DefId>,
|
||||||
/// Span of the item.
|
|
||||||
pub span: Span,
|
|
||||||
/// Reexport chain linking this module child to its original reexported item.
|
/// Reexport chain linking this module child to its original reexported item.
|
||||||
/// Empty if the module child is a proper item.
|
/// Empty if the module child is a proper item.
|
||||||
pub reexport_chain: SmallVec<[Reexport; 2]>,
|
pub reexport_chain: SmallVec<[Reexport; 2]>,
|
||||||
|
|
|
@ -931,7 +931,13 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
/// Builds the reduced graph for a single item in an external crate.
|
/// Builds the reduced graph for a single item in an external crate.
|
||||||
fn build_reduced_graph_for_external_crate_res(&mut self, child: ModChild) {
|
fn build_reduced_graph_for_external_crate_res(&mut self, child: ModChild) {
|
||||||
let parent = self.parent_scope.module;
|
let parent = self.parent_scope.module;
|
||||||
let ModChild { ident, res, vis, span, .. } = child;
|
let ModChild { ident, res, vis, reexport_chain } = child;
|
||||||
|
let span = self.r.def_span(
|
||||||
|
reexport_chain
|
||||||
|
.first()
|
||||||
|
.and_then(|reexport| reexport.id())
|
||||||
|
.unwrap_or_else(|| res.def_id()),
|
||||||
|
);
|
||||||
let res = res.expect_non_local();
|
let res = res.expect_non_local();
|
||||||
let expansion = self.parent_scope.expansion;
|
let expansion = self.parent_scope.expansion;
|
||||||
// Record primary definitions.
|
// Record primary definitions.
|
||||||
|
|
|
@ -1276,13 +1276,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
next_binding = binding;
|
next_binding = binding;
|
||||||
}
|
}
|
||||||
|
|
||||||
reexports.push(ModChild {
|
reexports.push(ModChild { ident, res, vis: binding.vis, reexport_chain });
|
||||||
ident,
|
|
||||||
res,
|
|
||||||
vis: binding.vis,
|
|
||||||
span: binding.span,
|
|
||||||
reexport_chain,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue