about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbjorn3 <bjorn3@users.noreply.github.com>2020-10-15 16:15:04 +0200
committerbjorn3 <bjorn3@users.noreply.github.com>2020-10-15 16:15:04 +0200
commit7045b101cc9a69b012758bf72ecd4f2622f4cdbe (patch)
tree1cb0ddf74eeca94f6b5472f366c1e06e76dcb620
parent1c408407385b791c9c643e018ade22535e1203cb (diff)
downloadrust-7045b101cc9a69b012758bf72ecd4f2622f4cdbe.tar.gz
rust-7045b101cc9a69b012758bf72ecd4f2622f4cdbe.zip
Use MetadataRef in the metadata loader to fix parallel rustc
-rw-r--r--src/metadata.rs16
1 files changed, 4 insertions, 12 deletions
diff --git a/src/metadata.rs b/src/metadata.rs
index 93cff5711d9..7ba6ec6d750 100644
--- a/src/metadata.rs
+++ b/src/metadata.rs
@@ -5,8 +5,9 @@ use std::fs::File;
 use std::path::Path;
 
 use rustc_codegen_ssa::METADATA_FILENAME;
-use rustc_data_structures::owning_ref::{self, OwningRef};
+use rustc_data_structures::owning_ref::OwningRef;
 use rustc_data_structures::rustc_erase_owner;
+use rustc_data_structures::sync::MetadataRef;
 use rustc_middle::middle::cstore::{EncodedMetadata, MetadataLoader};
 use rustc_middle::ty::TyCtxt;
 use rustc_session::config;
@@ -17,11 +18,7 @@ use crate::backend::WriteMetadata;
 pub(crate) struct CraneliftMetadataLoader;
 
 impl MetadataLoader for CraneliftMetadataLoader {
-    fn get_rlib_metadata(
-        &self,
-        _target: &Target,
-        path: &Path,
-    ) -> Result<owning_ref::ErasedBoxRef<[u8]>, String> {
+    fn get_rlib_metadata(&self, _target: &Target, path: &Path) -> Result<MetadataRef, String> {
         let mut archive = ar::Archive::new(File::open(path).map_err(|e| format!("{:?}", e))?);
         // Iterate over all entries in the archive:
         while let Some(entry_result) = archive.next_entry() {
@@ -38,14 +35,9 @@ impl MetadataLoader for CraneliftMetadataLoader {
         }
 
         Err("couldn't find metadata entry".to_string())
-        //self.get_dylib_metadata(target, path)
     }
 
-    fn get_dylib_metadata(
-        &self,
-        _target: &Target,
-        path: &Path,
-    ) -> Result<owning_ref::ErasedBoxRef<[u8]>, String> {
+    fn get_dylib_metadata(&self, _target: &Target, path: &Path) -> Result<MetadataRef, String> {
         use object::{Object, ObjectSection};
         let file = std::fs::read(path).map_err(|e| format!("read:{:?}", e))?;
         let file = object::File::parse(&file).map_err(|e| format!("parse: {:?}", e))?;