Skip to content

Commit e6fead4

Browse files
committed
Auto merge of rust-lang#104009 - Nilstrieb:query-unify-config-desc, r=jyn514
Merge `QueryDescription` into `QueryConfig` `QueryDescription` has gone through a lot of refactoring and doesn't make sense anymore. r? `@jyn514`
2 parents 1286ee2 + 36be251 commit e6fead4

File tree

6 files changed

+42
-45
lines changed

6 files changed

+42
-45
lines changed

compiler/rustc_query_impl/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ mod keys;
3636
use keys::Key;
3737

3838
pub use rustc_query_system::query::QueryConfig;
39-
pub(crate) use rustc_query_system::query::{QueryDescription, QueryVTable};
39+
pub(crate) use rustc_query_system::query::QueryVTable;
4040

4141
mod on_disk_cache;
4242
pub use on_disk_cache::OnDiskCache;

compiler/rustc_query_impl/src/on_disk_cache.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1063,7 +1063,7 @@ pub fn encode_query_results<'a, 'tcx, CTX, Q>(
10631063
query_result_index: &mut EncodedDepNodeIndex,
10641064
) where
10651065
CTX: QueryContext + 'tcx,
1066-
Q: super::QueryDescription<CTX>,
1066+
Q: super::QueryConfig<CTX>,
10671067
Q::Value: Encodable<CacheEncoder<'a, 'tcx>>,
10681068
{
10691069
let _timer = tcx

compiler/rustc_query_impl/src/plumbing.rs

+13-16
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ use rustc_middle::ty::{self, TyCtxt};
1717
use rustc_query_system::dep_graph::{DepNodeParams, HasDepContext};
1818
use rustc_query_system::ich::StableHashingContext;
1919
use rustc_query_system::query::{
20-
force_query, QueryConfig, QueryContext, QueryDescription, QueryJobId, QueryMap,
21-
QuerySideEffects, QueryStackFrame,
20+
force_query, QueryConfig, QueryContext, QueryJobId, QueryMap, QuerySideEffects, QueryStackFrame,
2221
};
2322
use rustc_query_system::{LayoutOfDepth, QueryOverflow, Value};
2423
use rustc_serialize::Decodable;
@@ -340,7 +339,7 @@ pub(crate) fn create_query_frame<
340339

341340
fn try_load_from_on_disk_cache<'tcx, Q>(tcx: TyCtxt<'tcx>, dep_node: DepNode)
342341
where
343-
Q: QueryDescription<QueryCtxt<'tcx>>,
342+
Q: QueryConfig<QueryCtxt<'tcx>>,
344343
Q::Key: DepNodeParams<TyCtxt<'tcx>>,
345344
{
346345
debug_assert!(tcx.dep_graph.is_green(&dep_node));
@@ -365,7 +364,7 @@ where
365364

366365
fn force_from_dep_node<'tcx, Q>(tcx: TyCtxt<'tcx>, dep_node: DepNode) -> bool
367366
where
368-
Q: QueryDescription<QueryCtxt<'tcx>>,
367+
Q: QueryConfig<QueryCtxt<'tcx>>,
369368
Q::Key: DepNodeParams<TyCtxt<'tcx>>,
370369
Q::Value: Value<TyCtxt<'tcx>>,
371370
{
@@ -398,12 +397,9 @@ where
398397
}
399398
}
400399

401-
pub(crate) fn query_callback<'tcx, Q: QueryConfig>(
402-
is_anon: bool,
403-
is_eval_always: bool,
404-
) -> DepKindStruct<'tcx>
400+
pub(crate) fn query_callback<'tcx, Q>(is_anon: bool, is_eval_always: bool) -> DepKindStruct<'tcx>
405401
where
406-
Q: QueryDescription<QueryCtxt<'tcx>>,
402+
Q: QueryConfig<QueryCtxt<'tcx>>,
407403
Q::Key: DepNodeParams<TyCtxt<'tcx>>,
408404
{
409405
let fingerprint_style = Q::Key::fingerprint_style();
@@ -458,14 +454,12 @@ macro_rules! define_queries {
458454
})*
459455
}
460456

