]> git.lizzy.rs Git - rust.git/commitdiff
trans/metadata: Remove obsolete CrateStore::can_have_local_instance()
authorMichael Woerister <michaelwoerister@posteo.net>
Mon, 9 Jan 2017 16:27:20 +0000 (11:27 -0500)
committerMichael Woerister <michaelwoerister@posteo.net>
Mon, 9 Jan 2017 16:27:20 +0000 (11:27 -0500)
src/librustc/middle/cstore.rs
src/librustc_metadata/cstore_impl.rs
src/librustc_metadata/decoder.rs
src/librustc_trans/collector.rs

index 19dafcd887ea812ed166c8a6000c16e24b1c14e5..496a3d4a498478ce148a59f0d7d9170ec81a7267 100644 (file)
@@ -259,11 +259,6 @@ fn maybe_get_item_body<'a>(&'tcx self, tcx: TyCtxt<'a, 'tcx, 'tcx>, def: DefId)
     fn get_item_mir<'a>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>, def: DefId) -> Mir<'tcx>;
     fn is_item_mir_available(&self, def: DefId) -> bool;
 
-    /// Take a look if we need to inline or monomorphize this. If so, we
-    /// will emit code for this item in the local crate, and thus
-    /// create a translation item for it.
-    fn can_have_local_instance<'a>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>, def: DefId) -> bool;
-
     // This is basically a 1-based range of ints, which is a little
     // silly - I may fix that.
     fn crates(&self) -> Vec<CrateNum>;
@@ -438,9 +433,6 @@ fn get_item_mir<'a>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>, def: DefId)
     fn is_item_mir_available(&self, def: DefId) -> bool {
         bug!("is_item_mir_available")
     }
-    fn can_have_local_instance<'a>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>, def: DefId) -> bool {
-        bug!("can_have_local_instance")
-    }
 
     // This is basically a 1-based range of ints, which is a little
     // silly - I may fix that.
index 1dcb1689d49e109084e66bbf945d27391113b9f2..7cd26df0246eab36eca935717958451e8f723384 100644 (file)
@@ -470,15 +470,6 @@ fn is_item_mir_available(&self, def: DefId) -> bool {
         self.get_crate_data(def.krate).is_item_mir_available(def.index)
     }
 
-    fn can_have_local_instance<'a>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>, def: DefId) -> bool {
-        if def.is_local() {
-            true
-        } else {
-            self.dep_graph.read(DepNode::MetaData(def));
-            self.get_crate_data(def.krate).can_have_local_instance(tcx, def.index)
-        }
-    }
-
     fn crates(&self) -> Vec<CrateNum>
     {
         let mut result = vec![];
index 3add92191df97233a815b2feb56967ca555a5cae..4abdee345c2985011e4a2d9e87954652ef95d47f 100644 (file)
@@ -445,14 +445,6 @@ fn to_def(&self, did: DefId) -> Option<Def> {
             EntryKind::Closure(_) => return None,
         })
     }
-    fn is_const_fn(&self, meta: &CrateMetadata) -> bool {
-        let constness = match *self {
-            EntryKind::Method(data) => data.decode(meta).fn_data.constness,
-            EntryKind::Fn(data) => data.decode(meta).constness,
-            _ => hir::Constness::NotConst,
-        };
-        constness == hir::Constness::Const
-    }
 }
 
 impl<'a, 'tcx> CrateMetadata {
@@ -804,29 +796,6 @@ pub fn is_item_mir_available(&self, id: DefIndex) -> bool {
         self.maybe_entry(id).and_then(|item| item.decode(self).mir).is_some()
     }
 
-    pub fn can_have_local_instance(&self,
-                                   tcx: TyCtxt<'a, 'tcx, 'tcx>,
-                                   id: DefIndex) -> bool {
-        self.maybe_entry(id).map_or(false, |item| {
-            let item = item.decode(self);
-            // if we don't have a MIR, then this item was never meant to be locally instantiated
-            // or we have a bug in the metadata serialization
-            item.mir.is_some() && (
-                // items with generics always can have local instances if monomorphized
-                item.generics.map_or(false, |generics| {
-                    let generics = generics.decode((self, tcx));
-                    generics.parent_types != 0 || !generics.types.is_empty()
-                }) ||
-                match item.kind {
-                    EntryKind::Closure(_) => true,
-                    _ => false,
-                } ||
-                item.kind.is_const_fn(self) ||
-                attr::requests_inline(&self.get_attributes(&item))
-            )
-        })
-    }
-
     pub fn maybe_get_item_mir(&self,
                               tcx: TyCtxt<'a, 'tcx, 'tcx>,
                               id: DefIndex)
@@ -1043,7 +1012,12 @@ pub fn get_macro(&self, id: DefIndex) -> (ast::Name, MacroDef) {
     }
 
     pub fn is_const_fn(&self, id: DefIndex) -> bool {
-        self.entry(id).kind.is_const_fn(self)
+        let constness = match self.entry(id).kind {
+            EntryKind::Method(data) => data.decode(self).fn_data.constness,
+            EntryKind::Fn(data) => data.decode(self).constness,
+            _ => hir::Constness::NotConst,
+        };
+        constness == hir::Constness::Const
     }
 
     pub fn is_foreign_item(&self, id: DefIndex) -> bool {
index ac182ae5606bc25d72f59125492c49aaa7ac2f72..5e409a2aa5520e076afd3a7d1dbb16d05f9c2c9b 100644 (file)
@@ -698,7 +698,7 @@ fn should_trans_locally<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
             // crate
             false
         } else {
-            if !tcx.sess.cstore.can_have_local_instance(tcx, def_id) {
+            if !tcx.sess.cstore.is_item_mir_available(def_id) {
                 bug!("Cannot create local trans-item for {:?}", def_id)
             }
             true