Reduce exposure of things.

This commit is contained in:
Nicholas Nethercote 2023-11-15 16:15:38 +11:00
parent 000767564e
commit 8f669f558a
6 changed files with 29 additions and 32 deletions

View File

@ -8,8 +8,8 @@ mod dep_node;
pub use rustc_query_system::dep_graph::debug::EdgeFilter; pub use rustc_query_system::dep_graph::debug::EdgeFilter;
pub use rustc_query_system::dep_graph::{ pub use rustc_query_system::dep_graph::{
debug::DepNodeFilter, hash_result, DepContext, DepGraphQuery, DepNodeColor, DepNodeIndex, Deps, debug::DepNodeFilter, hash_result, DepContext, DepGraphQuery, DepNodeIndex, Deps,
SerializedDepGraph, SerializedDepNodeIndex, TaskDeps, TaskDepsRef, WorkProduct, WorkProductId, SerializedDepGraph, SerializedDepNodeIndex, TaskDepsRef, WorkProduct, WorkProductId,
WorkProductMap, WorkProductMap,
}; };

View File

@ -5,7 +5,7 @@ use std::iter::Extend;
use std::ops::Deref; use std::ops::Deref;
#[derive(Default, Debug)] #[derive(Default, Debug)]
pub struct EdgesVec { pub(crate) struct EdgesVec {
max: u32, max: u32,
edges: SmallVec<[DepNodeIndex; EdgesVec::INLINE_CAPACITY]>, edges: SmallVec<[DepNodeIndex; EdgesVec::INLINE_CAPACITY]>,
} }
@ -18,21 +18,21 @@ impl Hash for EdgesVec {
} }
impl EdgesVec { impl EdgesVec {
pub const INLINE_CAPACITY: usize = 8; pub(crate) const INLINE_CAPACITY: usize = 8;
#[inline] #[inline]
pub fn new() -> Self { pub(crate) fn new() -> Self {
Self::default() Self::default()
} }
#[inline] #[inline]
pub fn push(&mut self, edge: DepNodeIndex) { pub(crate) fn push(&mut self, edge: DepNodeIndex) {
self.max = self.max.max(edge.as_u32()); self.max = self.max.max(edge.as_u32());
self.edges.push(edge); self.edges.push(edge);
} }
#[inline] #[inline]
pub fn max_index(&self) -> u32 { pub(crate) fn max_index(&self) -> u32 {
self.max self.max
} }
} }

View File

