fn getOrAddColumn(self: *VirtualMachine, gpa: Allocator, register: u8) !*Column self: *VirtualMachinegpa: Allocatorregister: u881
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100fn getOrAddColumn(self: *VirtualMachine, gpa: Allocator, register: u8) !*Column {
for (self.rowColumns(&self.current_row)) |*c| {
if (c.register == register) return c;
}
if (self.current_row.columns.len == 0) {
self.current_row.columns.start = self.columns.items.len;
} else {
assert(self.current_row.columns.start + self.current_row.columns.len == self.columns.items.len);
}
self.current_row.columns.len += 1;
const column = try self.columns.addOne(gpa);
column.* = .{
.register = register,
.rule = .default,
};
return column;
}
Either retrieves or adds a column for
register(non-CFA) in the current row.