authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-03-25 23:47:42+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-03-25 23:48:39+01:00
logae1b2bfcada1ee3ab9656de6af997fbb673ecd24
treed2b1f31cc52a4a9763e588d5455aa7ffe7e4fc25
parent69e9fe4ede8ccc3a8792304ec76039fd57ba070a

dwarf+codegen: use appendNTimes instead of writer().writeByteNTimes


2 files changed, 31 insertions(+), 33 deletions(-)

src/codegen.zig+1-1
...@@ -517,7 +517,7 @@ pub fn generateSymbol(...@@ -517,7 +517,7 @@ pub fn generateSymbol(
517 const abi_size = math.cast(usize, typed_value.ty.abiSize(mod)) orelse517 const abi_size = math.cast(usize, typed_value.ty.abiSize(mod)) orelse
518 return error.Overflow;518 return error.Overflow;
519 const current_pos = code.items.len;519 const current_pos = code.items.len;
520 try code.writer().writeByteNTimes(0, abi_size);520 try code.appendNTimes(0, abi_size);
521 var bits: u16 = 0;521 var bits: u16 = 0;
522522
523 for (struct_type.field_types.get(ip), 0..) |field_ty, index| {523 for (struct_type.field_types.get(ip), 0..) |field_ty, index| {
src/link/Dwarf.zig+30-32
...@@ -187,17 +187,16 @@ pub const DeclState = struct {...@@ -187,17 +187,16 @@ pub const DeclState = struct {
187 // DW.AT.name, DW.FORM.string187 // DW.AT.name, DW.FORM.string
188 try dbg_info_buffer.writer().print("{}\x00", .{ty.fmt(mod)});188 try dbg_info_buffer.writer().print("{}\x00", .{ty.fmt(mod)});
189 // DW.AT.member189 // DW.AT.member
190 try dbg_info_buffer.ensureUnusedCapacity(7);190 try dbg_info_buffer.ensureUnusedCapacity(21);
191 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));191 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));
192 // DW.AT.name, DW.FORM.string192 // DW.AT.name, DW.FORM.string
193 dbg_info_buffer.appendSliceAssumeCapacity("maybe");193 dbg_info_buffer.appendSliceAssumeCapacity("maybe");
194 dbg_info_buffer.appendAssumeCapacity(0);194 dbg_info_buffer.appendAssumeCapacity(0);
195 // DW.AT.type, DW.FORM.ref4195 // DW.AT.type, DW.FORM.ref4
196 var index = dbg_info_buffer.items.len;196 var index = dbg_info_buffer.items.len;
197 try dbg_info_buffer.writer().writeByteNTimes(0, 4);197 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
198 try self.addTypeRelocGlobal(atom_index, Type.bool, @intCast(index));198 try self.addTypeRelocGlobal(atom_index, Type.bool, @intCast(index));
199 // DW.AT.data_member_location, DW.FORM.udata199 // DW.AT.data_member_location, DW.FORM.udata
200 try dbg_info_buffer.ensureUnusedCapacity(6);
201 dbg_info_buffer.appendAssumeCapacity(0);200 dbg_info_buffer.appendAssumeCapacity(0);
202 // DW.AT.member201 // DW.AT.member
203 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));202 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));
...@@ -206,7 +205,7 @@ pub const DeclState = struct {...@@ -206,7 +205,7 @@ pub const DeclState = struct {
206 dbg_info_buffer.appendAssumeCapacity(0);205 dbg_info_buffer.appendAssumeCapacity(0);
207 // DW.AT.type, DW.FORM.ref4206 // DW.AT.type, DW.FORM.ref4
208 index = dbg_info_buffer.items.len;207 index = dbg_info_buffer.items.len;
209 try dbg_info_buffer.writer().writeByteNTimes(0, 4);208 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
210 try self.addTypeRelocGlobal(atom_index, payload_ty, @intCast(index));209 try self.addTypeRelocGlobal(atom_index, payload_ty, @intCast(index));
211 // DW.AT.data_member_location, DW.FORM.udata210 // DW.AT.data_member_location, DW.FORM.udata
212 const offset = abi_size - payload_ty.abiSize(mod);211 const offset = abi_size - payload_ty.abiSize(mod);
...@@ -228,18 +227,17 @@ pub const DeclState = struct {...@@ -228,18 +227,17 @@ pub const DeclState = struct {
228 // DW.AT.name, DW.FORM.string227 // DW.AT.name, DW.FORM.string
229 try dbg_info_buffer.writer().print("{}\x00", .{ty.fmt(mod)});228 try dbg_info_buffer.writer().print("{}\x00", .{ty.fmt(mod)});
230 // DW.AT.member229 // DW.AT.member
231 try dbg_info_buffer.ensureUnusedCapacity(5);230 try dbg_info_buffer.ensureUnusedCapacity(21);
232 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));231 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));
233 // DW.AT.name, DW.FORM.string232 // DW.AT.name, DW.FORM.string
234 dbg_info_buffer.appendSliceAssumeCapacity("ptr");233 dbg_info_buffer.appendSliceAssumeCapacity("ptr");
235 dbg_info_buffer.appendAssumeCapacity(0);234 dbg_info_buffer.appendAssumeCapacity(0);
236 // DW.AT.type, DW.FORM.ref4235 // DW.AT.type, DW.FORM.ref4
237 var index = dbg_info_buffer.items.len;236 var index = dbg_info_buffer.items.len;
238 try dbg_info_buffer.writer().writeByteNTimes(0, 4);237 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
239 const ptr_ty = ty.slicePtrFieldType(mod);238 const ptr_ty = ty.slicePtrFieldType(mod);
240 try self.addTypeRelocGlobal(atom_index, ptr_ty, @intCast(index));239 try self.addTypeRelocGlobal(atom_index, ptr_ty, @intCast(index));
241 // DW.AT.data_member_location, DW.FORM.udata240 // DW.AT.data_member_location, DW.FORM.udata
242 try dbg_info_buffer.ensureUnusedCapacity(6);
243 dbg_info_buffer.appendAssumeCapacity(0);241 dbg_info_buffer.appendAssumeCapacity(0);
244 // DW.AT.member242 // DW.AT.member
245 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));243 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));
...@@ -248,19 +246,18 @@ pub const DeclState = struct {...@@ -248,19 +246,18 @@ pub const DeclState = struct {
248 dbg_info_buffer.appendAssumeCapacity(0);246 dbg_info_buffer.appendAssumeCapacity(0);
249 // DW.AT.type, DW.FORM.ref4247 // DW.AT.type, DW.FORM.ref4
250 index = dbg_info_buffer.items.len;248 index = dbg_info_buffer.items.len;
251 try dbg_info_buffer.writer().writeByteNTimes(0, 4);249 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
252 try self.addTypeRelocGlobal(atom_index, Type.usize, @intCast(index));250 try self.addTypeRelocGlobal(atom_index, Type.usize, @intCast(index));
253 // DW.AT.data_member_location, DW.FORM.udata251 // DW.AT.data_member_location, DW.FORM.udata
254 try dbg_info_buffer.ensureUnusedCapacity(2);
255 dbg_info_buffer.appendAssumeCapacity(ptr_bytes);252 dbg_info_buffer.appendAssumeCapacity(ptr_bytes);
256 // DW.AT.structure_type delimit children253 // DW.AT.structure_type delimit children
257 dbg_info_buffer.appendAssumeCapacity(0);254 dbg_info_buffer.appendAssumeCapacity(0);
258 } else {255 } else {
259 try dbg_info_buffer.ensureUnusedCapacity(5);256 try dbg_info_buffer.ensureUnusedCapacity(9);
260 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.ptr_type));257 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.ptr_type));
261 // DW.AT.type, DW.FORM.ref4258 // DW.AT.type, DW.FORM.ref4
262 const index = dbg_info_buffer.items.len;259 const index = dbg_info_buffer.items.len;
263 try dbg_info_buffer.writer().writeByteNTimes(0, 4);260 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
264 try self.addTypeRelocGlobal(atom_index, ty.childType(mod), @intCast(index));261 try self.addTypeRelocGlobal(atom_index, ty.childType(mod), @intCast(index));
265 }262 }
266 },263 },
...@@ -271,13 +268,14 @@ pub const DeclState = struct {...@@ -271,13 +268,14 @@ pub const DeclState = struct {
271 try dbg_info_buffer.writer().print("{}\x00", .{ty.fmt(mod)});268 try dbg_info_buffer.writer().print("{}\x00", .{ty.fmt(mod)});
272 // DW.AT.type, DW.FORM.ref4269 // DW.AT.type, DW.FORM.ref4
273 var index = dbg_info_buffer.items.len;270 var index = dbg_info_buffer.items.len;
274 try dbg_info_buffer.writer().writeByteNTimes(0, 4);271 try dbg_info_buffer.ensureUnusedCapacity(9);
272 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
275 try self.addTypeRelocGlobal(atom_index, ty.childType(mod), @intCast(index));273 try self.addTypeRelocGlobal(atom_index, ty.childType(mod), @intCast(index));
276 // DW.AT.subrange_type274 // DW.AT.subrange_type
277 try dbg_info_buffer.append(@intFromEnum(AbbrevCode.array_dim));275 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.array_dim));
278 // DW.AT.type, DW.FORM.ref4276 // DW.AT.type, DW.FORM.ref4
279 index = dbg_info_buffer.items.len;277 index = dbg_info_buffer.items.len;
280 try dbg_info_buffer.writer().writeByteNTimes(0, 4);278 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
281 try self.addTypeRelocGlobal(atom_index, Type.usize, @intCast(index));279 try self.addTypeRelocGlobal(atom_index, Type.usize, @intCast(index));
282 // DW.AT.count, DW.FORM.udata280 // DW.AT.count, DW.FORM.udata
283 const len = ty.arrayLenIncludingSentinel(mod);281 const len = ty.arrayLenIncludingSentinel(mod);
...@@ -304,7 +302,7 @@ pub const DeclState = struct {...@@ -304,7 +302,7 @@ pub const DeclState = struct {
304 try dbg_info_buffer.writer().print("{d}\x00", .{field_index});302 try dbg_info_buffer.writer().print("{d}\x00", .{field_index});
305 // DW.AT.type, DW.FORM.ref4303 // DW.AT.type, DW.FORM.ref4
306 const index = dbg_info_buffer.items.len;304 const index = dbg_info_buffer.items.len;
307 try dbg_info_buffer.writer().writeByteNTimes(0, 4);305 try dbg_info_buffer.appendNTimes(0, 4);
308 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));306 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));
309 // DW.AT.data_member_location, DW.FORM.udata307 // DW.AT.data_member_location, DW.FORM.udata
310 const field_off = ty.structFieldOffset(field_index, mod);308 const field_off = ty.structFieldOffset(field_index, mod);
...@@ -331,7 +329,7 @@ pub const DeclState = struct {...@@ -331,7 +329,7 @@ pub const DeclState = struct {
331 try dbg_info_buffer.writer().print("{d}\x00", .{field_index});329 try dbg_info_buffer.writer().print("{d}\x00", .{field_index});
332 // DW.AT.type, DW.FORM.ref4330 // DW.AT.type, DW.FORM.ref4
333 const index = dbg_info_buffer.items.len;331 const index = dbg_info_buffer.items.len;
334 try dbg_info_buffer.writer().writeByteNTimes(0, 4);332 try dbg_info_buffer.appendNTimes(0, 4);
335 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));333 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));
336 // DW.AT.data_member_location, DW.FORM.udata334 // DW.AT.data_member_location, DW.FORM.udata
337 try leb128.writeULEB128(dbg_info_buffer.writer(), field_off);335 try leb128.writeULEB128(dbg_info_buffer.writer(), field_off);
...@@ -352,7 +350,7 @@ pub const DeclState = struct {...@@ -352,7 +350,7 @@ pub const DeclState = struct {
352 dbg_info_buffer.appendAssumeCapacity(0);350 dbg_info_buffer.appendAssumeCapacity(0);
353 // DW.AT.type, DW.FORM.ref4351 // DW.AT.type, DW.FORM.ref4
354 const index = dbg_info_buffer.items.len;352 const index = dbg_info_buffer.items.len;
355 try dbg_info_buffer.writer().writeByteNTimes(0, 4);353 try dbg_info_buffer.appendNTimes(0, 4);
356 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));354 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));
357 // DW.AT.data_member_location, DW.FORM.udata355 // DW.AT.data_member_location, DW.FORM.udata
358 try leb128.writeULEB128(dbg_info_buffer.writer(), field_off);356 try leb128.writeULEB128(dbg_info_buffer.writer(), field_off);
...@@ -418,14 +416,14 @@ pub const DeclState = struct {...@@ -418,14 +416,14 @@ pub const DeclState = struct {
418 try dbg_info_buffer.append(0);416 try dbg_info_buffer.append(0);
419417
420 // DW.AT.member418 // DW.AT.member
421 try dbg_info_buffer.ensureUnusedCapacity(9);419 try dbg_info_buffer.ensureUnusedCapacity(13);
422 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));420 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));
423 // DW.AT.name, DW.FORM.string421 // DW.AT.name, DW.FORM.string
424 dbg_info_buffer.appendSliceAssumeCapacity("payload");422 dbg_info_buffer.appendSliceAssumeCapacity("payload");
425 dbg_info_buffer.appendAssumeCapacity(0);423 dbg_info_buffer.appendAssumeCapacity(0);
426 // DW.AT.type, DW.FORM.ref4424 // DW.AT.type, DW.FORM.ref4
427 const inner_union_index = dbg_info_buffer.items.len;425 const inner_union_index = dbg_info_buffer.items.len;
428 try dbg_info_buffer.writer().writeByteNTimes(0, 4);426 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
429 try self.addTypeRelocLocal(atom_index, @intCast(inner_union_index), 5);427 try self.addTypeRelocLocal(atom_index, @intCast(inner_union_index), 5);
430 // DW.AT.data_member_location, DW.FORM.udata428 // DW.AT.data_member_location, DW.FORM.udata
431 try leb128.writeULEB128(dbg_info_buffer.writer(), payload_offset);429 try leb128.writeULEB128(dbg_info_buffer.writer(), payload_offset);
...@@ -452,7 +450,7 @@ pub const DeclState = struct {...@@ -452,7 +450,7 @@ pub const DeclState = struct {
452 try dbg_info_buffer.append(0);450 try dbg_info_buffer.append(0);
453 // DW.AT.type, DW.FORM.ref4451 // DW.AT.type, DW.FORM.ref4
454 const index = dbg_info_buffer.items.len;452 const index = dbg_info_buffer.items.len;
455 try dbg_info_buffer.writer().writeByteNTimes(0, 4);453 try dbg_info_buffer.appendNTimes(0, 4);
456 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));454 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));
457 // DW.AT.data_member_location, DW.FORM.udata455 // DW.AT.data_member_location, DW.FORM.udata
458 try dbg_info_buffer.append(0);456 try dbg_info_buffer.append(0);
...@@ -462,14 +460,14 @@ pub const DeclState = struct {...@@ -462,14 +460,14 @@ pub const DeclState = struct {
462460
463 if (is_tagged) {461 if (is_tagged) {
464 // DW.AT.member462 // DW.AT.member
465 try dbg_info_buffer.ensureUnusedCapacity(5);463 try dbg_info_buffer.ensureUnusedCapacity(9);
466 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));464 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));
467 // DW.AT.name, DW.FORM.string465 // DW.AT.name, DW.FORM.string
468 dbg_info_buffer.appendSliceAssumeCapacity("tag");466 dbg_info_buffer.appendSliceAssumeCapacity("tag");
469 dbg_info_buffer.appendAssumeCapacity(0);467 dbg_info_buffer.appendAssumeCapacity(0);
470 // DW.AT.type, DW.FORM.ref4468 // DW.AT.type, DW.FORM.ref4
471 const index = dbg_info_buffer.items.len;469 const index = dbg_info_buffer.items.len;
472 try dbg_info_buffer.writer().writeByteNTimes(0, 4);470 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
473 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(union_obj.enum_tag_ty), @intCast(index));471 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(union_obj.enum_tag_ty), @intCast(index));
474 // DW.AT.data_member_location, DW.FORM.udata472 // DW.AT.data_member_location, DW.FORM.udata
475 try leb128.writeULEB128(dbg_info_buffer.writer(), tag_offset);473 try leb128.writeULEB128(dbg_info_buffer.writer(), tag_offset);
...@@ -498,14 +496,14 @@ pub const DeclState = struct {...@@ -498,14 +496,14 @@ pub const DeclState = struct {
498496
499 if (!payload_ty.isNoReturn(mod)) {497 if (!payload_ty.isNoReturn(mod)) {
500 // DW.AT.member498 // DW.AT.member
501 try dbg_info_buffer.ensureUnusedCapacity(7);499 try dbg_info_buffer.ensureUnusedCapacity(11);
502 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));500 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));
503 // DW.AT.name, DW.FORM.string501 // DW.AT.name, DW.FORM.string
504 dbg_info_buffer.appendSliceAssumeCapacity("value");502 dbg_info_buffer.appendSliceAssumeCapacity("value");
505 dbg_info_buffer.appendAssumeCapacity(0);503 dbg_info_buffer.appendAssumeCapacity(0);
506 // DW.AT.type, DW.FORM.ref4504 // DW.AT.type, DW.FORM.ref4
507 const index = dbg_info_buffer.items.len;505 const index = dbg_info_buffer.items.len;
508 try dbg_info_buffer.writer().writeByteNTimes(0, 4);506 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
509 try self.addTypeRelocGlobal(atom_index, payload_ty, @intCast(index));507 try self.addTypeRelocGlobal(atom_index, payload_ty, @intCast(index));
510 // DW.AT.data_member_location, DW.FORM.udata508 // DW.AT.data_member_location, DW.FORM.udata
511 try leb128.writeULEB128(dbg_info_buffer.writer(), payload_off);509 try leb128.writeULEB128(dbg_info_buffer.writer(), payload_off);
...@@ -513,14 +511,14 @@ pub const DeclState = struct {...@@ -513,14 +511,14 @@ pub const DeclState = struct {
513511
514 {512 {
515 // DW.AT.member513 // DW.AT.member
516 try dbg_info_buffer.ensureUnusedCapacity(5);514 try dbg_info_buffer.ensureUnusedCapacity(9);
517 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));515 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.struct_member));
518 // DW.AT.name, DW.FORM.string516 // DW.AT.name, DW.FORM.string
519 dbg_info_buffer.appendSliceAssumeCapacity("err");517 dbg_info_buffer.appendSliceAssumeCapacity("err");
520 dbg_info_buffer.appendAssumeCapacity(0);518 dbg_info_buffer.appendAssumeCapacity(0);
521 // DW.AT.type, DW.FORM.ref4519 // DW.AT.type, DW.FORM.ref4
522 const index = dbg_info_buffer.items.len;520 const index = dbg_info_buffer.items.len;
523 try dbg_info_buffer.writer().writeByteNTimes(0, 4);521 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4);
524 try self.addTypeRelocGlobal(atom_index, error_ty, @intCast(index));522 try self.addTypeRelocGlobal(atom_index, error_ty, @intCast(index));
525 // DW.AT.data_member_location, DW.FORM.udata523 // DW.AT.data_member_location, DW.FORM.udata
526 try leb128.writeULEB128(dbg_info_buffer.writer(), error_off);524 try leb128.writeULEB128(dbg_info_buffer.writer(), error_off);
...@@ -661,7 +659,7 @@ pub const DeclState = struct {...@@ -661,7 +659,7 @@ pub const DeclState = struct {
661659
662 try dbg_info.ensureUnusedCapacity(5 + name_with_null.len);660 try dbg_info.ensureUnusedCapacity(5 + name_with_null.len);
663 const index = dbg_info.items.len;661 const index = dbg_info.items.len;
664 try dbg_info.writer().writeByteNTimes(0, 4);662 dbg_info.appendNTimesAssumeCapacity(0, 4);
665 try self.addTypeRelocGlobal(atom_index, ty, @intCast(index)); // DW.AT.type, DW.FORM.ref4663 try self.addTypeRelocGlobal(atom_index, ty, @intCast(index)); // DW.AT.type, DW.FORM.ref4
666 dbg_info.appendSliceAssumeCapacity(name_with_null); // DW.AT.name, DW.FORM.string664 dbg_info.appendSliceAssumeCapacity(name_with_null); // DW.AT.name, DW.FORM.string
667 }665 }
...@@ -877,7 +875,7 @@ pub const DeclState = struct {...@@ -877,7 +875,7 @@ pub const DeclState = struct {
877875
878 try dbg_info.ensureUnusedCapacity(5 + name_with_null.len);876 try dbg_info.ensureUnusedCapacity(5 + name_with_null.len);
879 const index = dbg_info.items.len;877 const index = dbg_info.items.len;
880 try dbg_info.writer().writeByteNTimes(0, 4); // dw.at.type, dw.form.ref4878 dbg_info.appendNTimesAssumeCapacity(0, 4); // dw.at.type, dw.form.ref4
881 try self.addTypeRelocGlobal(atom_index, child_ty, @intCast(index));879 try self.addTypeRelocGlobal(atom_index, child_ty, @intCast(index));
882 dbg_info.appendSliceAssumeCapacity(name_with_null); // DW.AT.name, DW.FORM.string880 dbg_info.appendSliceAssumeCapacity(name_with_null); // DW.AT.name, DW.FORM.string
883 }881 }
...@@ -1133,7 +1131,7 @@ pub fn initDeclState(self: *Dwarf, mod: *Module, decl_index: InternPool.DeclInde...@@ -1133,7 +1131,7 @@ pub fn initDeclState(self: *Dwarf, mod: *Module, decl_index: InternPool.DeclInde
1133 });1131 });
1134 // This is the "relocatable" vaddr, corresponding to `code_buffer` index `0`.1132 // This is the "relocatable" vaddr, corresponding to `code_buffer` index `0`.
1135 assert(dbg_line_vaddr_reloc_index == dbg_line_buffer.items.len);1133 assert(dbg_line_vaddr_reloc_index == dbg_line_buffer.items.len);
1136 dbg_line_buffer.writer().writeByteNTimes(0, ptr_width_bytes) catch unreachable;1134 dbg_line_buffer.appendNTimesAssumeCapacity(0, ptr_width_bytes);
11371135
1138 dbg_line_buffer.appendAssumeCapacity(DW.LNS.advance_line);1136 dbg_line_buffer.appendAssumeCapacity(DW.LNS.advance_line);
1139 // This is the "relocatable" relative line offset from the previous function's end curly1137 // This is the "relocatable" relative line offset from the previous function's end curly
...@@ -1171,12 +1169,12 @@ pub fn initDeclState(self: *Dwarf, mod: *Module, decl_index: InternPool.DeclInde...@@ -1171,12 +1169,12 @@ pub fn initDeclState(self: *Dwarf, mod: *Module, decl_index: InternPool.DeclInde
1171 // "relocations" and have to be in this fixed place so that functions can be1169 // "relocations" and have to be in this fixed place so that functions can be
1172 // moved in virtual address space.1170 // moved in virtual address space.
1173 assert(dbg_info_low_pc_reloc_index == dbg_info_buffer.items.len);1171 assert(dbg_info_low_pc_reloc_index == dbg_info_buffer.items.len);
1174 dbg_info_buffer.writer().writeByteNTimes(0, ptr_width_bytes) catch unreachable; // DW.AT.low_pc, DW.FORM.addr1172 dbg_info_buffer.appendNTimesAssumeCapacity(0, ptr_width_bytes); // DW.AT.low_pc, DW.FORM.addr
1175 assert(self.getRelocDbgInfoSubprogramHighPC() == dbg_info_buffer.items.len);1173 assert(self.getRelocDbgInfoSubprogramHighPC() == dbg_info_buffer.items.len);
1176 dbg_info_buffer.writer().writeByteNTimes(0, 4) catch unreachable; // DW.AT.high_pc, DW.FORM.data41174 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4); // DW.AT.high_pc, DW.FORM.data4
1177 if (fn_ret_has_bits) {1175 if (fn_ret_has_bits) {
1178 try decl_state.addTypeRelocGlobal(di_atom_index, fn_ret_type, @intCast(dbg_info_buffer.items.len));1176 try decl_state.addTypeRelocGlobal(di_atom_index, fn_ret_type, @intCast(dbg_info_buffer.items.len));
1179 dbg_info_buffer.writer().writeByteNTimes(0, 4) catch unreachable; // DW.AT.type, DW.FORM.ref41177 dbg_info_buffer.appendNTimesAssumeCapacity(0, 4); // DW.AT.type, DW.FORM.ref4
1180 }1178 }
1181 dbg_info_buffer.appendSliceAssumeCapacity(1179 dbg_info_buffer.appendSliceAssumeCapacity(
1182 decl_name_slice[0 .. decl_name_slice.len + 1],1180 decl_name_slice[0 .. decl_name_slice.len + 1],