(&mut self, id: InputId, state: &State)
| 216 | } |
| 217 | |
| 218 | fn add_to_global_metadata(&mut self, id: InputId, state: &State) { |
| 219 | self.metadata.total_input_bytes += state.input.total_bytes(); |
| 220 | self.metadata.total_instructions += state.instructions; |
| 221 | |
| 222 | // Ignore crashing inputs from global coverage to avoid them being selected during input |
| 223 | // prioritization. |
| 224 | if !state.was_crash() { |
| 225 | for cov in &state.hit_coverage { |
| 226 | self.coverage_hits.entry(*cov).or_default().push(id); |
| 227 | } |
| 228 | } |
| 229 | |
| 230 | for (addr, entry) in &state.input.streams { |
| 231 | if entry.bytes.is_empty() { |
| 232 | continue; |
| 233 | } |
| 234 | let stream_metadata = self.metadata.streams.entry(*addr).or_default(); |
| 235 | stream_metadata.num_inputs += 1; |
| 236 | stream_metadata.total_bytes += entry.bytes.len(); |
| 237 | stream_metadata.seen_sizes |= entry.sizes as u8; |
| 238 | } |
| 239 | } |
| 240 | |
| 241 | fn remove_global_metadata(&mut self, id: InputId) { |
| 242 | let entry = &mut self.test_cases[id]; |
no test coverage detected