Rollup merge of #117963 - nnethercote:rustc_query_system, r=compiler-errors
`rustc_query_system` cleanups Minor cleanups. r? `@compiler-errors`
This commit is contained in:
commit
68f5762ff0
@ -8,8 +8,8 @@
|
|||||||
|
|
||||||
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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
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 @@ fn hash<H: Hasher>(&self, hasher: &mut H) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
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 @@ pub struct DepNodeIndex {}
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 @@ fn from(dep_node_index: DepNodeIndex) -> Self {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 @@ pub fn is_green(self) -> bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 @@ pub fn new_disabled() -> 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 @@ pub fn with_task<Ctxt: HasDepContext<Deps = D>, A: Debug, R>(
|
|||||||
|
|
||||||
/// 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 @@ pub fn with_feed_task<Ctxt: DepContext<Deps = D>, A: Debug, R: Debug>(
|
|||||||
|
|
||||||
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 @@ pub fn dep_node_index_of_opt(&self, dep_node: &DepNode) -> Option<DepNodeIndex>
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[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 @@ fn node_color(&self, dep_node: &DepNode) -> Option<DepNodeColor> {
|
|||||||
/// 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 @@ pub fn debug_was_loaded_from_disk(&self, dep_node: DepNode) -> bool {
|
|||||||
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,
|
||||||
|
@ -6,11 +6,8 @@
|
|||||||
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};
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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`.
|
||||||
|
@ -2,9 +2,7 @@
|
|||||||
#![feature(core_intrinsics)]
|
#![feature(core_intrinsics)]
|
||||||
#![feature(hash_raw_entry)]
|
#![feature(hash_raw_entry)]
|
||||||
#![feature(min_specialization)]
|
#![feature(min_specialization)]
|
||||||
#![feature(extern_types)]
|
|
||||||
#![feature(let_chains)]
|
#![feature(let_chains)]
|
||||||
#![feature(inline_const)]
|
|
||||||
#![allow(rustc::potential_query_instability)]
|
#![allow(rustc::potential_query_instability)]
|
||||||
#![deny(rustc::untranslatable_diagnostic)]
|
#![deny(rustc::untranslatable_diagnostic)]
|
||||||
#![deny(rustc::diagnostic_outside_of_impl)]
|
#![deny(rustc::diagnostic_outside_of_impl)]
|
||||||
|
Loading…
Reference in New Issue
Block a user