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:
bors 2023-04-18 20:16:56 +00:00
commit c609da59d9
5 changed files with 12 additions and 16 deletions

View File

@ -998,9 +998,8 @@ fn get_mod_child(self, id: DefIndex, sess: &Session) -> ModChild {
let ident = self.item_ident(id, sess);
let res = Res::Def(self.def_kind(id), self.local_def_id(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,

View File

@ -831,6 +831,8 @@ fn should_encode_span(def_kind: DefKind) -> bool {
| DefKind::AssocFn
| DefKind::AssocConst
| DefKind::Macro(_)
| DefKind::ExternCrate
| DefKind::Use
| DefKind::AnonConst
| DefKind::InlineConst
| DefKind::OpaqueTy
@ -838,9 +840,7 @@ fn should_encode_span(def_kind: DefKind) -> bool {
| DefKind::Impl { .. }
| DefKind::Closure
| DefKind::Generator => true,
DefKind::ExternCrate
| DefKind::Use
| DefKind::ForeignMod
DefKind::ForeignMod
| DefKind::ImplTraitPlaceholder
| DefKind::LifetimeParam
| DefKind::GlobalAsm => false,

View File

@ -4,7 +4,6 @@
use rustc_macros::HashStable;
use rustc_span::def_id::DefId;
use rustc_span::symbol::Ident;
use rustc_span::Span;
use smallvec::SmallVec;
/// A simplified version of `ImportKind` from resolve.
@ -41,8 +40,6 @@ pub struct ModChild {
pub res: Res<!>,
/// Visibility of the item.
pub vis: ty::Visibility<DefId>,
/// Span of the item.
pub span: Span,
/// Reexport chain linking this module child to its original reexported item.
/// Empty if the module child is a proper item.
pub reexport_chain: SmallVec<[Reexport; 2]>,

View File

@ -931,7 +931,13 @@ fn build_reduced_graph_for_block(&mut self, block: &Block) {
/// Builds the reduced graph for a single item in an external crate.
fn build_reduced_graph_for_external_crate_res(&mut self, child: ModChild) {
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 expansion = self.parent_scope.expansion;
// Record primary definitions.

View File

@ -1276,13 +1276,7 @@ fn finalize_resolutions_in(&mut self, module: Module<'a>) {
next_binding = binding;
}
reexports.push(ModChild {
ident,
res,
vis: binding.vis,
span: binding.span,
reexport_chain,
});
reexports.push(ModChild { ident, res, vis: binding.vis, reexport_chain });
}
});