Move local Arena to Queries.

This commit is contained in:
Camille GILLOT 2019-11-26 23:16:48 +01:00
parent 7b71e9a9df
commit 7e72b36299
3 changed files with 13 additions and 4 deletions

View File

@ -995,7 +995,7 @@ impl<'tcx> Deref for TyCtxt<'tcx> {
}
pub struct GlobalCtxt<'tcx> {
pub arena: WorkerLocal<Arena<'tcx>>,
pub arena: &'tcx WorkerLocal<Arena<'tcx>>,
interners: CtxtInterners<'tcx>,
@ -1170,6 +1170,7 @@ impl<'tcx> TyCtxt<'tcx> {
local_providers: ty::query::Providers<'tcx>,
extern_providers: ty::query::Providers<'tcx>,
arenas: &'tcx AllArenas,
local_arena: &'tcx WorkerLocal<Arena<'tcx>>,
resolutions: ty::ResolverOutputs,
hir: hir_map::Map<'tcx>,
on_disk_query_result_cache: query::OnDiskCache<'tcx>,
@ -1225,7 +1226,7 @@ impl<'tcx> TyCtxt<'tcx> {
sess: s,
lint_store,
cstore,
arena: WorkerLocal::new(|_| Arena::default()),
arena: local_arena,
interners,
dep_graph,
prof: s.prof.clone(),

View File

@ -3,6 +3,7 @@ use crate::util;
use crate::proc_macro_decls;
use log::{info, warn, log_enabled};
use rustc::arena::Arena;
use rustc::dep_graph::DepGraph;
use rustc::hir;
use rustc::hir::lowering::lower_crate;
@ -22,7 +23,7 @@ use rustc_codegen_ssa::back::link::emit_metadata;
use rustc_codegen_utils::codegen_backend::CodegenBackend;
use rustc_codegen_utils::link::filename_for_metadata;
use rustc_data_structures::{box_region_allow_access, declare_box_region_type, parallel};
use rustc_data_structures::sync::{Lrc, Once, ParallelIterator, par_iter};
use rustc_data_structures::sync::{Lrc, Once, ParallelIterator, par_iter, WorkerLocal};
use rustc_errors::PResult;
use rustc_incremental;
use rustc_metadata::cstore;
@ -764,6 +765,7 @@ pub fn create_global_ctxt<'gcx>(
crate_name: &str,
global_ctxt: &'gcx Once<GlobalCtxt<'gcx>>,
arenas: &'gcx Once<AllArenas>,
local_arena: &'gcx WorkerLocal<Arena<'gcx>>,
) -> BoxedGlobalCtxt<'gcx> {
let sess = &compiler.session();
let defs = mem::take(&mut resolver_outputs.definitions);
@ -798,6 +800,7 @@ pub fn create_global_ctxt<'gcx>(
local_providers,
extern_providers,
&arenas,
local_arena,
resolver_outputs,
hir_map,
query_result_on_disk_cache,

View File

@ -2,10 +2,11 @@ use crate::interface::{Compiler, Result};
use crate::passes::{self, BoxedResolver, BoxedGlobalCtxt};
use rustc_incremental::DepGraphFuture;
use rustc_data_structures::sync::{Lrc, Once};
use rustc_data_structures::sync::{Lrc, Once, WorkerLocal};
use rustc_codegen_utils::codegen_backend::CodegenBackend;
use rustc::session::config::{OutputFilenames, OutputType};
use rustc::util::common::{time, ErrorReported};
use rustc::arena::Arena;
use rustc::hir;
use rustc::lint;
use rustc::session::Session;
@ -74,6 +75,8 @@ pub struct Queries<'comp> {
arenas: Once<AllArenas>,
forest: Once<hir::map::Forest>,
local_arena: WorkerLocal<Arena<'comp>>,
dep_graph_future: Query<Option<DepGraphFuture>>,
parse: Query<ast::Crate>,
crate_name: Query<String>,
@ -93,6 +96,7 @@ impl<'comp> Queries<'comp> {
gcx: Once::new(),
arenas: Once::new(),
forest: Once::new(),
local_arena: WorkerLocal::new(|_| Arena::default()),
dep_graph_future: Default::default(),
parse: Default::default(),
crate_name: Default::default(),
@ -265,6 +269,7 @@ impl<'comp> Queries<'comp> {
&crate_name,
&self.gcx,
&self.arenas,
&self.local_arena,
))
})
}