Skip to content

Commit

Permalink
incr.comp.: Provide session to some more decoding contexts.
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelwoerister committed Nov 8, 2017
1 parent d948af1 commit d01b89b
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 8 deletions.
11 changes: 6 additions & 5 deletions src/librustc_metadata/creader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -258,14 +258,15 @@ impl<'a> CrateLoader<'a> {
let cnum_map = self.resolve_crate_deps(root, &crate_root, &metadata, cnum, span, dep_kind);

let def_path_table = record_time(&self.sess.perf_stats.decode_def_path_tables_time, || {
crate_root.def_path_table.decode(&metadata)
crate_root.def_path_table.decode((&metadata, self.sess))
});

let exported_symbols = crate_root.exported_symbols.decode(&metadata).collect();

let exported_symbols = crate_root.exported_symbols
.decode((&metadata, self.sess))
.collect();
let trait_impls = crate_root
.impls
.decode(&metadata)
.decode((&metadata, self.sess))
.map(|trait_impls| (trait_impls.trait_id, trait_impls.impls))
.collect();

Expand Down Expand Up @@ -298,7 +299,7 @@ impl<'a> CrateLoader<'a> {
let dllimports: FxHashSet<_> = cmeta
.root
.native_libraries
.decode(&cmeta)
.decode((&cmeta, self.sess))
.filter(|lib| relevant_lib(self.sess, lib) &&
lib.kind == cstore::NativeLibraryKind::NativeUnknown)
.flat_map(|lib| {
Expand Down
2 changes: 1 addition & 1 deletion src/librustc_metadata/cstore_impl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ provide! { <'tcx> tcx, def_id, other, cdata,
is_no_builtins => { cdata.is_no_builtins(tcx.sess) }
impl_defaultness => { cdata.get_impl_defaultness(def_id.index) }
exported_symbol_ids => { Rc::new(cdata.get_exported_symbols()) }
native_libraries => { Rc::new(cdata.get_native_libraries()) }
native_libraries => { Rc::new(cdata.get_native_libraries(tcx.sess)) }
plugin_registrar_fn => {
cdata.root.plugin_registrar_fn.map(|index| {
DefId { krate: def_id.krate, index }
Expand Down
18 changes: 16 additions & 2 deletions src/librustc_metadata/decoder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,20 @@ impl<'a, 'tcx> Metadata<'a, 'tcx> for &'a MetadataBlob {
}
}


impl<'a, 'tcx> Metadata<'a, 'tcx> for (&'a MetadataBlob, &'a Session) {
fn raw_bytes(self) -> &'a [u8] {
let (blob, _) = self;
&blob.0
}

fn sess(self) -> Option<&'a Session> {
let (_, sess) = self;
Some(sess)
}
}


impl<'a, 'tcx> Metadata<'a, 'tcx> for &'a CrateMetadata {
fn raw_bytes(self) -> &'a [u8] {
self.blob.raw_bytes()
Expand Down Expand Up @@ -1017,8 +1031,8 @@ impl<'a, 'tcx> CrateMetadata {
}


pub fn get_native_libraries(&self) -> Vec<NativeLibrary> {
self.root.native_libraries.decode(self).collect()
pub fn get_native_libraries(&self, sess: &Session) -> Vec<NativeLibrary> {
self.root.native_libraries.decode((self, sess)).collect()
}

pub fn get_dylib_dependency_formats(&self) -> Vec<(CrateNum, LinkagePreference)> {
Expand Down

0 comments on commit d01b89b

Please sign in to comment.