authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-12-07 21:41:44-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-01-15 15:11:35-08:00
logb3ecdb21eedeb8be099cf1ef43ceff68592593ed
treef5fb9a8412cf2b652e5d501c201064fdb219a7b5
parentbf20a4aa9eeca3c1911709bf48a8c476106042dc

switch to ArrayListUnmanaged for machine code


17 files changed, 135 insertions(+), 131 deletions(-)

src/arch/aarch64/CodeGen.zig+1-1
......@@ -323,7 +323,7 @@ pub fn generate(
323323 func_index: InternPool.Index,
324324 air: Air,
325325 liveness: Liveness,
326 code: *std.ArrayList(u8),
326 code: *std.ArrayListUnmanaged(u8),
327327 debug_output: link.File.DebugInfoOutput,
328328) CodeGenError!void {
329329 const zcu = pt.zcu;
src/arch/aarch64/Emit.zig+4-2
......@@ -20,7 +20,7 @@ debug_output: link.File.DebugInfoOutput,
2020target: *const std.Target,
2121err_msg: ?*ErrorMsg = null,
2222src_loc: Zcu.LazySrcLoc,
23code: *std.ArrayList(u8),
23code: *std.ArrayListUnmanaged(u8),
2424
2525prev_di_line: u32,
2626prev_di_column: u32,
......@@ -424,8 +424,10 @@ fn lowerBranches(emit: *Emit) !void {
424424}
425425
426426fn writeInstruction(emit: *Emit, instruction: Instruction) !void {
427 const comp = emit.bin_file.comp;
428 const gpa = comp.gpa;
427429 const endian = emit.target.cpu.arch.endian();
428 std.mem.writeInt(u32, try emit.code.addManyAsArray(4), instruction.toU32(), endian);
430 std.mem.writeInt(u32, try emit.code.addManyAsArray(gpa, 4), instruction.toU32(), endian);
429431}
430432
431433fn fail(emit: *Emit, comptime format: []const u8, args: anytype) InnerError {
src/arch/arm/CodeGen.zig+1-1
......@@ -332,7 +332,7 @@ pub fn generate(
332332 func_index: InternPool.Index,
333333 air: Air,
334334 liveness: Liveness,
335 code: *std.ArrayList(u8),
335 code: *std.ArrayListUnmanaged(u8),
336336 debug_output: link.File.DebugInfoOutput,
337337) CodeGenError!void {
338338 const zcu = pt.zcu;
src/arch/arm/Emit.zig+4-2
......@@ -24,7 +24,7 @@ debug_output: link.File.DebugInfoOutput,
2424target: *const std.Target,
2525err_msg: ?*ErrorMsg = null,
2626src_loc: Zcu.LazySrcLoc,
27code: *std.ArrayList(u8),
27code: *std.ArrayListUnmanaged(u8),
2828
2929prev_di_line: u32,
3030prev_di_column: u32,
......@@ -342,8 +342,10 @@ fn lowerBranches(emit: *Emit) !void {
342342}
343343
344344fn writeInstruction(emit: *Emit, instruction: Instruction) !void {
345 const comp = emit.bin_file.comp;
346 const gpa = comp.gpa;
345347 const endian = emit.target.cpu.arch.endian();
346 std.mem.writeInt(u32, try emit.code.addManyAsArray(4), instruction.toU32(), endian);
348 std.mem.writeInt(u32, try emit.code.addManyAsArray(gpa, 4), instruction.toU32(), endian);
347349}
348350
349351fn fail(emit: *Emit, comptime format: []const u8, args: anytype) InnerError {
src/arch/riscv64/CodeGen.zig+2-2
......@@ -757,7 +757,7 @@ pub fn generate(
757757 func_index: InternPool.Index,
758758 air: Air,
759759 liveness: Liveness,
760 code: *std.ArrayList(u8),
760 code: *std.ArrayListUnmanaged(u8),
761761 debug_output: link.File.DebugInfoOutput,
762762) CodeGenError!void {
763763 const zcu = pt.zcu;
......@@ -898,7 +898,7 @@ pub fn generateLazy(
898898 pt: Zcu.PerThread,
899899 src_loc: Zcu.LazySrcLoc,
900900 lazy_sym: link.File.LazySymbol,
901 code: *std.ArrayList(u8),
901 code: *std.ArrayListUnmanaged(u8),
902902 debug_output: link.File.DebugInfoOutput,
903903) CodeGenError!void {
904904 const comp = bin_file.comp;
src/arch/riscv64/Emit.zig+9-8
......@@ -3,7 +3,7 @@
33bin_file: *link.File,
44lower: Lower,
55debug_output: link.File.DebugInfoOutput,
6code: *std.ArrayList(u8),
6code: *std.ArrayListUnmanaged(u8),
77
88prev_di_line: u32,
99prev_di_column: u32,
......@@ -18,6 +18,7 @@ pub const Error = Lower.Error || error{
1818};
1919
2020pub fn emitMir(emit: *Emit) Error!void {
21 const gpa = emit.bin_file.comp.gpa;
2122 log.debug("mir instruction len: {}", .{emit.lower.mir.instructions.len});
2223 for (0..emit.lower.mir.instructions.len) |mir_i| {
2324 const mir_index: Mir.Inst.Index = @intCast(mir_i);
......@@ -30,7 +31,7 @@ pub fn emitMir(emit: *Emit) Error!void {
3031 var lowered_relocs = lowered.relocs;
3132 for (lowered.insts, 0..) |lowered_inst, lowered_index| {
3233 const start_offset: u32 = @intCast(emit.code.items.len);
33 try lowered_inst.encode(emit.code.writer());
34 try lowered_inst.encode(emit.code.writer(gpa));
3435
3536 while (lowered_relocs.len > 0 and
3637 lowered_relocs[0].lowered_inst_index == lowered_index) : ({
......@@ -56,13 +57,13 @@ pub fn emitMir(emit: *Emit) Error!void {
5657 const hi_r_type: u32 = @intFromEnum(std.elf.R_RISCV.HI20);
5758 const lo_r_type: u32 = @intFromEnum(std.elf.R_RISCV.LO12_I);
5859
59 try atom_ptr.addReloc(elf_file.base.comp.gpa, .{
60 try atom_ptr.addReloc(gpa, .{
6061 .r_offset = start_offset,
6162 .r_info = (@as(u64, @intCast(symbol.sym_index)) << 32) | hi_r_type,
6263 .r_addend = 0,
6364 }, zo);
6465
65 try atom_ptr.addReloc(elf_file.base.comp.gpa, .{
66 try atom_ptr.addReloc(gpa, .{
6667 .r_offset = start_offset + 4,
6768 .r_info = (@as(u64, @intCast(symbol.sym_index)) << 32) | lo_r_type,
6869 .r_addend = 0,
......@@ -76,19 +77,19 @@ pub fn emitMir(emit: *Emit) Error!void {
7677
7778 const R_RISCV = std.elf.R_RISCV;
7879
79 try atom_ptr.addReloc(elf_file.base.comp.gpa, .{
80 try atom_ptr.addReloc(gpa, .{
8081 .r_offset = start_offset,
8182 .r_info = (@as(u64, @intCast(symbol.sym_index)) << 32) | @intFromEnum(R_RISCV.TPREL_HI20),
8283 .r_addend = 0,
8384 }, zo);
8485
85 try atom_ptr.addReloc(elf_file.base.comp.gpa, .{
86 try atom_ptr.addReloc(gpa, .{
8687 .r_offset = start_offset + 4,
8788 .r_info = (@as(u64, @intCast(symbol.sym_index)) << 32) | @intFromEnum(R_RISCV.TPREL_ADD),
8889 .r_addend = 0,
8990 }, zo);
9091
91 try atom_ptr.addReloc(elf_file.base.comp.gpa, .{
92 try atom_ptr.addReloc(gpa, .{
9293 .r_offset = start_offset + 8,
9394 .r_info = (@as(u64, @intCast(symbol.sym_index)) << 32) | @intFromEnum(R_RISCV.TPREL_LO12_I),
9495 .r_addend = 0,
......@@ -101,7 +102,7 @@ pub fn emitMir(emit: *Emit) Error!void {
101102
102103 const r_type: u32 = @intFromEnum(std.elf.R_RISCV.CALL_PLT);
103104
104 try atom_ptr.addReloc(elf_file.base.comp.gpa, .{
105 try atom_ptr.addReloc(gpa, .{
105106 .r_offset = start_offset,
106107 .r_info = (@as(u64, @intCast(symbol.sym_index)) << 32) | r_type,
107108 .r_addend = 0,
src/arch/sparc64/CodeGen.zig+4-4
......@@ -54,7 +54,7 @@ liveness: Liveness,
5454bin_file: *link.File,
5555target: *const std.Target,
5656func_index: InternPool.Index,
57code: *std.ArrayList(u8),
57code: *std.ArrayListUnmanaged(u8),
5858debug_output: link.File.DebugInfoOutput,
5959err_msg: ?*ErrorMsg,
6060args: []MCValue,
......@@ -265,7 +265,7 @@ pub fn generate(
265265 func_index: InternPool.Index,
266266 air: Air,
267267 liveness: Liveness,
268 code: *std.ArrayList(u8),
268 code: *std.ArrayListUnmanaged(u8),
269269 debug_output: link.File.DebugInfoOutput,
270270) CodeGenError!void {
271271 const zcu = pt.zcu;
......@@ -283,7 +283,7 @@ pub fn generate(
283283 }
284284 try branch_stack.append(.{});
285285
286 var function = Self{
286 var function: Self = .{
287287 .gpa = gpa,
288288 .pt = pt,
289289 .air = air,
......@@ -331,7 +331,7 @@ pub fn generate(
331331 };
332332 defer mir.deinit(gpa);
333333
334 var emit = Emit{
334 var emit: Emit = .{
335335 .mir = mir,
336336 .bin_file = lf,
337337 .debug_output = debug_output,
src/arch/sparc64/Emit.zig+6-3
......@@ -22,7 +22,7 @@ debug_output: link.File.DebugInfoOutput,
2222target: *const std.Target,
2323err_msg: ?*ErrorMsg = null,
2424src_loc: Zcu.LazySrcLoc,
25code: *std.ArrayList(u8),
25code: *std.ArrayListUnmanaged(u8),
2626
2727prev_di_line: u32,
2828prev_di_column: u32,
......@@ -678,10 +678,13 @@ fn optimalBranchType(emit: *Emit, tag: Mir.Inst.Tag, offset: i64) !BranchType {
678678}
679679
680680fn writeInstruction(emit: *Emit, instruction: Instruction) !void {
681 const comp = emit.bin_file.comp;
682 const gpa = comp.gpa;
683
681684 // SPARCv9 instructions are always arranged in BE regardless of the
682685 // endianness mode the CPU is running in (Section 3.1 of the ISA specification).
683686 // This is to ease porting in case someone wants to do a LE SPARCv9 backend.
684 const endian = Endian.big;
687 const endian: Endian = .big;
685688
686 std.mem.writeInt(u32, try emit.code.addManyAsArray(4), instruction.toU32(), endian);
689 std.mem.writeInt(u32, try emit.code.addManyAsArray(gpa, 4), instruction.toU32(), endian);
687690}
src/arch/x86_64/CodeGen.zig+2-2
......@@ -817,7 +817,7 @@ pub fn generate(
817817 func_index: InternPool.Index,
818818 air: Air,
819819 liveness: Liveness,
820 code: *std.ArrayList(u8),
820 code: *std.ArrayListUnmanaged(u8),
821821 debug_output: link.File.DebugInfoOutput,
822822) CodeGenError!void {
823823 const zcu = pt.zcu;
......@@ -970,7 +970,7 @@ pub fn generateLazy(
970970 pt: Zcu.PerThread,
971971 src_loc: Zcu.LazySrcLoc,
972972 lazy_sym: link.File.LazySymbol,
973 code: *std.ArrayList(u8),
973 code: *std.ArrayListUnmanaged(u8),
974974 debug_output: link.File.DebugInfoOutput,
975975) CodeGenError!void {
976976 const comp = bin_file.comp;
src/arch/x86_64/Emit.zig+8-7
......@@ -4,7 +4,7 @@ air: Air,
44lower: Lower,
55atom_index: u32,
66debug_output: link.File.DebugInfoOutput,
7code: *std.ArrayList(u8),
7code: *std.ArrayListUnmanaged(u8),
88
99prev_di_loc: Loc,
1010/// Relative to the beginning of `code`.
......@@ -18,6 +18,7 @@ pub const Error = Lower.Error || error{
1818} || link.File.UpdateDebugInfoError;
1919
2020pub fn emitMir(emit: *Emit) Error!void {
21 const gpa = emit.lower.bin_file.comp.gpa;
2122 for (0..emit.lower.mir.instructions.len) |mir_i| {
2223 const mir_index: Mir.Inst.Index = @intCast(mir_i);
2324 try emit.code_offset_mapping.putNoClobber(
......@@ -82,7 +83,7 @@ pub fn emitMir(emit: *Emit) Error!void {
8283 }
8384 continue;
8485 }
85 try lowered_inst.encode(emit.code.writer(), .{});
86 try lowered_inst.encode(emit.code.writer(gpa), .{});
8687 const end_offset: u32 = @intCast(emit.code.items.len);
8788 while (lowered_relocs.len > 0 and
8889 lowered_relocs[0].lowered_inst_index == lowered_index) : ({
......@@ -100,7 +101,7 @@ pub fn emitMir(emit: *Emit) Error!void {
100101 const zo = elf_file.zigObjectPtr().?;
101102 const atom_ptr = zo.symbol(emit.atom_index).atom(elf_file).?;
102103 const r_type = @intFromEnum(std.elf.R_X86_64.PLT32);
103 try atom_ptr.addReloc(elf_file.base.comp.gpa, .{
104 try atom_ptr.addReloc(gpa, .{
104105 .r_offset = end_offset - 4,
105106 .r_info = (@as(u64, @intCast(sym_index)) << 32) | r_type,
106107 .r_addend = lowered_relocs[0].off - 4,
......@@ -147,7 +148,7 @@ pub fn emitMir(emit: *Emit) Error!void {
147148 const zo = elf_file.zigObjectPtr().?;
148149 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
149150 const r_type = @intFromEnum(std.elf.R_X86_64.TLSLD);
150 try atom.addReloc(elf_file.base.comp.gpa, .{
151 try atom.addReloc(gpa, .{
151152 .r_offset = end_offset - 4,
152153 .r_info = (@as(u64, @intCast(sym_index)) << 32) | r_type,
153154 .r_addend = lowered_relocs[0].off - 4,
......@@ -158,7 +159,7 @@ pub fn emitMir(emit: *Emit) Error!void {
158159 const zo = elf_file.zigObjectPtr().?;
159160 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
160161 const r_type = @intFromEnum(std.elf.R_X86_64.DTPOFF32);
161 try atom.addReloc(elf_file.base.comp.gpa, .{
162 try atom.addReloc(gpa, .{
162163 .r_offset = end_offset - 4,
163164 .r_info = (@as(u64, @intCast(sym_index)) << 32) | r_type,
164165 .r_addend = lowered_relocs[0].off,
......@@ -173,7 +174,7 @@ pub fn emitMir(emit: *Emit) Error!void {
173174 @intFromEnum(std.elf.R_X86_64.GOTPCREL)
174175 else
175176 @intFromEnum(std.elf.R_X86_64.PC32);
176 try atom.addReloc(elf_file.base.comp.gpa, .{
177 try atom.addReloc(gpa, .{
177178 .r_offset = end_offset - 4,
178179 .r_info = (@as(u64, @intCast(sym_index)) << 32) | r_type,
179180 .r_addend = lowered_relocs[0].off - 4,
......@@ -183,7 +184,7 @@ pub fn emitMir(emit: *Emit) Error!void {
183184 @intFromEnum(std.elf.R_X86_64.TPOFF32)
184185 else
185186 @intFromEnum(std.elf.R_X86_64.@"32");
186 try atom.addReloc(elf_file.base.comp.gpa, .{
187 try atom.addReloc(gpa, .{
187188 .r_offset = end_offset - 4,
188189 .r_info = (@as(u64, @intCast(sym_index)) << 32) | r_type,
189190 .r_addend = lowered_relocs[0].off,
src/codegen.zig+53-51
......@@ -55,7 +55,7 @@ pub fn generateFunction(
5555 func_index: InternPool.Index,
5656 air: Air,
5757 liveness: Liveness,
58 code: *std.ArrayList(u8),
58 code: *std.ArrayListUnmanaged(u8),
5959 debug_output: link.File.DebugInfoOutput,
6060) CodeGenError!void {
6161 const zcu = pt.zcu;
......@@ -80,7 +80,7 @@ pub fn generateLazyFunction(
8080 pt: Zcu.PerThread,
8181 src_loc: Zcu.LazySrcLoc,
8282 lazy_sym: link.File.LazySymbol,
83 code: *std.ArrayList(u8),
83 code: *std.ArrayListUnmanaged(u8),
8484 debug_output: link.File.DebugInfoOutput,
8585) CodeGenError!void {
8686 const zcu = pt.zcu;
......@@ -110,7 +110,7 @@ pub fn generateLazySymbol(
110110 lazy_sym: link.File.LazySymbol,
111111 // TODO don't use an "out" parameter like this; put it in the result instead
112112 alignment: *Alignment,
113 code: *std.ArrayList(u8),
113 code: *std.ArrayListUnmanaged(u8),
114114 debug_output: link.File.DebugInfoOutput,
115115 reloc_parent: link.File.RelocInfo.Parent,
116116) CodeGenError!void {
......@@ -120,6 +120,7 @@ pub fn generateLazySymbol(
120120 defer tracy.end();
121121
122122 const comp = bin_file.comp;
123 const gpa = comp.gpa;
123124 const zcu = pt.zcu;
124125 const ip = &zcu.intern_pool;
125126 const target = comp.root_mod.resolved_target.result;
......@@ -140,7 +141,7 @@ pub fn generateLazySymbol(
140141 const err_names = ip.global_error_set.getNamesFromMainThread();
141142 var offset_index: u32 = @intCast(code.items.len);
142143 var string_index: u32 = @intCast(4 * (1 + err_names.len + @intFromBool(err_names.len > 0)));
143 try code.resize(offset_index + string_index);
144 try code.resize(gpa, offset_index + string_index);
144145 mem.writeInt(u32, code.items[offset_index..][0..4], @intCast(err_names.len), endian);
145146 if (err_names.len == 0) return .ok;
146147 offset_index += 4;
......@@ -148,7 +149,7 @@ pub fn generateLazySymbol(
148149 const err_name = err_name_nts.toSlice(ip);
149150 mem.writeInt(u32, code.items[offset_index..][0..4], string_index, endian);
150151 offset_index += 4;
151 try code.ensureUnusedCapacity(err_name.len + 1);
152 try code.ensureUnusedCapacity(gpa, err_name.len + 1);
152153 code.appendSliceAssumeCapacity(err_name);
153154 code.appendAssumeCapacity(0);
154155 string_index += @intCast(err_name.len + 1);
......@@ -160,7 +161,7 @@ pub fn generateLazySymbol(
160161 const tag_names = enum_ty.enumFields(zcu);
161162 for (0..tag_names.len) |tag_index| {
162163 const tag_name = tag_names.get(ip)[tag_index].toSlice(ip);
163 try code.ensureUnusedCapacity(tag_name.len + 1);
164 try code.ensureUnusedCapacity(gpa, tag_name.len + 1);
164165 code.appendSliceAssumeCapacity(tag_name);
165166 code.appendAssumeCapacity(0);
166167 }
......@@ -182,13 +183,14 @@ pub fn generateSymbol(
182183 pt: Zcu.PerThread,
183184 src_loc: Zcu.LazySrcLoc,
184185 val: Value,
185 code: *std.ArrayList(u8),
186 code: *std.ArrayListUnmanaged(u8),
186187 reloc_parent: link.File.RelocInfo.Parent,
187188) GenerateSymbolError!void {
188189 const tracy = trace(@src());
189190 defer tracy.end();
190191
191192 const zcu = pt.zcu;
193 const gpa = zcu.gpa;
192194 const ip = &zcu.intern_pool;
193195 const ty = val.typeOf(zcu);
194196
......@@ -199,7 +201,7 @@ pub fn generateSymbol(
199201
200202 if (val.isUndefDeep(zcu)) {
201203 const abi_size = math.cast(usize, ty.abiSize(zcu)) orelse return error.Overflow;
202 try code.appendNTimes(0xaa, abi_size);
204 try code.appendNTimes(gpa, 0xaa, abi_size);
203205 return;
204206 }
205207
......@@ -231,7 +233,7 @@ pub fn generateSymbol(
231233 .@"unreachable",
232234 .generic_poison,
233235 => unreachable, // non-runtime values
234 .false, .true => try code.append(switch (simple_value) {
236 .false, .true => try code.append(gpa, switch (simple_value) {
235237 .false => 0,
236238 .true => 1,
237239 else => unreachable,
......@@ -247,11 +249,11 @@ pub fn generateSymbol(
247249 const abi_size = math.cast(usize, ty.abiSize(zcu)) orelse return error.Overflow;
248250 var space: Value.BigIntSpace = undefined;
249251 const int_val = val.toBigInt(&space, zcu);
250 int_val.writeTwosComplement(try code.addManyAsSlice(abi_size), endian);
252 int_val.writeTwosComplement(try code.addManyAsSlice(gpa, abi_size), endian);
251253 },
252254 .err => |err| {
253255 const int = try pt.getErrorValue(err.name);
254 try code.writer().writeInt(u16, @intCast(int), endian);
256 try code.writer(gpa).writeInt(u16, @intCast(int), endian);
255257 },
256258 .error_union => |error_union| {
257259 const payload_ty = ty.errorUnionPayload(zcu);
......@@ -261,7 +263,7 @@ pub fn generateSymbol(
261263 };
262264
263265 if (!payload_ty.hasRuntimeBitsIgnoreComptime(zcu)) {
264 try code.writer().writeInt(u16, err_val, endian);
266 try code.writer(gpa).writeInt(u16, err_val, endian);
265267 return;
266268 }
267269
......@@ -271,7 +273,7 @@ pub fn generateSymbol(
271273
272274 // error value first when its type is larger than the error union's payload
273275 if (error_align.order(payload_align) == .gt) {
274 try code.writer().writeInt(u16, err_val, endian);
276 try code.writer(gpa).writeInt(u16, err_val, endian);
275277 }
276278
277279 // emit payload part of the error union
......@@ -286,20 +288,20 @@ pub fn generateSymbol(
286288 const padding = math.cast(usize, padded_end - unpadded_end) orelse return error.Overflow;
287289
288290 if (padding > 0) {
289 try code.appendNTimes(0, padding);
291 try code.appendNTimes(gpa, 0, padding);
290292 }
291293 }
292294
293295 // Payload size is larger than error set, so emit our error set last
294296 if (error_align.compare(.lte, payload_align)) {
295297 const begin = code.items.len;
296 try code.writer().writeInt(u16, err_val, endian);
298 try code.writer(gpa).writeInt(u16, err_val, endian);
297299 const unpadded_end = code.items.len - begin;
298300 const padded_end = abi_align.forward(unpadded_end);
299301 const padding = math.cast(usize, padded_end - unpadded_end) orelse return error.Overflow;
300302
301303 if (padding > 0) {
302 try code.appendNTimes(0, padding);
304 try code.appendNTimes(gpa, 0, padding);
303305 }
304306 }
305307 },
......@@ -308,15 +310,15 @@ pub fn generateSymbol(
308310 try generateSymbol(bin_file, pt, src_loc, try pt.getCoerced(Value.fromInterned(enum_tag.int), int_tag_ty), code, reloc_parent);
309311 },
310312 .float => |float| switch (float.storage) {
311 .f16 => |f16_val| writeFloat(f16, f16_val, target, endian, try code.addManyAsArray(2)),
312 .f32 => |f32_val| writeFloat(f32, f32_val, target, endian, try code.addManyAsArray(4)),
313 .f64 => |f64_val| writeFloat(f64, f64_val, target, endian, try code.addManyAsArray(8)),
313 .f16 => |f16_val| writeFloat(f16, f16_val, target, endian, try code.addManyAsArray(gpa, 2)),
314 .f32 => |f32_val| writeFloat(f32, f32_val, target, endian, try code.addManyAsArray(gpa, 4)),
315 .f64 => |f64_val| writeFloat(f64, f64_val, target, endian, try code.addManyAsArray(gpa, 8)),
314316 .f80 => |f80_val| {
315 writeFloat(f80, f80_val, target, endian, try code.addManyAsArray(10));
317 writeFloat(f80, f80_val, target, endian, try code.addManyAsArray(gpa, 10));
316318 const abi_size = math.cast(usize, ty.abiSize(zcu)) orelse return error.Overflow;
317 try code.appendNTimes(0, abi_size - 10);
319 try code.appendNTimes(gpa, 0, abi_size - 10);
318320 },
319 .f128 => |f128_val| writeFloat(f128, f128_val, target, endian, try code.addManyAsArray(16)),
321 .f128 => |f128_val| writeFloat(f128, f128_val, target, endian, try code.addManyAsArray(gpa, 16)),
320322 },
321323 .ptr => try lowerPtr(bin_file, pt, src_loc, val.toIntern(), code, reloc_parent, 0),
322324 .slice => |slice| {
......@@ -332,7 +334,7 @@ pub fn generateSymbol(
332334 if (payload_val) |value| {
333335 try generateSymbol(bin_file, pt, src_loc, value, code, reloc_parent);
334336 } else {
335 try code.appendNTimes(0, abi_size);
337 try code.appendNTimes(gpa, 0, abi_size);
336338 }
337339 } else {
338340 const padding = abi_size - (math.cast(usize, payload_type.abiSize(zcu)) orelse return error.Overflow) - 1;
......@@ -342,13 +344,13 @@ pub fn generateSymbol(
342344 }));
343345 try generateSymbol(bin_file, pt, src_loc, value, code, reloc_parent);
344346 }
345 try code.writer().writeByte(@intFromBool(payload_val != null));
346 try code.appendNTimes(0, padding);
347 try code.writer(gpa).writeByte(@intFromBool(payload_val != null));
348 try code.appendNTimes(gpa, 0, padding);
347349 }
348350 },
349351 .aggregate => |aggregate| switch (ip.indexToKey(ty.toIntern())) {
350352 .array_type => |array_type| switch (aggregate.storage) {
351 .bytes => |bytes| try code.appendSlice(bytes.toSlice(array_type.lenIncludingSentinel(), ip)),
353 .bytes => |bytes| try code.appendSlice(gpa, bytes.toSlice(array_type.lenIncludingSentinel(), ip)),
352354 .elems, .repeated_elem => {
353355 var index: u64 = 0;
354356 while (index < array_type.lenIncludingSentinel()) : (index += 1) {
......@@ -366,7 +368,7 @@ pub fn generateSymbol(
366368 .vector_type => |vector_type| {
367369 const abi_size = math.cast(usize, ty.abiSize(zcu)) orelse return error.Overflow;
368370 if (vector_type.child == .bool_type) {
369 const bytes = try code.addManyAsSlice(abi_size);
371 const bytes = try code.addManyAsSlice(gpa, abi_size);
370372 @memset(bytes, 0xaa);
371373 var index: usize = 0;
372374 const len = math.cast(usize, vector_type.len) orelse return error.Overflow;
......@@ -405,7 +407,7 @@ pub fn generateSymbol(
405407 }
406408 } else {
407409 switch (aggregate.storage) {
408 .bytes => |bytes| try code.appendSlice(bytes.toSlice(vector_type.len, ip)),
410 .bytes => |bytes| try code.appendSlice(gpa, bytes.toSlice(vector_type.len, ip)),
409411 .elems, .repeated_elem => {
410412 var index: u64 = 0;
411413 while (index < vector_type.len) : (index += 1) {
......@@ -423,7 +425,7 @@ pub fn generateSymbol(
423425 const padding = abi_size -
424426 (math.cast(usize, Type.fromInterned(vector_type.child).abiSize(zcu) * vector_type.len) orelse
425427 return error.Overflow);
426 if (padding > 0) try code.appendNTimes(0, padding);
428 if (padding > 0) try code.appendNTimes(gpa, 0, padding);
427429 }
428430 },
429431 .tuple_type => |tuple| {
......@@ -454,7 +456,7 @@ pub fn generateSymbol(
454456 return error.Overflow;
455457
456458 if (padding > 0) {
457 try code.appendNTimes(0, padding);
459 try code.appendNTimes(gpa, 0, padding);
458460 }
459461 }
460462 },
......@@ -464,7 +466,7 @@ pub fn generateSymbol(
464466 .@"packed" => {
465467 const abi_size = math.cast(usize, ty.abiSize(zcu)) orelse return error.Overflow;
466468 const current_pos = code.items.len;
467 try code.appendNTimes(0, abi_size);
469 try code.appendNTimes(gpa, 0, abi_size);
468470 var bits: u16 = 0;
469471
470472 for (struct_type.field_types.get(ip), 0..) |field_ty, index| {
......@@ -482,8 +484,8 @@ pub fn generateSymbol(
482484 if (Type.fromInterned(field_ty).zigTypeTag(zcu) == .pointer) {
483485 const field_size = math.cast(usize, Type.fromInterned(field_ty).abiSize(zcu)) orelse
484486 return error.Overflow;
485 var tmp_list = try std.ArrayList(u8).initCapacity(code.allocator, field_size);
486 defer tmp_list.deinit();
487 var tmp_list = try std.ArrayListUnmanaged(u8).initCapacity(gpa, field_size);
488 defer tmp_list.deinit(gpa);
487489 try generateSymbol(bin_file, pt, src_loc, Value.fromInterned(field_val), &tmp_list, reloc_parent);
488490 @memcpy(code.items[current_pos..][0..tmp_list.items.len], tmp_list.items);
489491 } else {
......@@ -515,7 +517,7 @@ pub fn generateSymbol(
515517 usize,
516518 offsets[field_index] - (code.items.len - struct_begin),
517519 ) orelse return error.Overflow;
518 if (padding > 0) try code.appendNTimes(0, padding);
520 if (padding > 0) try code.appendNTimes(gpa, 0, padding);
519521
520522 try generateSymbol(bin_file, pt, src_loc, Value.fromInterned(field_val), code, reloc_parent);
521523 }
......@@ -528,7 +530,7 @@ pub fn generateSymbol(
528530 std.mem.alignForward(u64, size, @max(alignment, 1)) -
529531 (code.items.len - struct_begin),
530532 ) orelse return error.Overflow;
531 if (padding > 0) try code.appendNTimes(0, padding);
533 if (padding > 0) try code.appendNTimes(gpa, 0, padding);
532534 },
533535 }
534536 },
......@@ -551,13 +553,13 @@ pub fn generateSymbol(
551553 const field_index = ty.unionTagFieldIndex(Value.fromInterned(un.tag), zcu).?;
552554 const field_ty = Type.fromInterned(union_obj.field_types.get(ip)[field_index]);
553555 if (!field_ty.hasRuntimeBits(zcu)) {
554 try code.appendNTimes(0xaa, math.cast(usize, layout.payload_size) orelse return error.Overflow);
556 try code.appendNTimes(gpa, 0xaa, math.cast(usize, layout.payload_size) orelse return error.Overflow);
555557 } else {
556558 try generateSymbol(bin_file, pt, src_loc, Value.fromInterned(un.val), code, reloc_parent);
557559
558560 const padding = math.cast(usize, layout.payload_size - field_ty.abiSize(zcu)) orelse return error.Overflow;
559561 if (padding > 0) {
560 try code.appendNTimes(0, padding);
562 try code.appendNTimes(gpa, 0, padding);
561563 }
562564 }
563565 } else {
......@@ -568,7 +570,7 @@ pub fn generateSymbol(
568570 try generateSymbol(bin_file, pt, src_loc, Value.fromInterned(un.tag), code, reloc_parent);
569571
570572 if (layout.padding > 0) {
571 try code.appendNTimes(0, layout.padding);
573 try code.appendNTimes(gpa, 0, layout.padding);
572574 }
573575 }
574576 },
......@@ -581,7 +583,7 @@ fn lowerPtr(
581583 pt: Zcu.PerThread,
582584 src_loc: Zcu.LazySrcLoc,
583585 ptr_val: InternPool.Index,
584 code: *std.ArrayList(u8),
586 code: *std.ArrayListUnmanaged(u8),
585587 reloc_parent: link.File.RelocInfo.Parent,
586588 prev_offset: u64,
587589) GenerateSymbolError!void {
......@@ -634,7 +636,7 @@ fn lowerUavRef(
634636 pt: Zcu.PerThread,
635637 src_loc: Zcu.LazySrcLoc,
636638 uav: InternPool.Key.Ptr.BaseAddr.Uav,
637 code: *std.ArrayList(u8),
639 code: *std.ArrayListUnmanaged(u8),
638640 reloc_parent: link.File.RelocInfo.Parent,
639641 offset: u64,
640642) GenerateSymbolError!void {
......@@ -649,7 +651,7 @@ fn lowerUavRef(
649651 log.debug("lowerUavRef: ty = {}", .{uav_ty.fmt(pt)});
650652 const is_fn_body = uav_ty.zigTypeTag(zcu) == .@"fn";
651653 if (!is_fn_body and !uav_ty.hasRuntimeBits(zcu)) {
652 try code.appendNTimes(0xaa, ptr_width_bytes);
654 try code.appendNTimes(gpa, 0xaa, ptr_width_bytes);
653655 return;
654656 }
655657
......@@ -667,7 +669,7 @@ fn lowerUavRef(
667669 .offset = @intCast(code.items.len),
668670 .pointee = .{ .uav_index = uav.val },
669671 });
670 try code.appendNTimes(0, ptr_width_bytes);
672 try code.appendNTimes(gpa, 0, ptr_width_bytes);
671673 return;
672674 },
673675 else => {},
......@@ -686,9 +688,9 @@ fn lowerUavRef(
686688 });
687689 const endian = target.cpu.arch.endian();
688690 switch (ptr_width_bytes) {
689 2 => mem.writeInt(u16, try code.addManyAsArray(2), @intCast(vaddr), endian),
690 4 => mem.writeInt(u32, try code.addManyAsArray(4), @intCast(vaddr), endian),
691 8 => mem.writeInt(u64, try code.addManyAsArray(8), vaddr, endian),
691 2 => mem.writeInt(u16, try code.addManyAsArray(gpa, 2), @intCast(vaddr), endian),
692 4 => mem.writeInt(u32, try code.addManyAsArray(gpa, 4), @intCast(vaddr), endian),
693 8 => mem.writeInt(u64, try code.addManyAsArray(gpa, 8), vaddr, endian),
692694 else => unreachable,
693695 }
694696}
......@@ -698,7 +700,7 @@ fn lowerNavRef(
698700 pt: Zcu.PerThread,
699701 src_loc: Zcu.LazySrcLoc,
700702 nav_index: InternPool.Nav.Index,
701 code: *std.ArrayList(u8),
703 code: *std.ArrayListUnmanaged(u8),
702704 reloc_parent: link.File.RelocInfo.Parent,
703705 offset: u64,
704706) GenerateSymbolError!void {
......@@ -712,7 +714,7 @@ fn lowerNavRef(
712714 const nav_ty = Type.fromInterned(ip.getNav(nav_index).typeOf(ip));
713715 const is_fn_body = nav_ty.zigTypeTag(zcu) == .@"fn";
714716 if (!is_fn_body and !nav_ty.hasRuntimeBits(zcu)) {
715 try code.appendNTimes(0xaa, ptr_width_bytes);
717 try code.appendNTimes(gpa, 0xaa, ptr_width_bytes);
716718 return;
717719 }
718720
......@@ -730,7 +732,7 @@ fn lowerNavRef(
730732 .offset = @intCast(code.items.len),
731733 .pointee = .{ .nav_index = nav_index },
732734 });
733 try code.appendNTimes(0, ptr_width_bytes);
735 try code.appendNTimes(gpa, 0, ptr_width_bytes);
734736 return;
735737 },
736738 else => {},
......@@ -743,9 +745,9 @@ fn lowerNavRef(
743745 }) catch @panic("TODO rework getNavVAddr");
744746 const endian = target.cpu.arch.endian();
745747 switch (ptr_width_bytes) {
746 2 => mem.writeInt(u16, try code.addManyAsArray(2), @intCast(vaddr), endian),
747 4 => mem.writeInt(u32, try code.addManyAsArray(4), @intCast(vaddr), endian),
748 8 => mem.writeInt(u64, try code.addManyAsArray(8), vaddr, endian),
748 2 => mem.writeInt(u16, try code.addManyAsArray(gpa, 2), @intCast(vaddr), endian),
749 4 => mem.writeInt(u32, try code.addManyAsArray(gpa, 4), @intCast(vaddr), endian),
750 8 => mem.writeInt(u64, try code.addManyAsArray(gpa, 8), vaddr, endian),
749751 else => unreachable,
750752 }
751753}
src/link/Coff.zig+8-8
......@@ -1119,8 +1119,8 @@ pub fn updateFunc(
11191119
11201120 coff.navs.getPtr(func.owner_nav).?.section = coff.text_section_index.?;
11211121
1122 var code_buffer = std.ArrayList(u8).init(gpa);
1123 defer code_buffer.deinit();
1122 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1123 defer code_buffer.deinit(gpa);
11241124
11251125 codegen.generateFunction(
11261126 &coff.base,
......@@ -1167,8 +1167,8 @@ fn lowerConst(
11671167) !LowerConstResult {
11681168 const gpa = coff.base.comp.gpa;
11691169
1170 var code_buffer = std.ArrayList(u8).init(gpa);
1171 defer code_buffer.deinit();
1170 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1171 defer code_buffer.deinit(gpa);
11721172
11731173 const atom_index = try coff.createAtom();
11741174 const sym = coff.getAtom(atom_index).getSymbolPtr(coff);
......@@ -1237,8 +1237,8 @@ pub fn updateNav(
12371237
12381238 coff.navs.getPtr(nav_index).?.section = coff.getNavOutputSection(nav_index);
12391239
1240 var code_buffer = std.ArrayList(u8).init(gpa);
1241 defer code_buffer.deinit();
1240 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1241 defer code_buffer.deinit(gpa);
12421242
12431243 try codegen.generateSymbol(
12441244 &coff.base,
......@@ -1267,8 +1267,8 @@ fn updateLazySymbolAtom(
12671267 const gpa = comp.gpa;
12681268
12691269 var required_alignment: InternPool.Alignment = .none;
1270 var code_buffer = std.ArrayList(u8).init(gpa);
1271 defer code_buffer.deinit();
1270 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1271 defer code_buffer.deinit(gpa);
12721272
12731273 const name = try allocPrint(gpa, "__lazy_{s}_{}", .{
12741274 @tagName(sym.kind),
src/link/Dwarf.zig+3-4
......@@ -1890,17 +1890,16 @@ pub const WipNav = struct {
18901890 const bytes = if (ty.hasRuntimeBits(wip_nav.pt.zcu)) ty.abiSize(wip_nav.pt.zcu) else 0;
18911891 try uleb128(diw, bytes);
18921892 if (bytes == 0) return;
1893 var dim = wip_nav.debug_info.toManaged(wip_nav.dwarf.gpa);
1894 defer wip_nav.debug_info = dim.moveToUnmanaged();
1893 const old_len = wip_nav.debug_info.items.len;
18951894 try codegen.generateSymbol(
18961895 wip_nav.dwarf.bin_file,
18971896 wip_nav.pt,
18981897 src_loc,
18991898 val,
1900 &dim,
1899 &wip_nav.debug_info,
19011900 .{ .debug_output = .{ .dwarf = wip_nav } },
19021901 );
1903 assert(dim.items.len == wip_nav.debug_info.items.len + bytes);
1902 assert(old_len + bytes == wip_nav.debug_info.items.len);
19041903 }
19051904
19061905 const AbbrevCodeForForm = struct {
src/link/Elf/ZigObject.zig+8-8
......@@ -1431,8 +1431,8 @@ pub fn updateFunc(
14311431 const sym_index = try self.getOrCreateMetadataForNav(zcu, func.owner_nav);
14321432 self.atom(self.symbol(sym_index).ref.index).?.freeRelocs(self);
14331433
1434 var code_buffer = std.ArrayList(u8).init(gpa);
1435 defer code_buffer.deinit();
1434 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1435 defer code_buffer.deinit(gpa);
14361436
14371437 var debug_wip_nav = if (self.dwarf) |*dwarf| try dwarf.initWipNav(pt, func.owner_nav, sym_index) else null;
14381438 defer if (debug_wip_nav) |*wip_nav| wip_nav.deinit();
......@@ -1561,8 +1561,8 @@ pub fn updateNav(
15611561 const sym_index = try self.getOrCreateMetadataForNav(zcu, nav_index);
15621562 self.symbol(sym_index).atom(elf_file).?.freeRelocs(self);
15631563
1564 var code_buffer = std.ArrayList(u8).init(zcu.gpa);
1565 defer code_buffer.deinit();
1564 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1565 defer code_buffer.deinit(zcu.gpa);
15661566
15671567 var debug_wip_nav = if (self.dwarf) |*dwarf| try dwarf.initWipNav(pt, nav_index, sym_index) else null;
15681568 defer if (debug_wip_nav) |*wip_nav| wip_nav.deinit();
......@@ -1616,8 +1616,8 @@ fn updateLazySymbol(
16161616 const gpa = zcu.gpa;
16171617
16181618 var required_alignment: InternPool.Alignment = .none;
1619 var code_buffer = std.ArrayList(u8).init(gpa);
1620 defer code_buffer.deinit();
1619 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1620 defer code_buffer.deinit(gpa);
16211621
16221622 const name_str_index = blk: {
16231623 const name = try std.fmt.allocPrint(gpa, "__lazy_{s}_{}", .{
......@@ -1706,8 +1706,8 @@ fn lowerConst(
17061706) !LowerConstResult {
17071707 const gpa = pt.zcu.gpa;
17081708
1709 var code_buffer = std.ArrayList(u8).init(gpa);
1710 defer code_buffer.deinit();
1709 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1710 defer code_buffer.deinit(gpa);
17111711
17121712 const name_off = try self.addString(gpa, name);
17131713 const sym_index = try self.newSymbolWithAtom(gpa, name_off);
src/link/MachO/ZigObject.zig+8-8
......@@ -789,8 +789,8 @@ pub fn updateFunc(
789789 const sym_index = try self.getOrCreateMetadataForNav(macho_file, func.owner_nav);
790790 self.symbols.items[sym_index].getAtom(macho_file).?.freeRelocs(macho_file);
791791
792 var code_buffer = std.ArrayList(u8).init(gpa);
793 defer code_buffer.deinit();
792 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
793 defer code_buffer.deinit(gpa);
794794
795795 var debug_wip_nav = if (self.dwarf) |*dwarf| try dwarf.initWipNav(pt, func.owner_nav, sym_index) else null;
796796 defer if (debug_wip_nav) |*wip_nav| wip_nav.deinit();
......@@ -900,8 +900,8 @@ pub fn updateNav(
900900 const sym_index = try self.getOrCreateMetadataForNav(macho_file, nav_index);
901901 self.symbols.items[sym_index].getAtom(macho_file).?.freeRelocs(macho_file);
902902
903 var code_buffer = std.ArrayList(u8).init(zcu.gpa);
904 defer code_buffer.deinit();
903 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
904 defer code_buffer.deinit(zcu.gpa);
905905
906906 var debug_wip_nav = if (self.dwarf) |*dwarf| try dwarf.initWipNav(pt, nav_index, sym_index) else null;
907907 defer if (debug_wip_nav) |*wip_nav| wip_nav.deinit();
......@@ -1201,8 +1201,8 @@ fn lowerConst(
12011201) !LowerConstResult {
12021202 const gpa = macho_file.base.comp.gpa;
12031203
1204 var code_buffer = std.ArrayList(u8).init(gpa);
1205 defer code_buffer.deinit();
1204 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1205 defer code_buffer.deinit(gpa);
12061206
12071207 const name_str = try self.addString(gpa, name);
12081208 const sym_index = try self.newSymbolWithAtom(gpa, name_str, macho_file);
......@@ -1352,8 +1352,8 @@ fn updateLazySymbol(
13521352 const gpa = zcu.gpa;
13531353
13541354 var required_alignment: Atom.Alignment = .none;
1355 var code_buffer = std.ArrayList(u8).init(gpa);
1356 defer code_buffer.deinit();
1355 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1356 defer code_buffer.deinit(gpa);
13571357
13581358 const name_str = blk: {
13591359 const name = try std.fmt.allocPrint(gpa, "__lazy_{s}_{}", .{
src/link/Plan9.zig+10-10
......@@ -404,8 +404,8 @@ pub fn updateFunc(
404404
405405 const atom_idx = try self.seeNav(pt, func.owner_nav);
406406
407 var code_buffer = std.ArrayList(u8).init(gpa);
408 defer code_buffer.deinit();
407 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
408 defer code_buffer.deinit(gpa);
409409 var dbg_info_output: DebugInfoOutput = .{
410410 .dbg_line = std.ArrayList(u8).init(gpa),
411411 .start_line = null,
......@@ -426,7 +426,7 @@ pub fn updateFunc(
426426 &code_buffer,
427427 .{ .plan9 = &dbg_info_output },
428428 );
429 const code = try code_buffer.toOwnedSlice();
429 const code = try code_buffer.toOwnedSlice(gpa);
430430 self.getAtomPtr(atom_idx).code = .{
431431 .code_ptr = null,
432432 .other = .{ .nav_index = func.owner_nav },
......@@ -462,8 +462,8 @@ pub fn updateNav(self: *Plan9, pt: Zcu.PerThread, nav_index: InternPool.Nav.Inde
462462 if (nav_init.typeOf(zcu).hasRuntimeBits(zcu)) {
463463 const atom_idx = try self.seeNav(pt, nav_index);
464464
465 var code_buffer = std.ArrayList(u8).init(gpa);
466 defer code_buffer.deinit();
465 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
466 defer code_buffer.deinit(gpa);
467467 // TODO we need the symbol index for symbol in the table of locals for the containing atom
468468 try codegen.generateSymbol(
469469 &self.base,
......@@ -1060,8 +1060,8 @@ fn updateLazySymbolAtom(
10601060 const diags = &comp.link_diags;
10611061
10621062 var required_alignment: InternPool.Alignment = .none;
1063 var code_buffer = std.ArrayList(u8).init(gpa);
1064 defer code_buffer.deinit();
1063 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1064 defer code_buffer.deinit(gpa);
10651065
10661066 // create the symbol for the name
10671067 const name = try std.fmt.allocPrint(gpa, "__lazy_{s}_{}", .{
......@@ -1401,16 +1401,16 @@ pub fn lowerUav(
14011401 const got_index = self.allocateGotIndex();
14021402 gop.value_ptr.* = index;
14031403 // we need to free name latex
1404 var code_buffer = std.ArrayList(u8).init(gpa);
1404 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
1405 defer code_buffer.deinit(gpa);
14051406 try codegen.generateSymbol(&self.base, pt, src_loc, val, &code_buffer, .{ .atom_index = index });
1406 const code = code_buffer.items;
14071407 const atom_ptr = self.getAtomPtr(index);
14081408 atom_ptr.* = .{
14091409 .type = .d,
14101410 .offset = undefined,
14111411 .sym_index = null,
14121412 .got_index = got_index,
1413 .code = Atom.CodePtr.fromSlice(code),
1413 .code = Atom.CodePtr.fromSlice(try code_buffer.toOwnedSlice(gpa)),
14141414 };
14151415 _ = try atom_ptr.getOrCreateSymbolTableEntry(self);
14161416 self.syms.items[atom_ptr.sym_index.?] = .{
src/link/Wasm.zig+4-10
......@@ -1560,7 +1560,7 @@ pub fn updateNav(wasm: *Wasm, pt: Zcu.PerThread, nav_index: InternPool.Nav.Index
15601560 const relocs_start: u32 = @intCast(wasm.relocations.len);
15611561 wasm.string_bytes_lock.lock();
15621562
1563 const res = try codegen.generateSymbol(
1563 try codegen.generateSymbol(
15641564 &wasm.base,
15651565 pt,
15661566 zcu.navSrcLoc(nav_index),
......@@ -1573,15 +1573,9 @@ pub fn updateNav(wasm: *Wasm, pt: Zcu.PerThread, nav_index: InternPool.Nav.Index
15731573 const relocs_len: u32 = @intCast(wasm.relocations.len - relocs_start);
15741574 wasm.string_bytes_lock.unlock();
15751575
1576 const code: Nav.Code = switch (res) {
1577 .ok => .{
1578 .off = code_start,
1579 .len = code_len,
1580 },
1581 .fail => |em| {
1582 try zcu.failed_codegen.put(gpa, nav_index, em);
1583 return;
1584 },
1576 const code: Nav.Code = .{
1577 .off = code_start,
1578 .len = code_len,
15851579 };
15861580
15871581 const gop = try wasm.navs.getOrPut(gpa, nav_index);