about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn Kåre Alsaker <john.kare.alsaker@gmail.com>2018-11-30 20:34:25 +0100
committerJohn Kåre Alsaker <john.kare.alsaker@gmail.com>2019-04-25 18:23:35 +0200
commitb164a2da63530d1e5f67415a5654ccb4f9c68099 (patch)
treeeedfcd6cfb04c5e0cde2b953b59d088b462c83f1
parent1fe0d4e3839883bb88777173cd7775425a251085 (diff)
downloadrust-b164a2da63530d1e5f67415a5654ccb4f9c68099.tar.gz
rust-b164a2da63530d1e5f67415a5654ccb4f9c68099.zip
Update trait_impls_of
-rw-r--r--src/librustc/arena.rs1
-rw-r--r--src/librustc/query/mod.rs2
-rw-r--r--src/librustc/ty/trait_def.rs5
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<rustc::mir::Local>,
+            [] 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<ty::trait_def::TraitImpls> {
+        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<TraitImpls> {
+                                                -> &'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<StableHashingContext<'a>> for TraitImpls {