diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2025-08-06 22:52:19 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-08-06 22:52:19 -0700 |
| commit | b9e1fef5628f01892cf09ade4425625a2cf34911 (patch) | |
| tree | 53c98c274d22bcd956ff5affa983ee80c6be9fb7 /src/link/MachO/dyld_info | |
| parent | 5667435bc4eacb36b4c33470784f1662637341b4 (diff) | |
| parent | aac26f3b31ddb43e863ac7186fd19a7e251c1b8a (diff) | |
| download | zig-wrangle-writer-buffering.tar.gz zig-wrangle-writer-buffering.zip | |
Merge remote-tracking branch 'origin/http' into wrangle-writer-bufferingwrangle-writer-buffering
Diffstat (limited to 'src/link/MachO/dyld_info')
| -rw-r--r-- | src/link/MachO/dyld_info/Trie.zig | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/src/link/MachO/dyld_info/Trie.zig b/src/link/MachO/dyld_info/Trie.zig index c4a5548f7e..46d00da41e 100644 --- a/src/link/MachO/dyld_info/Trie.zig +++ b/src/link/MachO/dyld_info/Trie.zig @@ -138,18 +138,23 @@ fn finalize(self: *Trie, allocator: Allocator) !void { defer ordered_nodes.deinit(); try ordered_nodes.ensureTotalCapacityPrecise(self.nodes.items(.is_terminal).len); - var fifo = DeprecatedLinearFifo(Node.Index).init(allocator); - defer fifo.deinit(); - - try fifo.writeItem(self.root.?); - - while (fifo.readItem()) |next_index| { - const edges = &self.nodes.items(.edges)[next_index]; - for (edges.items) |edge_index| { - const edge = self.edges.items[edge_index]; - try fifo.writeItem(edge.node); + { + var fifo: std.ArrayListUnmanaged(Node.Index) = .empty; + defer fifo.deinit(allocator); + + try fifo.append(allocator, self.root.?); + + var i: usize = 0; + while (i < fifo.items.len) { + const next_index = fifo.items[i]; + i += 1; + const edges = &self.nodes.items(.edges)[next_index]; + for (edges.items) |edge_index| { + const edge = self.edges.items[edge_index]; + try fifo.append(allocator, edge.node); + } + ordered_nodes.appendAssumeCapacity(next_index); } - ordered_nodes.appendAssumeCapacity(next_index); } var more: bool = true; |
