Skip to content

Commit 0928061

Browse files
committed
refactor encode_and_write_metadata
1 parent 34e44e5 commit 0928061

File tree

2 files changed

+31
-44
lines changed

2 files changed

+31
-44
lines changed

compiler/rustc_metadata/src/fs.rs

Lines changed: 31 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -68,53 +68,45 @@ pub fn encode_and_write_metadata(
6868
.unwrap_or_else(|err| tcx.sess.fatal(&format!("couldn't create a temp dir: {}", err)));
6969
let metadata_tmpdir = MaybeTempDir::new(metadata_tmpdir, tcx.sess.opts.cg.save_temps);
7070
let metadata_filename = metadata_tmpdir.as_ref().join(METADATA_FILENAME);
71-
let need_metadata_file = tcx.sess.opts.output_types.contains_key(&OutputType::Metadata);
72-
let metadata = match metadata_kind {
71+
72+
match metadata_kind {
7373
MetadataKind::None => {
74-
if need_metadata_file {
75-
// Though creating the empty file here seems to be meaningless, cargo expects it.
76-
if let Err(e) = std::fs::File::create(&out_filename) {
77-
tcx.sess.fatal(&format!(
78-
"failed to create the file {}: {}",
79-
out_filename.display(),
80-
e
81-
));
82-
}
83-
if tcx.sess.opts.json_artifact_notifications {
84-
tcx.sess
85-
.parse_sess
86-
.span_diagnostic
87-
.emit_artifact_notification(&out_filename, "metadata");
88-
}
89-
}
90-
EncodedMetadata::empty()
74+
std::fs::File::create(&metadata_filename).unwrap_or_else(|e| {
75+
tcx.sess.fatal(&format!(
76+
"failed to create the file {}: {}",
77+
out_filename.display(),
78+
e
79+
))
80+
});
9181
}
9282
MetadataKind::Uncompressed | MetadataKind::Compressed => {
9383
encode_metadata(tcx, &metadata_filename);
84+
}
85+
};
9486

95-
let _prof_timer = tcx.sess.prof.generic_activity("write_crate_metadata");
96-
97-
let (metadata_filename, metadata_tmpdir) = if need_metadata_file {
98-
if let Err(e) = non_durable_rename(&metadata_filename, &out_filename) {
99-
tcx.sess.fatal(&format!("failed to write {}: {}", out_filename.display(), e));
100-
}
101-
if tcx.sess.opts.json_artifact_notifications {
102-
tcx.sess
103-
.parse_sess
104-
.span_diagnostic
105-
.emit_artifact_notification(&out_filename, "metadata");
106-
}
107-
(out_filename, None)
108-
} else {
109-
(metadata_filename, Some(metadata_tmpdir))
110-
};
111-
112-
EncodedMetadata::from_path(metadata_filename, metadata_tmpdir).unwrap_or_else(|e| {
113-
tcx.sess.fatal(&format!("failed to create encoded metadata from file: {}", e))
114-
})
87+
let _prof_timer = tcx.sess.prof.generic_activity("write_crate_metadata");
88+
89+
let need_metadata_file = tcx.sess.opts.output_types.contains_key(&OutputType::Metadata);
90+
let (metadata_filename, metadata_tmpdir) = if need_metadata_file {
91+
if let Err(e) = non_durable_rename(&metadata_filename, &out_filename) {
92+
tcx.sess.fatal(&format!("failed to write {}: {}", out_filename.display(), e));
11593
}
94+
if tcx.sess.opts.json_artifact_notifications {
95+
tcx.sess
96+
.parse_sess
97+
.span_diagnostic
98+
.emit_artifact_notification(&out_filename, "metadata");
99+
}
100+
(out_filename, None)
101+
} else {
102+
(metadata_filename, Some(metadata_tmpdir))
116103
};
117104

105+
let metadata =
106+
EncodedMetadata::from_path(metadata_filename, metadata_tmpdir).unwrap_or_else(|e| {
107+
tcx.sess.fatal(&format!("failed to create encoded metadata from file: {}", e))
108+
});
109+
118110
let need_metadata_module = metadata_kind == MetadataKind::Compressed;
119111

120112
(metadata, need_metadata_module)

compiler/rustc_metadata/src/rmeta/encoder.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2163,11 +2163,6 @@ impl EncodedMetadata {
21632163
Ok(Self { mmap, _temp_dir: temp_dir })
21642164
}
21652165

2166-
#[inline]
2167-
pub fn empty() -> Self {
2168-
Self { mmap: None, _temp_dir: None }
2169-
}
2170-
21712166
#[inline]
21722167
pub fn raw_data(&self) -> &[u8] {
21732168
self.mmap.as_ref().map(|mmap| mmap.as_ref()).unwrap_or_default()

0 commit comments

Comments
 (0)