From b164a2da63530d1e5f67415a5654ccb4f9c68099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20K=C3=A5re=20Alsaker?= Date: Fri, 30 Nov 2018 20:34:25 +0100 Subject: [PATCH] Update trait_impls_of --- src/librustc/arena.rs | 1 + src/librustc/query/mod.rs | 2 +- src/librustc/ty/trait_def.rs | 5 ++--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/librustc/arena.rs b/src/librustc/arena.rs index af212741e9f..bdec2dc3b9d 100644 --- a/src/librustc/arena.rs +++ b/src/librustc/arena.rs @@ -19,6 +19,7 @@ macro_rules! arena_types { [] region_scope_tree: rustc::middle::region::ScopeTree, [] item_local_set: rustc::util::nodemap::ItemLocalSet, [decode] mir_const_qualif: rustc_data_structures::bit_set::BitSet, + [] trait_impls_of: rustc::ty::trait_def::TraitImpls, ], $tcx); ) } diff --git a/src/librustc/query/mod.rs b/src/librustc/query/mod.rs index d7e37862b88..b56b4046830 100644 --- a/src/librustc/query/mod.rs +++ b/src/librustc/query/mod.rs @@ -540,7 +540,7 @@ rustc_queries! { } TypeChecking { - query trait_impls_of(key: DefId) -> Lrc { + query trait_impls_of(key: DefId) -> &'tcx ty::trait_def::TraitImpls { desc { |tcx| "trait impls of `{}`", tcx.def_path_str(key) } } query specialization_graph_of(_: DefId) -> &'tcx specialization_graph::Graph {} diff --git a/src/librustc/ty/trait_def.rs b/src/librustc/ty/trait_def.rs index 58f21893de1..a0b409bc400 100644 --- a/src/librustc/ty/trait_def.rs +++ b/src/librustc/ty/trait_def.rs @@ -10,7 +10,6 @@ use crate::ty::{Ty, TyCtxt}; use rustc_data_structures::fx::FxHashMap; use rustc_data_structures::stable_hasher::{HashStable, StableHasher, StableHasherResult}; -use rustc_data_structures::sync::Lrc; use rustc_macros::HashStable; /// A trait's definition with type information. @@ -151,7 +150,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { // Query provider for `trait_impls_of`. pub(super) fn trait_impls_of_provider<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, trait_id: DefId) - -> Lrc { + -> &'tcx TraitImpls { let mut impls = TraitImpls::default(); { @@ -188,7 +187,7 @@ pub(super) fn trait_impls_of_provider<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, } } - Lrc::new(impls) + tcx.arena.alloc(impls) } impl<'a> HashStable> for TraitImpls {