diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2021-05-23 21:42:16 +0200 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2021-06-30 20:31:55 +0200 |
| commit | e05cd155feaafec2b94cd11083e8425094ad8806 (patch) | |
| tree | d1184c0713db687c216d14f0497b28232c0d163a | |
| parent | b80f720a2af0ccad54a1236063888aa9418cdf0f (diff) | |
| download | rust-e05cd155feaafec2b94cd11083e8425094ad8806.tar.gz rust-e05cd155feaafec2b94cd11083e8425094ad8806.zip | |
Move lowering to create_global_ctxt.
| -rw-r--r-- | compiler/rustc_interface/src/passes.rs | 24 | ||||
| -rw-r--r-- | compiler/rustc_interface/src/queries.rs | 16 |
2 files changed, 16 insertions, 24 deletions
diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs index 5ef2b11fffd..e08c8faaa52 100644 --- a/compiler/rustc_interface/src/passes.rs +++ b/compiler/rustc_interface/src/passes.rs @@ -458,15 +458,9 @@ pub fn lower_to_hir<'res, 'tcx>( sess: &'tcx Session, lint_store: &LintStore, resolver: &'res mut Resolver<'_>, - dep_graph: &'res DepGraph, krate: &'res ast::Crate, arena: &'tcx rustc_ast_lowering::Arena<'tcx>, ) -> Crate<'tcx> { - // We're constructing the HIR here; we don't care what we will - // read, since we haven't even constructed the *input* to - // incr. comp. yet. - dep_graph.assert_ignored(); - // Lower AST to HIR. let hir_crate = rustc_ast_lowering::lower_crate( sess, @@ -783,17 +777,27 @@ impl<'tcx> QueryContext<'tcx> { pub fn create_global_ctxt<'tcx>( compiler: &'tcx Compiler, lint_store: Lrc<LintStore>, - krate: &'tcx Crate<'tcx>, + krate: &ast::Crate, dep_graph: DepGraph, - resolver_outputs: ResolverOutputs, + resolver: Rc<RefCell<BoxedResolver>>, outputs: OutputFilenames, crate_name: &str, queries: &'tcx OnceCell<TcxQueries<'tcx>>, global_ctxt: &'tcx OnceCell<GlobalCtxt<'tcx>>, arena: &'tcx WorkerLocal<Arena<'tcx>>, + hir_arena: &'tcx WorkerLocal<rustc_ast_lowering::Arena<'tcx>>, ) -> QueryContext<'tcx> { + // We're constructing the HIR here; we don't care what we will + // read, since we haven't even constructed the *input* to + // incr. comp. yet. + dep_graph.assert_ignored(); + let sess = &compiler.session(); - let _timer = sess.timer("create_global_ctxt"); + let krate = resolver + .borrow_mut() + .access(|resolver| lower_to_hir(sess, &lint_store, resolver, krate, hir_arena)); + let krate = &*hir_arena.alloc(krate); + let resolver_outputs = BoxedResolver::to_resolver_outputs(resolver); let query_result_on_disk_cache = rustc_incremental::load_query_result_cache(sess); @@ -812,7 +816,7 @@ pub fn create_global_ctxt<'tcx>( let queries = queries.get_or_init(|| TcxQueries::new(local_providers, extern_providers)); let gcx = sess.time("setup_global_ctxt", || { - global_ctxt.get_or_init(|| { + global_ctxt.get_or_init(move || { TyCtxt::create_global_ctxt( sess, lint_store, diff --git a/compiler/rustc_interface/src/queries.rs b/compiler/rustc_interface/src/queries.rs index 6d887cce764..7b284e206e2 100644 --- a/compiler/rustc_interface/src/queries.rs +++ b/compiler/rustc_interface/src/queries.rs @@ -224,31 +224,19 @@ impl<'tcx> Queries<'tcx> { let crate_name = self.crate_name()?.peek().clone(); let outputs = self.prepare_outputs()?.peek().clone(); let (ref krate, ref resolver, ref lint_store) = &*self.expansion()?.peek(); - let resolver = resolver.steal(); let dep_graph = self.dep_graph()?.peek().clone(); - let krate = resolver.borrow_mut().access(|resolver| { - Ok(passes::lower_to_hir( - self.session(), - lint_store, - resolver, - &dep_graph, - &krate, - &self.hir_arena, - )) - })?; - let krate = self.hir_arena.alloc(krate); - let resolver_outputs = Steal::new(BoxedResolver::to_resolver_outputs(resolver)); Ok(passes::create_global_ctxt( self.compiler, lint_store.clone(), krate, dep_graph, - resolver_outputs.steal(), + resolver.steal(), outputs, &crate_name, &self.queries, &self.gcx, &self.arena, + &self.hir_arena, )) }) } |
