@@ -6,6 +6,7 @@ use crate::mir::{self, interpret};
6
6
use crate :: session:: { CrateDisambiguator , Session } ;
7
7
use crate :: ty:: codec:: { self as ty_codec, TyDecoder , TyEncoder } ;
8
8
use crate :: ty:: context:: TyCtxt ;
9
+ use crate :: ty:: query:: config:: { QueryAccessors , QueryDescription , QueryVtable } ;
9
10
use crate :: ty:: { self , Ty } ;
10
11
use rustc_ast:: ast:: Ident ;
11
12
use rustc_data_structures:: fx:: FxHashMap ;
@@ -205,8 +206,10 @@ impl<'sess> OnDiskCache<'sess> {
205
206
macro_rules! encode_queries {
206
207
( $( $query: ident, ) * ) => {
207
208
$(
208
- encode_query_results:: <ty :: query :: queries :: $query< ' _> , _> (
209
+ encode_query_results(
209
210
tcx,
211
+ ty:: query:: queries:: $query:: query_state( tcx) ,
212
+ & ty:: query:: queries:: $query:: reify( ) ,
210
213
enc,
211
214
qri
212
215
) ?;
@@ -1022,26 +1025,27 @@ impl<'a> SpecializedDecoder<IntEncodedWithFixedSize> for opaque::Decoder<'a> {
1022
1025
}
1023
1026
}
1024
1027
1025
- fn encode_query_results < ' a , ' tcx , Q , E > (
1028
+ fn encode_query_results < ' a , ' tcx , C , E > (
1026
1029
tcx : TyCtxt < ' tcx > ,
1030
+ state : & ' a super :: plumbing:: QueryState < ' tcx , C > ,
1031
+ query : & QueryVtable < ' tcx , C :: Key , C :: Value > ,
1027
1032
encoder : & mut CacheEncoder < ' a , ' tcx , E > ,
1028
1033
query_result_index : & mut EncodedQueryResultIndex ,
1029
1034
) -> Result < ( ) , E :: Error >
1030
1035
where
1031
- Q : super :: config :: QueryDescription < ' tcx , Value : Encodable > ,
1036
+ C : super :: caches :: QueryCache ,
1032
1037
E : ' a + TyEncoder ,
1038
+ C :: Key : Clone ,
1039
+ C :: Value : Encodable ,
1033
1040
{
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 ) ;
1038
1043
1039
- let state = Q :: query_state ( tcx) ;
1040
1044
assert ! ( state. all_inactive( ) ) ;
1041
1045
1042
1046
state. iter_results ( |results| {
1043
1047
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) ) {
1045
1049
let dep_node = SerializedDepNodeIndex :: new ( dep_node. index ( ) ) ;
1046
1050
1047
1051
// Record position of the cache entry.
0 commit comments