@@ -543,13 +543,15 @@ impl<'a, 'gcx> TyCtxt<'a, 'gcx, 'gcx> {
543543 p. record_query ( Q :: CATEGORY ) ;
544544 } ) ;
545545
546+ let provider = Q :: provider ( self , & key) ;
547+
546548 let res = if dep_node. kind . is_eval_always ( ) {
547549 self . dep_graph . with_eval_always_task ( self , dep_node, |task| {
548- job. with_context ( self , task, |tcx| Q :: compute ( tcx, key) )
550+ job. with_context ( self , task, |tcx| provider ( tcx, key) )
549551 } )
550552 } else {
551553 self . dep_graph . with_query_task ( self , dep_node, |task| {
552- job. with_context ( self , task, |tcx| Q :: compute ( tcx, key) )
554+ job. with_context ( self , task, |tcx| provider ( tcx, key) )
553555 } )
554556 } ;
555557
@@ -841,9 +843,11 @@ macro_rules! define_queries_inner {
841843 DepNode :: new_inlined( tcx, $node( * key) )
842844 }
843845
844- // FIXME: Change back to inline
845- #[ inline( never) ]
846- fn compute( tcx: TyCtxt <' _, ' tcx, ' _>, key: Self :: Key ) -> Self :: Value {
846+ #[ inline( always) ]
847+ fn provider(
848+ tcx: TyCtxt <' _, ' tcx, ' tcx>,
849+ key: & Self :: Key
850+ ) -> fn ( TyCtxt <' _, ' tcx, ' tcx>, Self :: Key ) -> Self :: Value {
847851 __query_compute:: $name( move || {
848852 let provider = tcx. queries. providers. get( key. query_crate( ) )
849853 // HACK(eddyb) it's possible crates may be loaded after
@@ -852,7 +856,7 @@ macro_rules! define_queries_inner {
852856 // would be be missing appropriate entries in `providers`.
853857 . unwrap_or( & tcx. queries. fallback_extern_providers)
854858 . $name;
855- provider( tcx . global_tcx ( ) , key )
859+ provider
856860 } )
857861 }
858862
@@ -870,7 +874,7 @@ macro_rules! define_queries_inner {
870874 ///
871875 /// Note: The optimization is only available during incr. comp.
872876 pub fn ensure( tcx: TyCtxt <' a, $tcx, ' lcx>, key: $K) -> ( ) {
873- tcx. ensure_query:: <queries:: $name<' _>>( key) ;
877+ tcx. global_tcx ( ) . ensure_query:: <queries:: $name<' _>>( key) ;
874878 }
875879 } ) *
876880
@@ -1048,7 +1052,11 @@ pub fn force_from_dep_node<'a, 'gcx, 'lcx>(tcx: TyCtxt<'a, 'gcx, 'lcx>,
10481052 macro_rules! force {
10491053 ( $query: ident, $key: expr) => {
10501054 {
1051- tcx. force_query:: <:: ty:: query:: queries:: $query<' _>>( $key, DUMMY_SP , * dep_node) ;
1055+ tcx. global_tcx( ) . force_query:: <:: ty:: query:: queries:: $query<' _>>(
1056+ $key,
1057+ DUMMY_SP ,
1058+ * dep_node
1059+ ) ;
10521060 }
10531061 }
10541062 } ;
0 commit comments