mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Correct comments about untracked accesses.
This commit is contained in:
parent
071a047dc7
commit
9f6d7e7dad
@ -445,7 +445,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn encode_def_path_table(&mut self) {
|
fn encode_def_path_table(&mut self) {
|
||||||
let table = self.tcx.hir().definitions().def_path_table();
|
let table = self.tcx.resolutions(()).definitions.def_path_table();
|
||||||
if self.is_proc_macro {
|
if self.is_proc_macro {
|
||||||
for def_index in std::iter::once(CRATE_DEF_INDEX)
|
for def_index in std::iter::once(CRATE_DEF_INDEX)
|
||||||
.chain(self.tcx.hir().krate().proc_macros.iter().map(|p| p.owner.local_def_index))
|
.chain(self.tcx.hir().krate().proc_macros.iter().map(|p| p.owner.local_def_index))
|
||||||
@ -1062,7 +1062,7 @@ impl EncodeContext<'a, 'tcx> {
|
|||||||
|
|
||||||
let data = ModData {
|
let data = ModData {
|
||||||
reexports,
|
reexports,
|
||||||
expansion: tcx.hir().definitions().expansion_that_defined(local_def_id),
|
expansion: tcx.resolutions(()).definitions.expansion_that_defined(local_def_id),
|
||||||
};
|
};
|
||||||
|
|
||||||
record!(self.tables.kind[def_id] <- EntryKind::Mod(self.lazy(data)));
|
record!(self.tables.kind[def_id] <- EntryKind::Mod(self.lazy(data)));
|
||||||
@ -1759,7 +1759,7 @@ impl EncodeContext<'a, 'tcx> {
|
|||||||
.map(|(trait_def_id, mut impls)| {
|
.map(|(trait_def_id, mut impls)| {
|
||||||
// Bring everything into deterministic order for hashing
|
// Bring everything into deterministic order for hashing
|
||||||
impls.sort_by_cached_key(|&(index, _)| {
|
impls.sort_by_cached_key(|&(index, _)| {
|
||||||
tcx.hir().definitions().def_path_hash(LocalDefId { local_def_index: index })
|
tcx.hir().def_path_hash(LocalDefId { local_def_index: index })
|
||||||
});
|
});
|
||||||
|
|
||||||
TraitImpls {
|
TraitImpls {
|
||||||
|
@ -9,7 +9,7 @@ use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
|||||||
use rustc_data_structures::svh::Svh;
|
use rustc_data_structures::svh::Svh;
|
||||||
use rustc_hir::def::{DefKind, Res};
|
use rustc_hir::def::{DefKind, Res};
|
||||||
use rustc_hir::def_id::{CrateNum, DefId, LocalDefId, CRATE_DEF_INDEX, LOCAL_CRATE};
|
use rustc_hir::def_id::{CrateNum, DefId, LocalDefId, CRATE_DEF_INDEX, LOCAL_CRATE};
|
||||||
use rustc_hir::definitions::{DefKey, DefPath, Definitions};
|
use rustc_hir::definitions::{DefKey, DefPath, DefPathHash};
|
||||||
use rustc_hir::intravisit;
|
use rustc_hir::intravisit;
|
||||||
use rustc_hir::intravisit::Visitor;
|
use rustc_hir::intravisit::Visitor;
|
||||||
use rustc_hir::itemlikevisit::ItemLikeVisitor;
|
use rustc_hir::itemlikevisit::ItemLikeVisitor;
|
||||||
@ -154,14 +154,8 @@ impl<'hir> Map<'hir> {
|
|||||||
self.tcx.hir_crate(())
|
self.tcx.hir_crate(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn definitions(&self) -> &'hir Definitions {
|
|
||||||
// Accessing the definitions is ok, since all its contents are tracked by the query system.
|
|
||||||
&self.tcx.untracked_resolutions.definitions
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn def_key(&self, def_id: LocalDefId) -> DefKey {
|
pub fn def_key(&self, def_id: LocalDefId) -> DefKey {
|
||||||
// Accessing the definitions is ok, since all its contents are tracked by the query system.
|
// Accessing the DefKey is ok, since it is part of DefPathHash.
|
||||||
self.tcx.untracked_resolutions.definitions.def_key(def_id)
|
self.tcx.untracked_resolutions.definitions.def_key(def_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,10 +164,16 @@ impl<'hir> Map<'hir> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn def_path(&self, def_id: LocalDefId) -> DefPath {
|
pub fn def_path(&self, def_id: LocalDefId) -> DefPath {
|
||||||
// Accessing the definitions is ok, since all its contents are tracked by the query system.
|
// Accessing the DefPath is ok, since it is part of DefPathHash.
|
||||||
self.tcx.untracked_resolutions.definitions.def_path(def_id)
|
self.tcx.untracked_resolutions.definitions.def_path(def_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn def_path_hash(self, def_id: LocalDefId) -> DefPathHash {
|
||||||
|
// Accessing the DefPathHash is ok, it is incr. comp. stable.
|
||||||
|
self.tcx.untracked_resolutions.definitions.def_path_hash(def_id)
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn local_def_id(&self, hir_id: HirId) -> LocalDefId {
|
pub fn local_def_id(&self, hir_id: HirId) -> LocalDefId {
|
||||||
self.opt_local_def_id(hir_id).unwrap_or_else(|| {
|
self.opt_local_def_id(hir_id).unwrap_or_else(|| {
|
||||||
@ -187,18 +187,20 @@ impl<'hir> Map<'hir> {
|
|||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn opt_local_def_id(&self, hir_id: HirId) -> Option<LocalDefId> {
|
pub fn opt_local_def_id(&self, hir_id: HirId) -> Option<LocalDefId> {
|
||||||
// Accessing the definitions is ok, since all its contents are tracked by the query system.
|
// FIXME(#85914) is this access safe for incr. comp.?
|
||||||
self.tcx.untracked_resolutions.definitions.opt_hir_id_to_local_def_id(hir_id)
|
self.tcx.untracked_resolutions.definitions.opt_hir_id_to_local_def_id(hir_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn local_def_id_to_hir_id(&self, def_id: LocalDefId) -> HirId {
|
pub fn local_def_id_to_hir_id(&self, def_id: LocalDefId) -> HirId {
|
||||||
// Accessing the definitions is ok, since all its contents are tracked by the query system.
|
// FIXME(#85914) is this access safe for incr. comp.?
|
||||||
self.tcx.untracked_resolutions.definitions.local_def_id_to_hir_id(def_id)
|
self.tcx.untracked_resolutions.definitions.local_def_id_to_hir_id(def_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn iter_local_def_id(&self) -> impl Iterator<Item = LocalDefId> + '_ {
|
pub fn iter_local_def_id(&self) -> impl Iterator<Item = LocalDefId> + '_ {
|
||||||
// Accessing the definitions is ok, since all its contents are tracked by the query system.
|
// Create a dependency to the crate to be sure we reexcute this when the amount of
|
||||||
|
// definitions change.
|
||||||
|
self.tcx.ensure().hir_crate(());
|
||||||
self.tcx.untracked_resolutions.definitions.iter_local_def_id()
|
self.tcx.untracked_resolutions.definitions.iter_local_def_id()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1240,9 +1240,9 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn def_key(self, id: DefId) -> rustc_hir::definitions::DefKey {
|
pub fn def_key(self, id: DefId) -> rustc_hir::definitions::DefKey {
|
||||||
// Accessing the definitions is ok, since all its contents are tracked by the query system.
|
// Accessing the DefKey is ok, since it is part of DefPathHash.
|
||||||
if let Some(id) = id.as_local() {
|
if let Some(id) = id.as_local() {
|
||||||
self.hir().def_key(id)
|
self.untracked_resolutions.definitions.def_key(id)
|
||||||
} else {
|
} else {
|
||||||
self.untracked_resolutions.cstore.def_key(id)
|
self.untracked_resolutions.cstore.def_key(id)
|
||||||
}
|
}
|
||||||
@ -1254,9 +1254,9 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||||||
/// Note that if `id` is not local to this crate, the result will
|
/// Note that if `id` is not local to this crate, the result will
|
||||||
/// be a non-local `DefPath`.
|
/// be a non-local `DefPath`.
|
||||||
pub fn def_path(self, id: DefId) -> rustc_hir::definitions::DefPath {
|
pub fn def_path(self, id: DefId) -> rustc_hir::definitions::DefPath {
|
||||||
// Accessing the definitions is ok, since all its contents are tracked by the query system.
|
// Accessing the DefPath is ok, since it is part of DefPathHash.
|
||||||
if let Some(id) = id.as_local() {
|
if let Some(id) = id.as_local() {
|
||||||
self.hir().def_path(id)
|
self.untracked_resolutions.definitions.def_path(id)
|
||||||
} else {
|
} else {
|
||||||
self.untracked_resolutions.cstore.def_path(id)
|
self.untracked_resolutions.cstore.def_path(id)
|
||||||
}
|
}
|
||||||
@ -1264,7 +1264,7 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn def_path_hash(self, def_id: DefId) -> rustc_hir::definitions::DefPathHash {
|
pub fn def_path_hash(self, def_id: DefId) -> rustc_hir::definitions::DefPathHash {
|
||||||
// Accessing the definitions is ok, since all its contents are tracked by the query system.
|
// Accessing the DefPathHash is ok, it is incr. comp. stable.
|
||||||
if let Some(def_id) = def_id.as_local() {
|
if let Some(def_id) = def_id.as_local() {
|
||||||
self.untracked_resolutions.definitions.def_path_hash(def_id)
|
self.untracked_resolutions.definitions.def_path_hash(def_id)
|
||||||
} else {
|
} else {
|
||||||
|
@ -108,7 +108,7 @@ pub fn print_stats(tcx: TyCtxt<'_>) {
|
|||||||
queries.iter().filter(|q| q.local_def_id_keys.is_some()).collect();
|
queries.iter().filter(|q| q.local_def_id_keys.is_some()).collect();
|
||||||
def_id_density.sort_by_key(|q| q.local_def_id_keys.unwrap());
|
def_id_density.sort_by_key(|q| q.local_def_id_keys.unwrap());
|
||||||
eprintln!("\nLocal DefId density:");
|
eprintln!("\nLocal DefId density:");
|
||||||
let total = tcx.hir().definitions().def_index_count() as f64;
|
let total = tcx.resolutions(()).definitions.def_index_count() as f64;
|
||||||
for q in def_id_density.iter().rev() {
|
for q in def_id_density.iter().rev() {
|
||||||
let local = q.local_def_id_keys.unwrap();
|
let local = q.local_def_id_keys.unwrap();
|
||||||
eprintln!(" {} - {} = ({}%)", q.name, local, (local as f64 * 100.0) / total);
|
eprintln!(" {} - {} = ({}%)", q.name, local, (local as f64 * 100.0) / total);
|
||||||
|
Loading…
Reference in New Issue
Block a user