| ... | @@ -81,8 +81,14 @@ pub fn generate(gpa: *Allocator, file: *Scope.File) InnerError!Zir { | ... | @@ -81,8 +81,14 @@ pub fn generate(gpa: *Allocator, file: *Scope.File) InnerError!Zir { |
| 81 | }; | 81 | }; |
| 82 | defer astgen.deinit(gpa); | 82 | defer astgen.deinit(gpa); |
| 83 | | 83 | |
| | 84 | // We expect at least as many ZIR instructions and extra data items |
| | 85 | // as AST nodes. |
| | 86 | try astgen.instructions.ensureTotalCapacity(gpa, file.tree.nodes.len); |
| | 87 | |
| 84 | // First few indexes of extra are reserved and set at the end. | 88 | // First few indexes of extra are reserved and set at the end. |
| 85 | try astgen.extra.resize(gpa, @typeInfo(Zir.ExtraIndex).Enum.fields.len); | 89 | const reserved_count = @typeInfo(Zir.ExtraIndex).Enum.fields.len; |
| | 90 | try astgen.extra.ensureTotalCapacity(gpa, file.tree.nodes.len + reserved_count); |
| | 91 | astgen.extra.items.len += reserved_count; |
| 86 | | 92 | |
| 87 | var gen_scope: GenZir = .{ | 93 | var gen_scope: GenZir = .{ |
| 88 | .force_comptime = true, | 94 | .force_comptime = true, |