aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-04-03 14:14:55 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2023-04-03 15:19:07 -0400
commit821eb595f4bd65d003a2cb499c7953f4f57a4c4a (patch)
tree2e61ac22da9ad532077157a2fc9cf9a179b64cb7 /src/codegen.zig
parent9fd460821f992c51b35a54ba93562af93ac478f6 (diff)
downloadzig-821eb595f4bd65d003a2cb499c7953f4f57a4c4a.tar.gz
zig-821eb595f4bd65d003a2cb499c7953f4f57a4c4a.zip
x86_64: implement cmp_lt_errors_len
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index 67ada2fedd..57c33ad524 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -124,13 +124,17 @@ pub fn generateLazySymbol(
if (lazy_sym.kind == .const_data and lazy_sym.ty.isAnyError()) {
const err_names = mod.error_name_list.items;
- try code.resize(err_names.len * 4);
- for (err_names, 0..) |err_name, index| {
- mem.writeInt(u32, code.items[index * 4 ..][0..4], @intCast(u32, code.items.len), endian);
+ mem.writeInt(u32, try code.addManyAsArray(4), @intCast(u32, err_names.len), endian);
+ var offset = code.items.len;
+ try code.resize((1 + err_names.len + 1) * 4);
+ for (err_names) |err_name| {
+ mem.writeInt(u32, code.items[offset..][0..4], @intCast(u32, code.items.len), endian);
+ offset += 4;
try code.ensureUnusedCapacity(err_name.len + 1);
code.appendSliceAssumeCapacity(err_name);
code.appendAssumeCapacity(0);
}
+ mem.writeInt(u32, code.items[offset..][0..4], @intCast(u32, code.items.len), endian);
return Result.ok;
} else return .{ .fail = try ErrorMsg.create(
bin_file.allocator,