55use std:: num:: NonZero ;
66
77use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ;
8- use rustc_data_structures:: sync:: Lock ;
98use rustc_data_structures:: unord:: UnordMap ;
10- use rustc_errors:: DiagInner ;
119use rustc_hashes:: Hash64 ;
1210use rustc_index:: Idx ;
1311use rustc_middle:: bug;
@@ -32,7 +30,6 @@ use rustc_query_system::{QueryOverflow, QueryOverflowNote};
3230use rustc_serialize:: { Decodable , Encodable } ;
3331use rustc_session:: Limit ;
3432use rustc_span:: def_id:: LOCAL_CRATE ;
35- use thin_vec:: ThinVec ;
3633
3734use crate :: QueryConfigRestored ;
3835
@@ -92,12 +89,14 @@ impl QueryContext for QueryCtxt<'_> {
9289 }
9390
9491 // 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 > {
9696 self . query_system
9797 . on_disk_cache
9898 . 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) )
101100 }
102101
103102 #[ inline( never) ]
@@ -108,27 +107,13 @@ impl QueryContext for QueryCtxt<'_> {
108107 }
109108 }
110109
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-
123110 /// 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.
126112 #[ inline( always) ]
127113 fn start_query < R > (
128114 self ,
129115 token : QueryJobId ,
130116 depth_limit : bool ,
131- diagnostics : Option < & Lock < ThinVec < DiagInner > > > ,
132117 compute : impl FnOnce ( ) -> R ,
133118 ) -> R {
134119 // The `TyCtxt` stored in TLS has the same global interner lifetime
@@ -143,7 +128,6 @@ impl QueryContext for QueryCtxt<'_> {
143128 let new_icx = ImplicitCtxt {
144129 tcx : self . tcx ,
145130 query : Some ( token) ,
146- diagnostics,
147131 query_depth : current_icx. query_depth + depth_limit as usize ,
148132 task_deps : current_icx. task_deps ,
149133 } ;
@@ -500,7 +484,7 @@ where
500484 is_anon,
501485 is_eval_always,
502486 fingerprint_style,
503- force_from_dep_node : Some ( |tcx, dep_node| {
487+ force_from_dep_node : Some ( |tcx, dep_node, _ | {
504488 force_from_dep_node ( Q :: config ( tcx) , tcx, dep_node)
505489 } ) ,
506490 try_load_from_on_disk_cache : Some ( |tcx, dep_node| {
@@ -802,7 +786,7 @@ macro_rules! define_queries {
802786 is_anon: false ,
803787 is_eval_always: false ,
804788 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) ) ,
806790 try_load_from_on_disk_cache: None ,
807791 name: & "Null" ,
808792 }
@@ -814,12 +798,26 @@ macro_rules! define_queries {
814798 is_anon: false ,
815799 is_eval_always: false ,
816800 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) ) ,
818802 try_load_from_on_disk_cache: None ,
819803 name: & "Red" ,
820804 }
821805 }
822806
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+
823821 pub ( crate ) fn TraitSelect <' tcx>( ) -> DepKindStruct <' tcx> {
824822 DepKindStruct {
825823 is_anon: true ,
0 commit comments