| author | |
| committer | |
| log | 75548b50ff23a3de48d166170425001c073d27c1 |
| tree | de47b7ae071228835ce9108f12f0ed9612f729c7 |
| parent | 47bc13bc597622fc8deffa1c1a45d47dac51eeb0 |
| signature |
48 files changed, 227 insertions(+), 200 deletions(-)
ci/srht/update-download-page.zig+1-1| ... | @@ -6,7 +6,7 @@ pub fn main() !void { | ... | @@ -6,7 +6,7 @@ pub fn main() !void { |
| 6 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 6 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 7 | defer arena.deinit(); | 7 | defer arena.deinit(); |
| 8 | 8 | ||
| 9 | const allocator = &arena.allocator; | 9 | const allocator = arena.getAllocator(); |
| 10 | 10 | ||
| 11 | const out_dir = "out"; | 11 | const out_dir = "out"; |
| 12 | try std.fs.cwd().makePath(out_dir); | 12 | try std.fs.cwd().makePath(out_dir); |
doc/docgen.zig+1-1| ... | @@ -21,7 +21,7 @@ pub fn main() !void { | ... | @@ -21,7 +21,7 @@ pub fn main() !void { |
| 21 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 21 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 22 | defer arena.deinit(); | 22 | defer arena.deinit(); |
| 23 | 23 | ||
| 24 | const allocator = &arena.allocator; | 24 | const allocator = arena.getAllocator(); |
| 25 | 25 | ||
| 26 | var args_it = process.args(); | 26 | var args_it = process.args(); |
| 27 | 27 |
doc/langref.html.in+13-13| ... | @@ -7362,7 +7362,7 @@ fn amain() !void { | ... | @@ -7362,7 +7362,7 @@ fn amain() !void { |
| 7362 | } | 7362 | } |
| 7363 | 7363 | ||
| 7364 | var global_download_frame: anyframe = undefined; | 7364 | var global_download_frame: anyframe = undefined; |
| 7365 | fn fetchUrl(allocator: *Allocator, url: []const u8) ![]u8 { | 7365 | fn fetchUrl(allocator: Allocator, url: []const u8) ![]u8 { |
| 7366 | _ = url; // this is just an example, we don't actually do it! | 7366 | _ = url; // this is just an example, we don't actually do it! |
| 7367 | const result = try allocator.dupe(u8, "this is the downloaded url contents"); | 7367 | const result = try allocator.dupe(u8, "this is the downloaded url contents"); |
| 7368 | errdefer allocator.free(result); | 7368 | errdefer allocator.free(result); |
| ... | @@ -7374,7 +7374,7 @@ fn fetchUrl(allocator: *Allocator, url: []const u8) ![]u8 { | ... | @@ -7374,7 +7374,7 @@ fn fetchUrl(allocator: *Allocator, url: []const u8) ![]u8 { |
| 7374 | } | 7374 | } |
| 7375 | 7375 | ||
| 7376 | var global_file_frame: anyframe = undefined; | 7376 | var global_file_frame: anyframe = undefined; |
| 7377 | fn readFile(allocator: *Allocator, filename: []const u8) ![]u8 { | 7377 | fn readFile(allocator: Allocator, filename: []const u8) ![]u8 { |
| 7378 | _ = filename; // this is just an example, we don't actually do it! | 7378 | _ = filename; // this is just an example, we don't actually do it! |
| 7379 | const result = try allocator.dupe(u8, "this is the file contents"); | 7379 | const result = try allocator.dupe(u8, "this is the file contents"); |
| 7380 | errdefer allocator.free(result); | 7380 | errdefer allocator.free(result); |
| ... | @@ -7433,7 +7433,7 @@ fn amain() !void { | ... | @@ -7433,7 +7433,7 @@ fn amain() !void { |
| 7433 | std.debug.print("file_text: {s}\n", .{file_text}); | 7433 | std.debug.print("file_text: {s}\n", .{file_text}); |
| 7434 | } | 7434 | } |
| 7435 | 7435 | ||
| 7436 | fn fetchUrl(allocator: *Allocator, url: []const u8) ![]u8 { | 7436 | fn fetchUrl(allocator: Allocator, url: []const u8) ![]u8 { |
| 7437 | _ = url; // this is just an example, we don't actually do it! | 7437 | _ = url; // this is just an example, we don't actually do it! |
| 7438 | const result = try allocator.dupe(u8, "this is the downloaded url contents"); | 7438 | const result = try allocator.dupe(u8, "this is the downloaded url contents"); |
| 7439 | errdefer allocator.free(result); | 7439 | errdefer allocator.free(result); |
| ... | @@ -7441,7 +7441,7 @@ fn fetchUrl(allocator: *Allocator, url: []const u8) ![]u8 { | ... | @@ -7441,7 +7441,7 @@ fn fetchUrl(allocator: *Allocator, url: []const u8) ![]u8 { |
| 7441 | return result; | 7441 | return result; |
| 7442 | } | 7442 | } |
| 7443 | 7443 | ||
| 7444 | fn readFile(allocator: *Allocator, filename: []const u8) ![]u8 { | 7444 | fn readFile(allocator: Allocator, filename: []const u8) ![]u8 { |
| 7445 | _ = filename; // this is just an example, we don't actually do it! | 7445 | _ = filename; // this is just an example, we don't actually do it! |
| 7446 | const result = try allocator.dupe(u8, "this is the file contents"); | 7446 | const result = try allocator.dupe(u8, "this is the file contents"); |
| 7447 | errdefer allocator.free(result); | 7447 | errdefer allocator.free(result); |
| ... | @@ -10050,8 +10050,8 @@ pub fn main() void { | ... | @@ -10050,8 +10050,8 @@ pub fn main() void { |
| 10050 | C has a default allocator - <code>malloc</code>, <code>realloc</code>, and <code>free</code>. | 10050 | C has a default allocator - <code>malloc</code>, <code>realloc</code>, and <code>free</code>. |
| 10051 | When linking against libc, Zig exposes this allocator with {#syntax#}std.heap.c_allocator{#endsyntax#}. | 10051 | When linking against libc, Zig exposes this allocator with {#syntax#}std.heap.c_allocator{#endsyntax#}. |
| 10052 | However, by convention, there is no default allocator in Zig. Instead, functions which need to | 10052 | However, by convention, there is no default allocator in Zig. Instead, functions which need to |
| 10053 | allocate accept an {#syntax#}*Allocator{#endsyntax#} parameter. Likewise, data structures such as | 10053 | allocate accept an {#syntax#}Allocator{#endsyntax#} parameter. Likewise, data structures such as |
| 10054 | {#syntax#}std.ArrayList{#endsyntax#} accept an {#syntax#}*Allocator{#endsyntax#} parameter in | 10054 | {#syntax#}std.ArrayList{#endsyntax#} accept an {#syntax#}Allocator{#endsyntax#} parameter in |
| 10055 | their initialization functions: | 10055 | their initialization functions: |
| 10056 | </p> | 10056 | </p> |
| 10057 | {#code_begin|test|allocator#} | 10057 | {#code_begin|test|allocator#} |
| ... | @@ -10061,12 +10061,12 @@ const expect = std.testing.expect; | ... | @@ -10061,12 +10061,12 @@ const expect = std.testing.expect; |
| 10061 | 10061 | ||
| 10062 | test "using an allocator" { | 10062 | test "using an allocator" { |
| 10063 | var buffer: [100]u8 = undefined; | 10063 | var buffer: [100]u8 = undefined; |
| 10064 | const allocator = &std.heap.FixedBufferAllocator.init(&buffer).allocator; | 10064 | const allocator = std.heap.FixedBufferAllocator.init(&buffer).getAllocator(); |
| 10065 | const result = try concat(allocator, "foo", "bar"); | 10065 | const result = try concat(allocator, "foo", "bar"); |
| 10066 | try expect(std.mem.eql(u8, "foobar", result)); | 10066 | try expect(std.mem.eql(u8, "foobar", result)); |
| 10067 | } | 10067 | } |
| 10068 | 10068 | ||
| 10069 | fn concat(allocator: *Allocator, a: []const u8, b: []const u8) ![]u8 { | 10069 | fn concat(allocator: Allocator, a: []const u8, b: []const u8) ![]u8 { |
| 10070 | const result = try allocator.alloc(u8, a.len + b.len); | 10070 | const result = try allocator.alloc(u8, a.len + b.len); |
| 10071 | std.mem.copy(u8, result, a); | 10071 | std.mem.copy(u8, result, a); |
| 10072 | std.mem.copy(u8, result[a.len..], b); | 10072 | std.mem.copy(u8, result[a.len..], b); |
| ... | @@ -10091,7 +10091,7 @@ fn concat(allocator: *Allocator, a: []const u8, b: []const u8) ![]u8 { | ... | @@ -10091,7 +10091,7 @@ fn concat(allocator: *Allocator, a: []const u8, b: []const u8) ![]u8 { |
| 10091 | </p> | 10091 | </p> |
| 10092 | <ol> | 10092 | <ol> |
| 10093 | <li> | 10093 | <li> |
| 10094 | Are you making a library? In this case, best to accept an {#syntax#}*Allocator{#endsyntax#} | 10094 | Are you making a library? In this case, best to accept an {#syntax#}Allocator{#endsyntax#} |
| 10095 | as a parameter and allow your library's users to decide what allocator to use. | 10095 | as a parameter and allow your library's users to decide what allocator to use. |
| 10096 | </li> | 10096 | </li> |
| 10097 | <li>Are you linking libc? In this case, {#syntax#}std.heap.c_allocator{#endsyntax#} is likely | 10097 | <li>Are you linking libc? In this case, {#syntax#}std.heap.c_allocator{#endsyntax#} is likely |
| ... | @@ -10114,7 +10114,7 @@ pub fn main() !void { | ... | @@ -10114,7 +10114,7 @@ pub fn main() !void { |
| 10114 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 10114 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 10115 | defer arena.deinit(); | 10115 | defer arena.deinit(); |
| 10116 | 10116 | ||
| 10117 | const allocator = &arena.allocator; | 10117 | const allocator = arena.getAllocator(); |
| 10118 | 10118 | ||
| 10119 | const ptr = try allocator.create(i32); | 10119 | const ptr = try allocator.create(i32); |
| 10120 | std.debug.print("ptr={*}\n", .{ptr}); | 10120 | std.debug.print("ptr={*}\n", .{ptr}); |
| ... | @@ -10281,7 +10281,7 @@ test "string literal to constant slice" { | ... | @@ -10281,7 +10281,7 @@ test "string literal to constant slice" { |
| 10281 | <p> | 10281 | <p> |
| 10282 | For example, the function's documentation may say "caller owns the returned memory", in which case | 10282 | For example, the function's documentation may say "caller owns the returned memory", in which case |
| 10283 | the code that calls the function must have a plan for when to free that memory. Probably in this situation, | 10283 | the code that calls the function must have a plan for when to free that memory. Probably in this situation, |
| 10284 | the function will accept an {#syntax#}*Allocator{#endsyntax#} parameter. | 10284 | the function will accept an {#syntax#}Allocator{#endsyntax#} parameter. |
| 10285 | </p> | 10285 | </p> |
| 10286 | <p> | 10286 | <p> |
| 10287 | Sometimes the lifetime of a pointer may be more complicated. For example, the | 10287 | Sometimes the lifetime of a pointer may be more complicated. For example, the |
| ... | @@ -10820,7 +10820,7 @@ const std = @import("std"); | ... | @@ -10820,7 +10820,7 @@ const std = @import("std"); |
| 10820 | 10820 | ||
| 10821 | pub fn main() !void { | 10821 | pub fn main() !void { |
| 10822 | var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){}; | 10822 | var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){}; |
| 10823 | const gpa = &general_purpose_allocator.allocator; | 10823 | const gpa = general_purpose_allocator.getAllocator(); |
| 10824 | const args = try std.process.argsAlloc(gpa); | 10824 | const args = try std.process.argsAlloc(gpa); |
| 10825 | defer std.process.argsFree(gpa, args); | 10825 | defer std.process.argsFree(gpa, args); |
| 10826 | 10826 | ||
| ... | @@ -10842,7 +10842,7 @@ const PreopenList = std.fs.wasi.PreopenList; | ... | @@ -10842,7 +10842,7 @@ const PreopenList = std.fs.wasi.PreopenList; |
| 10842 | 10842 | ||
| 10843 | pub fn main() !void { | 10843 | pub fn main() !void { |
| 10844 | var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){}; | 10844 | var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){}; |
| 10845 | const gpa = &general_purpose_allocator.allocator; | 10845 | const gpa = general_purpose_allocator.getAllocator(); |
| 10846 | 10846 | ||
| 10847 | var preopens = PreopenList.init(gpa); | 10847 | var preopens = PreopenList.init(gpa); |
| 10848 | defer preopens.deinit(); | 10848 | defer preopens.deinit(); |
lib/std/event/loop.zig+2-2| ... | @@ -173,12 +173,12 @@ pub const Loop = struct { | ... | @@ -173,12 +173,12 @@ pub const Loop = struct { |
| 173 | // We need at least one of these in case the fs thread wants to use onNextTick | 173 | // We need at least one of these in case the fs thread wants to use onNextTick |
| 174 | const extra_thread_count = thread_count - 1; | 174 | const extra_thread_count = thread_count - 1; |
| 175 | const resume_node_count = std.math.max(extra_thread_count, 1); | 175 | const resume_node_count = std.math.max(extra_thread_count, 1); |
| 176 | self.eventfd_resume_nodes = try self.arena.allocator.alloc( | 176 | self.eventfd_resume_nodes = try self.arena.getAllocator().alloc( |
| 177 | std.atomic.Stack(ResumeNode.EventFd).Node, | 177 | std.atomic.Stack(ResumeNode.EventFd).Node, |
| 178 | resume_node_count, | 178 | resume_node_count, |
| 179 | ); | 179 | ); |
| 180 | 180 | ||
| 181 | self.extra_threads = try self.arena.allocator.alloc(Thread, extra_thread_count); | 181 | self.extra_threads = try self.arena.getAllocator().alloc(Thread, extra_thread_count); |
| 182 | 182 | ||
| 183 | try self.initOsData(extra_thread_count); | 183 | try self.initOsData(extra_thread_count); |
| 184 | errdefer self.deinitOsData(); | 184 | errdefer self.deinitOsData(); |
src/AstGen.zig+8-7| ... | @@ -98,7 +98,7 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir { | ... | @@ -98,7 +98,7 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir { |
| 98 | 98 | ||
| 99 | var astgen: AstGen = .{ | 99 | var astgen: AstGen = .{ |
| 100 | .gpa = gpa, | 100 | .gpa = gpa, |
| 101 | .arena = &arena.allocator, | 101 | .arena = arena.getAllocator(), |
| 102 | .tree = &tree, | 102 | .tree = &tree, |
| 103 | }; | 103 | }; |
| 104 | defer astgen.deinit(gpa); | 104 | defer astgen.deinit(gpa); |
| ... | @@ -1939,6 +1939,7 @@ fn blockExprStmts(gz: *GenZir, parent_scope: *Scope, statements: []const Ast.Nod | ... | @@ -1939,6 +1939,7 @@ fn blockExprStmts(gz: *GenZir, parent_scope: *Scope, statements: []const Ast.Nod |
| 1939 | 1939 | ||
| 1940 | var block_arena = std.heap.ArenaAllocator.init(gz.astgen.gpa); | 1940 | var block_arena = std.heap.ArenaAllocator.init(gz.astgen.gpa); |
| 1941 | defer block_arena.deinit(); | 1941 | defer block_arena.deinit(); |
| 1942 | const block_arena_allocator = block_arena.getAllocator(); | ||
| 1942 | 1943 | ||
| 1943 | var noreturn_src_node: Ast.Node.Index = 0; | 1944 | var noreturn_src_node: Ast.Node.Index = 0; |
| 1944 | var scope = parent_scope; | 1945 | var scope = parent_scope; |
| ... | @@ -1959,13 +1960,13 @@ fn blockExprStmts(gz: *GenZir, parent_scope: *Scope, statements: []const Ast.Nod | ... | @@ -1959,13 +1960,13 @@ fn blockExprStmts(gz: *GenZir, parent_scope: *Scope, statements: []const Ast.Nod |
| 1959 | } | 1960 | } |
| 1960 | switch (node_tags[statement]) { | 1961 | switch (node_tags[statement]) { |
| 1961 | // zig fmt: off | 1962 | // zig fmt: off |
| 1962 | .global_var_decl => scope = try varDecl(gz, scope, statement, &block_arena.allocator, tree.globalVarDecl(statement)), | 1963 | .global_var_decl => scope = try varDecl(gz, scope, statement, block_arena_allocator, tree.globalVarDecl(statement)), |
| 1963 | .local_var_decl => scope = try varDecl(gz, scope, statement, &block_arena.allocator, tree.localVarDecl(statement)), | 1964 | .local_var_decl => scope = try varDecl(gz, scope, statement, block_arena_allocator, tree.localVarDecl(statement)), |
| 1964 | .simple_var_decl => scope = try varDecl(gz, scope, statement, &block_arena.allocator, tree.simpleVarDecl(statement)), | 1965 | .simple_var_decl => scope = try varDecl(gz, scope, statement, block_arena_allocator, tree.simpleVarDecl(statement)), |
| 1965 | .aligned_var_decl => scope = try varDecl(gz, scope, statement, &block_arena.allocator, tree.alignedVarDecl(statement)), | 1966 | .aligned_var_decl => scope = try varDecl(gz, scope, statement, block_arena_allocator, tree.alignedVarDecl(statement)), |
| 1966 | 1967 | ||
| 1967 | .@"defer" => scope = try makeDeferScope(gz.astgen, scope, statement, &block_arena.allocator, .defer_normal), | 1968 | .@"defer" => scope = try makeDeferScope(gz.astgen, scope, statement, block_arena_allocator, .defer_normal), |
| 1968 | .@"errdefer" => scope = try makeDeferScope(gz.astgen, scope, statement, &block_arena.allocator, .defer_error), | 1969 | .@"errdefer" => scope = try makeDeferScope(gz.astgen, scope, statement, block_arena_allocator, .defer_error), |
| 1969 | 1970 | ||
| 1970 | .assign => try assign(gz, scope, statement), | 1971 | .assign => try assign(gz, scope, statement), |
| 1971 | 1972 |
src/Compilation.zig+27-24| ... | @@ -412,28 +412,29 @@ pub const AllErrors = struct { | ... | @@ -412,28 +412,29 @@ pub const AllErrors = struct { |
| 412 | errors: *std.ArrayList(Message), | 412 | errors: *std.ArrayList(Message), |
| 413 | module_err_msg: Module.ErrorMsg, | 413 | module_err_msg: Module.ErrorMsg, |
| 414 | ) !void { | 414 | ) !void { |
| 415 | const notes = try arena.allocator.alloc(Message, module_err_msg.notes.len); | 415 | const allocator = arena.getAllocator(); |
| 416 | const notes = try allocator.alloc(Message, module_err_msg.notes.len); | ||
| 416 | for (notes) |*note, i| { | 417 | for (notes) |*note, i| { |
| 417 | const module_note = module_err_msg.notes[i]; | 418 | const module_note = module_err_msg.notes[i]; |
| 418 | const source = try module_note.src_loc.file_scope.getSource(module.gpa); | 419 | const source = try module_note.src_loc.file_scope.getSource(module.gpa); |
| 419 | const byte_offset = try module_note.src_loc.byteOffset(module.gpa); | 420 | const byte_offset = try module_note.src_loc.byteOffset(module.gpa); |
| 420 | const loc = std.zig.findLineColumn(source, byte_offset); | 421 | const loc = std.zig.findLineColumn(source, byte_offset); |
| 421 | const file_path = try module_note.src_loc.file_scope.fullPath(&arena.allocator); | 422 | const file_path = try module_note.src_loc.file_scope.fullPath(allocator); |
| 422 | note.* = .{ | 423 | note.* = .{ |
| 423 | .src = .{ | 424 | .src = .{ |
| 424 | .src_path = file_path, | 425 | .src_path = file_path, |
| 425 | .msg = try arena.allocator.dupe(u8, module_note.msg), | 426 | .msg = try allocator.dupe(u8, module_note.msg), |
| 426 | .byte_offset = byte_offset, | 427 | .byte_offset = byte_offset, |
| 427 | .line = @intCast(u32, loc.line), | 428 | .line = @intCast(u32, loc.line), |
| 428 | .column = @intCast(u32, loc.column), | 429 | .column = @intCast(u32, loc.column), |
| 429 | .source_line = try arena.allocator.dupe(u8, loc.source_line), | 430 | .source_line = try allocator.dupe(u8, loc.source_line), |
| 430 | }, | 431 | }, |
| 431 | }; | 432 | }; |
| 432 | } | 433 | } |
| 433 | if (module_err_msg.src_loc.lazy == .entire_file) { | 434 | if (module_err_msg.src_loc.lazy == .entire_file) { |
| 434 | try errors.append(.{ | 435 | try errors.append(.{ |
| 435 | .plain = .{ | 436 | .plain = .{ |
| 436 | .msg = try arena.allocator.dupe(u8, module_err_msg.msg), | 437 | .msg = try allocator.dupe(u8, module_err_msg.msg), |
| 437 | }, | 438 | }, |
| 438 | }); | 439 | }); |
| 439 | return; | 440 | return; |
| ... | @@ -441,16 +442,16 @@ pub const AllErrors = struct { | ... | @@ -441,16 +442,16 @@ pub const AllErrors = struct { |
| 441 | const source = try module_err_msg.src_loc.file_scope.getSource(module.gpa); | 442 | const source = try module_err_msg.src_loc.file_scope.getSource(module.gpa); |
| 442 | const byte_offset = try module_err_msg.src_loc.byteOffset(module.gpa); | 443 | const byte_offset = try module_err_msg.src_loc.byteOffset(module.gpa); |
| 443 | const loc = std.zig.findLineColumn(source, byte_offset); | 444 | const loc = std.zig.findLineColumn(source, byte_offset); |
| 444 | const file_path = try module_err_msg.src_loc.file_scope.fullPath(&arena.allocator); | 445 | const file_path = try module_err_msg.src_loc.file_scope.fullPath(allocator); |
| 445 | try errors.append(.{ | 446 | try errors.append(.{ |
| 446 | .src = .{ | 447 | .src = .{ |
| 447 | .src_path = file_path, | 448 | .src_path = file_path, |
| 448 | .msg = try arena.allocator.dupe(u8, module_err_msg.msg), | 449 | .msg = try allocator.dupe(u8, module_err_msg.msg), |
| 449 | .byte_offset = byte_offset, | 450 | .byte_offset = byte_offset, |
| 450 | .line = @intCast(u32, loc.line), | 451 | .line = @intCast(u32, loc.line), |
| 451 | .column = @intCast(u32, loc.column), | 452 | .column = @intCast(u32, loc.column), |
| 452 | .notes = notes, | 453 | .notes = notes, |
| 453 | .source_line = try arena.allocator.dupe(u8, loc.source_line), | 454 | .source_line = try allocator.dupe(u8, loc.source_line), |
| 454 | }, | 455 | }, |
| 455 | }); | 456 | }); |
| 456 | } | 457 | } |
| ... | @@ -548,11 +549,12 @@ pub const AllErrors = struct { | ... | @@ -548,11 +549,12 @@ pub const AllErrors = struct { |
| 548 | msg: []const u8, | 549 | msg: []const u8, |
| 549 | optional_children: ?AllErrors, | 550 | optional_children: ?AllErrors, |
| 550 | ) !void { | 551 | ) !void { |
| 551 | const duped_msg = try arena.allocator.dupe(u8, msg); | 552 | const allocator = arena.getAllocator(); |
| 553 | const duped_msg = try allocator.dupe(u8, msg); | ||
| 552 | if (optional_children) |*children| { | 554 | if (optional_children) |*children| { |
| 553 | try errors.append(.{ .plain = .{ | 555 | try errors.append(.{ .plain = .{ |
| 554 | .msg = duped_msg, | 556 | .msg = duped_msg, |
| 555 | .notes = try dupeList(children.list, &arena.allocator), | 557 | .notes = try dupeList(children.list, allocator), |
| 556 | } }); | 558 | } }); |
| 557 | } else { | 559 | } else { |
| 558 | try errors.append(.{ .plain = .{ .msg = duped_msg } }); | 560 | try errors.append(.{ .plain = .{ .msg = duped_msg } }); |
| ... | @@ -786,7 +788,7 @@ fn addPackageTableToCacheHash( | ... | @@ -786,7 +788,7 @@ fn addPackageTableToCacheHash( |
| 786 | seen_table: *std.AutoHashMap(*Package, void), | 788 | seen_table: *std.AutoHashMap(*Package, void), |
| 787 | hash_type: union(enum) { path_bytes, files: *Cache.Manifest }, | 789 | hash_type: union(enum) { path_bytes, files: *Cache.Manifest }, |
| 788 | ) (error{OutOfMemory} || std.os.GetCwdError)!void { | 790 | ) (error{OutOfMemory} || std.os.GetCwdError)!void { |
| 789 | const allocator = &arena.allocator; | 791 | const allocator = arena.getAllocator(); |
| 790 | 792 | ||
| 791 | const packages = try allocator.alloc(Package.Table.KV, pkg_table.count()); | 793 | const packages = try allocator.alloc(Package.Table.KV, pkg_table.count()); |
| 792 | { | 794 | { |
| ... | @@ -850,7 +852,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation { | ... | @@ -850,7 +852,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation { |
| 850 | // initialization and then is freed in deinit(). | 852 | // initialization and then is freed in deinit(). |
| 851 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); | 853 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); |
| 852 | errdefer arena_allocator.deinit(); | 854 | errdefer arena_allocator.deinit(); |
| 853 | const arena = &arena_allocator.allocator; | 855 | const arena = arena_allocator.getAllocator(); |
| 854 | 856 | ||
| 855 | // We put the `Compilation` itself in the arena. Freeing the arena will free the module. | 857 | // We put the `Compilation` itself in the arena. Freeing the arena will free the module. |
| 856 | // It's initialized later after we prepare the initialization options. | 858 | // It's initialized later after we prepare the initialization options. |
| ... | @@ -1208,7 +1210,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation { | ... | @@ -1208,7 +1210,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation { |
| 1208 | { | 1210 | { |
| 1209 | var local_arena = std.heap.ArenaAllocator.init(gpa); | 1211 | var local_arena = std.heap.ArenaAllocator.init(gpa); |
| 1210 | defer local_arena.deinit(); | 1212 | defer local_arena.deinit(); |
| 1211 | var seen_table = std.AutoHashMap(*Package, void).init(&local_arena.allocator); | 1213 | var seen_table = std.AutoHashMap(*Package, void).init(local_arena.getAllocator()); |
| 1212 | try addPackageTableToCacheHash(&hash, &local_arena, main_pkg.table, &seen_table, .path_bytes); | 1214 | try addPackageTableToCacheHash(&hash, &local_arena, main_pkg.table, &seen_table, .path_bytes); |
| 1213 | } | 1215 | } |
| 1214 | hash.add(valgrind); | 1216 | hash.add(valgrind); |
| ... | @@ -2011,6 +2013,7 @@ pub fn totalErrorCount(self: *Compilation) usize { | ... | @@ -2011,6 +2013,7 @@ pub fn totalErrorCount(self: *Compilation) usize { |
| 2011 | pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { | 2013 | pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { |
| 2012 | var arena = std.heap.ArenaAllocator.init(self.gpa); | 2014 | var arena = std.heap.ArenaAllocator.init(self.gpa); |
| 2013 | errdefer arena.deinit(); | 2015 | errdefer arena.deinit(); |
| 2016 | const arena_allocator = arena.getAllocator(); | ||
| 2014 | 2017 | ||
| 2015 | var errors = std.ArrayList(AllErrors.Message).init(self.gpa); | 2018 | var errors = std.ArrayList(AllErrors.Message).init(self.gpa); |
| 2016 | defer errors.deinit(); | 2019 | defer errors.deinit(); |
| ... | @@ -2024,8 +2027,8 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { | ... | @@ -2024,8 +2027,8 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { |
| 2024 | // C error reporting bubbling up. | 2027 | // C error reporting bubbling up. |
| 2025 | try errors.append(.{ | 2028 | try errors.append(.{ |
| 2026 | .src = .{ | 2029 | .src = .{ |
| 2027 | .src_path = try arena.allocator.dupe(u8, c_object.src.src_path), | 2030 | .src_path = try arena_allocator.dupe(u8, c_object.src.src_path), |
| 2028 | .msg = try std.fmt.allocPrint(&arena.allocator, "unable to build C object: {s}", .{ | 2031 | .msg = try std.fmt.allocPrint(arena_allocator, "unable to build C object: {s}", .{ |
| 2029 | err_msg.msg, | 2032 | err_msg.msg, |
| 2030 | }), | 2033 | }), |
| 2031 | .byte_offset = 0, | 2034 | .byte_offset = 0, |
| ... | @@ -2050,7 +2053,7 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { | ... | @@ -2050,7 +2053,7 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { |
| 2050 | // must have completed successfully. | 2053 | // must have completed successfully. |
| 2051 | const tree = try entry.key_ptr.*.getTree(module.gpa); | 2054 | const tree = try entry.key_ptr.*.getTree(module.gpa); |
| 2052 | assert(tree.errors.len == 0); | 2055 | assert(tree.errors.len == 0); |
| 2053 | try AllErrors.addZir(&arena.allocator, &errors, entry.key_ptr.*); | 2056 | try AllErrors.addZir(arena_allocator, &errors, entry.key_ptr.*); |
| 2054 | } | 2057 | } |
| 2055 | } | 2058 | } |
| 2056 | } | 2059 | } |
| ... | @@ -2089,7 +2092,7 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { | ... | @@ -2089,7 +2092,7 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { |
| 2089 | if (errors.items.len == 0 and self.link_error_flags.no_entry_point_found) { | 2092 | if (errors.items.len == 0 and self.link_error_flags.no_entry_point_found) { |
| 2090 | try errors.append(.{ | 2093 | try errors.append(.{ |
| 2091 | .plain = .{ | 2094 | .plain = .{ |
| 2092 | .msg = try std.fmt.allocPrint(&arena.allocator, "no entry point found", .{}), | 2095 | .msg = try std.fmt.allocPrint(arena_allocator, "no entry point found", .{}), |
| 2093 | }, | 2096 | }, |
| 2094 | }); | 2097 | }); |
| 2095 | } | 2098 | } |
| ... | @@ -2121,7 +2124,7 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { | ... | @@ -2121,7 +2124,7 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { |
| 2121 | assert(errors.items.len == self.totalErrorCount()); | 2124 | assert(errors.items.len == self.totalErrorCount()); |
| 2122 | 2125 | ||
| 2123 | return AllErrors{ | 2126 | return AllErrors{ |
| 2124 | .list = try arena.allocator.dupe(AllErrors.Message, errors.items), | 2127 | .list = try arena_allocator.dupe(AllErrors.Message, errors.items), |
| 2125 | .arena = arena.state, | 2128 | .arena = arena.state, |
| 2126 | }; | 2129 | }; |
| 2127 | } | 2130 | } |
| ... | @@ -2292,7 +2295,7 @@ fn processOneJob(comp: *Compilation, job: Job, main_progress_node: *std.Progress | ... | @@ -2292,7 +2295,7 @@ fn processOneJob(comp: *Compilation, job: Job, main_progress_node: *std.Progress |
| 2292 | 2295 | ||
| 2293 | var tmp_arena = std.heap.ArenaAllocator.init(gpa); | 2296 | var tmp_arena = std.heap.ArenaAllocator.init(gpa); |
| 2294 | defer tmp_arena.deinit(); | 2297 | defer tmp_arena.deinit(); |
| 2295 | const sema_arena = &tmp_arena.allocator; | 2298 | const sema_arena = tmp_arena.getAllocator(); |
| 2296 | 2299 | ||
| 2297 | const sema_frame = tracy.namedFrame("sema"); | 2300 | const sema_frame = tracy.namedFrame("sema"); |
| 2298 | var sema_frame_ended = false; | 2301 | var sema_frame_ended = false; |
| ... | @@ -2387,7 +2390,7 @@ fn processOneJob(comp: *Compilation, job: Job, main_progress_node: *std.Progress | ... | @@ -2387,7 +2390,7 @@ fn processOneJob(comp: *Compilation, job: Job, main_progress_node: *std.Progress |
| 2387 | .decl = decl, | 2390 | .decl = decl, |
| 2388 | .fwd_decl = fwd_decl.toManaged(gpa), | 2391 | .fwd_decl = fwd_decl.toManaged(gpa), |
| 2389 | .typedefs = c_codegen.TypedefMap.init(gpa), | 2392 | .typedefs = c_codegen.TypedefMap.init(gpa), |
| 2390 | .typedefs_arena = &typedefs_arena.allocator, | 2393 | .typedefs_arena = typedefs_arena.getAllocator(), |
| 2391 | }; | 2394 | }; |
| 2392 | defer dg.fwd_decl.deinit(); | 2395 | defer dg.fwd_decl.deinit(); |
| 2393 | defer dg.typedefs.deinit(); | 2396 | defer dg.typedefs.deinit(); |
| ... | @@ -2841,7 +2844,7 @@ pub fn cImport(comp: *Compilation, c_src: []const u8) !CImportResult { | ... | @@ -2841,7 +2844,7 @@ pub fn cImport(comp: *Compilation, c_src: []const u8) !CImportResult { |
| 2841 | const digest = if (!actual_hit) digest: { | 2844 | const digest = if (!actual_hit) digest: { |
| 2842 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 2845 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 2843 | defer arena_allocator.deinit(); | 2846 | defer arena_allocator.deinit(); |
| 2844 | const arena = &arena_allocator.allocator; | 2847 | const arena = arena_allocator.getAllocator(); |
| 2845 | 2848 | ||
| 2846 | const tmp_digest = man.hash.peek(); | 2849 | const tmp_digest = man.hash.peek(); |
| 2847 | const tmp_dir_sub_path = try std.fs.path.join(arena, &[_][]const u8{ "o", &tmp_digest }); | 2850 | const tmp_dir_sub_path = try std.fs.path.join(arena, &[_][]const u8{ "o", &tmp_digest }); |
| ... | @@ -3096,7 +3099,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: *std.P | ... | @@ -3096,7 +3099,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: *std.P |
| 3096 | 3099 | ||
| 3097 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 3100 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 3098 | defer arena_allocator.deinit(); | 3101 | defer arena_allocator.deinit(); |
| 3099 | const arena = &arena_allocator.allocator; | 3102 | const arena = arena_allocator.getAllocator(); |
| 3100 | 3103 | ||
| 3101 | const c_source_basename = std.fs.path.basename(c_object.src.src_path); | 3104 | const c_source_basename = std.fs.path.basename(c_object.src.src_path); |
| 3102 | 3105 | ||
| ... | @@ -4417,7 +4420,7 @@ fn updateStage1Module(comp: *Compilation, main_progress_node: *std.Progress.Node | ... | @@ -4417,7 +4420,7 @@ fn updateStage1Module(comp: *Compilation, main_progress_node: *std.Progress.Node |
| 4417 | 4420 | ||
| 4418 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 4421 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 4419 | defer arena_allocator.deinit(); | 4422 | defer arena_allocator.deinit(); |
| 4420 | const arena = &arena_allocator.allocator; | 4423 | const arena = arena_allocator.getAllocator(); |
| 4421 | 4424 | ||
| 4422 | // Here we use the legacy stage1 C++ compiler to compile Zig code. | 4425 | // Here we use the legacy stage1 C++ compiler to compile Zig code. |
| 4423 | const mod = comp.bin_file.options.module.?; | 4426 | const mod = comp.bin_file.options.module.?; |
| ... | @@ -4454,7 +4457,7 @@ fn updateStage1Module(comp: *Compilation, main_progress_node: *std.Progress.Node | ... | @@ -4454,7 +4457,7 @@ fn updateStage1Module(comp: *Compilation, main_progress_node: *std.Progress.Node |
| 4454 | 4457 | ||
| 4455 | _ = try man.addFile(main_zig_file, null); | 4458 | _ = try man.addFile(main_zig_file, null); |
| 4456 | { | 4459 | { |
| 4457 | var seen_table = std.AutoHashMap(*Package, void).init(&arena_allocator.allocator); | 4460 | var seen_table = std.AutoHashMap(*Package, void).init(arena_allocator.getAllocator()); |
| 4458 | try addPackageTableToCacheHash(&man.hash, &arena_allocator, mod.main_pkg.table, &seen_table, .{ .files = &man }); | 4461 | try addPackageTableToCacheHash(&man.hash, &arena_allocator, mod.main_pkg.table, &seen_table, .{ .files = &man }); |
| 4459 | } | 4462 | } |
| 4460 | man.hash.add(comp.bin_file.options.valgrind); | 4463 | man.hash.add(comp.bin_file.options.valgrind); |
src/DepTokenizer.zig+1-1| ... | @@ -878,7 +878,7 @@ test "error prereq - continuation expecting end-of-line" { | ... | @@ -878,7 +878,7 @@ test "error prereq - continuation expecting end-of-line" { |
| 878 | // - tokenize input, emit textual representation, and compare to expect | 878 | // - tokenize input, emit textual representation, and compare to expect |
| 879 | fn depTokenizer(input: []const u8, expect: []const u8) !void { | 879 | fn depTokenizer(input: []const u8, expect: []const u8) !void { |
| 880 | var arena_allocator = std.heap.ArenaAllocator.init(std.testing.allocator); | 880 | var arena_allocator = std.heap.ArenaAllocator.init(std.testing.allocator); |
| 881 | const arena = &arena_allocator.allocator; | 881 | const arena = arena_allocator.getAllocator(); |
| 882 | defer arena_allocator.deinit(); | 882 | defer arena_allocator.deinit(); |
| 883 | 883 | ||
| 884 | var it: Tokenizer = .{ .bytes = input }; | 884 | var it: Tokenizer = .{ .bytes = input }; |
src/Module.zig+33-28| ... | @@ -517,7 +517,7 @@ pub const Decl = struct { | ... | @@ -517,7 +517,7 @@ pub const Decl = struct { |
| 517 | 517 | ||
| 518 | pub fn finalizeNewArena(decl: *Decl, arena: *std.heap.ArenaAllocator) !void { | 518 | pub fn finalizeNewArena(decl: *Decl, arena: *std.heap.ArenaAllocator) !void { |
| 519 | assert(decl.value_arena == null); | 519 | assert(decl.value_arena == null); |
| 520 | const arena_state = try arena.allocator.create(std.heap.ArenaAllocator.State); | 520 | const arena_state = try arena.getAllocator().create(std.heap.ArenaAllocator.State); |
| 521 | arena_state.* = arena.state; | 521 | arena_state.* = arena.state; |
| 522 | decl.value_arena = arena_state; | 522 | decl.value_arena = arena_state; |
| 523 | } | 523 | } |
| ... | @@ -3159,10 +3159,11 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void { | ... | @@ -3159,10 +3159,11 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void { |
| 3159 | const gpa = mod.gpa; | 3159 | const gpa = mod.gpa; |
| 3160 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); | 3160 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); |
| 3161 | errdefer new_decl_arena.deinit(); | 3161 | errdefer new_decl_arena.deinit(); |
| 3162 | const new_decl_arena_allocator = new_decl_arena.getAllocator(); | ||
| 3162 | 3163 | ||
| 3163 | const struct_obj = try new_decl_arena.allocator.create(Module.Struct); | 3164 | const struct_obj = try new_decl_arena_allocator.create(Module.Struct); |
| 3164 | const struct_ty = try Type.Tag.@"struct".create(&new_decl_arena.allocator, struct_obj); | 3165 | const struct_ty = try Type.Tag.@"struct".create(new_decl_arena_allocator, struct_obj); |
| 3165 | const struct_val = try Value.Tag.ty.create(&new_decl_arena.allocator, struct_ty); | 3166 | const struct_val = try Value.Tag.ty.create(new_decl_arena_allocator, struct_ty); |
| 3166 | const ty_ty = comptime Type.initTag(.type); | 3167 | const ty_ty = comptime Type.initTag(.type); |
| 3167 | struct_obj.* = .{ | 3168 | struct_obj.* = .{ |
| 3168 | .owner_decl = undefined, // set below | 3169 | .owner_decl = undefined, // set below |
| ... | @@ -3202,12 +3203,13 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void { | ... | @@ -3202,12 +3203,13 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void { |
| 3202 | 3203 | ||
| 3203 | var sema_arena = std.heap.ArenaAllocator.init(gpa); | 3204 | var sema_arena = std.heap.ArenaAllocator.init(gpa); |
| 3204 | defer sema_arena.deinit(); | 3205 | defer sema_arena.deinit(); |
| 3206 | const sema_arena_allocator = sema_arena.getAllocator(); | ||
| 3205 | 3207 | ||
| 3206 | var sema: Sema = .{ | 3208 | var sema: Sema = .{ |
| 3207 | .mod = mod, | 3209 | .mod = mod, |
| 3208 | .gpa = gpa, | 3210 | .gpa = gpa, |
| 3209 | .arena = &sema_arena.allocator, | 3211 | .arena = sema_arena_allocator, |
| 3210 | .perm_arena = &new_decl_arena.allocator, | 3212 | .perm_arena = new_decl_arena_allocator, |
| 3211 | .code = file.zir, | 3213 | .code = file.zir, |
| 3212 | .owner_decl = new_decl, | 3214 | .owner_decl = new_decl, |
| 3213 | .func = null, | 3215 | .func = null, |
| ... | @@ -3216,7 +3218,7 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void { | ... | @@ -3216,7 +3218,7 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void { |
| 3216 | }; | 3218 | }; |
| 3217 | defer sema.deinit(); | 3219 | defer sema.deinit(); |
| 3218 | 3220 | ||
| 3219 | var wip_captures = try WipCaptureScope.init(gpa, &new_decl_arena.allocator, null); | 3221 | var wip_captures = try WipCaptureScope.init(gpa, new_decl_arena_allocator, null); |
| 3220 | defer wip_captures.deinit(); | 3222 | defer wip_captures.deinit(); |
| 3221 | 3223 | ||
| 3222 | var block_scope: Sema.Block = .{ | 3224 | var block_scope: Sema.Block = .{ |
| ... | @@ -3265,15 +3267,17 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { | ... | @@ -3265,15 +3267,17 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { |
| 3265 | // We need the memory for the Type to go into the arena for the Decl | 3267 | // We need the memory for the Type to go into the arena for the Decl |
| 3266 | var decl_arena = std.heap.ArenaAllocator.init(gpa); | 3268 | var decl_arena = std.heap.ArenaAllocator.init(gpa); |
| 3267 | errdefer decl_arena.deinit(); | 3269 | errdefer decl_arena.deinit(); |
| 3270 | const decl_arena_allocator = decl_arena.getAllocator(); | ||
| 3268 | 3271 | ||
| 3269 | var analysis_arena = std.heap.ArenaAllocator.init(gpa); | 3272 | var analysis_arena = std.heap.ArenaAllocator.init(gpa); |
| 3270 | defer analysis_arena.deinit(); | 3273 | defer analysis_arena.deinit(); |
| 3274 | const analysis_arena_allocator = analysis_arena.getAllocator(); | ||
| 3271 | 3275 | ||
| 3272 | var sema: Sema = .{ | 3276 | var sema: Sema = .{ |
| 3273 | .mod = mod, | 3277 | .mod = mod, |
| 3274 | .gpa = gpa, | 3278 | .gpa = gpa, |
| 3275 | .arena = &analysis_arena.allocator, | 3279 | .arena = analysis_arena_allocator, |
| 3276 | .perm_arena = &decl_arena.allocator, | 3280 | .perm_arena = decl_arena_allocator, |
| 3277 | .code = zir, | 3281 | .code = zir, |
| 3278 | .owner_decl = decl, | 3282 | .owner_decl = decl, |
| 3279 | .func = null, | 3283 | .func = null, |
| ... | @@ -3296,7 +3300,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { | ... | @@ -3296,7 +3300,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { |
| 3296 | } | 3300 | } |
| 3297 | log.debug("semaDecl {*} ({s})", .{ decl, decl.name }); | 3301 | log.debug("semaDecl {*} ({s})", .{ decl, decl.name }); |
| 3298 | 3302 | ||
| 3299 | var wip_captures = try WipCaptureScope.init(gpa, &decl_arena.allocator, decl.src_scope); | 3303 | var wip_captures = try WipCaptureScope.init(gpa, decl_arena_allocator, decl.src_scope); |
| 3300 | defer wip_captures.deinit(); | 3304 | defer wip_captures.deinit(); |
| 3301 | 3305 | ||
| 3302 | var block_scope: Sema.Block = .{ | 3306 | var block_scope: Sema.Block = .{ |
| ... | @@ -3356,7 +3360,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { | ... | @@ -3356,7 +3360,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { |
| 3356 | // not the struct itself. | 3360 | // not the struct itself. |
| 3357 | try sema.resolveTypeLayout(&block_scope, src, decl_tv.ty); | 3361 | try sema.resolveTypeLayout(&block_scope, src, decl_tv.ty); |
| 3358 | 3362 | ||
| 3359 | const decl_arena_state = try decl_arena.allocator.create(std.heap.ArenaAllocator.State); | 3363 | const decl_arena_state = try decl_arena_allocator.create(std.heap.ArenaAllocator.State); |
| 3360 | 3364 | ||
| 3361 | if (decl.is_usingnamespace) { | 3365 | if (decl.is_usingnamespace) { |
| 3362 | const ty_ty = Type.initTag(.type); | 3366 | const ty_ty = Type.initTag(.type); |
| ... | @@ -3370,7 +3374,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { | ... | @@ -3370,7 +3374,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { |
| 3370 | } | 3374 | } |
| 3371 | 3375 | ||
| 3372 | decl.ty = ty_ty; | 3376 | decl.ty = ty_ty; |
| 3373 | decl.val = try Value.Tag.ty.create(&decl_arena.allocator, ty); | 3377 | decl.val = try Value.Tag.ty.create(decl_arena_allocator, ty); |
| 3374 | decl.align_val = Value.initTag(.null_value); | 3378 | decl.align_val = Value.initTag(.null_value); |
| 3375 | decl.linksection_val = Value.initTag(.null_value); | 3379 | decl.linksection_val = Value.initTag(.null_value); |
| 3376 | decl.has_tv = true; | 3380 | decl.has_tv = true; |
| ... | @@ -3400,10 +3404,10 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { | ... | @@ -3400,10 +3404,10 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { |
| 3400 | decl.clearValues(gpa); | 3404 | decl.clearValues(gpa); |
| 3401 | } | 3405 | } |
| 3402 | 3406 | ||
| 3403 | decl.ty = try decl_tv.ty.copy(&decl_arena.allocator); | 3407 | decl.ty = try decl_tv.ty.copy(decl_arena_allocator); |
| 3404 | decl.val = try decl_tv.val.copy(&decl_arena.allocator); | 3408 | decl.val = try decl_tv.val.copy(decl_arena_allocator); |
| 3405 | decl.align_val = try align_val.copy(&decl_arena.allocator); | 3409 | decl.align_val = try align_val.copy(decl_arena_allocator); |
| 3406 | decl.linksection_val = try linksection_val.copy(&decl_arena.allocator); | 3410 | decl.linksection_val = try linksection_val.copy(decl_arena_allocator); |
| 3407 | decl.@"addrspace" = address_space; | 3411 | decl.@"addrspace" = address_space; |
| 3408 | decl.has_tv = true; | 3412 | decl.has_tv = true; |
| 3409 | decl.owns_tv = owns_tv; | 3413 | decl.owns_tv = owns_tv; |
| ... | @@ -3453,7 +3457,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { | ... | @@ -3453,7 +3457,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { |
| 3453 | decl.owns_tv = true; | 3457 | decl.owns_tv = true; |
| 3454 | queue_linker_work = true; | 3458 | queue_linker_work = true; |
| 3455 | 3459 | ||
| 3456 | const copied_init = try variable.init.copy(&decl_arena.allocator); | 3460 | const copied_init = try variable.init.copy(decl_arena_allocator); |
| 3457 | variable.init = copied_init; | 3461 | variable.init = copied_init; |
| 3458 | } | 3462 | } |
| 3459 | }, | 3463 | }, |
| ... | @@ -3476,10 +3480,10 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { | ... | @@ -3476,10 +3480,10 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool { |
| 3476 | }, | 3480 | }, |
| 3477 | } | 3481 | } |
| 3478 | 3482 | ||
| 3479 | decl.ty = try decl_tv.ty.copy(&decl_arena.allocator); | 3483 | decl.ty = try decl_tv.ty.copy(decl_arena_allocator); |
| 3480 | decl.val = try decl_tv.val.copy(&decl_arena.allocator); | 3484 | decl.val = try decl_tv.val.copy(decl_arena_allocator); |
| 3481 | decl.align_val = try align_val.copy(&decl_arena.allocator); | 3485 | decl.align_val = try align_val.copy(decl_arena_allocator); |
| 3482 | decl.linksection_val = try linksection_val.copy(&decl_arena.allocator); | 3486 | decl.linksection_val = try linksection_val.copy(decl_arena_allocator); |
| 3483 | decl.@"addrspace" = address_space; | 3487 | decl.@"addrspace" = address_space; |
| 3484 | decl.has_tv = true; | 3488 | decl.has_tv = true; |
| 3485 | decl_arena_state.* = decl_arena.state; | 3489 | decl_arena_state.* = decl_arena.state; |
| ... | @@ -4128,12 +4132,13 @@ pub fn analyzeFnBody(mod: *Module, decl: *Decl, func: *Fn, arena: Allocator) Sem | ... | @@ -4128,12 +4132,13 @@ pub fn analyzeFnBody(mod: *Module, decl: *Decl, func: *Fn, arena: Allocator) Sem |
| 4128 | // Use the Decl's arena for captured values. | 4132 | // Use the Decl's arena for captured values. |
| 4129 | var decl_arena = decl.value_arena.?.promote(gpa); | 4133 | var decl_arena = decl.value_arena.?.promote(gpa); |
| 4130 | defer decl.value_arena.?.* = decl_arena.state; | 4134 | defer decl.value_arena.?.* = decl_arena.state; |
| 4135 | const decl_arena_allocator = decl_arena.getAllocator(); | ||
| 4131 | 4136 | ||
| 4132 | var sema: Sema = .{ | 4137 | var sema: Sema = .{ |
| 4133 | .mod = mod, | 4138 | .mod = mod, |
| 4134 | .gpa = gpa, | 4139 | .gpa = gpa, |
| 4135 | .arena = arena, | 4140 | .arena = arena, |
| 4136 | .perm_arena = &decl_arena.allocator, | 4141 | .perm_arena = decl_arena_allocator, |
| 4137 | .code = decl.getFileScope().zir, | 4142 | .code = decl.getFileScope().zir, |
| 4138 | .owner_decl = decl, | 4143 | .owner_decl = decl, |
| 4139 | .func = func, | 4144 | .func = func, |
| ... | @@ -4147,7 +4152,7 @@ pub fn analyzeFnBody(mod: *Module, decl: *Decl, func: *Fn, arena: Allocator) Sem | ... | @@ -4147,7 +4152,7 @@ pub fn analyzeFnBody(mod: *Module, decl: *Decl, func: *Fn, arena: Allocator) Sem |
| 4147 | try sema.air_extra.ensureTotalCapacity(gpa, reserved_count); | 4152 | try sema.air_extra.ensureTotalCapacity(gpa, reserved_count); |
| 4148 | sema.air_extra.items.len += reserved_count; | 4153 | sema.air_extra.items.len += reserved_count; |
| 4149 | 4154 | ||
| 4150 | var wip_captures = try WipCaptureScope.init(gpa, &decl_arena.allocator, decl.src_scope); | 4155 | var wip_captures = try WipCaptureScope.init(gpa, decl_arena_allocator, decl.src_scope); |
| 4151 | defer wip_captures.deinit(); | 4156 | defer wip_captures.deinit(); |
| 4152 | 4157 | ||
| 4153 | var inner_block: Sema.Block = .{ | 4158 | var inner_block: Sema.Block = .{ |
| ... | @@ -4751,7 +4756,7 @@ pub fn populateTestFunctions(mod: *Module) !void { | ... | @@ -4751,7 +4756,7 @@ pub fn populateTestFunctions(mod: *Module) !void { |
| 4751 | // decl reference it as a slice. | 4756 | // decl reference it as a slice. |
| 4752 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); | 4757 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); |
| 4753 | errdefer new_decl_arena.deinit(); | 4758 | errdefer new_decl_arena.deinit(); |
| 4754 | const arena = &new_decl_arena.allocator; | 4759 | const arena = new_decl_arena.getAllocator(); |
| 4755 | 4760 | ||
| 4756 | const test_fn_vals = try arena.alloc(Value, mod.test_functions.count()); | 4761 | const test_fn_vals = try arena.alloc(Value, mod.test_functions.count()); |
| 4757 | const array_decl = try mod.createAnonymousDeclFromDecl(decl, decl.src_namespace, null, .{ | 4762 | const array_decl = try mod.createAnonymousDeclFromDecl(decl, decl.src_namespace, null, .{ |
| ... | @@ -4770,10 +4775,10 @@ pub fn populateTestFunctions(mod: *Module) !void { | ... | @@ -4770,10 +4775,10 @@ pub fn populateTestFunctions(mod: *Module) !void { |
| 4770 | const test_name_decl = n: { | 4775 | const test_name_decl = n: { |
| 4771 | var name_decl_arena = std.heap.ArenaAllocator.init(gpa); | 4776 | var name_decl_arena = std.heap.ArenaAllocator.init(gpa); |
| 4772 | errdefer name_decl_arena.deinit(); | 4777 | errdefer name_decl_arena.deinit(); |
| 4773 | const bytes = try name_decl_arena.allocator.dupe(u8, test_name_slice); | 4778 | const bytes = try arena.dupe(u8, test_name_slice); |
| 4774 | const test_name_decl = try mod.createAnonymousDeclFromDecl(array_decl, array_decl.src_namespace, null, .{ | 4779 | const test_name_decl = try mod.createAnonymousDeclFromDecl(array_decl, array_decl.src_namespace, null, .{ |
| 4775 | .ty = try Type.Tag.array_u8.create(&name_decl_arena.allocator, bytes.len), | 4780 | .ty = try Type.Tag.array_u8.create(arena, bytes.len), |
| 4776 | .val = try Value.Tag.bytes.create(&name_decl_arena.allocator, bytes), | 4781 | .val = try Value.Tag.bytes.create(arena, bytes), |
| 4777 | }); | 4782 | }); |
| 4778 | try test_name_decl.finalizeNewArena(&name_decl_arena); | 4783 | try test_name_decl.finalizeNewArena(&name_decl_arena); |
| 4779 | break :n test_name_decl; | 4784 | break :n test_name_decl; |
| ... | @@ -4802,7 +4807,7 @@ pub fn populateTestFunctions(mod: *Module) !void { | ... | @@ -4802,7 +4807,7 @@ pub fn populateTestFunctions(mod: *Module) !void { |
| 4802 | { | 4807 | { |
| 4803 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); | 4808 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); |
| 4804 | errdefer new_decl_arena.deinit(); | 4809 | errdefer new_decl_arena.deinit(); |
| 4805 | const arena = &new_decl_arena.allocator; | 4810 | const arena = new_decl_arena.getAllocator(); |
| 4806 | 4811 | ||
| 4807 | // This copy accesses the old Decl Type/Value so it must be done before `clearValues`. | 4812 | // This copy accesses the old Decl Type/Value so it must be done before `clearValues`. |
| 4808 | const new_ty = try Type.Tag.const_slice.create(arena, try tmp_test_fn_ty.copy(arena)); | 4813 | const new_ty = try Type.Tag.const_slice.create(arena, try tmp_test_fn_ty.copy(arena)); |
src/Sema.zig+68-58| ... | @@ -418,7 +418,7 @@ pub const Block = struct { | ... | @@ -418,7 +418,7 @@ pub const Block = struct { |
| 418 | finished: bool, | 418 | finished: bool, |
| 419 | 419 | ||
| 420 | pub fn arena(wad: *WipAnonDecl) Allocator { | 420 | pub fn arena(wad: *WipAnonDecl) Allocator { |
| 421 | return &wad.new_decl_arena.allocator; | 421 | return wad.new_decl_arena.getAllocator(); |
| 422 | } | 422 | } |
| 423 | 423 | ||
| 424 | pub fn deinit(wad: *WipAnonDecl) void { | 424 | pub fn deinit(wad: *WipAnonDecl) void { |
| ... | @@ -1594,10 +1594,11 @@ fn zirStructDecl( | ... | @@ -1594,10 +1594,11 @@ fn zirStructDecl( |
| 1594 | 1594 | ||
| 1595 | var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); | 1595 | var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); |
| 1596 | errdefer new_decl_arena.deinit(); | 1596 | errdefer new_decl_arena.deinit(); |
| 1597 | const new_decl_arena_allocator = new_decl_arena.getAllocator(); | ||
| 1597 | 1598 | ||
| 1598 | const struct_obj = try new_decl_arena.allocator.create(Module.Struct); | 1599 | const struct_obj = try new_decl_arena_allocator.create(Module.Struct); |
| 1599 | const struct_ty = try Type.Tag.@"struct".create(&new_decl_arena.allocator, struct_obj); | 1600 | const struct_ty = try Type.Tag.@"struct".create(new_decl_arena_allocator, struct_obj); |
| 1600 | const struct_val = try Value.Tag.ty.create(&new_decl_arena.allocator, struct_ty); | 1601 | const struct_val = try Value.Tag.ty.create(new_decl_arena_allocator, struct_ty); |
| 1601 | const type_name = try sema.createTypeName(block, small.name_strategy); | 1602 | const type_name = try sema.createTypeName(block, small.name_strategy); |
| 1602 | const new_decl = try sema.mod.createAnonymousDeclNamed(block, .{ | 1603 | const new_decl = try sema.mod.createAnonymousDeclNamed(block, .{ |
| 1603 | .ty = Type.type, | 1604 | .ty = Type.type, |
| ... | @@ -1698,15 +1699,16 @@ fn zirEnumDecl( | ... | @@ -1698,15 +1699,16 @@ fn zirEnumDecl( |
| 1698 | 1699 | ||
| 1699 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); | 1700 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); |
| 1700 | errdefer new_decl_arena.deinit(); | 1701 | errdefer new_decl_arena.deinit(); |
| 1702 | const new_decl_arena_allocator = new_decl_arena.getAllocator(); | ||
| 1701 | 1703 | ||
| 1702 | const enum_obj = try new_decl_arena.allocator.create(Module.EnumFull); | 1704 | const enum_obj = try new_decl_arena_allocator.create(Module.EnumFull); |
| 1703 | const enum_ty_payload = try new_decl_arena.allocator.create(Type.Payload.EnumFull); | 1705 | const enum_ty_payload = try new_decl_arena_allocator.create(Type.Payload.EnumFull); |
| 1704 | enum_ty_payload.* = .{ | 1706 | enum_ty_payload.* = .{ |
| 1705 | .base = .{ .tag = if (small.nonexhaustive) .enum_nonexhaustive else .enum_full }, | 1707 | .base = .{ .tag = if (small.nonexhaustive) .enum_nonexhaustive else .enum_full }, |
| 1706 | .data = enum_obj, | 1708 | .data = enum_obj, |
| 1707 | }; | 1709 | }; |
| 1708 | const enum_ty = Type.initPayload(&enum_ty_payload.base); | 1710 | const enum_ty = Type.initPayload(&enum_ty_payload.base); |
| 1709 | const enum_val = try Value.Tag.ty.create(&new_decl_arena.allocator, enum_ty); | 1711 | const enum_val = try Value.Tag.ty.create(new_decl_arena_allocator, enum_ty); |
| 1710 | const type_name = try sema.createTypeName(block, small.name_strategy); | 1712 | const type_name = try sema.createTypeName(block, small.name_strategy); |
| 1711 | const new_decl = try mod.createAnonymousDeclNamed(block, .{ | 1713 | const new_decl = try mod.createAnonymousDeclNamed(block, .{ |
| 1712 | .ty = Type.type, | 1714 | .ty = Type.type, |
| ... | @@ -1790,17 +1792,17 @@ fn zirEnumDecl( | ... | @@ -1790,17 +1792,17 @@ fn zirEnumDecl( |
| 1790 | break :blk try sema.resolveType(block, src, tag_type_ref); | 1792 | break :blk try sema.resolveType(block, src, tag_type_ref); |
| 1791 | } | 1793 | } |
| 1792 | const bits = std.math.log2_int_ceil(usize, fields_len); | 1794 | const bits = std.math.log2_int_ceil(usize, fields_len); |
| 1793 | break :blk try Type.Tag.int_unsigned.create(&new_decl_arena.allocator, bits); | 1795 | break :blk try Type.Tag.int_unsigned.create(new_decl_arena_allocator, bits); |
| 1794 | }; | 1796 | }; |
| 1795 | enum_obj.tag_ty = tag_ty; | 1797 | enum_obj.tag_ty = tag_ty; |
| 1796 | } | 1798 | } |
| 1797 | 1799 | ||
| 1798 | try enum_obj.fields.ensureTotalCapacity(&new_decl_arena.allocator, fields_len); | 1800 | try enum_obj.fields.ensureTotalCapacity(new_decl_arena_allocator, fields_len); |
| 1799 | const any_values = for (sema.code.extra[body_end..][0..bit_bags_count]) |bag| { | 1801 | const any_values = for (sema.code.extra[body_end..][0..bit_bags_count]) |bag| { |
| 1800 | if (bag != 0) break true; | 1802 | if (bag != 0) break true; |
| 1801 | } else false; | 1803 | } else false; |
| 1802 | if (any_values) { | 1804 | if (any_values) { |
| 1803 | try enum_obj.values.ensureTotalCapacityContext(&new_decl_arena.allocator, fields_len, .{ | 1805 | try enum_obj.values.ensureTotalCapacityContext(new_decl_arena_allocator, fields_len, .{ |
| 1804 | .ty = enum_obj.tag_ty, | 1806 | .ty = enum_obj.tag_ty, |
| 1805 | }); | 1807 | }); |
| 1806 | } | 1808 | } |
| ... | @@ -1820,7 +1822,7 @@ fn zirEnumDecl( | ... | @@ -1820,7 +1822,7 @@ fn zirEnumDecl( |
| 1820 | extra_index += 1; | 1822 | extra_index += 1; |
| 1821 | 1823 | ||
| 1822 | // This string needs to outlive the ZIR code. | 1824 | // This string needs to outlive the ZIR code. |
| 1823 | const field_name = try new_decl_arena.allocator.dupe(u8, field_name_zir); | 1825 | const field_name = try new_decl_arena_allocator.dupe(u8, field_name_zir); |
| 1824 | 1826 | ||
| 1825 | const gop = enum_obj.fields.getOrPutAssumeCapacity(field_name); | 1827 | const gop = enum_obj.fields.getOrPutAssumeCapacity(field_name); |
| 1826 | if (gop.found_existing) { | 1828 | if (gop.found_existing) { |
| ... | @@ -1843,12 +1845,12 @@ fn zirEnumDecl( | ... | @@ -1843,12 +1845,12 @@ fn zirEnumDecl( |
| 1843 | // that points to this default value expression rather than the struct. | 1845 | // that points to this default value expression rather than the struct. |
| 1844 | // But only resolve the source location if we need to emit a compile error. | 1846 | // But only resolve the source location if we need to emit a compile error. |
| 1845 | const tag_val = (try sema.resolveInstConst(block, src, tag_val_ref)).val; | 1847 | const tag_val = (try sema.resolveInstConst(block, src, tag_val_ref)).val; |
| 1846 | const copied_tag_val = try tag_val.copy(&new_decl_arena.allocator); | 1848 | const copied_tag_val = try tag_val.copy(new_decl_arena_allocator); |
| 1847 | enum_obj.values.putAssumeCapacityNoClobberContext(copied_tag_val, {}, .{ | 1849 | enum_obj.values.putAssumeCapacityNoClobberContext(copied_tag_val, {}, .{ |
| 1848 | .ty = enum_obj.tag_ty, | 1850 | .ty = enum_obj.tag_ty, |
| 1849 | }); | 1851 | }); |
| 1850 | } else if (any_values) { | 1852 | } else if (any_values) { |
| 1851 | const tag_val = try Value.Tag.int_u64.create(&new_decl_arena.allocator, field_i); | 1853 | const tag_val = try Value.Tag.int_u64.create(new_decl_arena_allocator, field_i); |
| 1852 | enum_obj.values.putAssumeCapacityNoClobberContext(tag_val, {}, .{ .ty = enum_obj.tag_ty }); | 1854 | enum_obj.values.putAssumeCapacityNoClobberContext(tag_val, {}, .{ .ty = enum_obj.tag_ty }); |
| 1853 | } | 1855 | } |
| 1854 | } | 1856 | } |
| ... | @@ -1887,16 +1889,17 @@ fn zirUnionDecl( | ... | @@ -1887,16 +1889,17 @@ fn zirUnionDecl( |
| 1887 | 1889 | ||
| 1888 | var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); | 1890 | var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); |
| 1889 | errdefer new_decl_arena.deinit(); | 1891 | errdefer new_decl_arena.deinit(); |
| 1892 | const new_decl_arena_allocator = new_decl_arena.getAllocator(); | ||
| 1890 | 1893 | ||
| 1891 | const union_obj = try new_decl_arena.allocator.create(Module.Union); | 1894 | const union_obj = try new_decl_arena_allocator.create(Module.Union); |
| 1892 | const type_tag: Type.Tag = if (small.has_tag_type or small.auto_enum_tag) .union_tagged else .@"union"; | 1895 | const type_tag: Type.Tag = if (small.has_tag_type or small.auto_enum_tag) .union_tagged else .@"union"; |
| 1893 | const union_payload = try new_decl_arena.allocator.create(Type.Payload.Union); | 1896 | const union_payload = try new_decl_arena_allocator.create(Type.Payload.Union); |
| 1894 | union_payload.* = .{ | 1897 | union_payload.* = .{ |
| 1895 | .base = .{ .tag = type_tag }, | 1898 | .base = .{ .tag = type_tag }, |
| 1896 | .data = union_obj, | 1899 | .data = union_obj, |
| 1897 | }; | 1900 | }; |
| 1898 | const union_ty = Type.initPayload(&union_payload.base); | 1901 | const union_ty = Type.initPayload(&union_payload.base); |
| 1899 | const union_val = try Value.Tag.ty.create(&new_decl_arena.allocator, union_ty); | 1902 | const union_val = try Value.Tag.ty.create(new_decl_arena_allocator, union_ty); |
| 1900 | const type_name = try sema.createTypeName(block, small.name_strategy); | 1903 | const type_name = try sema.createTypeName(block, small.name_strategy); |
| 1901 | const new_decl = try sema.mod.createAnonymousDeclNamed(block, .{ | 1904 | const new_decl = try sema.mod.createAnonymousDeclNamed(block, .{ |
| 1902 | .ty = Type.type, | 1905 | .ty = Type.type, |
| ... | @@ -1955,15 +1958,16 @@ fn zirOpaqueDecl( | ... | @@ -1955,15 +1958,16 @@ fn zirOpaqueDecl( |
| 1955 | 1958 | ||
| 1956 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); | 1959 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); |
| 1957 | errdefer new_decl_arena.deinit(); | 1960 | errdefer new_decl_arena.deinit(); |
| 1961 | const new_decl_arena_allocator = new_decl_arena.getAllocator(); | ||
| 1958 | 1962 | ||
| 1959 | const opaque_obj = try new_decl_arena.allocator.create(Module.Opaque); | 1963 | const opaque_obj = try new_decl_arena_allocator.create(Module.Opaque); |
| 1960 | const opaque_ty_payload = try new_decl_arena.allocator.create(Type.Payload.Opaque); | 1964 | const opaque_ty_payload = try new_decl_arena_allocator.create(Type.Payload.Opaque); |
| 1961 | opaque_ty_payload.* = .{ | 1965 | opaque_ty_payload.* = .{ |
| 1962 | .base = .{ .tag = .@"opaque" }, | 1966 | .base = .{ .tag = .@"opaque" }, |
| 1963 | .data = opaque_obj, | 1967 | .data = opaque_obj, |
| 1964 | }; | 1968 | }; |
| 1965 | const opaque_ty = Type.initPayload(&opaque_ty_payload.base); | 1969 | const opaque_ty = Type.initPayload(&opaque_ty_payload.base); |
| 1966 | const opaque_val = try Value.Tag.ty.create(&new_decl_arena.allocator, opaque_ty); | 1970 | const opaque_val = try Value.Tag.ty.create(new_decl_arena_allocator, opaque_ty); |
| 1967 | const type_name = try sema.createTypeName(block, small.name_strategy); | 1971 | const type_name = try sema.createTypeName(block, small.name_strategy); |
| 1968 | const new_decl = try mod.createAnonymousDeclNamed(block, .{ | 1972 | const new_decl = try mod.createAnonymousDeclNamed(block, .{ |
| 1969 | .ty = Type.type, | 1973 | .ty = Type.type, |
| ... | @@ -2008,10 +2012,11 @@ fn zirErrorSetDecl( | ... | @@ -2008,10 +2012,11 @@ fn zirErrorSetDecl( |
| 2008 | 2012 | ||
| 2009 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); | 2013 | var new_decl_arena = std.heap.ArenaAllocator.init(gpa); |
| 2010 | errdefer new_decl_arena.deinit(); | 2014 | errdefer new_decl_arena.deinit(); |
| 2015 | const new_decl_arena_allocator = new_decl_arena.getAllocator(); | ||
| 2011 | 2016 | ||
| 2012 | const error_set = try new_decl_arena.allocator.create(Module.ErrorSet); | 2017 | const error_set = try new_decl_arena_allocator.create(Module.ErrorSet); |
| 2013 | const error_set_ty = try Type.Tag.error_set.create(&new_decl_arena.allocator, error_set); | 2018 | const error_set_ty = try Type.Tag.error_set.create(new_decl_arena_allocator, error_set); |
| 2014 | const error_set_val = try Value.Tag.ty.create(&new_decl_arena.allocator, error_set_ty); | 2019 | const error_set_val = try Value.Tag.ty.create(new_decl_arena_allocator, error_set_ty); |
| 2015 | const type_name = try sema.createTypeName(block, name_strategy); | 2020 | const type_name = try sema.createTypeName(block, name_strategy); |
| 2016 | const new_decl = try sema.mod.createAnonymousDeclNamed(block, .{ | 2021 | const new_decl = try sema.mod.createAnonymousDeclNamed(block, .{ |
| 2017 | .ty = Type.type, | 2022 | .ty = Type.type, |
| ... | @@ -2019,9 +2024,9 @@ fn zirErrorSetDecl( | ... | @@ -2019,9 +2024,9 @@ fn zirErrorSetDecl( |
| 2019 | }, type_name); | 2024 | }, type_name); |
| 2020 | new_decl.owns_tv = true; | 2025 | new_decl.owns_tv = true; |
| 2021 | errdefer sema.mod.abortAnonDecl(new_decl); | 2026 | errdefer sema.mod.abortAnonDecl(new_decl); |
| 2022 | const names = try new_decl_arena.allocator.alloc([]const u8, fields.len); | 2027 | const names = try new_decl_arena_allocator.alloc([]const u8, fields.len); |
| 2023 | for (fields) |str_index, i| { | 2028 | for (fields) |str_index, i| { |
| 2024 | names[i] = try new_decl_arena.allocator.dupe(u8, sema.code.nullTerminatedString(str_index)); | 2029 | names[i] = try new_decl_arena_allocator.dupe(u8, sema.code.nullTerminatedString(str_index)); |
| 2025 | } | 2030 | } |
| 2026 | error_set.* = .{ | 2031 | error_set.* = .{ |
| 2027 | .owner_decl = new_decl, | 2032 | .owner_decl = new_decl, |
| ... | @@ -3935,7 +3940,7 @@ fn analyzeCall( | ... | @@ -3935,7 +3940,7 @@ fn analyzeCall( |
| 3935 | { | 3940 | { |
| 3936 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); | 3941 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); |
| 3937 | errdefer arena_allocator.deinit(); | 3942 | errdefer arena_allocator.deinit(); |
| 3938 | const arena = &arena_allocator.allocator; | 3943 | const arena = arena_allocator.getAllocator(); |
| 3939 | 3944 | ||
| 3940 | for (memoized_call_key.args) |*arg| { | 3945 | for (memoized_call_key.args) |*arg| { |
| 3941 | arg.* = try arg.*.copy(arena); | 3946 | arg.* = try arg.*.copy(arena); |
| ... | @@ -4069,6 +4074,7 @@ fn analyzeCall( | ... | @@ -4069,6 +4074,7 @@ fn analyzeCall( |
| 4069 | 4074 | ||
| 4070 | var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); | 4075 | var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); |
| 4071 | errdefer new_decl_arena.deinit(); | 4076 | errdefer new_decl_arena.deinit(); |
| 4077 | const new_decl_arena_allocator = new_decl_arena.getAllocator(); | ||
| 4072 | 4078 | ||
| 4073 | // Re-run the block that creates the function, with the comptime parameters | 4079 | // Re-run the block that creates the function, with the comptime parameters |
| 4074 | // pre-populated inside `inst_map`. This causes `param_comptime` and | 4080 | // pre-populated inside `inst_map`. This causes `param_comptime` and |
| ... | @@ -4078,13 +4084,13 @@ fn analyzeCall( | ... | @@ -4078,13 +4084,13 @@ fn analyzeCall( |
| 4078 | .mod = mod, | 4084 | .mod = mod, |
| 4079 | .gpa = gpa, | 4085 | .gpa = gpa, |
| 4080 | .arena = sema.arena, | 4086 | .arena = sema.arena, |
| 4081 | .perm_arena = &new_decl_arena.allocator, | 4087 | .perm_arena = new_decl_arena_allocator, |
| 4082 | .code = fn_zir, | 4088 | .code = fn_zir, |
| 4083 | .owner_decl = new_decl, | 4089 | .owner_decl = new_decl, |
| 4084 | .func = null, | 4090 | .func = null, |
| 4085 | .fn_ret_ty = Type.void, | 4091 | .fn_ret_ty = Type.void, |
| 4086 | .owner_func = null, | 4092 | .owner_func = null, |
| 4087 | .comptime_args = try new_decl_arena.allocator.alloc(TypedValue, uncasted_args.len), | 4093 | .comptime_args = try new_decl_arena_allocator.alloc(TypedValue, uncasted_args.len), |
| 4088 | .comptime_args_fn_inst = module_fn.zir_body_inst, | 4094 | .comptime_args_fn_inst = module_fn.zir_body_inst, |
| 4089 | .preallocated_new_func = new_module_func, | 4095 | .preallocated_new_func = new_module_func, |
| 4090 | }; | 4096 | }; |
| ... | @@ -4168,7 +4174,7 @@ fn analyzeCall( | ... | @@ -4168,7 +4174,7 @@ fn analyzeCall( |
| 4168 | else => continue, | 4174 | else => continue, |
| 4169 | } | 4175 | } |
| 4170 | const arg = child_sema.inst_map.get(inst).?; | 4176 | const arg = child_sema.inst_map.get(inst).?; |
| 4171 | const copied_arg_ty = try child_sema.typeOf(arg).copy(&new_decl_arena.allocator); | 4177 | const copied_arg_ty = try child_sema.typeOf(arg).copy(new_decl_arena_allocator); |
| 4172 | if (child_sema.resolveMaybeUndefValAllowVariables( | 4178 | if (child_sema.resolveMaybeUndefValAllowVariables( |
| 4173 | &child_block, | 4179 | &child_block, |
| 4174 | .unneeded, | 4180 | .unneeded, |
| ... | @@ -4176,7 +4182,7 @@ fn analyzeCall( | ... | @@ -4176,7 +4182,7 @@ fn analyzeCall( |
| 4176 | ) catch unreachable) |arg_val| { | 4182 | ) catch unreachable) |arg_val| { |
| 4177 | child_sema.comptime_args[arg_i] = .{ | 4183 | child_sema.comptime_args[arg_i] = .{ |
| 4178 | .ty = copied_arg_ty, | 4184 | .ty = copied_arg_ty, |
| 4179 | .val = try arg_val.copy(&new_decl_arena.allocator), | 4185 | .val = try arg_val.copy(new_decl_arena_allocator), |
| 4180 | }; | 4186 | }; |
| 4181 | } else { | 4187 | } else { |
| 4182 | child_sema.comptime_args[arg_i] = .{ | 4188 | child_sema.comptime_args[arg_i] = .{ |
| ... | @@ -4191,8 +4197,8 @@ fn analyzeCall( | ... | @@ -4191,8 +4197,8 @@ fn analyzeCall( |
| 4191 | try wip_captures.finalize(); | 4197 | try wip_captures.finalize(); |
| 4192 | 4198 | ||
| 4193 | // Populate the Decl ty/val with the function and its type. | 4199 | // Populate the Decl ty/val with the function and its type. |
| 4194 | new_decl.ty = try child_sema.typeOf(new_func_inst).copy(&new_decl_arena.allocator); | 4200 | new_decl.ty = try child_sema.typeOf(new_func_inst).copy(new_decl_arena_allocator); |
| 4195 | new_decl.val = try Value.Tag.function.create(&new_decl_arena.allocator, new_func); | 4201 | new_decl.val = try Value.Tag.function.create(new_decl_arena_allocator, new_func); |
| 4196 | new_decl.analysis = .complete; | 4202 | new_decl.analysis = .complete; |
| 4197 | 4203 | ||
| 4198 | log.debug("generic function '{s}' instantiated with type {}", .{ | 4204 | log.debug("generic function '{s}' instantiated with type {}", .{ |
| ... | @@ -6047,8 +6053,8 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError | ... | @@ -6047,8 +6053,8 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 6047 | defer arena.deinit(); | 6053 | defer arena.deinit(); |
| 6048 | 6054 | ||
| 6049 | const target = sema.mod.getTarget(); | 6055 | const target = sema.mod.getTarget(); |
| 6050 | const min_int = try operand_ty.minInt(&arena.allocator, target); | 6056 | const min_int = try operand_ty.minInt(arena.getAllocator(), target); |
| 6051 | const max_int = try operand_ty.maxInt(&arena.allocator, target); | 6057 | const max_int = try operand_ty.maxInt(arena.getAllocator(), target); |
| 6052 | if (try range_set.spans(min_int, max_int, operand_ty)) { | 6058 | if (try range_set.spans(min_int, max_int, operand_ty)) { |
| 6053 | if (special_prong == .@"else") { | 6059 | if (special_prong == .@"else") { |
| 6054 | return sema.fail( | 6060 | return sema.fail( |
| ... | @@ -12795,7 +12801,7 @@ const ComptimePtrMutationKit = struct { | ... | @@ -12795,7 +12801,7 @@ const ComptimePtrMutationKit = struct { |
| 12795 | 12801 | ||
| 12796 | fn beginArena(self: *ComptimePtrMutationKit, gpa: Allocator) Allocator { | 12802 | fn beginArena(self: *ComptimePtrMutationKit, gpa: Allocator) Allocator { |
| 12797 | self.decl_arena = self.decl_ref_mut.decl.value_arena.?.promote(gpa); | 12803 | self.decl_arena = self.decl_ref_mut.decl.value_arena.?.promote(gpa); |
| 12798 | return &self.decl_arena.allocator; | 12804 | return self.decl_arena.getAllocator(); |
| 12799 | } | 12805 | } |
| 12800 | 12806 | ||
| 12801 | fn finishArena(self: *ComptimePtrMutationKit) void { | 12807 | fn finishArena(self: *ComptimePtrMutationKit) void { |
| ... | @@ -14287,6 +14293,7 @@ fn semaStructFields( | ... | @@ -14287,6 +14293,7 @@ fn semaStructFields( |
| 14287 | 14293 | ||
| 14288 | var decl_arena = decl.value_arena.?.promote(gpa); | 14294 | var decl_arena = decl.value_arena.?.promote(gpa); |
| 14289 | defer decl.value_arena.?.* = decl_arena.state; | 14295 | defer decl.value_arena.?.* = decl_arena.state; |
| 14296 | const decl_arena_allocator = decl_arena.getAllocator(); | ||
| 14290 | 14297 | ||
| 14291 | var analysis_arena = std.heap.ArenaAllocator.init(gpa); | 14298 | var analysis_arena = std.heap.ArenaAllocator.init(gpa); |
| 14292 | defer analysis_arena.deinit(); | 14299 | defer analysis_arena.deinit(); |
| ... | @@ -14294,8 +14301,8 @@ fn semaStructFields( | ... | @@ -14294,8 +14301,8 @@ fn semaStructFields( |
| 14294 | var sema: Sema = .{ | 14301 | var sema: Sema = .{ |
| 14295 | .mod = mod, | 14302 | .mod = mod, |
| 14296 | .gpa = gpa, | 14303 | .gpa = gpa, |
| 14297 | .arena = &analysis_arena.allocator, | 14304 | .arena = analysis_arena.getAllocator(), |
| 14298 | .perm_arena = &decl_arena.allocator, | 14305 | .perm_arena = decl_arena_allocator, |
| 14299 | .code = zir, | 14306 | .code = zir, |
| 14300 | .owner_decl = decl, | 14307 | .owner_decl = decl, |
| 14301 | .func = null, | 14308 | .func = null, |
| ... | @@ -14304,7 +14311,7 @@ fn semaStructFields( | ... | @@ -14304,7 +14311,7 @@ fn semaStructFields( |
| 14304 | }; | 14311 | }; |
| 14305 | defer sema.deinit(); | 14312 | defer sema.deinit(); |
| 14306 | 14313 | ||
| 14307 | var wip_captures = try WipCaptureScope.init(gpa, &decl_arena.allocator, decl.src_scope); | 14314 | var wip_captures = try WipCaptureScope.init(gpa, decl_arena_allocator, decl.src_scope); |
| 14308 | defer wip_captures.deinit(); | 14315 | defer wip_captures.deinit(); |
| 14309 | 14316 | ||
| 14310 | var block_scope: Block = .{ | 14317 | var block_scope: Block = .{ |
| ... | @@ -14328,7 +14335,7 @@ fn semaStructFields( | ... | @@ -14328,7 +14335,7 @@ fn semaStructFields( |
| 14328 | 14335 | ||
| 14329 | try wip_captures.finalize(); | 14336 | try wip_captures.finalize(); |
| 14330 | 14337 | ||
| 14331 | try struct_obj.fields.ensureTotalCapacity(&decl_arena.allocator, fields_len); | 14338 | try struct_obj.fields.ensureTotalCapacity(decl_arena_allocator, fields_len); |
| 14332 | 14339 | ||
| 14333 | const bits_per_field = 4; | 14340 | const bits_per_field = 4; |
| 14334 | const fields_per_u32 = 32 / bits_per_field; | 14341 | const fields_per_u32 = 32 / bits_per_field; |
| ... | @@ -14359,7 +14366,7 @@ fn semaStructFields( | ... | @@ -14359,7 +14366,7 @@ fn semaStructFields( |
| 14359 | extra_index += 1; | 14366 | extra_index += 1; |
| 14360 | 14367 | ||
| 14361 | // This string needs to outlive the ZIR code. | 14368 | // This string needs to outlive the ZIR code. |
| 14362 | const field_name = try decl_arena.allocator.dupe(u8, field_name_zir); | 14369 | const field_name = try decl_arena_allocator.dupe(u8, field_name_zir); |
| 14363 | const field_ty: Type = if (field_type_ref == .none) | 14370 | const field_ty: Type = if (field_type_ref == .none) |
| 14364 | Type.initTag(.noreturn) | 14371 | Type.initTag(.noreturn) |
| 14365 | else | 14372 | else |
| ... | @@ -14371,7 +14378,7 @@ fn semaStructFields( | ... | @@ -14371,7 +14378,7 @@ fn semaStructFields( |
| 14371 | const gop = struct_obj.fields.getOrPutAssumeCapacity(field_name); | 14378 | const gop = struct_obj.fields.getOrPutAssumeCapacity(field_name); |
| 14372 | assert(!gop.found_existing); | 14379 | assert(!gop.found_existing); |
| 14373 | gop.value_ptr.* = .{ | 14380 | gop.value_ptr.* = .{ |
| 14374 | .ty = try field_ty.copy(&decl_arena.allocator), | 14381 | .ty = try field_ty.copy(decl_arena_allocator), |
| 14375 | .abi_align = Value.initTag(.abi_align_default), | 14382 | .abi_align = Value.initTag(.abi_align_default), |
| 14376 | .default_val = Value.initTag(.unreachable_value), | 14383 | .default_val = Value.initTag(.unreachable_value), |
| 14377 | .is_comptime = is_comptime, | 14384 | .is_comptime = is_comptime, |
| ... | @@ -14385,7 +14392,7 @@ fn semaStructFields( | ... | @@ -14385,7 +14392,7 @@ fn semaStructFields( |
| 14385 | // that points to this alignment expression rather than the struct. | 14392 | // that points to this alignment expression rather than the struct. |
| 14386 | // But only resolve the source location if we need to emit a compile error. | 14393 | // But only resolve the source location if we need to emit a compile error. |
| 14387 | const abi_align_val = (try sema.resolveInstConst(&block_scope, src, align_ref)).val; | 14394 | const abi_align_val = (try sema.resolveInstConst(&block_scope, src, align_ref)).val; |
| 14388 | gop.value_ptr.abi_align = try abi_align_val.copy(&decl_arena.allocator); | 14395 | gop.value_ptr.abi_align = try abi_align_val.copy(decl_arena_allocator); |
| 14389 | } | 14396 | } |
| 14390 | if (has_default) { | 14397 | if (has_default) { |
| 14391 | const default_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]); | 14398 | const default_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]); |
| ... | @@ -14396,7 +14403,7 @@ fn semaStructFields( | ... | @@ -14396,7 +14403,7 @@ fn semaStructFields( |
| 14396 | // But only resolve the source location if we need to emit a compile error. | 14403 | // But only resolve the source location if we need to emit a compile error. |
| 14397 | const default_val = (try sema.resolveMaybeUndefVal(&block_scope, src, default_inst)) orelse | 14404 | const default_val = (try sema.resolveMaybeUndefVal(&block_scope, src, default_inst)) orelse |
| 14398 | return sema.failWithNeededComptime(&block_scope, src); | 14405 | return sema.failWithNeededComptime(&block_scope, src); |
| 14399 | gop.value_ptr.default_val = try default_val.copy(&decl_arena.allocator); | 14406 | gop.value_ptr.default_val = try default_val.copy(decl_arena_allocator); |
| 14400 | } | 14407 | } |
| 14401 | } | 14408 | } |
| 14402 | } | 14409 | } |
| ... | @@ -14454,6 +14461,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { | ... | @@ -14454,6 +14461,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { |
| 14454 | 14461 | ||
| 14455 | var decl_arena = union_obj.owner_decl.value_arena.?.promote(gpa); | 14462 | var decl_arena = union_obj.owner_decl.value_arena.?.promote(gpa); |
| 14456 | defer union_obj.owner_decl.value_arena.?.* = decl_arena.state; | 14463 | defer union_obj.owner_decl.value_arena.?.* = decl_arena.state; |
| 14464 | const decl_arena_allocator = decl_arena.getAllocator(); | ||
| 14457 | 14465 | ||
| 14458 | var analysis_arena = std.heap.ArenaAllocator.init(gpa); | 14466 | var analysis_arena = std.heap.ArenaAllocator.init(gpa); |
| 14459 | defer analysis_arena.deinit(); | 14467 | defer analysis_arena.deinit(); |
| ... | @@ -14461,8 +14469,8 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { | ... | @@ -14461,8 +14469,8 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { |
| 14461 | var sema: Sema = .{ | 14469 | var sema: Sema = .{ |
| 14462 | .mod = mod, | 14470 | .mod = mod, |
| 14463 | .gpa = gpa, | 14471 | .gpa = gpa, |
| 14464 | .arena = &analysis_arena.allocator, | 14472 | .arena = analysis_arena.getAllocator(), |
| 14465 | .perm_arena = &decl_arena.allocator, | 14473 | .perm_arena = decl_arena_allocator, |
| 14466 | .code = zir, | 14474 | .code = zir, |
| 14467 | .owner_decl = decl, | 14475 | .owner_decl = decl, |
| 14468 | .func = null, | 14476 | .func = null, |
| ... | @@ -14471,7 +14479,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { | ... | @@ -14471,7 +14479,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { |
| 14471 | }; | 14479 | }; |
| 14472 | defer sema.deinit(); | 14480 | defer sema.deinit(); |
| 14473 | 14481 | ||
| 14474 | var wip_captures = try WipCaptureScope.init(gpa, &decl_arena.allocator, decl.src_scope); | 14482 | var wip_captures = try WipCaptureScope.init(gpa, decl_arena_allocator, decl.src_scope); |
| 14475 | defer wip_captures.deinit(); | 14483 | defer wip_captures.deinit(); |
| 14476 | 14484 | ||
| 14477 | var block_scope: Block = .{ | 14485 | var block_scope: Block = .{ |
| ... | @@ -14495,7 +14503,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { | ... | @@ -14495,7 +14503,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { |
| 14495 | 14503 | ||
| 14496 | try wip_captures.finalize(); | 14504 | try wip_captures.finalize(); |
| 14497 | 14505 | ||
| 14498 | try union_obj.fields.ensureTotalCapacity(&decl_arena.allocator, fields_len); | 14506 | try union_obj.fields.ensureTotalCapacity(decl_arena_allocator, fields_len); |
| 14499 | 14507 | ||
| 14500 | var int_tag_ty: Type = undefined; | 14508 | var int_tag_ty: Type = undefined; |
| 14501 | var enum_field_names: ?*Module.EnumNumbered.NameMap = null; | 14509 | var enum_field_names: ?*Module.EnumNumbered.NameMap = null; |
| ... | @@ -14571,7 +14579,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { | ... | @@ -14571,7 +14579,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { |
| 14571 | } | 14579 | } |
| 14572 | 14580 | ||
| 14573 | // This string needs to outlive the ZIR code. | 14581 | // This string needs to outlive the ZIR code. |
| 14574 | const field_name = try decl_arena.allocator.dupe(u8, field_name_zir); | 14582 | const field_name = try decl_arena_allocator.dupe(u8, field_name_zir); |
| 14575 | if (enum_field_names) |set| { | 14583 | if (enum_field_names) |set| { |
| 14576 | set.putAssumeCapacity(field_name, {}); | 14584 | set.putAssumeCapacity(field_name, {}); |
| 14577 | } | 14585 | } |
| ... | @@ -14589,7 +14597,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { | ... | @@ -14589,7 +14597,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { |
| 14589 | const gop = union_obj.fields.getOrPutAssumeCapacity(field_name); | 14597 | const gop = union_obj.fields.getOrPutAssumeCapacity(field_name); |
| 14590 | assert(!gop.found_existing); | 14598 | assert(!gop.found_existing); |
| 14591 | gop.value_ptr.* = .{ | 14599 | gop.value_ptr.* = .{ |
| 14592 | .ty = try field_ty.copy(&decl_arena.allocator), | 14600 | .ty = try field_ty.copy(decl_arena_allocator), |
| 14593 | .abi_align = Value.initTag(.abi_align_default), | 14601 | .abi_align = Value.initTag(.abi_align_default), |
| 14594 | }; | 14602 | }; |
| 14595 | 14603 | ||
| ... | @@ -14598,7 +14606,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { | ... | @@ -14598,7 +14606,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void { |
| 14598 | // that points to this alignment expression rather than the struct. | 14606 | // that points to this alignment expression rather than the struct. |
| 14599 | // But only resolve the source location if we need to emit a compile error. | 14607 | // But only resolve the source location if we need to emit a compile error. |
| 14600 | const abi_align_val = (try sema.resolveInstConst(&block_scope, src, align_ref)).val; | 14608 | const abi_align_val = (try sema.resolveInstConst(&block_scope, src, align_ref)).val; |
| 14601 | gop.value_ptr.abi_align = try abi_align_val.copy(&decl_arena.allocator); | 14609 | gop.value_ptr.abi_align = try abi_align_val.copy(decl_arena_allocator); |
| 14602 | } else { | 14610 | } else { |
| 14603 | gop.value_ptr.abi_align = Value.initTag(.abi_align_default); | 14611 | gop.value_ptr.abi_align = Value.initTag(.abi_align_default); |
| 14604 | } | 14612 | } |
| ... | @@ -14615,15 +14623,16 @@ fn generateUnionTagTypeNumbered( | ... | @@ -14615,15 +14623,16 @@ fn generateUnionTagTypeNumbered( |
| 14615 | 14623 | ||
| 14616 | var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); | 14624 | var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); |
| 14617 | errdefer new_decl_arena.deinit(); | 14625 | errdefer new_decl_arena.deinit(); |
| 14626 | const new_decl_arena_allocator = new_decl_arena.getAllocator(); | ||
| 14618 | 14627 | ||
| 14619 | const enum_obj = try new_decl_arena.allocator.create(Module.EnumNumbered); | 14628 | const enum_obj = try new_decl_arena_allocator.create(Module.EnumNumbered); |
| 14620 | const enum_ty_payload = try new_decl_arena.allocator.create(Type.Payload.EnumNumbered); | 14629 | const enum_ty_payload = try new_decl_arena_allocator.create(Type.Payload.EnumNumbered); |
| 14621 | enum_ty_payload.* = .{ | 14630 | enum_ty_payload.* = .{ |
| 14622 | .base = .{ .tag = .enum_numbered }, | 14631 | .base = .{ .tag = .enum_numbered }, |
| 14623 | .data = enum_obj, | 14632 | .data = enum_obj, |
| 14624 | }; | 14633 | }; |
| 14625 | const enum_ty = Type.initPayload(&enum_ty_payload.base); | 14634 | const enum_ty = Type.initPayload(&enum_ty_payload.base); |
| 14626 | const enum_val = try Value.Tag.ty.create(&new_decl_arena.allocator, enum_ty); | 14635 | const enum_val = try Value.Tag.ty.create(new_decl_arena_allocator, enum_ty); |
| 14627 | // TODO better type name | 14636 | // TODO better type name |
| 14628 | const new_decl = try mod.createAnonymousDecl(block, .{ | 14637 | const new_decl = try mod.createAnonymousDecl(block, .{ |
| 14629 | .ty = Type.type, | 14638 | .ty = Type.type, |
| ... | @@ -14640,8 +14649,8 @@ fn generateUnionTagTypeNumbered( | ... | @@ -14640,8 +14649,8 @@ fn generateUnionTagTypeNumbered( |
| 14640 | .node_offset = 0, | 14649 | .node_offset = 0, |
| 14641 | }; | 14650 | }; |
| 14642 | // Here we pre-allocate the maps using the decl arena. | 14651 | // Here we pre-allocate the maps using the decl arena. |
| 14643 | try enum_obj.fields.ensureTotalCapacity(&new_decl_arena.allocator, fields_len); | 14652 | try enum_obj.fields.ensureTotalCapacity(new_decl_arena_allocator, fields_len); |
| 14644 | try enum_obj.values.ensureTotalCapacityContext(&new_decl_arena.allocator, fields_len, .{ .ty = int_ty }); | 14653 | try enum_obj.values.ensureTotalCapacityContext(new_decl_arena_allocator, fields_len, .{ .ty = int_ty }); |
| 14645 | try new_decl.finalizeNewArena(&new_decl_arena); | 14654 | try new_decl.finalizeNewArena(&new_decl_arena); |
| 14646 | return enum_ty; | 14655 | return enum_ty; |
| 14647 | } | 14656 | } |
| ... | @@ -14651,15 +14660,16 @@ fn generateUnionTagTypeSimple(sema: *Sema, block: *Block, fields_len: u32) !Type | ... | @@ -14651,15 +14660,16 @@ fn generateUnionTagTypeSimple(sema: *Sema, block: *Block, fields_len: u32) !Type |
| 14651 | 14660 | ||
| 14652 | var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); | 14661 | var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa); |
| 14653 | errdefer new_decl_arena.deinit(); | 14662 | errdefer new_decl_arena.deinit(); |
| 14663 | const new_decl_arena_allocator = new_decl_arena.getAllocator(); | ||
| 14654 | 14664 | ||
| 14655 | const enum_obj = try new_decl_arena.allocator.create(Module.EnumSimple); | 14665 | const enum_obj = try new_decl_arena_allocator.create(Module.EnumSimple); |
| 14656 | const enum_ty_payload = try new_decl_arena.allocator.create(Type.Payload.EnumSimple); | 14666 | const enum_ty_payload = try new_decl_arena_allocator.create(Type.Payload.EnumSimple); |
| 14657 | enum_ty_payload.* = .{ | 14667 | enum_ty_payload.* = .{ |
| 14658 | .base = .{ .tag = .enum_simple }, | 14668 | .base = .{ .tag = .enum_simple }, |
| 14659 | .data = enum_obj, | 14669 | .data = enum_obj, |
| 14660 | }; | 14670 | }; |
| 14661 | const enum_ty = Type.initPayload(&enum_ty_payload.base); | 14671 | const enum_ty = Type.initPayload(&enum_ty_payload.base); |
| 14662 | const enum_val = try Value.Tag.ty.create(&new_decl_arena.allocator, enum_ty); | 14672 | const enum_val = try Value.Tag.ty.create(new_decl_arena_allocator, enum_ty); |
| 14663 | // TODO better type name | 14673 | // TODO better type name |
| 14664 | const new_decl = try mod.createAnonymousDecl(block, .{ | 14674 | const new_decl = try mod.createAnonymousDecl(block, .{ |
| 14665 | .ty = Type.type, | 14675 | .ty = Type.type, |
| ... | @@ -14674,7 +14684,7 @@ fn generateUnionTagTypeSimple(sema: *Sema, block: *Block, fields_len: u32) !Type | ... | @@ -14674,7 +14684,7 @@ fn generateUnionTagTypeSimple(sema: *Sema, block: *Block, fields_len: u32) !Type |
| 14674 | .node_offset = 0, | 14684 | .node_offset = 0, |
| 14675 | }; | 14685 | }; |
| 14676 | // Here we pre-allocate the maps using the decl arena. | 14686 | // Here we pre-allocate the maps using the decl arena. |
| 14677 | try enum_obj.fields.ensureTotalCapacity(&new_decl_arena.allocator, fields_len); | 14687 | try enum_obj.fields.ensureTotalCapacity(new_decl_arena_allocator, fields_len); |
| 14678 | try new_decl.finalizeNewArena(&new_decl_arena); | 14688 | try new_decl.finalizeNewArena(&new_decl_arena); |
| 14679 | return enum_ty; | 14689 | return enum_ty; |
| 14680 | } | 14690 | } |
src/codegen/c.zig+2-1| ... | @@ -390,6 +390,7 @@ pub const DeclGen = struct { | ... | @@ -390,6 +390,7 @@ pub const DeclGen = struct { |
| 390 | // Fall back to generic implementation. | 390 | // Fall back to generic implementation. |
| 391 | var arena = std.heap.ArenaAllocator.init(dg.module.gpa); | 391 | var arena = std.heap.ArenaAllocator.init(dg.module.gpa); |
| 392 | defer arena.deinit(); | 392 | defer arena.deinit(); |
| 393 | const arena_allocator = arena.getAllocator(); | ||
| 393 | 394 | ||
| 394 | try writer.writeAll("{"); | 395 | try writer.writeAll("{"); |
| 395 | var index: usize = 0; | 396 | var index: usize = 0; |
| ... | @@ -397,7 +398,7 @@ pub const DeclGen = struct { | ... | @@ -397,7 +398,7 @@ pub const DeclGen = struct { |
| 397 | const elem_ty = ty.elemType(); | 398 | const elem_ty = ty.elemType(); |
| 398 | while (index < len) : (index += 1) { | 399 | while (index < len) : (index += 1) { |
| 399 | if (index != 0) try writer.writeAll(","); | 400 | if (index != 0) try writer.writeAll(","); |
| 400 | const elem_val = try val.elemValue(&arena.allocator, index); | 401 | const elem_val = try val.elemValue(arena_allocator, index); |
| 401 | try dg.renderValue(writer, elem_ty, elem_val); | 402 | try dg.renderValue(writer, elem_ty, elem_val); |
| 402 | } | 403 | } |
| 403 | if (ty.sentinel()) |sentinel_val| { | 404 | if (ty.sentinel()) |sentinel_val| { |
src/codegen/llvm.zig+5-5| ... | @@ -331,7 +331,7 @@ pub const Object = struct { | ... | @@ -331,7 +331,7 @@ pub const Object = struct { |
| 331 | 331 | ||
| 332 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 332 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 333 | defer arena_allocator.deinit(); | 333 | defer arena_allocator.deinit(); |
| 334 | const arena = &arena_allocator.allocator; | 334 | const arena = arena_allocator.getAllocator(); |
| 335 | 335 | ||
| 336 | const mod = comp.bin_file.options.module.?; | 336 | const mod = comp.bin_file.options.module.?; |
| 337 | const cache_dir = mod.zig_cache_artifact_directory; | 337 | const cache_dir = mod.zig_cache_artifact_directory; |
| ... | @@ -779,7 +779,7 @@ pub const DeclGen = struct { | ... | @@ -779,7 +779,7 @@ pub const DeclGen = struct { |
| 779 | 779 | ||
| 780 | // The Type memory is ephemeral; since we want to store a longer-lived | 780 | // The Type memory is ephemeral; since we want to store a longer-lived |
| 781 | // reference, we need to copy it here. | 781 | // reference, we need to copy it here. |
| 782 | gop.key_ptr.* = try t.copy(&dg.object.type_map_arena.allocator); | 782 | gop.key_ptr.* = try t.copy(dg.object.type_map_arena.getAllocator()); |
| 783 | 783 | ||
| 784 | const opaque_obj = t.castTag(.@"opaque").?.data; | 784 | const opaque_obj = t.castTag(.@"opaque").?.data; |
| 785 | const name = try opaque_obj.getFullyQualifiedName(gpa); | 785 | const name = try opaque_obj.getFullyQualifiedName(gpa); |
| ... | @@ -837,7 +837,7 @@ pub const DeclGen = struct { | ... | @@ -837,7 +837,7 @@ pub const DeclGen = struct { |
| 837 | 837 | ||
| 838 | // The Type memory is ephemeral; since we want to store a longer-lived | 838 | // The Type memory is ephemeral; since we want to store a longer-lived |
| 839 | // reference, we need to copy it here. | 839 | // reference, we need to copy it here. |
| 840 | gop.key_ptr.* = try t.copy(&dg.object.type_map_arena.allocator); | 840 | gop.key_ptr.* = try t.copy(dg.object.type_map_arena.getAllocator()); |
| 841 | 841 | ||
| 842 | const struct_obj = t.castTag(.@"struct").?.data; | 842 | const struct_obj = t.castTag(.@"struct").?.data; |
| 843 | 843 | ||
| ... | @@ -871,7 +871,7 @@ pub const DeclGen = struct { | ... | @@ -871,7 +871,7 @@ pub const DeclGen = struct { |
| 871 | 871 | ||
| 872 | // The Type memory is ephemeral; since we want to store a longer-lived | 872 | // The Type memory is ephemeral; since we want to store a longer-lived |
| 873 | // reference, we need to copy it here. | 873 | // reference, we need to copy it here. |
| 874 | gop.key_ptr.* = try t.copy(&dg.object.type_map_arena.allocator); | 874 | gop.key_ptr.* = try t.copy(dg.object.type_map_arena.getAllocator()); |
| 875 | 875 | ||
| 876 | const union_obj = t.cast(Type.Payload.Union).?.data; | 876 | const union_obj = t.cast(Type.Payload.Union).?.data; |
| 877 | const target = dg.module.getTarget(); | 877 | const target = dg.module.getTarget(); |
| ... | @@ -2485,7 +2485,7 @@ pub const FuncGen = struct { | ... | @@ -2485,7 +2485,7 @@ pub const FuncGen = struct { |
| 2485 | 2485 | ||
| 2486 | var arena_allocator = std.heap.ArenaAllocator.init(self.gpa); | 2486 | var arena_allocator = std.heap.ArenaAllocator.init(self.gpa); |
| 2487 | defer arena_allocator.deinit(); | 2487 | defer arena_allocator.deinit(); |
| 2488 | const arena = &arena_allocator.allocator; | 2488 | const arena = arena_allocator.getAllocator(); |
| 2489 | 2489 | ||
| 2490 | const llvm_params_len = args.len; | 2490 | const llvm_params_len = args.len; |
| 2491 | const llvm_param_types = try arena.alloc(*const llvm.Type, llvm_params_len); | 2491 | const llvm_param_types = try arena.alloc(*const llvm.Type, llvm_params_len); |
src/crash_report.zig+1-1| ... | @@ -85,7 +85,7 @@ fn dumpStatusReport() !void { | ... | @@ -85,7 +85,7 @@ fn dumpStatusReport() !void { |
| 85 | const anal = zir_state orelse return; | 85 | const anal = zir_state orelse return; |
| 86 | // Note: We have the panic mutex here, so we can safely use the global crash heap. | 86 | // Note: We have the panic mutex here, so we can safely use the global crash heap. |
| 87 | var fba = std.heap.FixedBufferAllocator.init(&crash_heap); | 87 | var fba = std.heap.FixedBufferAllocator.init(&crash_heap); |
| 88 | const allocator = &fba.allocator; | 88 | const allocator = fba.getAllocator(); |
| 89 | 89 | ||
| 90 | const stderr = io.getStdErr().writer(); | 90 | const stderr = io.getStdErr().writer(); |
| 91 | const block: *Sema.Block = anal.block; | 91 | const block: *Sema.Block = anal.block; |
src/glibc.zig+3-3| ... | @@ -65,7 +65,7 @@ pub fn loadMetaData(gpa: Allocator, zig_lib_dir: std.fs.Dir) LoadMetaDataError!* | ... | @@ -65,7 +65,7 @@ pub fn loadMetaData(gpa: Allocator, zig_lib_dir: std.fs.Dir) LoadMetaDataError!* |
| 65 | 65 | ||
| 66 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); | 66 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); |
| 67 | errdefer arena_allocator.deinit(); | 67 | errdefer arena_allocator.deinit(); |
| 68 | const arena = &arena_allocator.allocator; | 68 | const arena = arena_allocator.getAllocator(); |
| 69 | 69 | ||
| 70 | var all_versions = std.ArrayListUnmanaged(std.builtin.Version){}; | 70 | var all_versions = std.ArrayListUnmanaged(std.builtin.Version){}; |
| 71 | var all_functions = std.ArrayListUnmanaged(Fn){}; | 71 | var all_functions = std.ArrayListUnmanaged(Fn){}; |
| ... | @@ -256,7 +256,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void { | ... | @@ -256,7 +256,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void { |
| 256 | const gpa = comp.gpa; | 256 | const gpa = comp.gpa; |
| 257 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); | 257 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); |
| 258 | defer arena_allocator.deinit(); | 258 | defer arena_allocator.deinit(); |
| 259 | const arena = &arena_allocator.allocator; | 259 | const arena = arena_allocator.getAllocator(); |
| 260 | 260 | ||
| 261 | switch (crt_file) { | 261 | switch (crt_file) { |
| 262 | .crti_o => { | 262 | .crti_o => { |
| ... | @@ -711,7 +711,7 @@ pub fn buildSharedObjects(comp: *Compilation) !void { | ... | @@ -711,7 +711,7 @@ pub fn buildSharedObjects(comp: *Compilation) !void { |
| 711 | 711 | ||
| 712 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 712 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 713 | defer arena_allocator.deinit(); | 713 | defer arena_allocator.deinit(); |
| 714 | const arena = &arena_allocator.allocator; | 714 | const arena = arena_allocator.getAllocator(); |
| 715 | 715 | ||
| 716 | const target = comp.getTarget(); | 716 | const target = comp.getTarget(); |
| 717 | const target_version = target.os.version_range.linux.glibc; | 717 | const target_version = target.os.version_range.linux.glibc; |
src/libcxx.zig+2-2| ... | @@ -89,7 +89,7 @@ pub fn buildLibCXX(comp: *Compilation) !void { | ... | @@ -89,7 +89,7 @@ pub fn buildLibCXX(comp: *Compilation) !void { |
| 89 | 89 | ||
| 90 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 90 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 91 | defer arena_allocator.deinit(); | 91 | defer arena_allocator.deinit(); |
| 92 | const arena = &arena_allocator.allocator; | 92 | const arena = arena_allocator.getAllocator(); |
| 93 | 93 | ||
| 94 | const root_name = "c++"; | 94 | const root_name = "c++"; |
| 95 | const output_mode = .Lib; | 95 | const output_mode = .Lib; |
| ... | @@ -236,7 +236,7 @@ pub fn buildLibCXXABI(comp: *Compilation) !void { | ... | @@ -236,7 +236,7 @@ pub fn buildLibCXXABI(comp: *Compilation) !void { |
| 236 | 236 | ||
| 237 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 237 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 238 | defer arena_allocator.deinit(); | 238 | defer arena_allocator.deinit(); |
| 239 | const arena = &arena_allocator.allocator; | 239 | const arena = arena_allocator.getAllocator(); |
| 240 | 240 | ||
| 241 | const root_name = "c++abi"; | 241 | const root_name = "c++abi"; |
| 242 | const output_mode = .Lib; | 242 | const output_mode = .Lib; |
src/libtsan.zig+1-1| ... | @@ -15,7 +15,7 @@ pub fn buildTsan(comp: *Compilation) !void { | ... | @@ -15,7 +15,7 @@ pub fn buildTsan(comp: *Compilation) !void { |
| 15 | 15 | ||
| 16 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 16 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 17 | defer arena_allocator.deinit(); | 17 | defer arena_allocator.deinit(); |
| 18 | const arena = &arena_allocator.allocator; | 18 | const arena = arena_allocator.getAllocator(); |
| 19 | 19 | ||
| 20 | const root_name = "tsan"; | 20 | const root_name = "tsan"; |
| 21 | const output_mode = .Lib; | 21 | const output_mode = .Lib; |
src/libunwind.zig+1-1| ... | @@ -17,7 +17,7 @@ pub fn buildStaticLib(comp: *Compilation) !void { | ... | @@ -17,7 +17,7 @@ pub fn buildStaticLib(comp: *Compilation) !void { |
| 17 | 17 | ||
| 18 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 18 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 19 | defer arena_allocator.deinit(); | 19 | defer arena_allocator.deinit(); |
| 20 | const arena = &arena_allocator.allocator; | 20 | const arena = arena_allocator.getAllocator(); |
| 21 | 21 | ||
| 22 | const root_name = "unwind"; | 22 | const root_name = "unwind"; |
| 23 | const output_mode = .Lib; | 23 | const output_mode = .Lib; |
src/link.zig+1-1| ... | @@ -628,7 +628,7 @@ pub const File = struct { | ... | @@ -628,7 +628,7 @@ pub const File = struct { |
| 628 | 628 | ||
| 629 | var arena_allocator = std.heap.ArenaAllocator.init(base.allocator); | 629 | var arena_allocator = std.heap.ArenaAllocator.init(base.allocator); |
| 630 | defer arena_allocator.deinit(); | 630 | defer arena_allocator.deinit(); |
| 631 | const arena = &arena_allocator.allocator; | 631 | const arena = arena_allocator.getAllocator(); |
| 632 | 632 | ||
| 633 | const directory = base.options.emit.?.directory; // Just an alias to make it shorter to type. | 633 | const directory = base.options.emit.?.directory; // Just an alias to make it shorter to type. |
| 634 | 634 |
src/link/C.zig+2-2| ... | @@ -128,7 +128,7 @@ pub fn updateFunc(self: *C, module: *Module, func: *Module.Fn, air: Air, livenes | ... | @@ -128,7 +128,7 @@ pub fn updateFunc(self: *C, module: *Module, func: *Module.Fn, air: Air, livenes |
| 128 | .decl = decl, | 128 | .decl = decl, |
| 129 | .fwd_decl = fwd_decl.toManaged(module.gpa), | 129 | .fwd_decl = fwd_decl.toManaged(module.gpa), |
| 130 | .typedefs = typedefs.promote(module.gpa), | 130 | .typedefs = typedefs.promote(module.gpa), |
| 131 | .typedefs_arena = &self.arena.allocator, | 131 | .typedefs_arena = self.arena.getAllocator(), |
| 132 | }, | 132 | }, |
| 133 | .code = code.toManaged(module.gpa), | 133 | .code = code.toManaged(module.gpa), |
| 134 | .indent_writer = undefined, // set later so we can get a pointer to object.code | 134 | .indent_writer = undefined, // set later so we can get a pointer to object.code |
| ... | @@ -193,7 +193,7 @@ pub fn updateDecl(self: *C, module: *Module, decl: *Module.Decl) !void { | ... | @@ -193,7 +193,7 @@ pub fn updateDecl(self: *C, module: *Module, decl: *Module.Decl) !void { |
| 193 | .decl = decl, | 193 | .decl = decl, |
| 194 | .fwd_decl = fwd_decl.toManaged(module.gpa), | 194 | .fwd_decl = fwd_decl.toManaged(module.gpa), |
| 195 | .typedefs = typedefs.promote(module.gpa), | 195 | .typedefs = typedefs.promote(module.gpa), |
| 196 | .typedefs_arena = &self.arena.allocator, | 196 | .typedefs_arena = self.arena.getAllocator(), |
| 197 | }, | 197 | }, |
| 198 | .code = code.toManaged(module.gpa), | 198 | .code = code.toManaged(module.gpa), |
| 199 | .indent_writer = undefined, // set later so we can get a pointer to object.code | 199 | .indent_writer = undefined, // set later so we can get a pointer to object.code |
src/link/Coff.zig+1-1| ... | @@ -877,7 +877,7 @@ fn linkWithLLD(self: *Coff, comp: *Compilation) !void { | ... | @@ -877,7 +877,7 @@ fn linkWithLLD(self: *Coff, comp: *Compilation) !void { |
| 877 | 877 | ||
| 878 | var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator); | 878 | var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator); |
| 879 | defer arena_allocator.deinit(); | 879 | defer arena_allocator.deinit(); |
| 880 | const arena = &arena_allocator.allocator; | 880 | const arena = arena_allocator.getAllocator(); |
| 881 | 881 | ||
| 882 | const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type. | 882 | const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type. |
| 883 | 883 |
src/link/Elf.zig+1-1| ... | @@ -1243,7 +1243,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void { | ... | @@ -1243,7 +1243,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void { |
| 1243 | 1243 | ||
| 1244 | var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator); | 1244 | var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator); |
| 1245 | defer arena_allocator.deinit(); | 1245 | defer arena_allocator.deinit(); |
| 1246 | const arena = &arena_allocator.allocator; | 1246 | const arena = arena_allocator.getAllocator(); |
| 1247 | 1247 | ||
| 1248 | const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type. | 1248 | const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type. |
| 1249 | 1249 |
src/link/MachO.zig+2-2| ... | @@ -412,7 +412,7 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void { | ... | @@ -412,7 +412,7 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void { |
| 412 | 412 | ||
| 413 | var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator); | 413 | var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator); |
| 414 | defer arena_allocator.deinit(); | 414 | defer arena_allocator.deinit(); |
| 415 | const arena = &arena_allocator.allocator; | 415 | const arena = arena_allocator.getAllocator(); |
| 416 | 416 | ||
| 417 | const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type. | 417 | const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type. |
| 418 | 418 | ||
| ... | @@ -5379,7 +5379,7 @@ fn snapshotState(self: *MachO) !void { | ... | @@ -5379,7 +5379,7 @@ fn snapshotState(self: *MachO) !void { |
| 5379 | 5379 | ||
| 5380 | var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator); | 5380 | var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator); |
| 5381 | defer arena_allocator.deinit(); | 5381 | defer arena_allocator.deinit(); |
| 5382 | const arena = &arena_allocator.allocator; | 5382 | const arena = arena_allocator.getAllocator(); |
| 5383 | 5383 | ||
| 5384 | const out_file = try emit.directory.handle.createFile("snapshots.json", .{ | 5384 | const out_file = try emit.directory.handle.createFile("snapshots.json", .{ |
| 5385 | .truncate = self.cold_start, | 5385 | .truncate = self.cold_start, |
src/link/Plan9.zig+1-1| ... | @@ -168,7 +168,7 @@ fn putFn(self: *Plan9, decl: *Module.Decl, out: FnDeclOutput) !void { | ... | @@ -168,7 +168,7 @@ fn putFn(self: *Plan9, decl: *Module.Decl, out: FnDeclOutput) !void { |
| 168 | try fn_map_res.value_ptr.functions.put(gpa, decl, out); | 168 | try fn_map_res.value_ptr.functions.put(gpa, decl, out); |
| 169 | } else { | 169 | } else { |
| 170 | const file = decl.getFileScope(); | 170 | const file = decl.getFileScope(); |
| 171 | const arena = &self.path_arena.allocator; | 171 | const arena = self.path_arena.getAllocator(); |
| 172 | // each file gets a symbol | 172 | // each file gets a symbol |
| 173 | fn_map_res.value_ptr.* = .{ | 173 | fn_map_res.value_ptr.* = .{ |
| 174 | .sym_index = blk: { | 174 | .sym_index = blk: { |
src/link/Wasm.zig+1-1| ... | @@ -950,7 +950,7 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void { | ... | @@ -950,7 +950,7 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void { |
| 950 | 950 | ||
| 951 | var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator); | 951 | var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator); |
| 952 | defer arena_allocator.deinit(); | 952 | defer arena_allocator.deinit(); |
| 953 | const arena = &arena_allocator.allocator; | 953 | const arena = arena_allocator.getAllocator(); |
| 954 | 954 | ||
| 955 | const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type. | 955 | const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type. |
| 956 | 956 |
src/link/tapi.zig+3-3| ... | @@ -120,7 +120,7 @@ pub const LibStub = struct { | ... | @@ -120,7 +120,7 @@ pub const LibStub = struct { |
| 120 | err: { | 120 | err: { |
| 121 | log.debug("trying to parse as []TbdV4", .{}); | 121 | log.debug("trying to parse as []TbdV4", .{}); |
| 122 | const inner = lib_stub.yaml.parse([]TbdV4) catch break :err; | 122 | const inner = lib_stub.yaml.parse([]TbdV4) catch break :err; |
| 123 | var out = try lib_stub.yaml.arena.allocator.alloc(Tbd, inner.len); | 123 | var out = try lib_stub.yaml.arena.getAllocator().alloc(Tbd, inner.len); |
| 124 | for (inner) |doc, i| { | 124 | for (inner) |doc, i| { |
| 125 | out[i] = .{ .v4 = doc }; | 125 | out[i] = .{ .v4 = doc }; |
| 126 | } | 126 | } |
| ... | @@ -130,7 +130,7 @@ pub const LibStub = struct { | ... | @@ -130,7 +130,7 @@ pub const LibStub = struct { |
| 130 | err: { | 130 | err: { |
| 131 | log.debug("trying to parse as TbdV4", .{}); | 131 | log.debug("trying to parse as TbdV4", .{}); |
| 132 | const inner = lib_stub.yaml.parse(TbdV4) catch break :err; | 132 | const inner = lib_stub.yaml.parse(TbdV4) catch break :err; |
| 133 | var out = try lib_stub.yaml.arena.allocator.alloc(Tbd, 1); | 133 | var out = try lib_stub.yaml.arena.getAllocator().alloc(Tbd, 1); |
| 134 | out[0] = .{ .v4 = inner }; | 134 | out[0] = .{ .v4 = inner }; |
| 135 | break :blk out; | 135 | break :blk out; |
| 136 | } | 136 | } |
| ... | @@ -148,7 +148,7 @@ pub const LibStub = struct { | ... | @@ -148,7 +148,7 @@ pub const LibStub = struct { |
| 148 | err: { | 148 | err: { |
| 149 | log.debug("trying to parse as TbdV3", .{}); | 149 | log.debug("trying to parse as TbdV3", .{}); |
| 150 | const inner = lib_stub.yaml.parse(TbdV3) catch break :err; | 150 | const inner = lib_stub.yaml.parse(TbdV3) catch break :err; |
| 151 | var out = try lib_stub.yaml.arena.allocator.alloc(Tbd, 1); | 151 | var out = try lib_stub.yaml.arena.getAllocator().alloc(Tbd, 1); |
| 152 | out[0] = .{ .v3 = inner }; | 152 | out[0] = .{ .v3 = inner }; |
| 153 | break :blk out; | 153 | break :blk out; |
| 154 | } | 154 | } |
src/link/tapi/yaml.zig+7-6| ... | @@ -248,15 +248,16 @@ pub const Yaml = struct { | ... | @@ -248,15 +248,16 @@ pub const Yaml = struct { |
| 248 | 248 | ||
| 249 | pub fn load(allocator: Allocator, source: []const u8) !Yaml { | 249 | pub fn load(allocator: Allocator, source: []const u8) !Yaml { |
| 250 | var arena = ArenaAllocator.init(allocator); | 250 | var arena = ArenaAllocator.init(allocator); |
| 251 | const arena_allocator = arena.getAllocator(); | ||
| 251 | 252 | ||
| 252 | var tree = Tree.init(&arena.allocator); | 253 | var tree = Tree.init(arena_allocator); |
| 253 | try tree.parse(source); | 254 | try tree.parse(source); |
| 254 | 255 | ||
| 255 | var docs = std.ArrayList(Value).init(&arena.allocator); | 256 | var docs = std.ArrayList(Value).init(arena_allocator); |
| 256 | try docs.ensureUnusedCapacity(tree.docs.items.len); | 257 | try docs.ensureUnusedCapacity(tree.docs.items.len); |
| 257 | 258 | ||
| 258 | for (tree.docs.items) |node| { | 259 | for (tree.docs.items) |node| { |
| 259 | const value = try Value.fromNode(&arena.allocator, &tree, node, null); | 260 | const value = try Value.fromNode(arena_allocator, &tree, node, null); |
| 260 | docs.appendAssumeCapacity(value); | 261 | docs.appendAssumeCapacity(value); |
| 261 | } | 262 | } |
| 262 | 263 | ||
| ... | @@ -299,7 +300,7 @@ pub const Yaml = struct { | ... | @@ -299,7 +300,7 @@ pub const Yaml = struct { |
| 299 | .Pointer => |info| { | 300 | .Pointer => |info| { |
| 300 | switch (info.size) { | 301 | switch (info.size) { |
| 301 | .Slice => { | 302 | .Slice => { |
| 302 | var parsed = try self.arena.allocator.alloc(info.child, self.docs.items.len); | 303 | var parsed = try self.arena.getAllocator().alloc(info.child, self.docs.items.len); |
| 303 | for (self.docs.items) |doc, i| { | 304 | for (self.docs.items) |doc, i| { |
| 304 | parsed[i] = try self.parseValue(info.child, doc); | 305 | parsed[i] = try self.parseValue(info.child, doc); |
| 305 | } | 306 | } |
| ... | @@ -361,7 +362,7 @@ pub const Yaml = struct { | ... | @@ -361,7 +362,7 @@ pub const Yaml = struct { |
| 361 | 362 | ||
| 362 | inline for (struct_info.fields) |field| { | 363 | inline for (struct_info.fields) |field| { |
| 363 | const value: ?Value = map.get(field.name) orelse blk: { | 364 | const value: ?Value = map.get(field.name) orelse blk: { |
| 364 | const field_name = try mem.replaceOwned(u8, &self.arena.allocator, field.name, "_", "-"); | 365 | const field_name = try mem.replaceOwned(u8, self.arena.getAllocator(), field.name, "_", "-"); |
| 365 | break :blk map.get(field_name); | 366 | break :blk map.get(field_name); |
| 366 | }; | 367 | }; |
| 367 | 368 | ||
| ... | @@ -382,7 +383,7 @@ pub const Yaml = struct { | ... | @@ -382,7 +383,7 @@ pub const Yaml = struct { |
| 382 | 383 | ||
| 383 | fn parsePointer(self: *Yaml, comptime T: type, value: Value) Error!T { | 384 | fn parsePointer(self: *Yaml, comptime T: type, value: Value) Error!T { |
| 384 | const ptr_info = @typeInfo(T).Pointer; | 385 | const ptr_info = @typeInfo(T).Pointer; |
| 385 | const arena = &self.arena.allocator; | 386 | const arena = self.arena.getAllocator(); |
| 386 | 387 | ||
| 387 | switch (ptr_info.size) { | 388 | switch (ptr_info.size) { |
| 388 | .Slice => { | 389 | .Slice => { |
src/main.zig+4-4| ... | @@ -139,7 +139,7 @@ pub fn main() anyerror!void { | ... | @@ -139,7 +139,7 @@ pub fn main() anyerror!void { |
| 139 | const gpa = gpa: { | 139 | const gpa = gpa: { |
| 140 | if (!builtin.link_libc) { | 140 | if (!builtin.link_libc) { |
| 141 | gpa_need_deinit = true; | 141 | gpa_need_deinit = true; |
| 142 | break :gpa &general_purpose_allocator.allocator; | 142 | break :gpa general_purpose_allocator.getAllocator(); |
| 143 | } | 143 | } |
| 144 | // We would prefer to use raw libc allocator here, but cannot | 144 | // We would prefer to use raw libc allocator here, but cannot |
| 145 | // use it if it won't support the alignment we need. | 145 | // use it if it won't support the alignment we need. |
| ... | @@ -153,7 +153,7 @@ pub fn main() anyerror!void { | ... | @@ -153,7 +153,7 @@ pub fn main() anyerror!void { |
| 153 | }; | 153 | }; |
| 154 | var arena_instance = std.heap.ArenaAllocator.init(gpa); | 154 | var arena_instance = std.heap.ArenaAllocator.init(gpa); |
| 155 | defer arena_instance.deinit(); | 155 | defer arena_instance.deinit(); |
| 156 | const arena = &arena_instance.allocator; | 156 | const arena = arena_instance.getAllocator(); |
| 157 | 157 | ||
| 158 | const args = try process.argsAlloc(arena); | 158 | const args = try process.argsAlloc(arena); |
| 159 | 159 | ||
| ... | @@ -3619,7 +3619,7 @@ pub fn cmdFmt(gpa: Allocator, arena: Allocator, args: []const []const u8) !void | ... | @@ -3619,7 +3619,7 @@ pub fn cmdFmt(gpa: Allocator, arena: Allocator, args: []const []const u8) !void |
| 3619 | var errors = std.ArrayList(Compilation.AllErrors.Message).init(gpa); | 3619 | var errors = std.ArrayList(Compilation.AllErrors.Message).init(gpa); |
| 3620 | defer errors.deinit(); | 3620 | defer errors.deinit(); |
| 3621 | 3621 | ||
| 3622 | try Compilation.AllErrors.addZir(&arena_instance.allocator, &errors, &file); | 3622 | try Compilation.AllErrors.addZir(arena_instance.getAllocator(), &errors, &file); |
| 3623 | const ttyconf: std.debug.TTY.Config = switch (color) { | 3623 | const ttyconf: std.debug.TTY.Config = switch (color) { |
| 3624 | .auto => std.debug.detectTTYConfig(), | 3624 | .auto => std.debug.detectTTYConfig(), |
| 3625 | .on => .escape_codes, | 3625 | .on => .escape_codes, |
| ... | @@ -3818,7 +3818,7 @@ fn fmtPathFile( | ... | @@ -3818,7 +3818,7 @@ fn fmtPathFile( |
| 3818 | var errors = std.ArrayList(Compilation.AllErrors.Message).init(fmt.gpa); | 3818 | var errors = std.ArrayList(Compilation.AllErrors.Message).init(fmt.gpa); |
| 3819 | defer errors.deinit(); | 3819 | defer errors.deinit(); |
| 3820 | 3820 | ||
| 3821 | try Compilation.AllErrors.addZir(&arena_instance.allocator, &errors, &file); | 3821 | try Compilation.AllErrors.addZir(arena_instance.getAllocator(), &errors, &file); |
| 3822 | const ttyconf: std.debug.TTY.Config = switch (fmt.color) { | 3822 | const ttyconf: std.debug.TTY.Config = switch (fmt.color) { |
| 3823 | .auto => std.debug.detectTTYConfig(), | 3823 | .auto => std.debug.detectTTYConfig(), |
| 3824 | .on => .escape_codes, | 3824 | .on => .escape_codes, |
src/mingw.zig+2-2| ... | @@ -25,7 +25,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void { | ... | @@ -25,7 +25,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void { |
| 25 | } | 25 | } |
| 26 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 26 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 27 | defer arena_allocator.deinit(); | 27 | defer arena_allocator.deinit(); |
| 28 | const arena = &arena_allocator.allocator; | 28 | const arena = arena_allocator.getAllocator(); |
| 29 | 29 | ||
| 30 | switch (crt_file) { | 30 | switch (crt_file) { |
| 31 | .crt2_o => { | 31 | .crt2_o => { |
| ... | @@ -281,7 +281,7 @@ fn add_cc_args( | ... | @@ -281,7 +281,7 @@ fn add_cc_args( |
| 281 | pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void { | 281 | pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void { |
| 282 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); | 282 | var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); |
| 283 | defer arena_allocator.deinit(); | 283 | defer arena_allocator.deinit(); |
| 284 | const arena = &arena_allocator.allocator; | 284 | const arena = arena_allocator.getAllocator(); |
| 285 | 285 | ||
| 286 | const def_file_path = findDef(comp, arena, lib_name) catch |err| switch (err) { | 286 | const def_file_path = findDef(comp, arena, lib_name) catch |err| switch (err) { |
| 287 | error.FileNotFound => { | 287 | error.FileNotFound => { |
src/musl.zig+1-1| ... | @@ -25,7 +25,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void { | ... | @@ -25,7 +25,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void { |
| 25 | const gpa = comp.gpa; | 25 | const gpa = comp.gpa; |
| 26 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); | 26 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); |
| 27 | defer arena_allocator.deinit(); | 27 | defer arena_allocator.deinit(); |
| 28 | const arena = &arena_allocator.allocator; | 28 | const arena = arena_allocator.getAllocator(); |
| 29 | 29 | ||
| 30 | switch (crt_file) { | 30 | switch (crt_file) { |
| 31 | .crti_o => { | 31 | .crti_o => { |
src/print_air.zig+1-1| ... | @@ -47,7 +47,7 @@ pub fn dump(gpa: Allocator, air: Air, zir: Zir, liveness: Liveness) void { | ... | @@ -47,7 +47,7 @@ pub fn dump(gpa: Allocator, air: Air, zir: Zir, liveness: Liveness) void { |
| 47 | 47 | ||
| 48 | var writer: Writer = .{ | 48 | var writer: Writer = .{ |
| 49 | .gpa = gpa, | 49 | .gpa = gpa, |
| 50 | .arena = &arena.allocator, | 50 | .arena = arena.getAllocator(), |
| 51 | .air = air, | 51 | .air = air, |
| 52 | .zir = zir, | 52 | .zir = zir, |
| 53 | .liveness = liveness, | 53 | .liveness = liveness, |
src/print_zir.zig+3-3| ... | @@ -19,7 +19,7 @@ pub fn renderAsTextToFile( | ... | @@ -19,7 +19,7 @@ pub fn renderAsTextToFile( |
| 19 | 19 | ||
| 20 | var writer: Writer = .{ | 20 | var writer: Writer = .{ |
| 21 | .gpa = gpa, | 21 | .gpa = gpa, |
| 22 | .arena = &arena.allocator, | 22 | .arena = arena.getAllocator(), |
| 23 | .file = scope_file, | 23 | .file = scope_file, |
| 24 | .code = scope_file.zir, | 24 | .code = scope_file.zir, |
| 25 | .indent = 0, | 25 | .indent = 0, |
| ... | @@ -74,7 +74,7 @@ pub fn renderInstructionContext( | ... | @@ -74,7 +74,7 @@ pub fn renderInstructionContext( |
| 74 | 74 | ||
| 75 | var writer: Writer = .{ | 75 | var writer: Writer = .{ |
| 76 | .gpa = gpa, | 76 | .gpa = gpa, |
| 77 | .arena = &arena.allocator, | 77 | .arena = arena.getAllocator(), |
| 78 | .file = scope_file, | 78 | .file = scope_file, |
| 79 | .code = scope_file.zir, | 79 | .code = scope_file.zir, |
| 80 | .indent = if (indent < 2) 2 else indent, | 80 | .indent = if (indent < 2) 2 else indent, |
| ... | @@ -106,7 +106,7 @@ pub fn renderSingleInstruction( | ... | @@ -106,7 +106,7 @@ pub fn renderSingleInstruction( |
| 106 | 106 | ||
| 107 | var writer: Writer = .{ | 107 | var writer: Writer = .{ |
| 108 | .gpa = gpa, | 108 | .gpa = gpa, |
| 109 | .arena = &arena.allocator, | 109 | .arena = arena.getAllocator(), |
| 110 | .file = scope_file, | 110 | .file = scope_file, |
| 111 | .code = scope_file.zir, | 111 | .code = scope_file.zir, |
| 112 | .indent = indent, | 112 | .indent = indent, |
src/stage1.zig+1-1| ... | @@ -38,7 +38,7 @@ pub fn main(argc: c_int, argv: [*][*:0]u8) callconv(.C) c_int { | ... | @@ -38,7 +38,7 @@ pub fn main(argc: c_int, argv: [*][*:0]u8) callconv(.C) c_int { |
| 38 | const gpa = std.heap.c_allocator; | 38 | const gpa = std.heap.c_allocator; |
| 39 | var arena_instance = std.heap.ArenaAllocator.init(gpa); | 39 | var arena_instance = std.heap.ArenaAllocator.init(gpa); |
| 40 | defer arena_instance.deinit(); | 40 | defer arena_instance.deinit(); |
| 41 | const arena = &arena_instance.allocator; | 41 | const arena = arena_instance.getAllocator(); |
| 42 | 42 | ||
| 43 | const args = arena.alloc([]const u8, @intCast(usize, argc)) catch fatal("{s}", .{"OutOfMemory"}); | 43 | const args = arena.alloc([]const u8, @intCast(usize, argc)) catch fatal("{s}", .{"OutOfMemory"}); |
| 44 | for (args) |*arg, i| { | 44 | for (args) |*arg, i| { |
src/test.zig+1-1| ... | @@ -692,7 +692,7 @@ pub const TestContext = struct { | ... | @@ -692,7 +692,7 @@ pub const TestContext = struct { |
| 692 | 692 | ||
| 693 | var arena_allocator = std.heap.ArenaAllocator.init(allocator); | 693 | var arena_allocator = std.heap.ArenaAllocator.init(allocator); |
| 694 | defer arena_allocator.deinit(); | 694 | defer arena_allocator.deinit(); |
| 695 | const arena = &arena_allocator.allocator; | 695 | const arena = arena_allocator.getAllocator(); |
| 696 | 696 | ||
| 697 | var tmp = std.testing.tmpDir(.{}); | 697 | var tmp = std.testing.tmpDir(.{}); |
| 698 | defer tmp.cleanup(); | 698 | defer tmp.cleanup(); |
src/translate_c.zig+3-2| ... | @@ -373,13 +373,14 @@ pub fn translate( | ... | @@ -373,13 +373,14 @@ pub fn translate( |
| 373 | // from this function. | 373 | // from this function. |
| 374 | var arena = std.heap.ArenaAllocator.init(gpa); | 374 | var arena = std.heap.ArenaAllocator.init(gpa); |
| 375 | errdefer arena.deinit(); | 375 | errdefer arena.deinit(); |
| 376 | const arena_allocator = arena.getAllocator(); | ||
| 376 | 377 | ||
| 377 | var context = Context{ | 378 | var context = Context{ |
| 378 | .gpa = gpa, | 379 | .gpa = gpa, |
| 379 | .arena = &arena.allocator, | 380 | .arena = arena_allocator, |
| 380 | .source_manager = ast_unit.getSourceManager(), | 381 | .source_manager = ast_unit.getSourceManager(), |
| 381 | .alias_list = AliasList.init(gpa), | 382 | .alias_list = AliasList.init(gpa), |
| 382 | .global_scope = try arena.allocator.create(Scope.Root), | 383 | .global_scope = try arena_allocator.create(Scope.Root), |
| 383 | .clang_context = ast_unit.getASTContext(), | 384 | .clang_context = ast_unit.getASTContext(), |
| 384 | .pattern_list = try PatternList.init(gpa), | 385 | .pattern_list = try PatternList.init(gpa), |
| 385 | }; | 386 | }; |
src/wasi_libc.zig+1-1| ... | @@ -67,7 +67,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void { | ... | @@ -67,7 +67,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void { |
| 67 | const gpa = comp.gpa; | 67 | const gpa = comp.gpa; |
| 68 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); | 68 | var arena_allocator = std.heap.ArenaAllocator.init(gpa); |
| 69 | defer arena_allocator.deinit(); | 69 | defer arena_allocator.deinit(); |
| 70 | const arena = &arena_allocator.allocator; | 70 | const arena = arena_allocator.getAllocator(); |
| 71 | 71 | ||
| 72 | switch (crt_file) { | 72 | switch (crt_file) { |
| 73 | .crt1_reactor_o => { | 73 | .crt1_reactor_o => { |
test/cli.zig+1-1| ... | @@ -16,7 +16,7 @@ pub fn main() !void { | ... | @@ -16,7 +16,7 @@ pub fn main() !void { |
| 16 | // skip my own exe name | 16 | // skip my own exe name |
| 17 | _ = arg_it.skip(); | 17 | _ = arg_it.skip(); |
| 18 | 18 | ||
| 19 | a = &arena.allocator; | 19 | a = arena.getAllocator(); |
| 20 | 20 | ||
| 21 | const zig_exe_rel = try (arg_it.next(a) orelse { | 21 | const zig_exe_rel = try (arg_it.next(a) orelse { |
| 22 | std.debug.print("Expected first argument to be path to zig compiler\n", .{}); | 22 | std.debug.print("Expected first argument to be path to zig compiler\n", .{}); |
test/compare_output.zig+1-1| ... | @@ -491,7 +491,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void { | ... | @@ -491,7 +491,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void { |
| 491 | \\pub fn main() !void { | 491 | \\pub fn main() !void { |
| 492 | \\ var allocator_buf: [10]u8 = undefined; | 492 | \\ var allocator_buf: [10]u8 = undefined; |
| 493 | \\ var fixedBufferAllocator = std.mem.validationWrap(std.heap.FixedBufferAllocator.init(&allocator_buf)); | 493 | \\ var fixedBufferAllocator = std.mem.validationWrap(std.heap.FixedBufferAllocator.init(&allocator_buf)); |
| 494 | \\ const allocator = &std.heap.loggingAllocator(&fixedBufferAllocator.allocator).allocator; | 494 | \\ const allocator = std.heap.loggingAllocator(fixedBufferAllocator.getAllocator()).getAllocator(); |
| 495 | \\ | 495 | \\ |
| 496 | \\ var a = try allocator.alloc(u8, 10); | 496 | \\ var a = try allocator.alloc(u8, 10); |
| 497 | \\ a = allocator.shrink(a, 5); | 497 | \\ a = allocator.shrink(a, 5); |
test/compile_errors.zig+4-4| ... | @@ -6550,9 +6550,9 @@ pub fn addCases(ctx: *TestContext) !void { | ... | @@ -6550,9 +6550,9 @@ pub fn addCases(ctx: *TestContext) !void { |
| 6550 | ctx.objErrStage1("method call with first arg type wrong container", | 6550 | ctx.objErrStage1("method call with first arg type wrong container", |
| 6551 | \\pub const List = struct { | 6551 | \\pub const List = struct { |
| 6552 | \\ len: usize, | 6552 | \\ len: usize, |
| 6553 | \\ allocator: *Allocator, | 6553 | \\ allocator: Allocator, |
| 6554 | \\ | 6554 | \\ |
| 6555 | \\ pub fn init(allocator: *Allocator) List { | 6555 | \\ pub fn init(allocator: Allocator) List { |
| 6556 | \\ return List { | 6556 | \\ return List { |
| 6557 | \\ .len = 0, | 6557 | \\ .len = 0, |
| 6558 | \\ .allocator = allocator, | 6558 | \\ .allocator = allocator, |
| ... | @@ -6573,7 +6573,7 @@ pub fn addCases(ctx: *TestContext) !void { | ... | @@ -6573,7 +6573,7 @@ pub fn addCases(ctx: *TestContext) !void { |
| 6573 | \\ x.init(); | 6573 | \\ x.init(); |
| 6574 | \\} | 6574 | \\} |
| 6575 | , &[_][]const u8{ | 6575 | , &[_][]const u8{ |
| 6576 | "tmp.zig:23:5: error: expected type '*Allocator', found '*List'", | 6576 | "tmp.zig:23:5: error: expected type 'Allocator', found '*List'", |
| 6577 | }); | 6577 | }); |
| 6578 | 6578 | ||
| 6579 | ctx.objErrStage1("binary not on number literal", | 6579 | ctx.objErrStage1("binary not on number literal", |
| ... | @@ -7569,7 +7569,7 @@ pub fn addCases(ctx: *TestContext) !void { | ... | @@ -7569,7 +7569,7 @@ pub fn addCases(ctx: *TestContext) !void { |
| 7569 | \\ | 7569 | \\ |
| 7570 | \\export fn entry() void { | 7570 | \\export fn entry() void { |
| 7571 | \\ const a = MdNode.Header { | 7571 | \\ const a = MdNode.Header { |
| 7572 | \\ .text = MdText.init(&std.testing.allocator), | 7572 | \\ .text = MdText.init(std.testing.allocator), |
| 7573 | \\ .weight = HeaderWeight.H1, | 7573 | \\ .weight = HeaderWeight.H1, |
| 7574 | \\ }; | 7574 | \\ }; |
| 7575 | \\ _ = a; | 7575 | \\ _ = a; |
test/standalone/brace_expansion/main.zig+1-1| ... | @@ -16,7 +16,7 @@ const Token = union(enum) { | ... | @@ -16,7 +16,7 @@ const Token = union(enum) { |
| 16 | }; | 16 | }; |
| 17 | 17 | ||
| 18 | var gpa = std.heap.GeneralPurposeAllocator(.{}){}; | 18 | var gpa = std.heap.GeneralPurposeAllocator(.{}){}; |
| 19 | var global_allocator = &gpa.allocator; | 19 | const global_allocator = gpa.getAllocator(); |
| 20 | 20 | ||
| 21 | fn tokenize(input: []const u8) !ArrayList(Token) { | 21 | fn tokenize(input: []const u8) !ArrayList(Token) { |
| 22 | const State = enum { | 22 | const State = enum { |
test/standalone/cat/main.zig+1-1| ... | @@ -8,7 +8,7 @@ const warn = std.log.warn; | ... | @@ -8,7 +8,7 @@ const warn = std.log.warn; |
| 8 | pub fn main() !void { | 8 | pub fn main() !void { |
| 9 | var arena_instance = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 9 | var arena_instance = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 10 | defer arena_instance.deinit(); | 10 | defer arena_instance.deinit(); |
| 11 | const arena = &arena_instance.allocator; | 11 | const arena = arena_instance.getAllocator(); |
| 12 | 12 | ||
| 13 | const args = try process.argsAlloc(arena); | 13 | const args = try process.argsAlloc(arena); |
| 14 | 14 |
tools/gen_spirv_spec.zig+1-1| ... | @@ -4,7 +4,7 @@ const g = @import("spirv/grammar.zig"); | ... | @@ -4,7 +4,7 @@ const g = @import("spirv/grammar.zig"); |
| 4 | pub fn main() !void { | 4 | pub fn main() !void { |
| 5 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 5 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 6 | defer arena.deinit(); | 6 | defer arena.deinit(); |
| 7 | const allocator = &arena.allocator; | 7 | const allocator = arena.getAllocator(); |
| 8 | 8 | ||
| 9 | const args = try std.process.argsAlloc(allocator); | 9 | const args = try std.process.argsAlloc(allocator); |
| 10 | if (args.len != 2) { | 10 | if (args.len != 2) { |
tools/gen_stubs.zig+1-1| ... | @@ -25,7 +25,7 @@ pub fn main() !void { | ... | @@ -25,7 +25,7 @@ pub fn main() !void { |
| 25 | 25 | ||
| 26 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 26 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 27 | defer arena.deinit(); | 27 | defer arena.deinit(); |
| 28 | const ally = &arena.allocator; | 28 | const ally = arena.getAllocator(); |
| 29 | 29 | ||
| 30 | var symbols = std.ArrayList(Symbol).init(ally); | 30 | var symbols = std.ArrayList(Symbol).init(ally); |
| 31 | var sections = std.ArrayList([]const u8).init(ally); | 31 | var sections = std.ArrayList([]const u8).init(ally); |
tools/merge_anal_dumps.zig+1-1| ... | @@ -9,7 +9,7 @@ pub fn main() anyerror!void { | ... | @@ -9,7 +9,7 @@ pub fn main() anyerror!void { |
| 9 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 9 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 10 | defer arena.deinit(); | 10 | defer arena.deinit(); |
| 11 | 11 | ||
| 12 | const allocator = &arena.allocator; | 12 | const allocator = arena.getAllocator(); |
| 13 | 13 | ||
| 14 | const args = try std.process.argsAlloc(allocator); | 14 | const args = try std.process.argsAlloc(allocator); |
| 15 | 15 |
tools/process_headers.zig+1-1| ... | @@ -284,7 +284,7 @@ const LibCVendor = enum { | ... | @@ -284,7 +284,7 @@ const LibCVendor = enum { |
| 284 | 284 | ||
| 285 | pub fn main() !void { | 285 | pub fn main() !void { |
| 286 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 286 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 287 | const allocator = &arena.allocator; | 287 | const allocator = arena.getAllocator(); |
| 288 | const args = try std.process.argsAlloc(allocator); | 288 | const args = try std.process.argsAlloc(allocator); |
| 289 | var search_paths = std.ArrayList([]const u8).init(allocator); | 289 | var search_paths = std.ArrayList([]const u8).init(allocator); |
| 290 | var opt_out_dir: ?[]const u8 = null; | 290 | var opt_out_dir: ?[]const u8 = null; |
tools/update-license-headers.zig+1-1| ... | @@ -10,7 +10,7 @@ pub fn main() !void { | ... | @@ -10,7 +10,7 @@ pub fn main() !void { |
| 10 | defer root_node.end(); | 10 | defer root_node.end(); |
| 11 | 11 | ||
| 12 | var arena_allocator = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 12 | var arena_allocator = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 13 | const arena = &arena_allocator.allocator; | 13 | const arena = arena_allocator.getAllocator(); |
| 14 | 14 | ||
| 15 | const args = try std.process.argsAlloc(arena); | 15 | const args = try std.process.argsAlloc(arena); |
| 16 | const path_to_walk = args[1]; | 16 | const path_to_walk = args[1]; |
tools/update_clang_options.zig+5| ... | @@ -450,8 +450,13 @@ const cpu_targets = struct { | ... | @@ -450,8 +450,13 @@ const cpu_targets = struct { |
| 450 | pub fn main() anyerror!void { | 450 | pub fn main() anyerror!void { |
| 451 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 451 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 452 | defer arena.deinit(); | 452 | defer arena.deinit(); |
| 453 | <<<<<<< HEAD | ||
| 453 | const allocator = &arena.allocator; | 454 | const allocator = &arena.allocator; |
| 454 | 455 | ||
| 456 | ======= | ||
| 457 | |||
| 458 | const allocator = arena.getAllocator(); | ||
| 459 | >>>>>>> 11157e318 (allocgate: stage 1 and 2 building) | ||
| 455 | const args = try std.process.argsAlloc(allocator); | 460 | const args = try std.process.argsAlloc(allocator); |
| 456 | 461 | ||
| 457 | if (args.len <= 1) { | 462 | if (args.len <= 1) { |
tools/update_cpu_features.zig+2-2| ... | @@ -769,7 +769,7 @@ const llvm_targets = [_]LlvmTarget{ | ... | @@ -769,7 +769,7 @@ const llvm_targets = [_]LlvmTarget{ |
| 769 | pub fn main() anyerror!void { | 769 | pub fn main() anyerror!void { |
| 770 | var arena_state = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 770 | var arena_state = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 771 | defer arena_state.deinit(); | 771 | defer arena_state.deinit(); |
| 772 | const arena = &arena_state.allocator; | 772 | const arena = arena_state.getAllocator(); |
| 773 | 773 | ||
| 774 | const args = try std.process.argsAlloc(arena); | 774 | const args = try std.process.argsAlloc(arena); |
| 775 | if (args.len <= 1) { | 775 | if (args.len <= 1) { |
| ... | @@ -845,7 +845,7 @@ fn processOneTarget(job: Job) anyerror!void { | ... | @@ -845,7 +845,7 @@ fn processOneTarget(job: Job) anyerror!void { |
| 845 | 845 | ||
| 846 | var arena_state = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 846 | var arena_state = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 847 | defer arena_state.deinit(); | 847 | defer arena_state.deinit(); |
| 848 | const arena = &arena_state.allocator; | 848 | const arena = arena_state.getAllocator(); |
| 849 | 849 | ||
| 850 | var progress_node = job.root_progress.start(llvm_target.zig_name, 3); | 850 | var progress_node = job.root_progress.start(llvm_target.zig_name, 3); |
| 851 | progress_node.activate(); | 851 | progress_node.activate(); |
tools/update_glibc.zig+1-1| ... | @@ -133,7 +133,7 @@ const Function = struct { | ... | @@ -133,7 +133,7 @@ const Function = struct { |
| 133 | 133 | ||
| 134 | pub fn main() !void { | 134 | pub fn main() !void { |
| 135 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 135 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 136 | const allocator = &arena.allocator; | 136 | const allocator = arena.getAllocator(); |
| 137 | const args = try std.process.argsAlloc(allocator); | 137 | const args = try std.process.argsAlloc(allocator); |
| 138 | const in_glibc_dir = args[1]; // path to the unzipped tarball of glibc, e.g. ~/downloads/glibc-2.25 | 138 | const in_glibc_dir = args[1]; // path to the unzipped tarball of glibc, e.g. ~/downloads/glibc-2.25 |
| 139 | const zig_src_dir = args[2]; // path to the source checkout of zig, lib dir, e.g. ~/zig-src/lib | 139 | const zig_src_dir = args[2]; // path to the source checkout of zig, lib dir, e.g. ~/zig-src/lib |
tools/update_spirv_features.zig+1-1| ... | @@ -48,7 +48,7 @@ const Version = struct { | ... | @@ -48,7 +48,7 @@ const Version = struct { |
| 48 | pub fn main() !void { | 48 | pub fn main() !void { |
| 49 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); | 49 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 50 | defer arena.deinit(); | 50 | defer arena.deinit(); |
| 51 | const allocator = &arena.allocator; | 51 | const allocator = arena.getAllocator(); |
| 52 | 52 | ||
| 53 | const args = try std.process.argsAlloc(allocator); | 53 | const args = try std.process.argsAlloc(allocator); |
| 54 | 54 |