Skip to content

Commit 4a6de8e

Browse files
committed
Inline queries for crate_name, crate_types and stable_crate_id
All of them are not exported from rustc_interface and used only during global_ctxt(). Inlining them makes it easier to follow the order of queries and slightly reduces line count.
1 parent ef2da4a commit 4a6de8e

File tree

1 file changed

+19
-45
lines changed

1 file changed

+19
-45
lines changed

compiler/rustc_interface/src/queries.rs

+19-45
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)