@@ -80,19 +80,20 @@ impl CoverageCounters {
8080 basic_coverage_blocks : & CoverageGraph ,
8181 bcb_needs_counter : impl Fn ( BasicCoverageBlock ) -> bool ,
8282 ) -> Self {
83- let num_bcbs = basic_coverage_blocks. num_nodes ( ) ;
83+ let mut counters = MakeBcbCounters :: new ( basic_coverage_blocks) ;
84+ counters. make_bcb_counters ( bcb_needs_counter) ;
8485
85- let mut this = Self {
86+ counters. coverage_counters
87+ }
88+
89+ fn with_num_bcbs ( num_bcbs : usize ) -> Self {
90+ Self {
8691 counter_increment_sites : IndexVec :: new ( ) ,
8792 bcb_counters : IndexVec :: from_elem_n ( None , num_bcbs) ,
8893 bcb_edge_counters : FxHashMap :: default ( ) ,
8994 expressions : IndexVec :: new ( ) ,
9095 expressions_memo : FxHashMap :: default ( ) ,
91- } ;
92-
93- MakeBcbCounters :: new ( & mut this, basic_coverage_blocks) . make_bcb_counters ( bcb_needs_counter) ;
94-
95- this
96+ }
9697 }
9798
9899 /// Shared helper used by [`Self::make_phys_node_counter`] and
@@ -265,16 +266,16 @@ impl CoverageCounters {
265266
266267/// Helper struct that allows counter creation to inspect the BCB graph.
267268struct MakeBcbCounters < ' a > {
268- coverage_counters : & ' a mut CoverageCounters ,
269+ coverage_counters : CoverageCounters ,
269270 basic_coverage_blocks : & ' a CoverageGraph ,
270271}
271272
272273impl < ' a > MakeBcbCounters < ' a > {
273- fn new (
274- coverage_counters : & ' a mut CoverageCounters ,
275- basic_coverage_blocks : & ' a CoverageGraph ,
276- ) -> Self {
277- Self { coverage_counters , basic_coverage_blocks }
274+ fn new ( basic_coverage_blocks : & ' a CoverageGraph ) -> Self {
275+ Self {
276+ coverage_counters : CoverageCounters :: with_num_bcbs ( basic_coverage_blocks . num_nodes ( ) ) ,
277+ basic_coverage_blocks ,
278+ }
278279 }
279280
280281 fn make_bcb_counters ( & mut self , bcb_needs_counter : impl Fn ( BasicCoverageBlock ) -> bool ) {
0 commit comments