use crate::dep_graph::DepNodeIndex;
-use crate::ty::query::plumbing::{QueryLookup, QueryStateImpl, QueryStateShard};
+use crate::ty::query::plumbing::{QueryLookup, QueryState, QueryStateShard};
use crate::ty::TyCtxt;
use rustc_data_structures::fx::FxHashMap;
/// to compute it.
fn lookup<'tcx, R, GetCache, OnHit, OnMiss>(
&self,
- state: &'tcx QueryStateImpl<'tcx, Self>,
+ state: &'tcx QueryState<'tcx, Self>,
get_cache: GetCache,
key: Self::Key,
// `on_hit` can be called while holding a lock to the query state shard.
#[inline(always)]
fn lookup<'tcx, R, GetCache, OnHit, OnMiss>(
&self,
- state: &'tcx QueryStateImpl<'tcx, Self>,
+ state: &'tcx QueryState<'tcx, Self>,
get_cache: GetCache,
key: K,
on_hit: OnHit,
use crate::dep_graph::{DepKind, DepNode, DepNodeIndex, SerializedDepNodeIndex};
use crate::ty::query::caches::QueryCache;
-use crate::ty::query::config::{QueryAccessors, QueryDescription};
+use crate::ty::query::config::QueryDescription;
use crate::ty::query::job::{QueryInfo, QueryJob, QueryJobId, QueryJobInfo, QueryShardJobId};
use crate::ty::query::Query;
use crate::ty::tls;
}
}
-pub(crate) type QueryState<'tcx, Q> = QueryStateImpl<'tcx, <Q as QueryAccessors<'tcx>>::Cache>;
-
-pub(crate) struct QueryStateImpl<'tcx, C: QueryCache> {
+pub(crate) struct QueryState<'tcx, C: QueryCache> {
pub(super) cache: C,
pub(super) shards: Sharded<QueryStateShard<'tcx, C::Key, C::Sharded>>,
#[cfg(debug_assertions)]
pub(super) cache_hits: AtomicUsize,
}
-impl<'tcx, C: QueryCache> QueryStateImpl<'tcx, C> {
+impl<'tcx, C: QueryCache> QueryState<'tcx, C> {
pub(super) fn get_lookup<K2: Hash>(
&'tcx self,
key: &K2,
Poisoned,
}
-impl<'tcx, C: QueryCache> QueryStateImpl<'tcx, C> {
+impl<'tcx, C: QueryCache> QueryState<'tcx, C> {
pub fn iter_results<R>(
&self,
f: impl for<'a> FnOnce(
}
}
-impl<'tcx, C: QueryCache> Default for QueryStateImpl<'tcx, C> {
- fn default() -> QueryStateImpl<'tcx, C> {
- QueryStateImpl {
+impl<'tcx, C: QueryCache> Default for QueryState<'tcx, C> {
+ fn default() -> QueryState<'tcx, C> {
+ QueryState {
cache: C::default(),
shards: Default::default(),
#[cfg(debug_assertions)]
C::Key: Eq + Hash + Clone + Debug,
C::Value: Clone,
{
- state: &'tcx QueryStateImpl<'tcx, C>,
+ state: &'tcx QueryState<'tcx, C>,
key: C::Key,
id: QueryJobId,
}
#[inline(always)]
fn try_get_cached<C, R, OnHit, OnMiss>(
self,
- state: &'tcx QueryStateImpl<'tcx, C>,
+ state: &'tcx QueryState<'tcx, C>,
key: C::Key,
// `on_hit` can be called while holding a lock to the query cache
on_hit: OnHit,
type Cache = query_storage!([$($modifiers)*][$K, $V]);
#[inline(always)]
- fn query_state<'a>(tcx: TyCtxt<$tcx>) -> &'a QueryState<$tcx, Self> {
+ fn query_state<'a>(tcx: TyCtxt<$tcx>) -> &'a QueryState<$tcx, Self::Cache> {
&tcx.queries.$name
}
providers: IndexVec<CrateNum, Providers<$tcx>>,
fallback_extern_providers: Box<Providers<$tcx>>,
- $($(#[$attr])* $name: QueryState<$tcx, queries::$name<$tcx>>,)*
+ $($(#[$attr])* $name: QueryState<
+ $tcx,
+ <queries::$name<$tcx> as QueryAccessors<'tcx>>::Cache,
+ >,)*
}
impl<$tcx> Queries<$tcx> {
use crate::hir::map::definitions::DefPathData;
use crate::ty::context::TyCtxt;
use crate::ty::query::caches::QueryCache;
-use crate::ty::query::plumbing::QueryStateImpl;
+use crate::ty::query::plumbing::QueryState;
use measureme::{StringComponent, StringId};
use rustc_data_structures::fx::FxHashMap;
use rustc_data_structures::profiling::SelfProfiler;
pub(super) fn alloc_self_profile_query_strings_for_query_cache<'tcx, C>(
tcx: TyCtxt<'tcx>,
query_name: &'static str,
- query_state: &QueryStateImpl<'tcx, C>,
+ query_state: &QueryState<'tcx, C>,
string_cache: &mut QueryKeyStringCache,
) where
C: QueryCache,
use crate::ty::query::caches::QueryCache;
use crate::ty::query::config::QueryAccessors;
-use crate::ty::query::plumbing::QueryStateImpl;
+use crate::ty::query::plumbing::QueryState;
use crate::ty::query::queries;
use crate::ty::TyCtxt;
use rustc_hir::def_id::{DefId, LOCAL_CRATE};
local_def_id_keys: Option<usize>,
}
-fn stats<'tcx, C: QueryCache>(name: &'static str, map: &QueryStateImpl<'tcx, C>) -> QueryStats {
+fn stats<'tcx, C: QueryCache>(name: &'static str, map: &QueryState<'tcx, C>) -> QueryStats {
let mut stats = QueryStats {
name,
#[cfg(debug_assertions)]