@@ -86,9 +86,6 @@ pub struct Queries<'tcx> {
86
86
87
87
parse : Query < ast:: Crate > ,
88
88
pre_configure : Query < ( ast:: Crate , ast:: AttrVec ) > ,
89
- crate_name : Query < Symbol > ,
90
- crate_types : Query < Vec < CrateType > > ,
91
- stable_crate_id : Query < StableCrateId > ,
92
89
// This just points to what's in `gcx_cell`.
93
90
gcx : Query < & ' tcx GlobalCtxt < ' tcx > > ,
94
91
}
@@ -102,9 +99,6 @@ impl<'tcx> Queries<'tcx> {
102
99
hir_arena : WorkerLocal :: new ( |_| rustc_hir:: Arena :: default ( ) ) ,
103
100
parse : Default :: default ( ) ,
104
101
pre_configure : Default :: default ( ) ,
105
- crate_name : Default :: default ( ) ,
106
- crate_types : Default :: default ( ) ,
107
- stable_crate_id : Default :: default ( ) ,
108
102
gcx : Default :: default ( ) ,
109
103
}
110
104
}
@@ -138,39 +132,12 @@ impl<'tcx> Queries<'tcx> {
138
132
} )
139
133
}
140
134
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 > > {
171
140
let sess = self . session ( ) ;
172
- let crate_name = * self . crate_name ( ) ?. borrow ( ) ;
173
- let stable_crate_id = * self . stable_crate_id ( ) ?. borrow ( ) ;
174
141
175
142
// `load_dep_graph` can only be called after `prepare_session_directory`.
176
143
rustc_incremental:: prepare_session_directory ( sess, crate_name, stable_crate_id) ?;
@@ -211,16 +178,23 @@ impl<'tcx> Queries<'tcx> {
211
178
212
179
pub fn global_ctxt ( & ' tcx self ) -> Result < QueryResult < ' _ , & ' tcx GlobalCtxt < ' tcx > > > {
213
180
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
+
214
194
// Compute the dependency graph (in the background). We want to do this as early as
215
195
// 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 ) ?;
217
197
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 ( ) ;
224
198
let lint_store = Lrc :: new ( passes:: create_lint_store (
225
199
sess,
226
200
& * self . codegen_backend ( ) . metadata_loader ( ) ,
0 commit comments