Skip to content

Commit 1d940ad

Browse files
committed
Extract emit_metadata_module
1 parent 623a6da commit 1d940ad

File tree

1 file changed

+34
-35
lines changed

1 file changed

+34
-35
lines changed

src/driver/aot.rs

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -590,6 +590,38 @@ fn module_codegen(
590590
}))
591591
}
592592

593+
fn emit_metadata_module(tcx: TyCtxt<'_>, metadata: &EncodedMetadata) -> CompiledModule {
594+
use rustc_middle::mir::mono::CodegenUnitNameBuilder;
595+
596+
let _timer = tcx.sess.timer("write compressed metadata");
597+
598+
let cgu_name_builder = &mut CodegenUnitNameBuilder::new(tcx);
599+
let metadata_cgu_name = cgu_name_builder
600+
.build_cgu_name(LOCAL_CRATE, ["crate"], Some("metadata"))
601+
.as_str()
602+
.to_string();
603+
604+
let tmp_file =
605+
tcx.output_filenames(()).temp_path(OutputType::Metadata, Some(&metadata_cgu_name));
606+
607+
let symbol_name = rustc_middle::middle::exported_symbols::metadata_symbol_name(tcx);
608+
let obj = create_compressed_metadata_file(tcx.sess, metadata, &symbol_name);
609+
610+
if let Err(err) = std::fs::write(&tmp_file, obj) {
611+
tcx.dcx().fatal(format!("error writing metadata object file: {}", err));
612+
}
613+
614+
CompiledModule {
615+
name: metadata_cgu_name,
616+
kind: ModuleKind::Metadata,
617+
object: Some(tmp_file),
618+
dwarf_object: None,
619+
bytecode: None,
620+
assembly: None,
621+
llvm_ir: None,
622+
}
623+
}
624+
593625
pub(crate) fn run_aot(
594626
tcx: TyCtxt<'_>,
595627
metadata: EncodedMetadata,
@@ -689,41 +721,8 @@ pub(crate) fn run_aot(
689721
None
690722
};
691723

692-
let metadata_module = if need_metadata_module {
693-
let (metadata_cgu_name, tmp_file) = tcx.sess.time("write compressed metadata", || {
694-
use rustc_middle::mir::mono::CodegenUnitNameBuilder;
695-
696-
let cgu_name_builder = &mut CodegenUnitNameBuilder::new(tcx);
697-
let metadata_cgu_name = cgu_name_builder
698-
.build_cgu_name(LOCAL_CRATE, ["crate"], Some("metadata"))
699-
.as_str()
700-
.to_string();
701-
702-
let tmp_file =
703-
tcx.output_filenames(()).temp_path(OutputType::Metadata, Some(&metadata_cgu_name));
704-
705-
let symbol_name = rustc_middle::middle::exported_symbols::metadata_symbol_name(tcx);
706-
let obj = create_compressed_metadata_file(tcx.sess, &metadata, &symbol_name);
707-
708-
if let Err(err) = std::fs::write(&tmp_file, obj) {
709-
tcx.dcx().fatal(format!("error writing metadata object file: {}", err));
710-
}
711-
712-
(metadata_cgu_name, tmp_file)
713-
});
714-
715-
Some(CompiledModule {
716-
name: metadata_cgu_name,
717-
kind: ModuleKind::Metadata,
718-
object: Some(tmp_file),
719-
dwarf_object: None,
720-
bytecode: None,
721-
assembly: None,
722-
llvm_ir: None,
723-
})
724-
} else {
725-
None
726-
};
724+
let metadata_module =
725+
if need_metadata_module { Some(emit_metadata_module(tcx, &metadata)) } else { None };
727726

728727
Box::new(OngoingCodegen {
729728
modules,

0 commit comments

Comments
 (0)