authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-08-01 21:44:56-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-08-03 19:22:28-07:00
logdabae3f9dc868af92e7608d897befc39e5db5c33
tree28387879cecbf5d23d4d15011e6a109abc99dd1b
parent493265486c939c9da1985fc7d0add0242a64d16a

linker: remove dependency on std.fifo


1 files changed, 16 insertions(+), 11 deletions(-)

src/link/MachO/dyld_info/Trie.zig+16-11
...@@ -138,18 +138,23 @@ fn finalize(self: *Trie, allocator: Allocator) !void {...@@ -138,18 +138,23 @@ fn finalize(self: *Trie, allocator: Allocator) !void {
138 defer ordered_nodes.deinit();138 defer ordered_nodes.deinit();
139 try ordered_nodes.ensureTotalCapacityPrecise(self.nodes.items(.is_terminal).len);139 try ordered_nodes.ensureTotalCapacityPrecise(self.nodes.items(.is_terminal).len);
140140
141 var fifo = std.fifo.LinearFifo(Node.Index, .Dynamic).init(allocator);141 {
142 defer fifo.deinit();142 var fifo: std.ArrayListUnmanaged(Node.Index) = .empty;
143143 defer fifo.deinit(allocator);
144 try fifo.writeItem(self.root.?);144
145145 try fifo.append(allocator, self.root.?);
146 while (fifo.readItem()) |next_index| {146
147 const edges = &self.nodes.items(.edges)[next_index];147 var i: usize = 0;
148 for (edges.items) |edge_index| {148 while (i < fifo.items.len) {
149 const edge = self.edges.items[edge_index];149 const next_index = fifo.items[i];
150 try fifo.writeItem(edge.node);150 i += 1;
151 const edges = &self.nodes.items(.edges)[next_index];
152 for (edges.items) |edge_index| {
153 const edge = self.edges.items[edge_index];
154 try fifo.append(allocator, edge.node);
155 }
156 ordered_nodes.appendAssumeCapacity(next_index);
151 }157 }
152 ordered_nodes.appendAssumeCapacity(next_index);
153 }158 }
154159
155 var more: bool = true;160 var more: bool = true;