about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2019-11-27 13:32:28 +0100
committerCamille GILLOT <gillot.camille@gmail.com>2019-11-27 13:32:28 +0100
commit1e12f39d83eeddd523e384e20ab4f1fa56eb8888 (patch)
tree73876230e92686da103ed24ebddc2fe3ea00d16f
parente321ba989c9f03748d5c19aead84edfcc9e9e69a (diff)
Allocate HIR Forest on arena.
-rw-r--r--src/librustc/arena.rs1
-rw-r--r--src/librustc_interface/queries.rs4
2 files changed, 2 insertions, 3 deletions
diff --git a/src/librustc/arena.rs b/src/librustc/arena.rs
index 9b13a910c61..193b04eabb3 100644
--- a/src/librustc/arena.rs
+++ b/src/librustc/arena.rs
@@ -93,6 +93,7 @@ macro_rules! arena_types {
                         rustc::hir::def_id::CrateNum
                     >
                 >,
+            [few] hir_forest: rustc::hir::map::Forest,
             [few] diagnostic_items: rustc_data_structures::fx::FxHashMap<
                 syntax::symbol::Symbol,
                 rustc::hir::def_id::DefId,
diff --git a/src/librustc_interface/queries.rs b/src/librustc_interface/queries.rs
index 53ab5eb990d..6103d42c5db 100644
--- a/src/librustc_interface/queries.rs
+++ b/src/librustc_interface/queries.rs
@@ -72,7 +72,6 @@ impl<T> Default for Query<T> {
 pub struct Queries<'tcx> {
     compiler: &'tcx Compiler,
     gcx: Once<GlobalCtxt<'tcx>>,
-    forest: Once<hir::map::Forest>,
 
     all_arenas: AllArenas,
     arena: WorkerLocal<Arena<'tcx>>,
@@ -94,7 +93,6 @@ impl<'tcx> Queries<'tcx> {
         Queries {
             compiler,
             gcx: Once::new(),
-            forest: Once::new(),
             all_arenas: AllArenas::new(),
             arena: WorkerLocal::new(|_| Arena::default()),
             dep_graph_future: Default::default(),
@@ -236,7 +234,7 @@ impl<'tcx> Queries<'tcx> {
                     &krate
                 )
             })?;
-            let hir = self.forest.init_locking(|| hir);
+            let hir = self.arena.alloc(hir);
             Ok((hir, Steal::new(BoxedResolver::to_resolver_outputs(resolver))))
         })
     }