diff options
| author | Yoshiki Matsuda <myskjp@gmail.com> | 2022-06-01 00:14:42 +0900 |
|---|---|---|
| committer | Yoshiki Matsuda <myskjp@gmail.com> | 2022-07-02 22:54:37 +0900 |
| commit | 0928061906bbec3099df7340e1e296b6dfc279a9 (patch) | |
| tree | 4fe56face76156423eb8dbc2d5fe78507e276b01 | |
| parent | 34e44e577485da3f8de4803a1f9248fa6c0089b8 (diff) | |
| download | rust-0928061906bbec3099df7340e1e296b6dfc279a9.tar.gz rust-0928061906bbec3099df7340e1e296b6dfc279a9.zip | |
refactor encode_and_write_metadata
| -rw-r--r-- | compiler/rustc_metadata/src/fs.rs | 70 | ||||
| -rw-r--r-- | compiler/rustc_metadata/src/rmeta/encoder.rs | 5 |
2 files changed, 31 insertions, 44 deletions
diff --git a/compiler/rustc_metadata/src/fs.rs b/compiler/rustc_metadata/src/fs.rs index b08b1247c6d..4e00cac466b 100644 --- a/compiler/rustc_metadata/src/fs.rs +++ b/compiler/rustc_metadata/src/fs.rs @@ -68,53 +68,45 @@ pub fn encode_and_write_metadata( .unwrap_or_else(|err| tcx.sess.fatal(&format!("couldn't create a temp dir: {}", err))); let metadata_tmpdir = MaybeTempDir::new(metadata_tmpdir, tcx.sess.opts.cg.save_temps); let metadata_filename = metadata_tmpdir.as_ref().join(METADATA_FILENAME); - let need_metadata_file = tcx.sess.opts.output_types.contains_key(&OutputType::Metadata); - let metadata = match metadata_kind { + + match metadata_kind { MetadataKind::None => { - if need_metadata_file { - // Though creating the empty file here seems to be meaningless, cargo expects it. - if let Err(e) = std::fs::File::create(&out_filename) { - tcx.sess.fatal(&format!( - "failed to create the file {}: {}", - out_filename.display(), - e - )); - } - if tcx.sess.opts.json_artifact_notifications { - tcx.sess - .parse_sess - .span_diagnostic - .emit_artifact_notification(&out_filename, "metadata"); - } - } - EncodedMetadata::empty() + std::fs::File::create(&metadata_filename).unwrap_or_else(|e| { + tcx.sess.fatal(&format!( + "failed to create the file {}: {}", + out_filename.display(), + e + )) + }); } MetadataKind::Uncompressed | MetadataKind::Compressed => { encode_metadata(tcx, &metadata_filename); + } + }; - let _prof_timer = tcx.sess.prof.generic_activity("write_crate_metadata"); - - let (metadata_filename, metadata_tmpdir) = if need_metadata_file { - if let Err(e) = non_durable_rename(&metadata_filename, &out_filename) { - tcx.sess.fatal(&format!("failed to write {}: {}", out_filename.display(), e)); - } - if tcx.sess.opts.json_artifact_notifications { - tcx.sess - .parse_sess - .span_diagnostic - .emit_artifact_notification(&out_filename, "metadata"); - } - (out_filename, None) - } else { - (metadata_filename, Some(metadata_tmpdir)) - }; - - EncodedMetadata::from_path(metadata_filename, metadata_tmpdir).unwrap_or_else(|e| { - tcx.sess.fatal(&format!("failed to create encoded metadata from file: {}", e)) - }) + let _prof_timer = tcx.sess.prof.generic_activity("write_crate_metadata"); + + let need_metadata_file = tcx.sess.opts.output_types.contains_key(&OutputType::Metadata); + let (metadata_filename, metadata_tmpdir) = if need_metadata_file { + if let Err(e) = non_durable_rename(&metadata_filename, &out_filename) { + tcx.sess.fatal(&format!("failed to write {}: {}", out_filename.display(), e)); } + if tcx.sess.opts.json_artifact_notifications { + tcx.sess + .parse_sess + .span_diagnostic + .emit_artifact_notification(&out_filename, "metadata"); + } + (out_filename, None) + } else { + (metadata_filename, Some(metadata_tmpdir)) }; + let metadata = + EncodedMetadata::from_path(metadata_filename, metadata_tmpdir).unwrap_or_else(|e| { + tcx.sess.fatal(&format!("failed to create encoded metadata from file: {}", e)) + }); + let need_metadata_module = metadata_kind == MetadataKind::Compressed; (metadata, need_metadata_module) diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs index cce59e06bf7..0da87abbc48 100644 --- a/compiler/rustc_metadata/src/rmeta/encoder.rs +++ b/compiler/rustc_metadata/src/rmeta/encoder.rs @@ -2164,11 +2164,6 @@ impl EncodedMetadata { } #[inline] - pub fn empty() -> Self { - Self { mmap: None, _temp_dir: None } - } - - #[inline] pub fn raw_data(&self) -> &[u8] { self.mmap.as_ref().map(|mmap| mmap.as_ref()).unwrap_or_default() } |
