use std::path::Path;
use std::sync::mpsc;
-use rustc_data_structures::owning_ref::{ErasedBoxRef, OwningRef};
+use rustc_data_structures::owning_ref::OwningRef;
use rustc_data_structures::sync::Lrc;
use ar::{Archive, Builder, Header};
use flate2::Compression;
use rustc_mir::monomorphize::collector;
use link::{build_link_meta, out_filename};
+pub use rustc_data_structures::sync::MetadataRef;
+
pub trait TransCrate {
fn init(&self, _sess: &Session) {}
fn print(&self, _req: PrintRequest, _sess: &Session) {}
&self,
_target: &Target,
_filename: &Path
- ) -> Result<ErasedBoxRef<[u8]>, String> {
+ ) -> Result<MetadataRef, String> {
bug!("DummyMetadataLoader::get_rlib_metadata");
}
&self,
_target: &Target,
_filename: &Path
- ) -> Result<ErasedBoxRef<[u8]>, String> {
+ ) -> Result<MetadataRef, String> {
bug!("DummyMetadataLoader::get_dylib_metadata");
}
}
pub struct NoLlvmMetadataLoader;
impl MetadataLoader for NoLlvmMetadataLoader {
- fn get_rlib_metadata(&self, _: &Target, filename: &Path) -> Result<ErasedBoxRef<[u8]>, String> {
+ fn get_rlib_metadata(&self, _: &Target, filename: &Path) -> Result<MetadataRef, String> {
let file = File::open(filename)
.map_err(|e| format!("metadata file open err: {:?}", e))?;
let mut archive = Archive::new(file);
let mut buf = Vec::new();
io::copy(&mut entry, &mut buf).unwrap();
let buf: OwningRef<Vec<u8>, [u8]> = OwningRef::new(buf).into();
- return Ok(buf.map_owner_box().erase_owner());
+ return Ok(rustc_erase_owner!(buf.map_owner_box()));
}
}
&self,
_target: &Target,
_filename: &Path,
- ) -> Result<ErasedBoxRef<[u8]>, String> {
+ ) -> Result<MetadataRef, String> {
// FIXME: Support reading dylibs from llvm enabled rustc
self.get_rlib_metadata(_target, _filename)
}