@@ -586,6 +586,7 @@ impl<'gctx> Timings<'gctx> {
586586 rmeta_time : Option < f64 > ,
587587 unlocked_units : Vec < usize > ,
588588 unlocked_rmeta_units : Vec < usize > ,
589+ sections : Option < Vec < ( String , SectionData ) > > ,
589590 }
590591 let round = |x : f64 | ( x * 100.0 ) . round ( ) / 100.0 ;
591592 let unit_data: Vec < UnitData > = self
@@ -599,7 +600,6 @@ impl<'gctx> Timings<'gctx> {
599600 "todo"
600601 }
601602 . to_string ( ) ;
602-
603603 // These filter on the unlocked units because not all unlocked
604604 // units are actually "built". For example, Doctest mode units
605605 // don't actually generate artifacts.
@@ -613,6 +613,13 @@ impl<'gctx> Timings<'gctx> {
613613 . iter ( )
614614 . filter_map ( |unit| unit_map. get ( unit) . copied ( ) )
615615 . collect ( ) ;
616+ let aggregated = ut. aggregate_sections ( ) ;
617+ let sections = match aggregated {
618+ AggregatedSections :: Sections ( sections) => Some ( sections) ,
619+ AggregatedSections :: OnlyMetadataTime { .. }
620+ | AggregatedSections :: OnlyTotalDuration => None ,
621+ } ;
622+
616623 UnitData {
617624 i,
618625 name : ut. unit . pkg . name ( ) . to_string ( ) ,
@@ -624,6 +631,7 @@ impl<'gctx> Timings<'gctx> {
624631 rmeta_time : ut. rmeta_time . map ( round) ,
625632 unlocked_units,
626633 unlocked_rmeta_units,
634+ sections,
627635 }
628636 } )
629637 . collect ( ) ;
@@ -871,6 +879,7 @@ static HTML_TMPL: &str = r#"
871879 --canvas-axes: #303030;
872880 --canvas-grid: #e6e6e6;
873881 --canvas-codegen: #aa95e8;
882+ --canvas-link: #95e8aa;
874883 --canvas-custom-build: #f0b165;
875884 --canvas-not-custom-build: #95cce8;
876885 --canvas-dep-line: #ddd;
0 commit comments