about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc/ty/context.rs5
-rw-r--r--src/librustc_interface/passes.rs5
-rw-r--r--src/librustc_interface/queries.rs7
3 files changed, 13 insertions, 4 deletions
diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs
index 95456581169..91afa0153c8 100644
--- a/src/librustc/ty/context.rs
+++ b/src/librustc/ty/context.rs
@@ -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(),
diff --git a/src/librustc_interface/passes.rs b/src/librustc_interface/passes.rs
index b264f1d3fe7..963663e7d03 100644
--- a/src/librustc_interface/passes.rs
+++ b/src/librustc_interface/passes.rs
@@ -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,
diff --git a/src/librustc_interface/queries.rs b/src/librustc_interface/queries.rs
index a90483f8c71..4e9e476c64b 100644
--- a/src/librustc_interface/queries.rs
+++ b/src/librustc_interface/queries.rs
@@ -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,
             ))
         })
     }