@@ -955,9 +955,18 @@ macro_rules! define_queries_inner {
955
955
// predictable symbol name prefix for query providers. This is helpful
956
956
// for analyzing queries in profilers.
957
957
pub ( super ) mod __query_compute {
958
+ use super :: * ;
959
+
958
960
$( #[ inline( never) ]
959
- pub fn $name<F : FnOnce ( ) -> R , R >( f: F ) -> R {
960
- f( )
961
+ pub fn $name( tcx: TyCtxt <' tcx>, key: $K) -> $V {
962
+ let provider = tcx. queries. providers. get( key. query_crate( ) )
963
+ // HACK(eddyb) it's possible crates may be loaded after
964
+ // the query engine is created, and because crate loading
965
+ // is not yet integrated with the query engine, such crates
966
+ // would be missing appropriate entries in `providers`.
967
+ . unwrap_or( & tcx. queries. fallback_extern_providers)
968
+ . $name;
969
+ provider( tcx, key)
961
970
} ) *
962
971
}
963
972
@@ -997,16 +1006,7 @@ macro_rules! define_queries_inner {
997
1006
998
1007
#[ inline]
999
1008
fn compute( tcx: TyCtxt <' tcx>, key: Self :: Key ) -> Self :: Value {
1000
- __query_compute:: $name( move || {
1001
- let provider = tcx. queries. providers. get( key. query_crate( ) )
1002
- // HACK(eddyb) it's possible crates may be loaded after
1003
- // the query engine is created, and because crate loading
1004
- // is not yet integrated with the query engine, such crates
1005
- // would be missing appropriate entries in `providers`.
1006
- . unwrap_or( & tcx. queries. fallback_extern_providers)
1007
- . $name;
1008
- provider( tcx, key)
1009
- } )
1009
+ __query_compute:: $name( tcx, key)
1010
1010
}
1011
1011
1012
1012
fn hash_result(
0 commit comments