| ... | @@ -536,11 +536,22 @@ pub fn flushModule(self: *C, arena: Allocator, prog_node: std.Progress.Node) !vo | ... | @@ -536,11 +536,22 @@ pub fn flushModule(self: *C, arena: Allocator, prog_node: std.Progress.Node) !vo |
| 536 | try f.all_buffers.ensureUnusedCapacity(gpa, 1 + (self.anon_decls.count() + self.decl_table.count()) * 2); | 536 | try f.all_buffers.ensureUnusedCapacity(gpa, 1 + (self.anon_decls.count() + self.decl_table.count()) * 2); |
| 537 | f.appendBufAssumeCapacity(self.lazy_code_buf.items); | 537 | f.appendBufAssumeCapacity(self.lazy_code_buf.items); |
| 538 | for (self.anon_decls.keys(), self.anon_decls.values()) |anon_decl, decl_block| f.appendCodeAssumeCapacity( | 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 | self.getString(decl_block.code), | 546 | self.getString(decl_block.code), |
| 541 | ); | 547 | ); |
| 542 | for (self.decl_table.keys(), self.decl_table.values()) |decl_index, decl_block| f.appendCodeAssumeCapacity( | 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 | self.getString(decl_block.code), | 555 | self.getString(decl_block.code), |
| 545 | ); | 556 | ); |
| 546 | | 557 | |
| ... | @@ -572,9 +583,13 @@ const Flush = struct { | ... | @@ -572,9 +583,13 @@ const Flush = struct { |
| 572 | f.file_size += buf.len; | 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 | if (code.len == 0) return; | 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 | f.appendBufAssumeCapacity(code); | 593 | f.appendBufAssumeCapacity(code); |
| 579 | } | 594 | } |
| 580 | | 595 | |