@@ -299,34 +299,28 @@ pub(crate) fn create_query_frame<
299
299
QueryStackFrame :: new ( name, description, span, def_kind, hash)
300
300
}
301
301
302
- pub ( crate ) fn try_load_from_on_disk_cache < ' tcx , K , V > (
302
+ pub ( crate ) fn try_load_from_on_disk_cache < ' tcx , K : DepNodeParams < TyCtxt < ' tcx > > , V > (
303
303
tcx : TyCtxt < ' tcx > ,
304
304
dep_node : DepNode ,
305
- recover : fn ( TyCtxt < ' tcx > , DepNode ) -> Option < K > ,
306
305
cache_on_disk : fn ( TyCtxt < ' tcx > , & K ) -> bool ,
307
306
do_query : fn ( TyCtxt < ' tcx > , K ) -> V ,
308
307
) {
309
308
debug_assert ! ( tcx. dep_graph. is_green( & dep_node) ) ;
310
309
311
- let key = recover ( tcx, dep_node) . unwrap_or_else ( || {
310
+ let key = K :: recover ( tcx, & dep_node) . unwrap_or_else ( || {
312
311
panic ! ( "Failed to recover key for {:?} with hash {}" , dep_node, dep_node. hash)
313
312
} ) ;
314
313
if cache_on_disk ( tcx, & key) {
315
314
let _ = do_query ( tcx, key) ;
316
315
}
317
316
}
318
317
319
- pub ( crate ) fn force_from_dep_node < ' tcx , Q > (
320
- tcx : TyCtxt < ' tcx > ,
321
- // dep_node: rustc_query_system::dep_graph::DepNode<CTX::DepKind>,
322
- dep_node : DepNode ,
323
- recover : fn ( TyCtxt < ' tcx > , DepNode ) -> Option < Q :: Key > ,
324
- ) -> bool
318
+ fn force_from_dep_node < ' tcx , Q > ( tcx : TyCtxt < ' tcx > , dep_node : DepNode ) -> bool
325
319
where
326
320
Q : QueryDescription < QueryCtxt < ' tcx > > ,
327
321
Q :: Key : DepNodeParams < TyCtxt < ' tcx > > ,
328
322
{
329
- if let Some ( key) = recover ( tcx, dep_node) {
323
+ if let Some ( key) = Q :: Key :: recover ( tcx, & dep_node) {
330
324
#[ cfg( debug_assertions) ]
331
325
let _guard = tracing:: span!( tracing:: Level :: TRACE , stringify!( $name) , ?key) . entered ( ) ;
332
326
let tcx = QueryCtxt :: from_tcx ( tcx) ;
@@ -405,7 +399,6 @@ macro_rules! define_queries {
405
399
#[ allow( nonstandard_style) ]
406
400
mod query_callbacks {
407
401
use super :: * ;
408
- use rustc_middle:: dep_graph:: DepNode ;
409
402
use rustc_query_system:: dep_graph:: DepNodeParams ;
410
403
use rustc_query_system:: query:: QueryDescription ;
411
404
use rustc_query_system:: dep_graph:: FingerprintStyle ;
@@ -479,17 +472,14 @@ macro_rules! define_queries {
479
472
}
480
473
}
481
474
482
- #[ inline( always) ]
483
- fn recover<' tcx>( tcx: TyCtxt <' tcx>, dep_node: DepNode ) -> Option <<queries:: $name<' tcx> as QueryConfig >:: Key > {
484
- <<queries:: $name<' _> as QueryConfig >:: Key as DepNodeParams <TyCtxt <' _>>>:: recover( tcx, & dep_node)
485
- }
486
-
487
475
DepKindStruct {
488
476
is_anon,
489
477
is_eval_always,
490
478
fingerprint_style,
491
- force_from_dep_node: Some ( |tcx, dep_node| $crate:: plumbing:: force_from_dep_node:: <queries:: $name<' _>>( tcx, dep_node, recover) ) ,
492
- try_load_from_on_disk_cache: Some ( |tcx, key| $crate:: plumbing:: try_load_from_on_disk_cache( tcx, key, recover, queries:: $name:: cache_on_disk, TyCtxt :: $name) ) ,
479
+ force_from_dep_node: Some ( |tcx, dep_node| $crate:: plumbing:: force_from_dep_node:: <queries:: $name<' _>>( tcx, dep_node) ) ,
480
+ try_load_from_on_disk_cache: Some ( |tcx, key| $crate:: plumbing:: try_load_from_on_disk_cache:: <
481
+ <queries:: $name<' _> as QueryConfig >:: Key , _
482
+ >( tcx, key, queries:: $name:: cache_on_disk, TyCtxt :: $name) ) ,
493
483
}
494
484
} ) *
495
485
}
0 commit comments