@@ -590,6 +590,38 @@ fn module_codegen(
590
590
} ) )
591
591
}
592
592
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
+
593
625
pub ( crate ) fn run_aot (
594
626
tcx : TyCtxt < ' _ > ,
595
627
metadata : EncodedMetadata ,
@@ -689,41 +721,8 @@ pub(crate) fn run_aot(
689
721
None
690
722
} ;
691
723
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 } ;
727
726
728
727
Box :: new ( OngoingCodegen {
729
728
modules,
0 commit comments