@@ -150,7 +150,7 @@ impl<CTX: QueryContext> QueryLatch<CTX> {
150
150
let query_map = tcx. try_collect_active_jobs ( ) . unwrap ( ) ;
151
151
152
152
// Get the current executing query (waiter) and find the waitee amongst its parents
153
- let mut current_job = tcx. read_query_job ( |query| query ) ;
153
+ let mut current_job = tcx. current_query_job ( ) ;
154
154
let mut cycle = Vec :: new ( ) ;
155
155
156
156
while let Some ( job) = current_job {
@@ -222,23 +222,18 @@ impl<CTX: QueryContext> QueryLatch<CTX> {
222
222
impl < CTX : QueryContext > QueryLatch < CTX > {
223
223
/// Awaits for the query job to complete.
224
224
pub ( super ) fn wait_on ( & self , tcx : CTX , span : Span ) -> Result < ( ) , CycleError < CTX :: Query > > {
225
- tcx. read_query_job ( move |query| {
226
- let waiter = Lrc :: new ( QueryWaiter {
227
- query,
228
- span,
229
- cycle : Lock :: new ( None ) ,
230
- condvar : Condvar :: new ( ) ,
231
- } ) ;
232
- self . wait_on_inner ( & waiter) ;
233
- // FIXME: Get rid of this lock. We have ownership of the QueryWaiter
234
- // although another thread may still have a Lrc reference so we cannot
235
- // use Lrc::get_mut
236
- let mut cycle = waiter. cycle . lock ( ) ;
237
- match cycle. take ( ) {
238
- None => Ok ( ( ) ) ,
239
- Some ( cycle) => Err ( cycle) ,
240
- }
241
- } )
225
+ let query = tcx. current_query_job ( ) ;
226
+ let waiter =
227
+ Lrc :: new ( QueryWaiter { query, span, cycle : Lock :: new ( None ) , condvar : Condvar :: new ( ) } ) ;
228
+ self . wait_on_inner ( & waiter) ;
229
+ // FIXME: Get rid of this lock. We have ownership of the QueryWaiter
230
+ // although another thread may still have a Lrc reference so we cannot
231
+ // use Lrc::get_mut
232
+ let mut cycle = waiter. cycle . lock ( ) ;
233
+ match cycle. take ( ) {
234
+ None => Ok ( ( ) ) ,
235
+ Some ( cycle) => Err ( cycle) ,
236
+ }
242
237
}
243
238
}
244
239
0 commit comments