diff options
Diffstat (limited to 'src/librustc_codegen_utils/codegen_backend.rs')
| -rw-r--r-- | src/librustc_codegen_utils/codegen_backend.rs | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/src/librustc_codegen_utils/codegen_backend.rs b/src/librustc_codegen_utils/codegen_backend.rs index 046f0cccfee..74718460f56 100644 --- a/src/librustc_codegen_utils/codegen_backend.rs +++ b/src/librustc_codegen_utils/codegen_backend.rs @@ -22,8 +22,8 @@ #![feature(box_syntax)] use std::any::Any; -use std::io::{self, Write}; -use std::fs::File; +use std::io::Write; +use std::fs; use std::path::Path; use std::sync::{mpsc, Arc}; @@ -81,13 +81,9 @@ pub struct NoLlvmMetadataLoader; impl MetadataLoader for NoLlvmMetadataLoader { fn get_rlib_metadata(&self, _: &Target, filename: &Path) -> Result<MetadataRef, String> { - let mut file = File::open(filename) - .map_err(|e| format!("metadata file open err: {:?}", e))?; - - let mut buf = Vec::new(); - io::copy(&mut file, &mut buf).unwrap(); - let buf: OwningRef<Vec<u8>, [u8]> = OwningRef::new(buf).into(); - return Ok(rustc_erase_owner!(buf.map_owner_box())); + let buf = fs::read(filename).map_err(|e| format!("metadata file open err: {:?}", e))?; + let buf: OwningRef<Vec<u8>, [u8]> = OwningRef::new(buf); + Ok(rustc_erase_owner!(buf.map_owner_box())) } fn get_dylib_metadata(&self, target: &Target, filename: &Path) -> Result<MetadataRef, String> { @@ -103,7 +99,7 @@ pub struct OngoingCodegen { } impl MetadataOnlyCodegenBackend { - pub fn new() -> Box<dyn CodegenBackend> { + pub fn boxed() -> Box<dyn CodegenBackend> { box MetadataOnlyCodegenBackend(()) } } @@ -165,15 +161,12 @@ impl CodegenBackend for MetadataOnlyCodegenBackend { tcx, collector::MonoItemCollectionMode::Eager ).0 { - match mono_item { - MonoItem::Fn(inst) => { - let def_id = inst.def_id(); - if def_id.is_local() { - let _ = inst.def.is_inline(tcx); - let _ = tcx.codegen_fn_attrs(def_id); - } + if let MonoItem::Fn(inst) = mono_item { + let def_id = inst.def_id(); + if def_id.is_local() { + let _ = inst.def.is_inline(tcx); + let _ = tcx.codegen_fn_attrs(def_id); } - _ => {} } } tcx.sess.abort_if_errors(); @@ -181,7 +174,7 @@ impl CodegenBackend for MetadataOnlyCodegenBackend { let metadata = tcx.encode_metadata(); box OngoingCodegen { - metadata: metadata, + metadata, metadata_version: tcx.metadata_encoding_version().to_vec(), crate_name: tcx.crate_name(LOCAL_CRATE), } @@ -212,8 +205,7 @@ impl CodegenBackend for MetadataOnlyCodegenBackend { } else { &ongoing_codegen.metadata.raw_data }; - let mut file = File::create(&output_name).unwrap(); - file.write_all(metadata).unwrap(); + fs::write(&output_name, metadata).unwrap(); } sess.abort_if_errors(); |
