Skip to content

Commit

Permalink
Remove Q parameter from try_get_cached.
Browse files Browse the repository at this point in the history
  • Loading branch information
cjgillot committed Mar 16, 2020
1 parent fa0794d commit 5dc7c2e
Showing 1 changed file with 13 additions and 11 deletions.
24 changes: 13 additions & 11 deletions src/librustc/ty/query/plumbing.rs
Expand Up @@ -236,7 +236,8 @@ where
return TryGetJob::Cycle(Q::handle_cycle_error(tcx, cycle));
}

let cached = tcx.try_get_cached::<Q, _, _, _>(
let cached = tcx.try_get_cached(
Q::query_state(tcx),
(*key).clone(),
|value, index| (value.clone(), index),
|_, _| panic!("value must be in cache after waiting"),
Expand Down Expand Up @@ -460,23 +461,22 @@ impl<'tcx> TyCtxt<'tcx> {
/// which will be used if the query is not in the cache and we need
/// to compute it.
#[inline(always)]
fn try_get_cached<Q, R, OnHit, OnMiss>(
fn try_get_cached<K, V, C, R, OnHit, OnMiss>(
self,
key: Q::Key,
state: &'tcx QueryStateImpl<'tcx, K, V, C>,
key: K,
// `on_hit` can be called while holding a lock to the query cache
on_hit: OnHit,
on_miss: OnMiss,
) -> R
where
Q: QueryDescription<'tcx> + 'tcx,
OnHit: FnOnce(&Q::Value, DepNodeIndex) -> R,
OnMiss: FnOnce(Q::Key, QueryLookup<'tcx, Q>) -> R,
C: QueryCache<K, V>,
OnHit: FnOnce(&V, DepNodeIndex) -> R,
OnMiss: FnOnce(K, QueryLookupImpl<'tcx, QueryStateShardImpl<'tcx, K, C::Sharded>>) -> R,
{
let state = Q::query_state(self);

state.cache.lookup(
state,
QueryStateShard::<Q>::get_cache,
QueryStateShardImpl::<K, C::Sharded>::get_cache,
key,
|value, index| {
if unlikely!(self.prof.enabled()) {
Expand All @@ -500,7 +500,8 @@ impl<'tcx> TyCtxt<'tcx> {
) -> Q::Value {
debug!("ty::query::get_query<{}>(key={:?}, span={:?})", Q::NAME, key, span);

self.try_get_cached::<Q, _, _, _>(
self.try_get_cached(
Q::query_state(self),
key,
|value, index| {
self.dep_graph.read_index(index);
Expand Down Expand Up @@ -770,7 +771,8 @@ impl<'tcx> TyCtxt<'tcx> {
// We may be concurrently trying both execute and force a query.
// Ensure that only one of them runs the query.

self.try_get_cached::<Q, _, _, _>(
self.try_get_cached(
Q::query_state(self),
key,
|_, _| {
// Cache hit, do nothing
Expand Down

0 comments on commit 5dc7c2e

Please sign in to comment.