]> git.lizzy.rs Git - rust.git/commitdiff
Add profile code around metadata object generation
authorbjorn3 <bjorn3@users.noreply.github.com>
Sun, 22 Sep 2019 14:47:45 +0000 (16:47 +0200)
committerbjorn3 <bjorn3@users.noreply.github.com>
Sun, 22 Sep 2019 14:47:45 +0000 (16:47 +0200)
cc #719

src/driver.rs

index 84f3b1a52344c368f726a28e732b0b300bb38cae..2d00860ba206c550bd37097139ab9de5654c3bca 100644 (file)
@@ -215,26 +215,32 @@ fn run_aot(
     rustc_incremental::finalize_session_directory(tcx.sess, tcx.crate_hash(LOCAL_CRATE));
 
     let metadata_module = if need_metadata_module {
-        use rustc::mir::mono::CodegenUnitNameBuilder;
-
-        let cgu_name_builder = &mut CodegenUnitNameBuilder::new(tcx);
-        let metadata_cgu_name = cgu_name_builder
-            .build_cgu_name(LOCAL_CRATE, &["crate"], Some("metadata"))
-            .as_str()
-            .to_string();
-
-        let mut metadata_artifact = faerie::Artifact::new(
-            crate::build_isa(tcx.sess, true).triple().clone(),
-            metadata_cgu_name.clone(),
-        );
-        crate::metadata::write_metadata(tcx, &mut metadata_artifact);
-
-        let tmp_file = tcx
-            .output_filenames(LOCAL_CRATE)
-            .temp_path(OutputType::Metadata, Some(&metadata_cgu_name));
-
-        let obj = metadata_artifact.emit().unwrap();
-        std::fs::write(&tmp_file, obj).unwrap();
+        tcx.sess.profiler(|p| p.start_activity("codegen crate metadata"));
+        let (metadata_cgu_name, tmp_file) = rustc::util::common::time(tcx.sess, "write compressed metadata", || {
+            use rustc::mir::mono::CodegenUnitNameBuilder;
+
+            let cgu_name_builder = &mut CodegenUnitNameBuilder::new(tcx);
+            let metadata_cgu_name = cgu_name_builder
+                .build_cgu_name(LOCAL_CRATE, &["crate"], Some("metadata"))
+                .as_str()
+                .to_string();
+
+            let mut metadata_artifact = faerie::Artifact::new(
+                crate::build_isa(tcx.sess, true).triple().clone(),
+                metadata_cgu_name.clone(),
+            );
+            crate::metadata::write_metadata(tcx, &mut metadata_artifact);
+
+            let tmp_file = tcx
+                .output_filenames(LOCAL_CRATE)
+                .temp_path(OutputType::Metadata, Some(&metadata_cgu_name));
+
+            let obj = metadata_artifact.emit().unwrap();
+            std::fs::write(&tmp_file, obj).unwrap();
+
+            (metadata_cgu_name, tmp_file)
+        });
+        tcx.sess.profiler(|p| p.end_activity("codegen crate metadata"));
 
         Some(CompiledModule {
             name: metadata_cgu_name,