| ... | @@ -53,15 +53,18 @@ pub fn main() !void { | ... | @@ -53,15 +53,18 @@ pub fn main() !void { |
| 53 | } | 53 | } |
| 54 | assert(std.sort.isSorted(usize, pcs, {}, std.sort.asc(usize))); | 54 | assert(std.sort.isSorted(usize, pcs, {}, std.sort.asc(usize))); |
| 55 | | 55 | |
| | 56 | const seen_pcs = cov_bytes[@sizeOf(SeenPcsHeader) + pcs.len * @sizeOf(usize) ..]; |
| | 57 | |
| 56 | const source_locations = try arena.alloc(std.debug.Coverage.SourceLocation, pcs.len); | 58 | const source_locations = try arena.alloc(std.debug.Coverage.SourceLocation, pcs.len); |
| 57 | try debug_info.resolveAddresses(gpa, pcs, source_locations); | 59 | try debug_info.resolveAddresses(gpa, pcs, source_locations); |
| 58 | | 60 | |
| 59 | for (pcs, source_locations) |pc, sl| { | 61 | for (pcs, source_locations, 0..) |pc, sl, i| { |
| 60 | const file = debug_info.coverage.fileAt(sl.file); | 62 | const file = debug_info.coverage.fileAt(sl.file); |
| 61 | const dir_name = debug_info.coverage.directories.keys()[file.directory_index]; | 63 | const dir_name = debug_info.coverage.directories.keys()[file.directory_index]; |
| 62 | const dir_name_slice = debug_info.coverage.stringAt(dir_name); | 64 | const dir_name_slice = debug_info.coverage.stringAt(dir_name); |
| 63 | try stdout.print("{x}: {s}/{s}:{d}:{d}\n", .{ | 65 | const hit: u1 = @truncate(seen_pcs[i / 8] >> @intCast(i % 8)); |
| 64 | pc, dir_name_slice, debug_info.coverage.stringAt(file.basename), sl.line, sl.column, | 66 | try stdout.print("{c}{x}: {s}/{s}:{d}:{d}\n", .{ |
| | 67 | "-+"[hit], pc, dir_name_slice, debug_info.coverage.stringAt(file.basename), sl.line, sl.column, |
| 65 | }); | 68 | }); |
| 66 | } | 69 | } |
| 67 | | 70 | |