Skip to content

Commit 26997d1

Browse files
committed
Make __query_compute::$name monomorphic.
1 parent fd9ab46 commit 26997d1

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
@@ -998,9 +998,18 @@ macro_rules! define_queries_inner {
998998
// predictable symbol name prefix for query providers. This is helpful
999999
// for analyzing queries in profilers.
10001000
pub(super) mod __query_compute {
1001+
use super::*;
1002+
10011003
$(#[inline(never)]
1002-
pub fn $name<F: FnOnce() -> R, R>(f: F) -> R {
1003-
f()
1004+
pub fn $name(tcx: TyCtxt<'tcx>, key: $K) -> $V {
1005+
let provider = tcx.queries.providers.get(key.query_crate())
1006+
// HACK(eddyb) it's possible crates may be loaded after
1007+
// the query engine is created, and because crate loading
1008+
// is not yet integrated with the query engine, such crates
1009+
// would be missing appropriate entries in `providers`.
1010+
.unwrap_or(&tcx.queries.fallback_extern_providers)
1011+
.$name;
1012+
provider(tcx, key)
10041013
})*
10051014
}
10061015

@@ -1040,16 +1049,7 @@ macro_rules! define_queries_inner {
10401049

10411050
#[inline]
10421051
fn compute(tcx: TyCtxt<'tcx>, key: Self::Key) -> Self::Value {
1043-
__query_compute::$name(move || {
1044-
let provider = tcx.queries.providers.get(key.query_crate())
1045-
// HACK(eddyb) it's possible crates may be loaded after
1046-
// the query engine is created, and because crate loading
1047-
// is not yet integrated with the query engine, such crates
1048-
// would be missing appropriate entries in `providers`.
1049-
.unwrap_or(&tcx.queries.fallback_extern_providers)
1050-
.$name;
1051-
provider(tcx, key)
1052-
})
1052+
__query_compute::$name(tcx, key)
10531053
}
10541054

10551055
fn hash_result(

0 commit comments

Comments
 (0)