5
5
use std:: num:: NonZero ;
6
6
7
7
use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ;
8
- use rustc_data_structures:: sync:: Lock ;
9
8
use rustc_data_structures:: unord:: UnordMap ;
10
- use rustc_errors:: DiagInner ;
11
9
use rustc_hashes:: Hash64 ;
12
10
use rustc_index:: Idx ;
13
11
use rustc_middle:: bug;
@@ -32,7 +30,6 @@ use rustc_query_system::{QueryOverflow, QueryOverflowNote};
32
30
use rustc_serialize:: { Decodable , Encodable } ;
33
31
use rustc_session:: Limit ;
34
32
use rustc_span:: def_id:: LOCAL_CRATE ;
35
- use thin_vec:: ThinVec ;
36
33
37
34
use crate :: QueryConfigRestored ;
38
35
@@ -92,12 +89,14 @@ impl QueryContext for QueryCtxt<'_> {
92
89
}
93
90
94
91
// Interactions with on_disk_cache
95
- fn load_side_effects ( self , prev_dep_node_index : SerializedDepNodeIndex ) -> QuerySideEffects {
92
+ fn load_side_effects (
93
+ self ,
94
+ prev_dep_node_index : SerializedDepNodeIndex ,
95
+ ) -> Option < QuerySideEffects > {
96
96
self . query_system
97
97
. on_disk_cache
98
98
. as_ref ( )
99
- . map ( |c| c. load_side_effects ( self . tcx , prev_dep_node_index) )
100
- . unwrap_or_default ( )
99
+ . and_then ( |c| c. load_side_effects ( self . tcx , prev_dep_node_index) )
101
100
}
102
101
103
102
#[ inline( never) ]
@@ -108,27 +107,13 @@ impl QueryContext for QueryCtxt<'_> {
108
107
}
109
108
}
110
109
111
- #[ inline( never) ]
112
- #[ cold]
113
- fn store_side_effects_for_anon_node (
114
- self ,
115
- dep_node_index : DepNodeIndex ,
116
- side_effects : QuerySideEffects ,
117
- ) {
118
- if let Some ( c) = self . query_system . on_disk_cache . as_ref ( ) {
119
- c. store_side_effects_for_anon_node ( dep_node_index, side_effects)
120
- }
121
- }
122
-
123
110
/// Executes a job by changing the `ImplicitCtxt` to point to the
124
- /// new query job while it executes. It returns the diagnostics
125
- /// captured during execution and the actual result.
111
+ /// new query job while it executes.
126
112
#[ inline( always) ]
127
113
fn start_query < R > (
128
114
self ,
129
115
token : QueryJobId ,
130
116
depth_limit : bool ,
131
- diagnostics : Option < & Lock < ThinVec < DiagInner > > > ,
132
117
compute : impl FnOnce ( ) -> R ,
133
118
) -> R {
134
119
// The `TyCtxt` stored in TLS has the same global interner lifetime
@@ -143,7 +128,6 @@ impl QueryContext for QueryCtxt<'_> {
143
128
let new_icx = ImplicitCtxt {
144
129
tcx : self . tcx ,
145
130
query : Some ( token) ,
146
- diagnostics,
147
131
query_depth : current_icx. query_depth + depth_limit as usize ,
148
132
task_deps : current_icx. task_deps ,
149
133
} ;
@@ -500,7 +484,7 @@ where
500
484
is_anon,
501
485
is_eval_always,
502
486
fingerprint_style,
503
- force_from_dep_node : Some ( |tcx, dep_node| {
487
+ force_from_dep_node : Some ( |tcx, dep_node, _ | {
504
488
force_from_dep_node ( Q :: config ( tcx) , tcx, dep_node)
505
489
} ) ,
506
490
try_load_from_on_disk_cache : Some ( |tcx, dep_node| {
@@ -802,7 +786,7 @@ macro_rules! define_queries {
802
786
is_anon: false ,
803
787
is_eval_always: false ,
804
788
fingerprint_style: FingerprintStyle :: Unit ,
805
- force_from_dep_node: Some ( |_, dep_node| bug!( "force_from_dep_node: encountered {:?}" , dep_node) ) ,
789
+ force_from_dep_node: Some ( |_, dep_node, _ | bug!( "force_from_dep_node: encountered {:?}" , dep_node) ) ,
806
790
try_load_from_on_disk_cache: None ,
807
791
name: & "Null" ,
808
792
}
@@ -814,12 +798,26 @@ macro_rules! define_queries {
814
798
is_anon: false ,
815
799
is_eval_always: false ,
816
800
fingerprint_style: FingerprintStyle :: Unit ,
817
- force_from_dep_node: Some ( |_, dep_node| bug!( "force_from_dep_node: encountered {:?}" , dep_node) ) ,
801
+ force_from_dep_node: Some ( |_, dep_node, _ | bug!( "force_from_dep_node: encountered {:?}" , dep_node) ) ,
818
802
try_load_from_on_disk_cache: None ,
819
803
name: & "Red" ,
820
804
}
821
805
}
822
806
807
+ pub ( crate ) fn SideEffect <' tcx>( ) -> DepKindStruct <' tcx> {
808
+ DepKindStruct {
809
+ is_anon: false ,
810
+ is_eval_always: false ,
811
+ fingerprint_style: FingerprintStyle :: Unit ,
812
+ force_from_dep_node: Some ( |tcx, _, prev_index| {
813
+ tcx. dep_graph. force_diagnostic_node( QueryCtxt :: new( tcx) , prev_index) ;
814
+ true
815
+ } ) ,
816
+ try_load_from_on_disk_cache: None ,
817
+ name: & "SideEffect" ,
818
+ }
819
+ }
820
+
823
821
pub ( crate ) fn TraitSelect <' tcx>( ) -> DepKindStruct <' tcx> {
824
822
DepKindStruct {
825
823
is_anon: true ,
0 commit comments