From d56d2fbaeac03d5f9cdebf65071ec199b8b80c4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20K=C3=A5re=20Alsaker?= Date: Fri, 30 Nov 2018 17:45:33 +0100 Subject: [PATCH] Update rvalue_promotable_map --- src/librustc/arena.rs | 1 + src/librustc/middle/expr_use_visitor.rs | 3 +-- src/librustc/middle/mem_categorization.rs | 5 ++--- src/librustc/query/mod.rs | 2 +- src/librustc_passes/rvalue_promotion.rs | 5 ++--- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/librustc/arena.rs b/src/librustc/arena.rs index 2c975f17dca..b8677280b10 100644 --- a/src/librustc/arena.rs +++ b/src/librustc/arena.rs @@ -17,6 +17,7 @@ macro_rules! arena_types { [few] mir_keys: rustc::util::nodemap::DefIdSet, [decode] specialization_graph: rustc::traits::specialization_graph::Graph, [] region_scope_tree: rustc::middle::region::ScopeTree, + [] item_local_set: rustc::util::nodemap::ItemLocalSet, ], $tcx); ) } diff --git a/src/librustc/middle/expr_use_visitor.rs b/src/librustc/middle/expr_use_visitor.rs index 217af7eea96..f00cd5584eb 100644 --- a/src/librustc/middle/expr_use_visitor.rs +++ b/src/librustc/middle/expr_use_visitor.rs @@ -17,7 +17,6 @@ use crate::middle::region; use crate::ty::{self, DefIdTree, TyCtxt, adjustment}; use crate::hir::{self, PatKind}; -use rustc_data_structures::sync::Lrc; use std::rc::Rc; use syntax::ptr::P; use syntax_pos::Span; @@ -272,7 +271,7 @@ impl<'a, 'tcx> ExprUseVisitor<'a, 'tcx, 'tcx> { param_env: ty::ParamEnv<'tcx>, region_scope_tree: &'a region::ScopeTree, tables: &'a ty::TypeckTables<'tcx>, - rvalue_promotable_map: Option>) + rvalue_promotable_map: Option<&'tcx ItemLocalSet>) -> Self { ExprUseVisitor { diff --git a/src/librustc/middle/mem_categorization.rs b/src/librustc/middle/mem_categorization.rs index a4a54ba1837..a5578ead9dd 100644 --- a/src/librustc/middle/mem_categorization.rs +++ b/src/librustc/middle/mem_categorization.rs @@ -77,7 +77,6 @@ use syntax_pos::Span; use std::borrow::Cow; use std::fmt; use std::hash::{Hash, Hasher}; -use rustc_data_structures::sync::Lrc; use rustc_data_structures::indexed_vec::Idx; use std::rc::Rc; use crate::util::nodemap::ItemLocalSet; @@ -290,7 +289,7 @@ pub struct MemCategorizationContext<'a, 'gcx: 'a+'tcx, 'tcx: 'a> { pub tcx: TyCtxt<'a, 'gcx, 'tcx>, pub region_scope_tree: &'a region::ScopeTree, pub tables: &'a ty::TypeckTables<'tcx>, - rvalue_promotable_map: Option>, + rvalue_promotable_map: Option<&'tcx ItemLocalSet>, infcx: Option<&'a InferCtxt<'a, 'gcx, 'tcx>>, } @@ -400,7 +399,7 @@ impl<'a, 'tcx> MemCategorizationContext<'a, 'tcx, 'tcx> { pub fn new(tcx: TyCtxt<'a, 'tcx, 'tcx>, region_scope_tree: &'a region::ScopeTree, tables: &'a ty::TypeckTables<'tcx>, - rvalue_promotable_map: Option>) + rvalue_promotable_map: Option<&'tcx ItemLocalSet>) -> MemCategorizationContext<'a, 'tcx, 'tcx> { MemCategorizationContext { tcx, diff --git a/src/librustc/query/mod.rs b/src/librustc/query/mod.rs index 4311cfbe2b1..18c977c43a7 100644 --- a/src/librustc/query/mod.rs +++ b/src/librustc/query/mod.rs @@ -504,7 +504,7 @@ rustc_queries! { } cache { true } } - query rvalue_promotable_map(key: DefId) -> Lrc { + query rvalue_promotable_map(key: DefId) -> &'tcx ItemLocalSet { desc { |tcx| "checking which parts of `{}` are promotable to static", tcx.def_path_str(key) diff --git a/src/librustc_passes/rvalue_promotion.rs b/src/librustc_passes/rvalue_promotion.rs index e2c5c4ee374..5553f131154 100644 --- a/src/librustc_passes/rvalue_promotion.rs +++ b/src/librustc_passes/rvalue_promotion.rs @@ -25,7 +25,6 @@ use rustc::ty::query::Providers; use rustc::ty::subst::{InternalSubsts, SubstsRef}; use rustc::util::nodemap::{ItemLocalSet, HirIdSet}; use rustc::hir; -use rustc_data_structures::sync::Lrc; use syntax_pos::{Span, DUMMY_SP}; use log::debug; use Promotability::*; @@ -53,7 +52,7 @@ fn const_is_rvalue_promotable_to_static<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, fn rvalue_promotable_map<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId) - -> Lrc + -> &'tcx ItemLocalSet { let outer_def_id = tcx.closure_base_def_id(def_id); if outer_def_id != def_id { @@ -77,7 +76,7 @@ fn rvalue_promotable_map<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, let body_id = tcx.hir().body_owned_by(hir_id); let _ = visitor.check_nested_body(body_id); - Lrc::new(visitor.result) + tcx.arena.alloc(visitor.result) } struct CheckCrateVisitor<'a, 'tcx: 'a> {