aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO/dyld_info/Trie.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-08-06 22:52:19 -0700
committerAndrew Kelley <andrew@ziglang.org>2025-08-06 22:52:19 -0700
commitb9e1fef5628f01892cf09ade4425625a2cf34911 (patch)
tree53c98c274d22bcd956ff5affa983ee80c6be9fb7 /src/link/MachO/dyld_info/Trie.zig
parent5667435bc4eacb36b4c33470784f1662637341b4 (diff)
parentaac26f3b31ddb43e863ac7186fd19a7e251c1b8a (diff)
downloadzig-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/Trie.zig')
-rw-r--r--src/link/MachO/dyld_info/Trie.zig27
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;