mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
linker: remove dependency on std.fifo
This commit is contained in:
parent
493265486c
commit
dabae3f9dc
1 changed files with 14 additions and 9 deletions
|
|
@ -138,18 +138,23 @@ fn finalize(self: *Trie, allocator: Allocator) !void {
|
||||||
defer ordered_nodes.deinit();
|
defer ordered_nodes.deinit();
|
||||||
try ordered_nodes.ensureTotalCapacityPrecise(self.nodes.items(.is_terminal).len);
|
try ordered_nodes.ensureTotalCapacityPrecise(self.nodes.items(.is_terminal).len);
|
||||||
|
|
||||||
var fifo = std.fifo.LinearFifo(Node.Index, .Dynamic).init(allocator);
|
{
|
||||||
defer fifo.deinit();
|
var fifo: std.ArrayListUnmanaged(Node.Index) = .empty;
|
||||||
|
defer fifo.deinit(allocator);
|
||||||
|
|
||||||
try fifo.writeItem(self.root.?);
|
try fifo.append(allocator, self.root.?);
|
||||||
|
|
||||||
while (fifo.readItem()) |next_index| {
|
var i: usize = 0;
|
||||||
const edges = &self.nodes.items(.edges)[next_index];
|
while (i < fifo.items.len) {
|
||||||
for (edges.items) |edge_index| {
|
const next_index = fifo.items[i];
|
||||||
const edge = self.edges.items[edge_index];
|
i += 1;
|
||||||
try fifo.writeItem(edge.node);
|
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;
|
var more: bool = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue