Auto merge of #107667 - cjgillot:no-on-hit, r=lcnr,Zoxc
Remove `OnHit` callback from query caches. This is not useful now that query results are `Copy`.
This commit is contained in:
commit
e7813fee92
4 changed files with 69 additions and 128 deletions
|
@ -106,16 +106,6 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||
}
|
||||
}
|
||||
|
||||
/// Helper for `TyCtxtEnsure` to avoid a closure.
|
||||
#[inline(always)]
|
||||
fn noop<T>(_: &T) {}
|
||||
|
||||
/// Helper to ensure that queries only return `Copy` types.
|
||||
#[inline(always)]
|
||||
fn copy<T: Copy>(x: &T) -> T {
|
||||
*x
|
||||
}
|
||||
|
||||
macro_rules! query_helper_param_ty {
|
||||
(DefId) => { impl IntoQueryParam<DefId> };
|
||||
(LocalDefId) => { impl IntoQueryParam<LocalDefId> };
|
||||
|
@ -225,14 +215,10 @@ macro_rules! define_callbacks {
|
|||
let key = key.into_query_param();
|
||||
opt_remap_env_constness!([$($modifiers)*][key]);
|
||||
|
||||
let cached = try_get_cached(self.tcx, &self.tcx.query_caches.$name, &key, noop);
|
||||
|
||||
match cached {
|
||||
Ok(()) => return,
|
||||
Err(()) => (),
|
||||
}
|
||||
|
||||
self.tcx.queries.$name(self.tcx, DUMMY_SP, key, QueryMode::Ensure);
|
||||
match try_get_cached(self.tcx, &self.tcx.query_caches.$name, &key) {
|
||||
Some(_) => return,
|
||||
None => self.tcx.queries.$name(self.tcx, DUMMY_SP, key, QueryMode::Ensure),
|
||||
};
|
||||
})*
|
||||
}
|
||||
|
||||
|
@ -254,14 +240,10 @@ macro_rules! define_callbacks {
|
|||
let key = key.into_query_param();
|
||||
opt_remap_env_constness!([$($modifiers)*][key]);
|
||||
|
||||
let cached = try_get_cached(self.tcx, &self.tcx.query_caches.$name, &key, copy);
|
||||
|
||||
match cached {
|
||||
Ok(value) => return value,
|
||||
Err(()) => (),
|
||||
match try_get_cached(self.tcx, &self.tcx.query_caches.$name, &key) {
|
||||
Some(value) => value,
|
||||
None => self.tcx.queries.$name(self.tcx, self.span, key, QueryMode::Get).unwrap(),
|
||||
}
|
||||
|
||||
self.tcx.queries.$name(self.tcx, self.span, key, QueryMode::Get).unwrap()
|
||||
})*
|
||||
}
|
||||
|
||||
|
@ -353,27 +335,25 @@ macro_rules! define_feedable {
|
|||
let tcx = self.tcx;
|
||||
let cache = &tcx.query_caches.$name;
|
||||
|
||||
let cached = try_get_cached(tcx, cache, &key, copy);
|
||||
|
||||
match cached {
|
||||
Ok(old) => {
|
||||
match try_get_cached(tcx, cache, &key) {
|
||||
Some(old) => {
|
||||
bug!(
|
||||
"Trying to feed an already recorded value for query {} key={key:?}:\nold value: {old:?}\nnew value: {value:?}",
|
||||
stringify!($name),
|
||||
);
|
||||
)
|
||||
}
|
||||
None => {
|
||||
let dep_node = dep_graph::DepNode::construct(tcx, dep_graph::DepKind::$name, &key);
|
||||
let dep_node_index = tcx.dep_graph.with_feed_task(
|
||||
dep_node,
|
||||
tcx,
|
||||
key,
|
||||
&value,
|
||||
hash_result!([$($modifiers)*]),
|
||||
);
|
||||
cache.complete(key, value, dep_node_index)
|
||||
}
|
||||
Err(()) => (),
|
||||
}
|
||||
|
||||
let dep_node = dep_graph::DepNode::construct(tcx, dep_graph::DepKind::$name, &key);
|
||||
let dep_node_index = tcx.dep_graph.with_feed_task(
|
||||
dep_node,
|
||||
tcx,
|
||||
key,
|
||||
&value,
|
||||
hash_result!([$($modifiers)*]),
|
||||
);
|
||||
cache.complete(key, value, dep_node_index)
|
||||
}
|
||||
})*
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue