@@ -6,8 +6,6 @@ use crate::rustc_middle::dep_graph::DepContext;
6
6
use crate :: rustc_middle:: ty:: TyEncoder ;
7
7
use crate :: QueryConfigRestored ;
8
8
use rustc_data_structures:: stable_hasher:: { Hash64 , HashStable , StableHasher } ;
9
- use rustc_data_structures:: sync:: Lock ;
10
- use rustc_errors:: DiagInner ;
11
9
12
10
use rustc_index:: Idx ;
13
11
use rustc_middle:: dep_graph:: dep_kinds;
@@ -32,7 +30,6 @@ use rustc_serialize::Encodable;
32
30
use rustc_session:: Limit ;
33
31
use rustc_span:: def_id:: LOCAL_CRATE ;
34
32
use std:: num:: NonZero ;
35
- use thin_vec:: ThinVec ;
36
33
37
34
#[ derive( Copy , Clone ) ]
38
35
pub struct QueryCtxt < ' tcx > {
@@ -90,12 +87,14 @@ impl QueryContext for QueryCtxt<'_> {
90
87
}
91
88
92
89
// Interactions with on_disk_cache
93
- fn load_side_effects ( self , prev_dep_node_index : SerializedDepNodeIndex ) -> QuerySideEffects {
90
+ fn load_side_effects (
91
+ self ,
92
+ prev_dep_node_index : SerializedDepNodeIndex ,
93
+ ) -> Option < QuerySideEffects > {
94
94
self . query_system
95
95
. on_disk_cache
96
96
. as_ref ( )
97
- . map ( |c| c. load_side_effects ( self . tcx , prev_dep_node_index) )
98
- . unwrap_or_default ( )
97
+ . and_then ( |c| c. load_side_effects ( self . tcx , prev_dep_node_index) )
99
98
}
100
99
101
100
#[ inline( never) ]
@@ -106,27 +105,13 @@ impl QueryContext for QueryCtxt<'_> {
106
105
}
107
106
}
108
107
109
- #[ inline( never) ]
110
- #[ cold]
111
- fn store_side_effects_for_anon_node (
112
- self ,
113
- dep_node_index : DepNodeIndex ,
114
- side_effects : QuerySideEffects ,
115
- ) {
116
- if let Some ( c) = self . query_system . on_disk_cache . as_ref ( ) {
117
- c. store_side_effects_for_anon_node ( dep_node_index, side_effects)
118
- }
119
- }
120
-
121
108
/// Executes a job by changing the `ImplicitCtxt` to point to the
122
- /// new query job while it executes. It returns the diagnostics
123
- /// captured during execution and the actual result.
109
+ /// new query job while it executes.
124
110
#[ inline( always) ]
125
111
fn start_query < R > (
126
112
self ,
127
113
token : QueryJobId ,
128
114
depth_limit : bool ,
129
- diagnostics : Option < & Lock < ThinVec < DiagInner > > > ,
130
115
compute : impl FnOnce ( ) -> R ,
131
116
) -> R {
132
117
// The `TyCtxt` stored in TLS has the same global interner lifetime
@@ -141,7 +126,6 @@ impl QueryContext for QueryCtxt<'_> {
141
126
let new_icx = ImplicitCtxt {
142
127
tcx : self . tcx ,
143
128
query : Some ( token) ,
144
- diagnostics,
145
129
query_depth : current_icx. query_depth + depth_limit as usize ,
146
130
task_deps : current_icx. task_deps ,
147
131
} ;
@@ -467,7 +451,7 @@ where
467
451
is_anon,
468
452
is_eval_always,
469
453
fingerprint_style,
470
- force_from_dep_node : Some ( |tcx, dep_node| {
454
+ force_from_dep_node : Some ( |tcx, dep_node, _ | {
471
455
force_from_dep_node ( Q :: config ( tcx) , tcx, dep_node)
472
456
} ) ,
473
457
try_load_from_on_disk_cache : Some ( |tcx, dep_node| {
@@ -741,7 +725,7 @@ macro_rules! define_queries {
741
725
is_anon: false ,
742
726
is_eval_always: false ,
743
727
fingerprint_style: FingerprintStyle :: Unit ,
744
- force_from_dep_node: Some ( |_, dep_node| bug!( "force_from_dep_node: encountered {:?}" , dep_node) ) ,
728
+ force_from_dep_node: Some ( |_, dep_node, _ | bug!( "force_from_dep_node: encountered {:?}" , dep_node) ) ,
745
729
try_load_from_on_disk_cache: None ,
746
730
name: & "Null" ,
747
731
}
@@ -753,12 +737,26 @@ macro_rules! define_queries {
753
737
is_anon: false ,
754
738
is_eval_always: false ,
755
739
fingerprint_style: FingerprintStyle :: Unit ,
756
- force_from_dep_node: Some ( |_, dep_node| bug!( "force_from_dep_node: encountered {:?}" , dep_node) ) ,
740
+ force_from_dep_node: Some ( |_, dep_node, _ | bug!( "force_from_dep_node: encountered {:?}" , dep_node) ) ,
757
741
try_load_from_on_disk_cache: None ,
758
742
name: & "Red" ,
759
743
}
760
744
}
761
745
746
+ pub fn SideEffect <' tcx>( ) -> DepKindStruct <' tcx> {
747
+ DepKindStruct {
748
+ is_anon: false ,
749
+ is_eval_always: false ,
750
+ fingerprint_style: FingerprintStyle :: Unit ,
751
+ force_from_dep_node: Some ( |tcx, _, prev_index| {
752
+ tcx. dep_graph. force_diagnostic_node( QueryCtxt :: new( tcx) , prev_index) ;
753
+ true
754
+ } ) ,
755
+ try_load_from_on_disk_cache: None ,
756
+ name: & "SideEffect" ,
757
+ }
758
+ }
759
+
762
760
pub fn TraitSelect <' tcx>( ) -> DepKindStruct <' tcx> {
763
761
DepKindStruct {
764
762
is_anon: true ,
0 commit comments