@@ -69,79 +69,6 @@ use std::hash::Hash;
6969
7070pub  use  rustc_query_system:: dep_graph:: { DepContext ,  DepNodeParams } ; 
7171
72- /// This struct stores metadata about each DepKind. 
73- /// 
74- /// Information is retrieved by indexing the `DEP_KINDS` array using the integer value 
75- /// of the `DepKind`. Overall, this allows to implement `DepContext` using this manual 
76- /// jump table instead of large matches. 
77- pub  struct  DepKindStruct < ' tcx >  { 
78-     /// Anonymous queries cannot be replayed from one compiler invocation to the next. 
79-      /// When their result is needed, it is recomputed. They are useful for fine-grained 
80-      /// dependency tracking, and caching within one compiler invocation. 
81-      pub  is_anon :  bool , 
82- 
83-     /// Eval-always queries do not track their dependencies, and are always recomputed, even if 
84-      /// their inputs have not changed since the last compiler invocation. The result is still 
85-      /// cached within one compiler invocation. 
86-      pub  is_eval_always :  bool , 
87- 
88-     /// Whether the query key can be recovered from the hashed fingerprint. 
89-      /// See [DepNodeParams] trait for the behaviour of each key type. 
90-      pub  fingerprint_style :  FingerprintStyle , 
91- 
92-     /// The red/green evaluation system will try to mark a specific DepNode in the 
93-      /// dependency graph as green by recursively trying to mark the dependencies of 
94-      /// that `DepNode` as green. While doing so, it will sometimes encounter a `DepNode` 
95-      /// where we don't know if it is red or green and we therefore actually have 
96-      /// to recompute its value in order to find out. Since the only piece of 
97-      /// information that we have at that point is the `DepNode` we are trying to 
98-      /// re-evaluate, we need some way to re-run a query from just that. This is what 
99-      /// `force_from_dep_node()` implements. 
100-      /// 
101-      /// In the general case, a `DepNode` consists of a `DepKind` and an opaque 
102-      /// GUID/fingerprint that will uniquely identify the node. This GUID/fingerprint 
103-      /// is usually constructed by computing a stable hash of the query-key that the 
104-      /// `DepNode` corresponds to. Consequently, it is not in general possible to go 
105-      /// back from hash to query-key (since hash functions are not reversible). For 
106-      /// this reason `force_from_dep_node()` is expected to fail from time to time 
107-      /// because we just cannot find out, from the `DepNode` alone, what the 
108-      /// corresponding query-key is and therefore cannot re-run the query. 
109-      /// 
110-      /// The system deals with this case letting `try_mark_green` fail which forces 
111-      /// the root query to be re-evaluated. 
112-      /// 
113-      /// Now, if `force_from_dep_node()` would always fail, it would be pretty useless. 
114-      /// Fortunately, we can use some contextual information that will allow us to 
115-      /// reconstruct query-keys for certain kinds of `DepNode`s. In particular, we 
116-      /// enforce by construction that the GUID/fingerprint of certain `DepNode`s is a 
117-      /// valid `DefPathHash`. Since we also always build a huge table that maps every 
118-      /// `DefPathHash` in the current codebase to the corresponding `DefId`, we have 
119-      /// everything we need to re-run the query. 
120-      /// 
121-      /// Take the `mir_promoted` query as an example. Like many other queries, it 
122-      /// just has a single parameter: the `DefId` of the item it will compute the 
123-      /// validated MIR for. Now, when we call `force_from_dep_node()` on a `DepNode` 
124-      /// with kind `MirValidated`, we know that the GUID/fingerprint of the `DepNode` 
125-      /// is actually a `DefPathHash`, and can therefore just look up the corresponding 
126-      /// `DefId` in `tcx.def_path_hash_to_def_id`. 
127-      pub  force_from_dep_node :  Option < fn ( tcx :  TyCtxt < ' tcx > ,  dep_node :  DepNode )  -> bool > , 
128- 
129-     /// Invoke a query to put the on-disk cached value in memory. 
130-      pub  try_load_from_on_disk_cache :  Option < fn ( TyCtxt < ' tcx > ,  DepNode ) > , 
131- } 
132- 
133- impl  DepKind  { 
134-     #[ inline( always) ]  
135-     pub  fn  fingerprint_style ( self ,  tcx :  TyCtxt < ' _ > )  -> FingerprintStyle  { 
136-         // Only fetch the DepKindStruct once. 
137-         let  data = tcx. query_kind ( self ) ; 
138-         if  data. is_anon  { 
139-             return  FingerprintStyle :: Opaque ; 
140-         } 
141-         data. fingerprint_style 
142-     } 
143- } 
144- 
14572macro_rules!  define_dep_nodes { 
14673    ( 
14774     $( $( #[ $attr: meta] ) * 
@@ -159,7 +86,7 @@ macro_rules! define_dep_nodes {
15986            $(  $(  #[ $attr]  ) *  $variant) ,* 
16087        } 
16188
162-         fn  dep_kind_from_label_string( label:  & str )  -> Result <DepKind ,  ( ) > { 
89+         pub ( super )   fn  dep_kind_from_label_string( label:  & str )  -> Result <DepKind ,  ( ) > { 
16390            match  label { 
16491                $( stringify!( $variant)  => Ok ( DepKind :: $variant) , ) * 
16592                _ => Err ( ( ) ) , 
@@ -214,11 +141,6 @@ static_assert_size!(DepNode, 18);
214141static_assert_size ! ( DepNode ,  24 ) ; 
215142
216143pub  trait  DepNodeExt :  Sized  { 
217-     /// Construct a DepNode from the given DepKind and DefPathHash. This 
218-      /// method will assert that the given DepKind actually requires a 
219-      /// single DefId/DefPathHash parameter. 
220-      fn  from_def_path_hash ( tcx :  TyCtxt < ' _ > ,  def_path_hash :  DefPathHash ,  kind :  DepKind )  -> Self ; 
221- 
222144    /// Extracts the DefId corresponding to this DepNode. This will work 
223145     /// if two conditions are met: 
224146     /// 
@@ -243,14 +165,6 @@ pub trait DepNodeExt: Sized {
243165} 
244166
245167impl  DepNodeExt  for  DepNode  { 
246-     /// Construct a DepNode from the given DepKind and DefPathHash. This 
247-      /// method will assert that the given DepKind actually requires a 
248-      /// single DefId/DefPathHash parameter. 
249-      fn  from_def_path_hash ( tcx :  TyCtxt < ' _ > ,  def_path_hash :  DefPathHash ,  kind :  DepKind )  -> DepNode  { 
250-         debug_assert ! ( kind. fingerprint_style( tcx)  == FingerprintStyle :: DefPathHash ) ; 
251-         DepNode  {  kind,  hash :  def_path_hash. 0 . into ( )  } 
252-     } 
253- 
254168    /// Extracts the DefId corresponding to this DepNode. This will work 
255169     /// if two conditions are met: 
256170     /// 
@@ -262,7 +176,7 @@ impl DepNodeExt for DepNode {
262176     /// refers to something from the previous compilation session that 
263177     /// has been removed. 
264178     fn  extract_def_id < ' tcx > ( & self ,  tcx :  TyCtxt < ' tcx > )  -> Option < DefId >  { 
265-         if  self . kind . fingerprint_style ( tcx )  == FingerprintStyle :: DefPathHash  { 
179+         if  tcx . fingerprint_style ( self . kind )  == FingerprintStyle :: DefPathHash  { 
266180            Some ( tcx. def_path_hash_to_def_id ( DefPathHash ( self . hash . into ( ) ) ,  & mut  || { 
267181                panic ! ( "Failed to extract DefId: {:?} {}" ,  self . kind,  self . hash) 
268182            } ) ) 
@@ -279,7 +193,7 @@ impl DepNodeExt for DepNode {
279193    )  -> Result < DepNode ,  ( ) >  { 
280194        let  kind = dep_kind_from_label_string ( label) ?; 
281195
282-         match  kind . fingerprint_style ( tcx )  { 
196+         match  tcx . fingerprint_style ( kind )  { 
283197            FingerprintStyle :: Opaque  => Err ( ( ) ) , 
284198            FingerprintStyle :: Unit  => Ok ( DepNode :: new_no_params ( tcx,  kind) ) , 
285199            FingerprintStyle :: DefPathHash  => { 
0 commit comments