in src/reader.rs [1129:1163]
fn add_line_count(&mut self) {
self.executed = self.edges.first().unwrap().counter > 0;
if self.executed {
let mut lines_to_block: FxHashMap<u32, Vec<usize>> = FxHashMap::default();
for block in &self.blocks {
let n = block.no;
for line in &block.lines {
match lines_to_block.entry(*line) {
hash_map::Entry::Occupied(vec) => {
vec.into_mut().push(n);
}
hash_map::Entry::Vacant(v) => {
v.insert(vec![n]);
}
}
}
}
self.lines.reserve(lines_to_block.len());
for (line, blocks) in lines_to_block {
let count = if blocks.len() == 1 {
self.blocks[blocks[0]].counter
} else {
GcovFunction::get_line_count(&mut self.edges, &self.blocks, &blocks)
};
self.lines.insert(line, count);
}
} else {
for block in &self.blocks {
for line in &block.lines {
self.lines.entry(*line).or_insert(0);
}
}
}
}