| ... | ... | @@ -536,11 +536,22 @@ pub fn flushModule(self: *C, arena: Allocator, prog_node: std.Progress.Node) !vo |
| 536 | 536 | try f.all_buffers.ensureUnusedCapacity(gpa, 1 + (self.anon_decls.count() + self.decl_table.count()) * 2); |
| 537 | 537 | f.appendBufAssumeCapacity(self.lazy_code_buf.items); |
| 538 | 538 | for (self.anon_decls.keys(), self.anon_decls.values()) |anon_decl, decl_block| f.appendCodeAssumeCapacity( |
| 539 | | self.exported_values.contains(anon_decl), |
| 539 | if (self.exported_values.contains(anon_decl)) |
| 540 | .default |
| 541 | else switch (zcu.intern_pool.indexToKey(anon_decl)) { |
| 542 | .extern_func => .zig_extern, |
| 543 | .variable => |variable| if (variable.is_extern) .zig_extern else .static, |
| 544 | else => .static, |
| 545 | }, |
| 540 | 546 | self.getString(decl_block.code), |
| 541 | 547 | ); |
| 542 | 548 | for (self.decl_table.keys(), self.decl_table.values()) |decl_index, decl_block| f.appendCodeAssumeCapacity( |
| 543 | | self.exported_decls.contains(decl_index), |
| 549 | if (self.exported_decls.contains(decl_index)) |
| 550 | .default |
| 551 | else if (zcu.declPtr(decl_index).isExtern(zcu)) |
| 552 | .zig_extern |
| 553 | else |
| 554 | .static, |
| 544 | 555 | self.getString(decl_block.code), |
| 545 | 556 | ); |
| 546 | 557 | |
| ... | ... | @@ -572,9 +583,13 @@ const Flush = struct { |
| 572 | 583 | f.file_size += buf.len; |
| 573 | 584 | } |
| 574 | 585 | |
| 575 | | fn appendCodeAssumeCapacity(f: *Flush, is_extern: bool, code: []const u8) void { |
| 586 | fn appendCodeAssumeCapacity(f: *Flush, storage: enum { default, zig_extern, static }, code: []const u8) void { |
| 576 | 587 | if (code.len == 0) return; |
| 577 | | f.appendBufAssumeCapacity(if (is_extern) "\nzig_extern " else "\nstatic "); |
| 588 | f.appendBufAssumeCapacity(switch (storage) { |
| 589 | .default => "\n", |
| 590 | .zig_extern => "\nzig_extern ", |
| 591 | .static => "\nstatic ", |
| 592 | }); |
| 578 | 593 | f.appendBufAssumeCapacity(code); |
| 579 | 594 | } |
| 580 | 595 | |