@@ -86,9 +86,6 @@ pub struct Queries<'tcx> {
8686
8787    parse :  Query < ast:: Crate > , 
8888    pre_configure :  Query < ( ast:: Crate ,  ast:: AttrVec ) > , 
89-     crate_name :  Query < Symbol > , 
90-     crate_types :  Query < Vec < CrateType > > , 
91-     stable_crate_id :  Query < StableCrateId > , 
9289    // This just points to what's in `gcx_cell`. 
9390    gcx :  Query < & ' tcx  GlobalCtxt < ' tcx > > , 
9491} 
@@ -102,9 +99,6 @@ impl<'tcx> Queries<'tcx> {
10299            hir_arena :  WorkerLocal :: new ( |_| rustc_hir:: Arena :: default ( ) ) , 
103100            parse :  Default :: default ( ) , 
104101            pre_configure :  Default :: default ( ) , 
105-             crate_name :  Default :: default ( ) , 
106-             crate_types :  Default :: default ( ) , 
107-             stable_crate_id :  Default :: default ( ) , 
108102            gcx :  Default :: default ( ) , 
109103        } 
110104    } 
@@ -138,39 +132,12 @@ impl<'tcx> Queries<'tcx> {
138132        } ) 
139133    } 
140134
141-     fn  crate_name ( & self )  -> Result < QueryResult < ' _ ,  Symbol > >  { 
142-         self . crate_name . compute ( || { 
143-             let  pre_configure_result = self . pre_configure ( ) ?; 
144-             let  ( _,  pre_configured_attrs)  = & * pre_configure_result. borrow ( ) ; 
145-             // parse `#[crate_name]` even if `--crate-name` was passed, to make sure it matches. 
146-             Ok ( find_crate_name ( self . session ( ) ,  pre_configured_attrs) ) 
147-         } ) 
148-     } 
149- 
150-     fn  crate_types ( & self )  -> Result < QueryResult < ' _ ,  Vec < CrateType > > >  { 
151-         self . crate_types . compute ( || { 
152-             let  pre_configure_result = self . pre_configure ( ) ?; 
153-             let  ( _,  pre_configured_attrs)  = & * pre_configure_result. borrow ( ) ; 
154-             Ok ( util:: collect_crate_types ( & self . session ( ) ,  & pre_configured_attrs) ) 
155-         } ) 
156-     } 
157- 
158-     fn  stable_crate_id ( & self )  -> Result < QueryResult < ' _ ,  StableCrateId > >  { 
159-         self . stable_crate_id . compute ( || { 
160-             let  sess = self . session ( ) ; 
161-             Ok ( StableCrateId :: new ( 
162-                 * self . crate_name ( ) ?. borrow ( ) , 
163-                 self . crate_types ( ) ?. borrow ( ) . contains ( & CrateType :: Executable ) , 
164-                 sess. opts . cg . metadata . clone ( ) , 
165-                 sess. cfg_version , 
166-             ) ) 
167-         } ) 
168-     } 
169- 
170-     fn  dep_graph_future ( & self )  -> Result < Option < DepGraphFuture > >  { 
135+     fn  dep_graph_future ( 
136+         & self , 
137+         crate_name :  Symbol , 
138+         stable_crate_id :  StableCrateId , 
139+     )  -> Result < Option < DepGraphFuture > >  { 
171140        let  sess = self . session ( ) ; 
172-         let  crate_name = * self . crate_name ( ) ?. borrow ( ) ; 
173-         let  stable_crate_id = * self . stable_crate_id ( ) ?. borrow ( ) ; 
174141
175142        // `load_dep_graph` can only be called after `prepare_session_directory`. 
176143        rustc_incremental:: prepare_session_directory ( sess,  crate_name,  stable_crate_id) ?; 
@@ -211,16 +178,23 @@ impl<'tcx> Queries<'tcx> {
211178
212179    pub  fn  global_ctxt ( & ' tcx  self )  -> Result < QueryResult < ' _ ,  & ' tcx  GlobalCtxt < ' tcx > > >  { 
213180        self . gcx . compute ( || { 
181+             let  sess = self . session ( ) ; 
182+             let  ( krate,  pre_configured_attrs)  = self . pre_configure ( ) ?. steal ( ) ; 
183+ 
184+             // parse `#[crate_name]` even if `--crate-name` was passed, to make sure it matches. 
185+             let  crate_name = find_crate_name ( self . session ( ) ,  & pre_configured_attrs) ; 
186+             let  crate_types = util:: collect_crate_types ( sess,  & pre_configured_attrs) ; 
187+             let  stable_crate_id = StableCrateId :: new ( 
188+                 crate_name, 
189+                 crate_types. contains ( & CrateType :: Executable ) , 
190+                 sess. opts . cg . metadata . clone ( ) , 
191+                 sess. cfg_version , 
192+             ) ; 
193+ 
214194            // Compute the dependency graph (in the background). We want to do this as early as 
215195            // possible, to give the DepGraph maximum time to load before `dep_graph` is called. 
216-             let  dep_graph_future = self . dep_graph_future ( ) ?; 
196+             let  dep_graph_future = self . dep_graph_future ( crate_name ,  stable_crate_id ) ?; 
217197
218-             let  crate_name = self . crate_name ( ) ?. steal ( ) ; 
219-             let  crate_types = self . crate_types ( ) ?. steal ( ) ; 
220-             let  stable_crate_id = self . stable_crate_id ( ) ?. steal ( ) ; 
221-             let  ( krate,  pre_configured_attrs)  = self . pre_configure ( ) ?. steal ( ) ; 
222- 
223-             let  sess = self . session ( ) ; 
224198            let  lint_store = Lrc :: new ( passes:: create_lint_store ( 
225199                sess, 
226200                & * self . codegen_backend ( ) . metadata_loader ( ) , 
0 commit comments