Skip to content

Commit 420810a

Browse files
committed
Make __query_compute::$name monomorphic.
1 parent 1581278 commit 420810a

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

src/librustc/ty/query/plumbing.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -955,9 +955,18 @@ macro_rules! define_queries_inner {
955955
// predictable symbol name prefix for query providers. This is helpful
956956
// for analyzing queries in profilers.
957957
pub(super) mod __query_compute {
958+
use super::*;
959+
958960
$(#[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)
961970
})*
962971
}
963972

@@ -997,16 +1006,7 @@ macro_rules! define_queries_inner {
9971006

9981007
#[inline]
9991008
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)
10101010
}
10111011

10121012
fn hash_result(

0 commit comments

Comments
 (0)