@@ -6,8 +6,6 @@ use crate::rustc_middle::dep_graph::DepContext;
66use crate :: rustc_middle:: ty:: TyEncoder ;
77use crate :: QueryConfigRestored ;
88use rustc_data_structures:: stable_hasher:: { Hash64 , HashStable , StableHasher } ;
9- use rustc_data_structures:: sync:: Lock ;
10- use rustc_errors:: DiagInner ;
119
1210use rustc_index:: Idx ;
1311use rustc_middle:: dep_graph:: dep_kinds;
@@ -32,7 +30,6 @@ use rustc_serialize::Encodable;
3230use rustc_session:: Limit ;
3331use rustc_span:: def_id:: LOCAL_CRATE ;
3432use std:: num:: NonZero ;
35- use thin_vec:: ThinVec ;
3633
3734#[ derive( Copy , Clone ) ]
3835pub struct QueryCtxt < ' tcx > {
@@ -90,12 +87,14 @@ impl QueryContext for QueryCtxt<'_> {
9087 }
9188
9289 // 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 > {
9494 self . query_system
9595 . on_disk_cache
9696 . 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) )
9998 }
10099
101100 #[ inline( never) ]
@@ -106,27 +105,13 @@ impl QueryContext for QueryCtxt<'_> {
106105 }
107106 }
108107
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-
121108 /// 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.
124110 #[ inline( always) ]
125111 fn start_query < R > (
126112 self ,
127113 token : QueryJobId ,
128114 depth_limit : bool ,
129- diagnostics : Option < & Lock < ThinVec < DiagInner > > > ,
130115 compute : impl FnOnce ( ) -> R ,
131116 ) -> R {
132117 // The `TyCtxt` stored in TLS has the same global interner lifetime
@@ -141,7 +126,6 @@ impl QueryContext for QueryCtxt<'_> {
141126 let new_icx = ImplicitCtxt {
142127 tcx : self . tcx ,
143128 query : Some ( token) ,
144- diagnostics,
145129 query_depth : current_icx. query_depth + depth_limit as usize ,
146130 task_deps : current_icx. task_deps ,
147131 } ;
@@ -467,7 +451,7 @@ where
467451 is_anon,
468452 is_eval_always,
469453 fingerprint_style,
470- force_from_dep_node : Some ( |tcx, dep_node| {
454+ force_from_dep_node : Some ( |tcx, dep_node, _ | {
471455 force_from_dep_node ( Q :: config ( tcx) , tcx, dep_node)
472456 } ) ,
473457 try_load_from_on_disk_cache : Some ( |tcx, dep_node| {
@@ -741,7 +725,7 @@ macro_rules! define_queries {
741725 is_anon: false ,
742726 is_eval_always: false ,
743727 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) ) ,
745729 try_load_from_on_disk_cache: None ,
746730 name: & "Null" ,
747731 }
@@ -753,12 +737,26 @@ macro_rules! define_queries {
753737 is_anon: false ,
754738 is_eval_always: false ,
755739 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) ) ,
757741 try_load_from_on_disk_cache: None ,
758742 name: & "Red" ,
759743 }
760744 }
761745
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+
762760 pub fn TraitSelect <' tcx>( ) -> DepKindStruct <' tcx> {
763761 DepKindStruct {
764762 is_anon: true ,
0 commit comments