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
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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]>,
|
||||
|
@ -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.
|
||||
|
@ -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 });
|
||||
}
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user