461-
$(impl<'tcx> QueryConfig for queries::$name<'tcx> {
457+
$(impl<'tcx> QueryConfig<QueryCtxt<'tcx>> for queries::$name<'tcx> {
462458
type Key = query_keys::$name<'tcx>;
463459
type Value = query_values::$name<'tcx>;
464460
type Stored = query_stored::$name<'tcx>;
465461
const NAME: &'static str = stringify!($name);
466-
}
467462

468-
impl<'tcx> QueryDescription<QueryCtxt<'tcx>> for queries::$name<'tcx> {
469463
#[inline]
470464
fn cache_on_disk(tcx: TyCtxt<'tcx>, key: &Self::Key) -> bool {
471465
::rustc_middle::query::cached::$name(tcx, key)
@@ -662,12 +656,15 @@ macro_rules! define_queries_struct {
662656
local_providers: Box<Providers>,
663657
extern_providers: Box<ExternProviders>,
664658
query_structs: Vec<$crate::plumbing::QueryStruct<'tcx>>,
665-
666659
pub on_disk_cache: Option<OnDiskCache<'tcx>>,
667-
668660
jobs: AtomicU64,
669661

670-
$($(#[$attr])* $name: QueryState<<queries::$name<'tcx> as QueryConfig>::Key>,)*
662+
$(
663+
$(#[$attr])*
664+
$name: QueryState<
665+
<queries::$name<'tcx> as QueryConfig<QueryCtxt<'tcx>>>::Key
666+
>,
667+
)*
671668
}
672669

673670
impl<'tcx> Queries<'tcx> {
@@ -704,7 +701,7 @@ macro_rules! define_queries_struct {
704701
&'tcx self,
705702
tcx: TyCtxt<'tcx>,
706703
span: Span,
707-
key: <queries::$name<'tcx> as QueryConfig>::Key,
704+
key: <queries::$name<'tcx> as QueryConfig<QueryCtxt<'tcx>>>::Key,
708705
mode: QueryMode,
709706
) -> Option<query_stored::$name<'tcx>> {
710707
let qcx = QueryCtxt { tcx, queries: self };

compiler/rustc_query_system/src/query/config.rs

+21-23
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,32 @@ use rustc_data_structures::fingerprint::Fingerprint;
1111
use std::fmt::Debug;
1212
use std::hash::Hash;
1313

14-
pub trait QueryConfig {
14+
pub trait QueryConfig<CTX: QueryContext> {
1515
const NAME: &'static str;
1616

1717
type Key: Eq + Hash + Clone + Debug;
1818
type Value;
1919
type Stored: Clone;
20+
21+
type Cache: QueryCache<Key = Self::Key, Stored = Self::Stored, Value = Self::Value>;
22+
23+
// Don't use this method to access query results, instead use the methods on TyCtxt
24+
fn query_state<'a>(tcx: CTX) -> &'a QueryState<Self::Key>
25+
where
26+
CTX: 'a;
27+
28+
// Don't use this method to access query results, instead use the methods on TyCtxt
29+
fn query_cache<'a>(tcx: CTX) -> &'a Self::Cache
30+
where
31+
CTX: 'a;
32+
33+
// Don't use this method to compute query results, instead use the methods on TyCtxt
34+
fn make_vtable(tcx: CTX, key: &Self::Key) -> QueryVTable<CTX, Self::Key, Self::Value>;
35+
36+
fn cache_on_disk(tcx: CTX::DepContext, key: &Self::Key) -> bool;
37+
38+
// Don't use this method to compute query results, instead use the methods on TyCtxt
39+
fn execute_query(tcx: CTX::DepContext, k: Self::Key) -> Self::Stored;
2040
}
2141

2242
#[derive(Copy, Clone)]
@@ -45,25 +65,3 @@ impl<CTX: QueryContext, K, V> QueryVTable<CTX, K, V> {
4565
(self.compute)(tcx, key)
4666
}
4767
}
48-
49-
pub trait QueryDescription<CTX: QueryContext>: QueryConfig {
50-
type Cache: QueryCache<Key = Self::Key, Stored = Self::Stored, Value = Self::Value>;
51-
52-
// Don't use this method to access query results, instead use the methods on TyCtxt
53-
fn query_state<'a>(tcx: CTX) -> &'a QueryState<Self::Key>
54-
where
55-
CTX: 'a;
56-
57-
// Don't use this method to access query results, instead use the methods on TyCtxt
58-
fn query_cache<'a>(tcx: CTX) -> &'a Self::Cache
59-
where
60-
CTX: 'a;
61-
62-
// Don't use this method to compute query results, instead use the methods on TyCtxt
63-
fn make_vtable(tcx: CTX, key: &Self::Key) -> QueryVTable<CTX, Self::Key, Self::Value>;
64-
65-
fn cache_on_disk(tcx: CTX::DepContext, key: &Self::Key) -> bool;
66-
67-
// Don't use this method to compute query results, instead use the methods on TyCtxt
68-
fn execute_query(tcx: CTX::DepContext, k: Self::Key) -> Self::Stored;
69-
}

compiler/rustc_query_system/src/query/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub use self::caches::{
1212
};
1313

1414
mod config;
15-
pub use self::config::{QueryConfig, QueryDescription, QueryVTable};
15+
pub use self::config::{QueryConfig, QueryVTable};
1616

1717
use crate::dep_graph::{DepNodeIndex, HasDepContext, SerializedDepNodeIndex};
1818
use rustc_data_structures::sync::Lock;

compiler/rustc_query_system/src/query/plumbing.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
55
use crate::dep_graph::{DepContext, DepNode, DepNodeIndex, DepNodeParams};
66
use crate::query::caches::QueryCache;
7-
use crate::query::config::{QueryDescription, QueryVTable};
7+
use crate::query::config::QueryVTable;
88
use crate::query::job::{report_cycle, QueryInfo, QueryJob, QueryJobId, QueryJobInfo};
99
use crate::query::{QueryContext, QueryMap, QuerySideEffects, QueryStackFrame};
1010
use crate::values::Value;
@@ -27,6 +27,8 @@ use std::mem;
2727
use std::ptr;
2828
use thin_vec::ThinVec;
2929

30+
use super::QueryConfig;
31+
3032
pub struct QueryState<K> {
3133
#[cfg(parallel_compiler)]
3234
active: Sharded<FxHashMap<K, QueryResult>>,
@@ -715,7 +717,7 @@ pub enum QueryMode {
715717

716718
pub fn get_query<Q, CTX>(tcx: CTX, span: Span, key: Q::Key, mode: QueryMode) -> Option<Q::Stored>
717719
where
718-
Q: QueryDescription<CTX>,
720+
Q: QueryConfig<CTX>,
719721
Q::Key: DepNodeParams<CTX::DepContext>,
720722
Q::Value: Value<CTX::DepContext>,
721723
CTX: QueryContext,
@@ -748,7 +750,7 @@ where
748750

749751
pub fn force_query<Q, CTX>(tcx: CTX, key: Q::Key, dep_node: DepNode<CTX::DepKind>)
750752
where
751-
Q: QueryDescription<CTX>,
753+
Q: QueryConfig<CTX>,
752754
Q::Key: DepNodeParams<CTX::DepContext>,
753755
Q::Value: Value<CTX::DepContext>,
754756
CTX: QueryContext,

0 commit comments

Comments
 (0)