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