From d46e732e393a01884115e4506968606bd4da0d17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20K=C3=A5re=20Alsaker?= Date: Tue, 21 May 2019 00:40:32 +0200 Subject: [PATCH] Update crate_variances and inferred_outlives_crate --- src/librustc/arena.rs | 2 ++ src/librustc/query/mod.rs | 4 ++-- src/librustc_typeck/outlives/mod.rs | 5 ++--- src/librustc_typeck/variance/mod.rs | 5 ++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/librustc/arena.rs b/src/librustc/arena.rs index 6312a6cfcd651..c179b05683d1c 100644 --- a/src/librustc/arena.rs +++ b/src/librustc/arena.rs @@ -99,6 +99,8 @@ macro_rules! arena_types { [few] reachable_non_generics: rustc::util::nodemap::DefIdMap< rustc::middle::exported_symbols::SymbolExportLevel >, + [few] crate_variances: rustc::ty::CrateVariancesMap<'tcx>, + [few] inferred_outlives_crate: rustc::ty::CratePredicatesMap<'tcx>, ], $tcx); ) } diff --git a/src/librustc/query/mod.rs b/src/librustc/query/mod.rs index 68d3cb65729d2..c03cd7e268ef5 100644 --- a/src/librustc/query/mod.rs +++ b/src/librustc/query/mod.rs @@ -244,7 +244,7 @@ rustc_queries! { query static_mutability(_: DefId) -> Option {} /// Gets a map with the variance of every item; use `item_variance` instead. - query crate_variances(_: CrateNum) -> Lrc> { + query crate_variances(_: CrateNum) -> &'tcx ty::CrateVariancesMap<'tcx> { desc { "computing the variances for items in this crate" } } @@ -255,7 +255,7 @@ rustc_queries! { TypeChecking { /// Maps from thee `DefId` of a type to its (inferred) outlives. query inferred_outlives_crate(_: CrateNum) - -> Lrc> { + -> &'tcx ty::CratePredicatesMap<'tcx> { desc { "computing the inferred outlives predicates for items in this crate" } } } diff --git a/src/librustc_typeck/outlives/mod.rs b/src/librustc_typeck/outlives/mod.rs index a6b5b99982ec6..57787a75e4aef 100644 --- a/src/librustc_typeck/outlives/mod.rs +++ b/src/librustc_typeck/outlives/mod.rs @@ -4,7 +4,6 @@ use rustc::hir::def_id::{CrateNum, DefId, LOCAL_CRATE}; use rustc::ty::query::Providers; use rustc::ty::subst::UnpackedKind; use rustc::ty::{self, CratePredicatesMap, TyCtxt}; -use rustc_data_structures::sync::Lrc; use syntax::symbol::sym; mod explicit; @@ -74,7 +73,7 @@ fn inferred_outlives_of<'a, 'tcx>( fn inferred_outlives_crate<'tcx>( tcx: TyCtxt<'_, 'tcx, 'tcx>, crate_num: CrateNum, -) -> Lrc> { +) -> &'tcx CratePredicatesMap<'tcx> { assert_eq!(crate_num, LOCAL_CRATE); // Compute a map from each struct/enum/union S to the **explicit** @@ -120,7 +119,7 @@ fn inferred_outlives_crate<'tcx>( (def_id, &*predicates) }).collect(); - Lrc::new(ty::CratePredicatesMap { + tcx.arena.alloc(ty::CratePredicatesMap { predicates, }) } diff --git a/src/librustc_typeck/variance/mod.rs b/src/librustc_typeck/variance/mod.rs index 88ee1d79f5435..47c4a9b39c865 100644 --- a/src/librustc_typeck/variance/mod.rs +++ b/src/librustc_typeck/variance/mod.rs @@ -9,7 +9,6 @@ use hir::Node; use rustc::hir::def_id::{CrateNum, DefId, LOCAL_CRATE}; use rustc::ty::{self, CrateVariancesMap, TyCtxt}; use rustc::ty::query::Providers; -use rustc_data_structures::sync::Lrc; /// Defines the `TermsContext` basically houses an arena where we can /// allocate terms. @@ -36,12 +35,12 @@ pub fn provide(providers: &mut Providers<'_>) { } fn crate_variances<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, crate_num: CrateNum) - -> Lrc> { + -> &'tcx CrateVariancesMap<'tcx> { assert_eq!(crate_num, LOCAL_CRATE); let mut arena = arena::TypedArena::default(); let terms_cx = terms::determine_parameters_to_be_inferred(tcx, &mut arena); let constraints_cx = constraints::add_constraints_from_crate(terms_cx); - Lrc::new(solve::solve_constraints(constraints_cx)) + tcx.arena.alloc(solve::solve_constraints(constraints_cx)) } fn variances_of<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, item_def_id: DefId)