@@ -6,49 +6,25 @@ use rustc_session::Session;
66#[ macro_use]  
77mod  dep_node; 
88
9+ pub  use  rustc_query_system:: dep_graph:: debug:: EdgeFilter ; 
10+ use  rustc_query_system:: dep_graph:: dep_node:: default_dep_kind_debug; 
911pub  use  rustc_query_system:: dep_graph:: { 
10-     debug:: DepNodeFilter ,  hash_result,  DepContext ,  DepNodeColor ,  DepNodeIndex , 
11-     SerializedDepNodeIndex ,  WorkProduct ,  WorkProductId ,  WorkProductMap , 
12+     debug:: DepNodeFilter ,  hash_result,  DepContext ,  DepGraphQuery ,  DepNodeColor ,  DepNodeIndex ,  Deps , 
13+     SerializedDepGraph ,  SerializedDepNodeIndex ,  TaskDeps ,  TaskDepsRef ,  WorkProduct ,  WorkProductId , 
14+     WorkProductMap , 
1215} ; 
1316
14- pub  use  dep_node:: { label_strs,  DepKind ,  DepNode ,  DepNodeExt } ; 
17+ pub  use  dep_node:: { dep_kinds ,   label_strs,  DepKind ,  DepNode ,  DepNodeExt } ; 
1518pub ( crate )  use  dep_node:: { make_compile_codegen_unit,  make_compile_mono_item} ; 
1619
17- pub  type  DepGraph  = rustc_query_system:: dep_graph:: DepGraph < DepKind > ; 
20+ pub  type  DepGraph  = rustc_query_system:: dep_graph:: DepGraph < DepsType > ; 
1821
19- pub  type  TaskDeps  = rustc_query_system:: dep_graph:: TaskDeps < DepKind > ; 
20- pub  type  TaskDepsRef < ' a >  = rustc_query_system:: dep_graph:: TaskDepsRef < ' a ,  DepKind > ; 
21- pub  type  DepGraphQuery  = rustc_query_system:: dep_graph:: DepGraphQuery < DepKind > ; 
22- pub  type  SerializedDepGraph  = rustc_query_system:: dep_graph:: SerializedDepGraph < DepKind > ; 
23- pub  type  EdgeFilter  = rustc_query_system:: dep_graph:: debug:: EdgeFilter < DepKind > ; 
2422pub  type  DepKindStruct < ' tcx >  = rustc_query_system:: dep_graph:: DepKindStruct < TyCtxt < ' tcx > > ; 
2523
26- impl  rustc_query_system:: dep_graph:: DepKind  for  DepKind  { 
27-     const  NULL :  Self  = DepKind :: Null ; 
28-     const  RED :  Self  = DepKind :: Red ; 
29-     const  MAX :  u16  = DepKind :: VARIANTS  - 1 ; 
30- 
31-     fn  debug_node ( node :  & DepNode ,  f :  & mut  std:: fmt:: Formatter < ' _ > )  -> std:: fmt:: Result  { 
32-         write ! ( f,  "{:?}(" ,  node. kind) ?; 
33- 
34-         ty:: tls:: with_opt ( |opt_tcx| { 
35-             if  let  Some ( tcx)  = opt_tcx { 
36-                 if  let  Some ( def_id)  = node. extract_def_id ( tcx)  { 
37-                     write ! ( f,  "{}" ,  tcx. def_path_debug_str( def_id) ) ?; 
38-                 }  else  if  let  Some ( ref  s)  = tcx. dep_graph . dep_node_debug_str ( * node)  { 
39-                     write ! ( f,  "{s}" ) ?; 
40-                 }  else  { 
41-                     write ! ( f,  "{}" ,  node. hash) ?; 
42-                 } 
43-             }  else  { 
44-                 write ! ( f,  "{}" ,  node. hash) ?; 
45-             } 
46-             Ok ( ( ) ) 
47-         } ) ?; 
48- 
49-         write ! ( f,  ")" ) 
50-     } 
24+ #[ derive( Clone ) ]  
25+ pub  struct  DepsType ; 
5126
27+ impl  Deps  for  DepsType  { 
5228    fn  with_deps < OP ,  R > ( task_deps :  TaskDepsRef < ' _ > ,  op :  OP )  -> R 
5329    where 
5430        OP :  FnOnce ( )  -> R , 
@@ -70,24 +46,13 @@ impl rustc_query_system::dep_graph::DepKind for DepKind {
7046        } ) 
7147    } 
7248
73-     #[ track_caller]  
74-     #[ inline]  
75-     fn  from_u16 ( u :  u16 )  -> Self  { 
76-         if  u > Self :: MAX  { 
77-             panic ! ( "Invalid DepKind {u}" ) ; 
78-         } 
79-         // SAFETY: See comment on DepKind::VARIANTS 
80-         unsafe  {  std:: mem:: transmute ( u)  } 
81-     } 
82- 
83-     #[ inline]  
84-     fn  to_u16 ( self )  -> u16  { 
85-         self  as  u16 
86-     } 
49+     const  DEP_KIND_NULL :  DepKind  = dep_kinds:: Null ; 
50+     const  DEP_KIND_RED :  DepKind  = dep_kinds:: Red ; 
51+     const  DEP_KIND_MAX :  u16  = dep_node:: DEP_KIND_VARIANTS  - 1 ; 
8752} 
8853
8954impl < ' tcx >  DepContext  for  TyCtxt < ' tcx >  { 
90-     type  DepKind  = DepKind ; 
55+     type  Deps  = DepsType ; 
9156
9257    #[ inline]  
9358    fn  with_stable_hashing_context < R > ( self ,  f :  impl  FnOnce ( StableHashingContext < ' _ > )  -> R )  -> R  { 
@@ -111,6 +76,37 @@ impl<'tcx> DepContext for TyCtxt<'tcx> {
11176
11277    #[ inline]  
11378    fn  dep_kind_info ( & self ,  dk :  DepKind )  -> & DepKindStruct < ' tcx >  { 
114-         & self . query_kinds [ dk  as   usize ] 
79+         & self . query_kinds [ dk. as_usize ( ) ] 
11580    } 
11681} 
82+ 
83+ pub  fn  dep_kind_debug ( kind :  DepKind ,  f :  & mut  std:: fmt:: Formatter < ' _ > )  -> std:: fmt:: Result  { 
84+     ty:: tls:: with_opt ( |opt_tcx| { 
85+         if  let  Some ( tcx)  = opt_tcx { 
86+             write ! ( f,  "{}" ,  tcx. dep_kind_info( kind) . name) 
87+         }  else  { 
88+             default_dep_kind_debug ( kind,  f) 
89+         } 
90+     } ) 
91+ } 
92+ 
93+ pub  fn  dep_node_debug ( node :  DepNode ,  f :  & mut  std:: fmt:: Formatter < ' _ > )  -> std:: fmt:: Result  { 
94+     write ! ( f,  "{:?}(" ,  node. kind) ?; 
95+ 
96+     ty:: tls:: with_opt ( |opt_tcx| { 
97+         if  let  Some ( tcx)  = opt_tcx { 
98+             if  let  Some ( def_id)  = node. extract_def_id ( tcx)  { 
99+                 write ! ( f,  "{}" ,  tcx. def_path_debug_str( def_id) ) ?; 
100+             }  else  if  let  Some ( ref  s)  = tcx. dep_graph . dep_node_debug_str ( node)  { 
101+                 write ! ( f,  "{s}" ) ?; 
102+             }  else  { 
103+                 write ! ( f,  "{}" ,  node. hash) ?; 
104+             } 
105+         }  else  { 
106+             write ! ( f,  "{}" ,  node. hash) ?; 
107+         } 
108+         Ok ( ( ) ) 
109+     } ) ?; 
110+ 
111+     write ! ( f,  ")" ) 
112+ } 
0 commit comments