@@ -150,7 +150,7 @@ impl<CTX: QueryContext> QueryLatch<CTX> {
150150 let query_map = tcx. try_collect_active_jobs ( ) . unwrap ( ) ;
151151
152152 // 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 ( ) ;
154154 let mut cycle = Vec :: new ( ) ;
155155
156156 while let Some ( job) = current_job {
@@ -222,23 +222,18 @@ impl<CTX: QueryContext> QueryLatch<CTX> {
222222impl < CTX : QueryContext > QueryLatch < CTX > {
223223 /// Awaits for the query job to complete.
224224 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+ }
242237 }
243238}
244239
0 commit comments