@ -18,7 +18,7 @@ use std::sync::atomic::Ordering::Relaxed;
use super::query::DepGraphQuery; use super::query::DepGraphQuery;
use super::serialized::{GraphEncoder, SerializedDepGraph, SerializedDepNodeIndex}; use super::serialized::{GraphEncoder, SerializedDepGraph, SerializedDepNodeIndex};
use super::{DepContext, DepKind, DepNode, Deps, HasDepContext, WorkProductId}; use super::{DepContext, DepKind, DepNode, Deps, HasDepContext, WorkProductId};
use crate::dep_graph::EdgesVec; use crate::dep_graph::edges::EdgesVec;
use crate::ich::StableHashingContext; use crate::ich::StableHashingContext;
use crate::query::{QueryContext, QuerySideEffects}; use crate::query::{QueryContext, QuerySideEffects};
@ -41,8 +41,7 @@ rustc_index::newtype_index! {
} }
impl DepNodeIndex { impl DepNodeIndex {
pub const INVALID: DepNodeIndex = DepNodeIndex::MAX; const SINGLETON_DEPENDENCYLESS_ANON_NODE: DepNodeIndex = DepNodeIndex::from_u32(0);
pub const SINGLETON_DEPENDENCYLESS_ANON_NODE: DepNodeIndex = DepNodeIndex::from_u32(0);
pub const FOREVER_RED_NODE: DepNodeIndex = DepNodeIndex::from_u32(1); pub const FOREVER_RED_NODE: DepNodeIndex = DepNodeIndex::from_u32(1);
} }
@ -53,20 +52,20 @@ impl From<DepNodeIndex> for QueryInvocationId {
} }
} }
pub struct MarkFrame<'a> { pub(crate) struct MarkFrame<'a> {
index: SerializedDepNodeIndex, index: SerializedDepNodeIndex,
parent: Option<&'a MarkFrame<'a>>, parent: Option<&'a MarkFrame<'a>>,
} }
#[derive(PartialEq)] #[derive(PartialEq)]
pub enum DepNodeColor { enum DepNodeColor {
Red, Red,
Green(DepNodeIndex), Green(DepNodeIndex),
} }
impl DepNodeColor { impl DepNodeColor {
#[inline] #[inline]
pub fn is_green(self) -> bool { fn is_green(self) -> bool {
match self { match self {
DepNodeColor::Red => false, DepNodeColor::Red => false,
DepNodeColor::Green(_) => true, DepNodeColor::Green(_) => true,
@ -74,7 +73,7 @@ impl DepNodeColor {
} }
} }
pub struct DepGraphData<D: Deps> { pub(crate) struct DepGraphData<D: Deps> {
/// The new encoding of the dependency graph, optimized for red/green /// The new encoding of the dependency graph, optimized for red/green
/// tracking. The `current` field is the dependency graph of only the /// tracking. The `current` field is the dependency graph of only the
/// current compilation session: We don't merge the previous dep-graph into /// current compilation session: We don't merge the previous dep-graph into
@ -185,7 +184,7 @@ impl<D: Deps> DepGraph<D> {
} }
#[inline] #[inline]
pub fn data(&self) -> Option<&DepGraphData<D>> { pub(crate) fn data(&self) -> Option<&DepGraphData<D>> {
self.data.as_deref() self.data.as_deref()
} }
@ -333,7 +332,7 @@ impl<D: Deps> DepGraphData<D> {
/// ///
/// [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/queries/incremental-compilation.html /// [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/queries/incremental-compilation.html
#[inline(always)] #[inline(always)]
pub fn with_task<Ctxt: HasDepContext<Deps = D>, A: Debug, R>( pub(crate) fn with_task<Ctxt: HasDepContext<Deps = D>, A: Debug, R>(
&self, &self,
key: DepNode, key: DepNode,
cx: Ctxt, cx: Ctxt,
@ -398,7 +397,7 @@ impl<D: Deps> DepGraphData<D> {
/// Executes something within an "anonymous" task, that is, a task the /// Executes something within an "anonymous" task, that is, a task the
/// `DepNode` of which is determined by the list of inputs it read from. /// `DepNode` of which is determined by the list of inputs it read from.
pub fn with_anon_task<Tcx: DepContext<Deps = D>, OP, R>( pub(crate) fn with_anon_task<Tcx: DepContext<Deps = D>, OP, R>(
&self, &self,
cx: Tcx, cx: Tcx,
dep_kind: DepKind, dep_kind: DepKind,
@ -618,7 +617,7 @@ impl<D: Deps> DepGraph<D> {
impl<D: Deps> DepGraphData<D> { impl<D: Deps> DepGraphData<D> {
#[inline] #[inline]
pub fn dep_node_index_of_opt(&self, dep_node: &DepNode) -> Option<DepNodeIndex> { fn dep_node_index_of_opt(&self, dep_node: &DepNode) -> Option<DepNodeIndex> {
if let Some(prev_index) = self.previous.node_to_index_opt(dep_node) { if let Some(prev_index) = self.previous.node_to_index_opt(dep_node) {
self.current.prev_index_to_index.lock()[prev_index] self.current.prev_index_to_index.lock()[prev_index]
} else { } else {
@ -627,7 +626,7 @@ impl<D: Deps> DepGraphData<D> {
} }
#[inline] #[inline]
pub fn dep_node_exists(&self, dep_node: &DepNode) -> bool { fn dep_node_exists(&self, dep_node: &DepNode) -> bool {
self.dep_node_index_of_opt(dep_node).is_some() self.dep_node_index_of_opt(dep_node).is_some()
} }
@ -643,21 +642,21 @@ impl<D: Deps> DepGraphData<D> {
/// Returns true if the given node has been marked as green during the /// Returns true if the given node has been marked as green during the
/// current compilation session. Used in various assertions /// current compilation session. Used in various assertions
#[inline] #[inline]
pub fn is_index_green(&self, prev_index: SerializedDepNodeIndex) -> bool { pub(crate) fn is_index_green(&self, prev_index: SerializedDepNodeIndex) -> bool {
self.colors.get(prev_index).is_some_and(|c| c.is_green()) self.colors.get(prev_index).is_some_and(|c| c.is_green())
} }
#[inline] #[inline]
pub fn prev_fingerprint_of(&self, prev_index: SerializedDepNodeIndex) -> Fingerprint { pub(crate) fn prev_fingerprint_of(&self, prev_index: SerializedDepNodeIndex) -> Fingerprint {
self.previous.fingerprint_by_index(prev_index) self.previous.fingerprint_by_index(prev_index)
} }
#[inline] #[inline]
pub fn prev_node_of(&self, prev_index: SerializedDepNodeIndex) -> DepNode { pub(crate) fn prev_node_of(&self, prev_index: SerializedDepNodeIndex) -> DepNode {
self.previous.index_to_node(prev_index) self.previous.index_to_node(prev_index)
} }
pub fn mark_debug_loaded_from_disk(&self, dep_node: DepNode) { pub(crate) fn mark_debug_loaded_from_disk(&self, dep_node: DepNode) {
self.debug_loaded_from_disk.lock().insert(dep_node); self.debug_loaded_from_disk.lock().insert(dep_node);
} }
} }
@ -684,8 +683,9 @@ impl<D: Deps> DepGraph<D> {
self.data.as_ref().unwrap().debug_loaded_from_disk.lock().contains(&dep_node) self.data.as_ref().unwrap().debug_loaded_from_disk.lock().contains(&dep_node)
} }
#[cfg(debug_assertions)]
#[inline(always)] #[inline(always)]
pub fn register_dep_node_debug_str<F>(&self, dep_node: DepNode, debug_str_gen: F) pub(crate) fn register_dep_node_debug_str<F>(&self, dep_node: DepNode, debug_str_gen: F)
where where
F: FnOnce() -> String, F: FnOnce() -> String,
{ {
@ -725,7 +725,7 @@ impl<D: Deps> DepGraphData<D> {
/// A node will have an index, when it's already been marked green, or when we can mark it /// A node will have an index, when it's already been marked green, or when we can mark it
/// green. This function will mark the current task as a reader of the specified node, when /// green. This function will mark the current task as a reader of the specified node, when
/// a node index can be found for that node. /// a node index can be found for that node.
pub fn try_mark_green<Qcx: QueryContext<Deps = D>>( pub(crate) fn try_mark_green<Qcx: QueryContext<Deps = D>>(
&self, &self,
qcx: Qcx, qcx: Qcx,
dep_node: &DepNode, dep_node: &DepNode,

View File

@ -6,11 +6,8 @@ mod query;
mod serialized; mod serialized;
pub use dep_node::{DepKind, DepKindStruct, DepNode, DepNodeParams, WorkProductId}; pub use dep_node::{DepKind, DepKindStruct, DepNode, DepNodeParams, WorkProductId};
pub use edges::EdgesVec; pub(crate) use graph::DepGraphData;
pub use graph::{ pub use graph::{hash_result, DepGraph, DepNodeIndex, TaskDepsRef, WorkProduct, WorkProductMap};
hash_result, DepGraph, DepGraphData, DepNodeColor, DepNodeIndex, TaskDeps, TaskDepsRef,
WorkProduct, WorkProductMap,
};
pub use query::DepGraphQuery; pub use query::DepGraphQuery;
pub use serialized::{SerializedDepGraph, SerializedDepNodeIndex}; pub use serialized::{SerializedDepGraph, SerializedDepNodeIndex};

View File

@ -37,7 +37,7 @@
use super::query::DepGraphQuery; use super::query::DepGraphQuery;
use super::{DepKind, DepNode, DepNodeIndex, Deps}; use super::{DepKind, DepNode, DepNodeIndex, Deps};
use crate::dep_graph::EdgesVec; use crate::dep_graph::edges::EdgesVec;
use rustc_data_structures::fingerprint::Fingerprint; use rustc_data_structures::fingerprint::Fingerprint;
use rustc_data_structures::fingerprint::PackedFingerprint; use rustc_data_structures::fingerprint::PackedFingerprint;
use rustc_data_structures::fx::FxHashMap; use rustc_data_structures::fx::FxHashMap;

View File

@ -28,7 +28,7 @@ pub struct StableHashingContext<'a> {
// `CachingSourceMapView`, so we initialize it lazily. // `CachingSourceMapView`, so we initialize it lazily.
raw_source_map: &'a SourceMap, raw_source_map: &'a SourceMap,
caching_source_map: Option<CachingSourceMapView<'a>>, caching_source_map: Option<CachingSourceMapView<'a>>,
pub(super) hashing_controls: HashingControls, hashing_controls: HashingControls,
} }
/// The `BodyResolver` allows mapping a `BodyId` to the corresponding `hir::Body`. /// The `BodyResolver` allows mapping a `BodyId` to the corresponding `hir::Body`.