diff options
| author | Noah Lev <camelidcamel@gmail.com> | 2021-10-28 20:48:48 -0700 |
|---|---|---|
| committer | Noah Lev <camelidcamel@gmail.com> | 2021-10-30 11:16:00 -0700 |
| commit | 85f8ae8ec49683df08a598b0f2594dd066f24a11 (patch) | |
| tree | 9ef935900934c43a5b39070c90b760ffbb96e376 | |
| parent | 47b0059dba00a9982721f346b46ceca32620700e (diff) | |
| download | rust-85f8ae8ec49683df08a598b0f2594dd066f24a11.tar.gz rust-85f8ae8ec49683df08a598b0f2594dd066f24a11.zip | |
rustdoc: Remove `Crate.src` and instead compute it on-demand
It is only used in one place; `src` was about a third of `Crate`'s total size; `Crate` is frequently moved by-value; and `src` can be easily computed on-demand.
| -rw-r--r-- | src/librustdoc/clean/types.rs | 9 | ||||
| -rw-r--r-- | src/librustdoc/clean/utils.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/html/render/context.rs | 2 |
3 files changed, 8 insertions, 5 deletions
diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs index c0ceb9a09f4..24a51a3f154 100644 --- a/src/librustdoc/clean/types.rs +++ b/src/librustdoc/clean/types.rs @@ -117,7 +117,6 @@ impl From<DefId> for ItemId { #[derive(Clone, Debug)] crate struct Crate { crate name: Symbol, - crate src: FileName, crate module: Item, crate externs: Vec<ExternalCrate>, crate primitives: ThinVec<(DefId, PrimitiveType)>, @@ -128,7 +127,13 @@ crate struct Crate { // `Crate` is frequently moved by-value. Make sure it doesn't unintentionally get bigger. #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] -rustc_data_structures::static_assert_size!(Crate, 168); +rustc_data_structures::static_assert_size!(Crate, 104); + +impl Crate { + crate fn src(&self, tcx: TyCtxt<'_>) -> FileName { + ExternalCrate::LOCAL.src(tcx) + } +} /// This struct is used to wrap additional information added by rustdoc on a `trait` item. #[derive(Clone, Debug)] diff --git a/src/librustdoc/clean/utils.rs b/src/librustdoc/clean/utils.rs index 0573a1ada3a..c000b656e6a 100644 --- a/src/librustdoc/clean/utils.rs +++ b/src/librustdoc/clean/utils.rs @@ -57,7 +57,6 @@ crate fn krate(cx: &mut DocContext<'_>) -> Crate { } let local_crate = ExternalCrate { crate_num: LOCAL_CRATE }; - let src = local_crate.src(cx.tcx); let name = local_crate.name(cx.tcx); let primitives = local_crate.primitives(cx.tcx); let keywords = local_crate.keywords(cx.tcx); @@ -81,7 +80,6 @@ crate fn krate(cx: &mut DocContext<'_>) -> Crate { Crate { name, - src, module, externs, primitives, diff --git a/src/librustdoc/html/render/context.rs b/src/librustdoc/html/render/context.rs index 0e29cc85f9e..4a0bcd0e99c 100644 --- a/src/librustdoc/html/render/context.rs +++ b/src/librustdoc/html/render/context.rs @@ -405,7 +405,7 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> { .. } = options; - let src_root = match krate.src { + let src_root = match krate.src(tcx) { FileName::Real(ref p) => match p.local_path_if_available().parent() { Some(p) => p.to_path_buf(), None => PathBuf::new(), |
