@@ -6,6 +6,7 @@ use crate::mir::{self, interpret};
66use crate :: session:: { CrateDisambiguator , Session } ;
77use crate :: ty:: codec:: { self as ty_codec, TyDecoder , TyEncoder } ;
88use crate :: ty:: context:: TyCtxt ;
9+ use crate :: ty:: query:: config:: { QueryAccessors , QueryDescription , QueryVtable } ;
910use crate :: ty:: { self , Ty } ;
1011use rustc_ast:: ast:: Ident ;
1112use rustc_data_structures:: fx:: FxHashMap ;
@@ -205,8 +206,10 @@ impl<'sess> OnDiskCache<'sess> {
205206 macro_rules! encode_queries {
206207 ( $( $query: ident, ) * ) => {
207208 $(
208- encode_query_results:: <ty :: query :: queries :: $query< ' _> , _> (
209+ encode_query_results(
209210 tcx,
211+ ty:: query:: queries:: $query:: query_state( tcx) ,
212+ & ty:: query:: queries:: $query:: reify( ) ,
210213 enc,
211214 qri
212215 ) ?;
@@ -1022,26 +1025,27 @@ impl<'a> SpecializedDecoder<IntEncodedWithFixedSize> for opaque::Decoder<'a> {
10221025 }
10231026}
10241027
1025- fn encode_query_results < ' a , ' tcx , Q , E > (
1028+ fn encode_query_results < ' a , ' tcx , C , E > (
10261029 tcx : TyCtxt < ' tcx > ,
1030+ state : & ' a super :: plumbing:: QueryState < ' tcx , C > ,
1031+ query : & QueryVtable < ' tcx , C :: Key , C :: Value > ,
10271032 encoder : & mut CacheEncoder < ' a , ' tcx , E > ,
10281033 query_result_index : & mut EncodedQueryResultIndex ,
10291034) -> Result < ( ) , E :: Error >
10301035where
1031- Q : super :: config :: QueryDescription < ' tcx , Value : Encodable > ,
1036+ C : super :: caches :: QueryCache ,
10321037 E : ' a + TyEncoder ,
1038+ C :: Key : Clone ,
1039+ C :: Value : Encodable ,
10331040{
1034- let _timer = tcx
1035- . sess
1036- . prof
1037- . extra_verbose_generic_activity ( "encode_query_results_for" , :: std:: any:: type_name :: < Q > ( ) ) ;
1041+ let _timer =
1042+ tcx. sess . prof . extra_verbose_generic_activity ( "encode_query_results_for" , query. name ) ;
10381043
1039- let state = Q :: query_state ( tcx) ;
10401044 assert ! ( state. all_inactive( ) ) ;
10411045
10421046 state. iter_results ( |results| {
10431047 for ( key, value, dep_node) in results {
1044- if Q :: cache_on_disk ( tcx, key. clone ( ) , Some ( & value) ) {
1048+ if query . cache_on_disk ( tcx, key. clone ( ) , Some ( & value) ) {
10451049 let dep_node = SerializedDepNodeIndex :: new ( dep_node. index ( ) ) ;
10461050
10471051 // Record position of the cache entry.
0 commit comments