Skip to content

Commit 33d5da1

Browse files
Clean up handling of symbol export information.
1 parent e5ee011 commit 33d5da1

File tree

8 files changed

+231
-209
lines changed

8 files changed

+231
-209
lines changed

src/librustc/middle/cstore.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ use ich;
3232
use ty::{self, TyCtxt};
3333
use session::{Session, CrateDisambiguator};
3434
use session::search_paths::PathKind;
35-
use util::nodemap::NodeSet;
3635

3736
use std::any::Any;
3837
use std::collections::BTreeMap;
@@ -258,8 +257,7 @@ pub trait CrateStore {
258257
// utility functions
259258
fn encode_metadata<'a, 'tcx>(&self,
260259
tcx: TyCtxt<'a, 'tcx, 'tcx>,
261-
link_meta: &LinkMeta,
262-
reachable: &NodeSet)
260+
link_meta: &LinkMeta)
263261
-> EncodedMetadata;
264262
fn metadata_encoding_version(&self) -> &[u8];
265263
}
@@ -342,8 +340,7 @@ impl CrateStore for DummyCrateStore {
342340
fn extern_mod_stmt_cnum_untracked(&self, emod_id: ast::NodeId) -> Option<CrateNum> { None }
343341
fn encode_metadata<'a, 'tcx>(&self,
344342
tcx: TyCtxt<'a, 'tcx, 'tcx>,
345-
link_meta: &LinkMeta,
346-
reachable: &NodeSet)
343+
link_meta: &LinkMeta)
347344
-> EncodedMetadata {
348345
bug!("encode_metadata")
349346
}

src/librustc/ty/context.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ use ty::layout::{LayoutDetails, TargetDataLayout};
4646
use ty::maps;
4747
use ty::steal::Steal;
4848
use ty::BindingMode;
49-
use util::nodemap::{NodeMap, NodeSet, DefIdSet, ItemLocalMap};
49+
use util::nodemap::{NodeMap, DefIdSet, ItemLocalMap};
5050
use util::nodemap::{FxHashMap, FxHashSet};
5151
use rustc_data_structures::accumulate_vec::AccumulateVec;
5252
use rustc_data_structures::stable_hasher::{HashStable, hash_stable_hashmap,
@@ -1417,10 +1417,10 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
14171417
}
14181418

14191419
impl<'a, 'tcx> TyCtxt<'a, 'tcx, 'tcx> {
1420-
pub fn encode_metadata(self, link_meta: &LinkMeta, reachable: &NodeSet)
1420+
pub fn encode_metadata(self, link_meta: &LinkMeta)
14211421
-> EncodedMetadata
14221422
{
1423-
self.cstore.encode_metadata(self, link_meta, reachable)
1423+
self.cstore.encode_metadata(self, link_meta)
14241424
}
14251425
}
14261426

src/librustc_metadata/cstore_impl.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use rustc::hir::def_id::{CrateNum, DefId, LOCAL_CRATE, CRATE_DEF_INDEX};
2727
use rustc::hir::map::{DefKey, DefPath, DefPathHash};
2828
use rustc::hir::map::blocks::FnLikeNode;
2929
use rustc::hir::map::definitions::DefPathTable;
30-
use rustc::util::nodemap::{NodeSet, DefIdMap};
30+
use rustc::util::nodemap::DefIdMap;
3131

3232
use std::any::Any;
3333
use rustc_data_structures::sync::Lrc;
@@ -517,11 +517,10 @@ impl CrateStore for cstore::CStore {
517517

518518
fn encode_metadata<'a, 'tcx>(&self,
519519
tcx: TyCtxt<'a, 'tcx, 'tcx>,
520-
link_meta: &LinkMeta,
521-
reachable: &NodeSet)
520+
link_meta: &LinkMeta)
522521
-> EncodedMetadata
523522
{
524-
encoder::encode_metadata(tcx, link_meta, reachable)
523+
encoder::encode_metadata(tcx, link_meta)
525524
}
526525

527526
fn metadata_encoding_version(&self) -> &[u8]

src/librustc_metadata/encoder.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use rustc::ty::{self, Ty, TyCtxt, ReprOptions};
2727
use rustc::ty::codec::{self as ty_codec, TyEncoder};
2828

2929
use rustc::session::config::{self, CrateTypeProcMacro};
30-
use rustc::util::nodemap::{FxHashMap, NodeSet};
30+
use rustc::util::nodemap::{FxHashMap, DefIdSet};
3131

3232
use rustc_data_structures::stable_hasher::StableHasher;
3333
use rustc_serialize::{Encodable, Encoder, SpecializedEncoder, opaque};
@@ -53,7 +53,6 @@ pub struct EncodeContext<'a, 'tcx: 'a> {
5353
opaque: opaque::Encoder<'a>,
5454
pub tcx: TyCtxt<'a, 'tcx, 'tcx>,
5555
link_meta: &'a LinkMeta,
56-
reachable_non_generics: &'a NodeSet,
5756

5857
lazy_state: LazyState,
5958
type_shorthands: FxHashMap<Ty<'tcx>, usize>,
@@ -395,9 +394,10 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
395394

396395
// Encode exported symbols info.
397396
i = self.position();
397+
let reachable_non_generics = self.tcx.reachable_non_generics(LOCAL_CRATE);
398398
let reachable_non_generics = self.tracked(
399399
IsolatedEncoder::encode_reachable_non_generics,
400-
self.reachable_non_generics);
400+
&reachable_non_generics);
401401
let reachable_non_generics_bytes = self.position() - i;
402402

403403
// Encode and index the items.
@@ -1389,11 +1389,12 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
13891389
// symbol associated with them (they weren't translated) or if they're an FFI
13901390
// definition (as that's not defined in this crate).
13911391
fn encode_reachable_non_generics(&mut self,
1392-
reachable_non_generics: &NodeSet)
1392+
reachable_non_generics: &DefIdSet)
13931393
-> LazySeq<DefIndex> {
1394-
let tcx = self.tcx;
1395-
self.lazy_seq(reachable_non_generics.iter()
1396-
.map(|&id| tcx.hir.local_def_id(id).index))
1394+
self.lazy_seq(reachable_non_generics.iter().map(|def_id| {
1395+
debug_assert!(def_id.is_local());
1396+
def_id.index
1397+
}))
13971398
}
13981399

13991400
fn encode_dylib_dependency_formats(&mut self, _: ()) -> LazySeq<Option<LinkagePreference>> {
@@ -1666,8 +1667,7 @@ impl<'a, 'tcx, 'v> ItemLikeVisitor<'v> for ImplVisitor<'a, 'tcx> {
16661667
// generated regardless of trailing bytes that end up in it.
16671668

16681669
pub fn encode_metadata<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
1669-
link_meta: &LinkMeta,
1670-
reachable_non_generics: &NodeSet)
1670+
link_meta: &LinkMeta)
16711671
-> EncodedMetadata
16721672
{
16731673
let mut cursor = Cursor::new(vec![]);
@@ -1681,7 +1681,6 @@ pub fn encode_metadata<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
16811681
opaque: opaque::Encoder::new(&mut cursor),
16821682
tcx,
16831683
link_meta,
1684-
reachable_non_generics,
16851684
lazy_state: LazyState::NoNode,
16861685
type_shorthands: Default::default(),
16871686
predicate_shorthands: Default::default(),

0 commit comments

Comments
 (0)