@@ -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