authorgravatar for leecannon@leecannon.xyzLee Cannon <leecannon@leecannon.xyz> 2021-10-29 02:03:15+01:00
committergravatar for leecannon@leecannon.xyzLee Cannon <leecannon@leecannon.xyz> 2021-11-30 23:32:47+00:00
log75548b50ff23a3de48d166170425001c073d27c1
treede47b7ae071228835ce9108f12f0ed9612f729c7
parent47bc13bc597622fc8deffa1c1a45d47dac51eeb0
signaturelock-open Commit is signed but in an unrecognized format.

allocgate: stage 1 and 2 building


48 files changed, 227 insertions(+), 200 deletions(-)

ci/srht/update-download-page.zig+1-1
......@@ -6,7 +6,7 @@ pub fn main() !void {
66 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
77 defer arena.deinit();
88
9 const allocator = &arena.allocator;
9 const allocator = arena.getAllocator();
1010
1111 const out_dir = "out";
1212 try std.fs.cwd().makePath(out_dir);
doc/docgen.zig+1-1
......@@ -21,7 +21,7 @@ pub fn main() !void {
2121 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
2222 defer arena.deinit();
2323
24 const allocator = &arena.allocator;
24 const allocator = arena.getAllocator();
2525
2626 var args_it = process.args();
2727
doc/langref.html.in+13-13
......@@ -7362,7 +7362,7 @@ fn amain() !void {
73627362}
73637363
73647364var global_download_frame: anyframe = undefined;
7365fn fetchUrl(allocator: *Allocator, url: []const u8) ![]u8 {
7365fn fetchUrl(allocator: Allocator, url: []const u8) ![]u8 {
73667366 _ = url; // this is just an example, we don't actually do it!
73677367 const result = try allocator.dupe(u8, "this is the downloaded url contents");
73687368 errdefer allocator.free(result);
......@@ -7374,7 +7374,7 @@ fn fetchUrl(allocator: *Allocator, url: []const u8) ![]u8 {
73747374}
73757375
73767376var global_file_frame: anyframe = undefined;
7377fn readFile(allocator: *Allocator, filename: []const u8) ![]u8 {
7377fn readFile(allocator: Allocator, filename: []const u8) ![]u8 {
73787378 _ = filename; // this is just an example, we don't actually do it!
73797379 const result = try allocator.dupe(u8, "this is the file contents");
73807380 errdefer allocator.free(result);
......@@ -7433,7 +7433,7 @@ fn amain() !void {
74337433 std.debug.print("file_text: {s}\n", .{file_text});
74347434}
74357435
7436fn fetchUrl(allocator: *Allocator, url: []const u8) ![]u8 {
7436fn fetchUrl(allocator: Allocator, url: []const u8) ![]u8 {
74377437 _ = url; // this is just an example, we don't actually do it!
74387438 const result = try allocator.dupe(u8, "this is the downloaded url contents");
74397439 errdefer allocator.free(result);
......@@ -7441,7 +7441,7 @@ fn fetchUrl(allocator: *Allocator, url: []const u8) ![]u8 {
74417441 return result;
74427442}
74437443
7444fn readFile(allocator: *Allocator, filename: []const u8) ![]u8 {
7444fn readFile(allocator: Allocator, filename: []const u8) ![]u8 {
74457445 _ = filename; // this is just an example, we don't actually do it!
74467446 const result = try allocator.dupe(u8, "this is the file contents");
74477447 errdefer allocator.free(result);
......@@ -10050,8 +10050,8 @@ pub fn main() void {
1005010050 C has a default allocator - <code>malloc</code>, <code>realloc</code>, and <code>free</code>.
1005110051 When linking against libc, Zig exposes this allocator with {#syntax#}std.heap.c_allocator{#endsyntax#}.
1005210052 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
1005510055 their initialization functions:
1005610056 </p>
1005710057 {#code_begin|test|allocator#}
......@@ -10061,12 +10061,12 @@ const expect = std.testing.expect;
1006110061
1006210062test "using an allocator" {
1006310063 var buffer: [100]u8 = undefined;
10064 const allocator = &std.heap.FixedBufferAllocator.init(&buffer).allocator;
10064 const allocator = std.heap.FixedBufferAllocator.init(&buffer).getAllocator();
1006510065 const result = try concat(allocator, "foo", "bar");
1006610066 try expect(std.mem.eql(u8, "foobar", result));
1006710067}
1006810068
10069fn concat(allocator: *Allocator, a: []const u8, b: []const u8) ![]u8 {
10069fn concat(allocator: Allocator, a: []const u8, b: []const u8) ![]u8 {
1007010070 const result = try allocator.alloc(u8, a.len + b.len);
1007110071 std.mem.copy(u8, result, a);
1007210072 std.mem.copy(u8, result[a.len..], b);
......@@ -10091,7 +10091,7 @@ fn concat(allocator: *Allocator, a: []const u8, b: []const u8) ![]u8 {
1009110091 </p>
1009210092 <ol>
1009310093 <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#}
1009510095 as a parameter and allow your library's users to decide what allocator to use.
1009610096 </li>
1009710097 <li>Are you linking libc? In this case, {#syntax#}std.heap.c_allocator{#endsyntax#} is likely
......@@ -10114,7 +10114,7 @@ pub fn main() !void {
1011410114 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
1011510115 defer arena.deinit();
1011610116
10117 const allocator = &arena.allocator;
10117 const allocator = arena.getAllocator();
1011810118
1011910119 const ptr = try allocator.create(i32);
1012010120 std.debug.print("ptr={*}\n", .{ptr});
......@@ -10281,7 +10281,7 @@ test "string literal to constant slice" {
1028110281 <p>
1028210282 For example, the function's documentation may say "caller owns the returned memory", in which case
1028310283 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.
1028510285 </p>
1028610286 <p>
1028710287 Sometimes the lifetime of a pointer may be more complicated. For example, the
......@@ -10820,7 +10820,7 @@ const std = @import("std");
1082010820
1082110821pub fn main() !void {
1082210822 var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){};
10823 const gpa = &general_purpose_allocator.allocator;
10823 const gpa = general_purpose_allocator.getAllocator();
1082410824 const args = try std.process.argsAlloc(gpa);
1082510825 defer std.process.argsFree(gpa, args);
1082610826
......@@ -10842,7 +10842,7 @@ const PreopenList = std.fs.wasi.PreopenList;
1084210842
1084310843pub fn main() !void {
1084410844 var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){};
10845 const gpa = &general_purpose_allocator.allocator;
10845 const gpa = general_purpose_allocator.getAllocator();
1084610846
1084710847 var preopens = PreopenList.init(gpa);
1084810848 defer preopens.deinit();
lib/std/event/loop.zig+2-2
......@@ -173,12 +173,12 @@ pub const Loop = struct {
173173 // We need at least one of these in case the fs thread wants to use onNextTick
174174 const extra_thread_count = thread_count - 1;
175175 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(
177177 std.atomic.Stack(ResumeNode.EventFd).Node,
178178 resume_node_count,
179179 );
180180
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);
182182
183183 try self.initOsData(extra_thread_count);
184184 errdefer self.deinitOsData();
src/AstGen.zig+8-7
......@@ -98,7 +98,7 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir {
9898
9999 var astgen: AstGen = .{
100100 .gpa = gpa,
101 .arena = &arena.allocator,
101 .arena = arena.getAllocator(),
102102 .tree = &tree,
103103 };
104104 defer astgen.deinit(gpa);
......@@ -1939,6 +1939,7 @@ fn blockExprStmts(gz: *GenZir, parent_scope: *Scope, statements: []const Ast.Nod
19391939
19401940 var block_arena = std.heap.ArenaAllocator.init(gz.astgen.gpa);
19411941 defer block_arena.deinit();
1942 const block_arena_allocator = block_arena.getAllocator();
19421943
19431944 var noreturn_src_node: Ast.Node.Index = 0;
19441945 var scope = parent_scope;
......@@ -1959,13 +1960,13 @@ fn blockExprStmts(gz: *GenZir, parent_scope: *Scope, statements: []const Ast.Nod
19591960 }
19601961 switch (node_tags[statement]) {
19611962 // 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)),
19661967
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),
19691970
19701971 .assign => try assign(gz, scope, statement),
19711972
src/Compilation.zig+27-24
......@@ -412,28 +412,29 @@ pub const AllErrors = struct {
412412 errors: *std.ArrayList(Message),
413413 module_err_msg: Module.ErrorMsg,
414414 ) !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);
416417 for (notes) |*note, i| {
417418 const module_note = module_err_msg.notes[i];
418419 const source = try module_note.src_loc.file_scope.getSource(module.gpa);
419420 const byte_offset = try module_note.src_loc.byteOffset(module.gpa);
420421 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);
422423 note.* = .{
423424 .src = .{
424425 .src_path = file_path,
425 .msg = try arena.allocator.dupe(u8, module_note.msg),
426 .msg = try allocator.dupe(u8, module_note.msg),
426427 .byte_offset = byte_offset,
427428 .line = @intCast(u32, loc.line),
428429 .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),
430431 },
431432 };
432433 }
433434 if (module_err_msg.src_loc.lazy == .entire_file) {
434435 try errors.append(.{
435436 .plain = .{
436 .msg = try arena.allocator.dupe(u8, module_err_msg.msg),
437 .msg = try allocator.dupe(u8, module_err_msg.msg),
437438 },
438439 });
439440 return;
......@@ -441,16 +442,16 @@ pub const AllErrors = struct {
441442 const source = try module_err_msg.src_loc.file_scope.getSource(module.gpa);
442443 const byte_offset = try module_err_msg.src_loc.byteOffset(module.gpa);
443444 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);
445446 try errors.append(.{
446447 .src = .{
447448 .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),
449450 .byte_offset = byte_offset,
450451 .line = @intCast(u32, loc.line),
451452 .column = @intCast(u32, loc.column),
452453 .notes = notes,
453 .source_line = try arena.allocator.dupe(u8, loc.source_line),
454 .source_line = try allocator.dupe(u8, loc.source_line),
454455 },
455456 });
456457 }
......@@ -548,11 +549,12 @@ pub const AllErrors = struct {
548549 msg: []const u8,
549550 optional_children: ?AllErrors,
550551 ) !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);
552554 if (optional_children) |*children| {
553555 try errors.append(.{ .plain = .{
554556 .msg = duped_msg,
555 .notes = try dupeList(children.list, &arena.allocator),
557 .notes = try dupeList(children.list, allocator),
556558 } });
557559 } else {
558560 try errors.append(.{ .plain = .{ .msg = duped_msg } });
......@@ -786,7 +788,7 @@ fn addPackageTableToCacheHash(
786788 seen_table: *std.AutoHashMap(*Package, void),
787789 hash_type: union(enum) { path_bytes, files: *Cache.Manifest },
788790) (error{OutOfMemory} || std.os.GetCwdError)!void {
789 const allocator = &arena.allocator;
791 const allocator = arena.getAllocator();
790792
791793 const packages = try allocator.alloc(Package.Table.KV, pkg_table.count());
792794 {
......@@ -850,7 +852,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
850852 // initialization and then is freed in deinit().
851853 var arena_allocator = std.heap.ArenaAllocator.init(gpa);
852854 errdefer arena_allocator.deinit();
853 const arena = &arena_allocator.allocator;
855 const arena = arena_allocator.getAllocator();
854856
855857 // We put the `Compilation` itself in the arena. Freeing the arena will free the module.
856858 // It's initialized later after we prepare the initialization options.
......@@ -1208,7 +1210,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
12081210 {
12091211 var local_arena = std.heap.ArenaAllocator.init(gpa);
12101212 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());
12121214 try addPackageTableToCacheHash(&hash, &local_arena, main_pkg.table, &seen_table, .path_bytes);
12131215 }
12141216 hash.add(valgrind);
......@@ -2011,6 +2013,7 @@ pub fn totalErrorCount(self: *Compilation) usize {
20112013pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors {
20122014 var arena = std.heap.ArenaAllocator.init(self.gpa);
20132015 errdefer arena.deinit();
2016 const arena_allocator = arena.getAllocator();
20142017
20152018 var errors = std.ArrayList(AllErrors.Message).init(self.gpa);
20162019 defer errors.deinit();
......@@ -2024,8 +2027,8 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors {
20242027 // C error reporting bubbling up.
20252028 try errors.append(.{
20262029 .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}", .{
20292032 err_msg.msg,
20302033 }),
20312034 .byte_offset = 0,
......@@ -2050,7 +2053,7 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors {
20502053 // must have completed successfully.
20512054 const tree = try entry.key_ptr.*.getTree(module.gpa);
20522055 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.*);
20542057 }
20552058 }
20562059 }
......@@ -2089,7 +2092,7 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors {
20892092 if (errors.items.len == 0 and self.link_error_flags.no_entry_point_found) {
20902093 try errors.append(.{
20912094 .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", .{}),
20932096 },
20942097 });
20952098 }
......@@ -2121,7 +2124,7 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors {
21212124 assert(errors.items.len == self.totalErrorCount());
21222125
21232126 return AllErrors{
2124 .list = try arena.allocator.dupe(AllErrors.Message, errors.items),
2127 .list = try arena_allocator.dupe(AllErrors.Message, errors.items),
21252128 .arena = arena.state,
21262129 };
21272130}
......@@ -2292,7 +2295,7 @@ fn processOneJob(comp: *Compilation, job: Job, main_progress_node: *std.Progress
22922295
22932296 var tmp_arena = std.heap.ArenaAllocator.init(gpa);
22942297 defer tmp_arena.deinit();
2295 const sema_arena = &tmp_arena.allocator;
2298 const sema_arena = tmp_arena.getAllocator();
22962299
22972300 const sema_frame = tracy.namedFrame("sema");
22982301 var sema_frame_ended = false;
......@@ -2387,7 +2390,7 @@ fn processOneJob(comp: *Compilation, job: Job, main_progress_node: *std.Progress
23872390 .decl = decl,
23882391 .fwd_decl = fwd_decl.toManaged(gpa),
23892392 .typedefs = c_codegen.TypedefMap.init(gpa),
2390 .typedefs_arena = &typedefs_arena.allocator,
2393 .typedefs_arena = typedefs_arena.getAllocator(),
23912394 };
23922395 defer dg.fwd_decl.deinit();
23932396 defer dg.typedefs.deinit();
......@@ -2841,7 +2844,7 @@ pub fn cImport(comp: *Compilation, c_src: []const u8) !CImportResult {
28412844 const digest = if (!actual_hit) digest: {
28422845 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
28432846 defer arena_allocator.deinit();
2844 const arena = &arena_allocator.allocator;
2847 const arena = arena_allocator.getAllocator();
28452848
28462849 const tmp_digest = man.hash.peek();
28472850 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
30963099
30973100 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
30983101 defer arena_allocator.deinit();
3099 const arena = &arena_allocator.allocator;
3102 const arena = arena_allocator.getAllocator();
31003103
31013104 const c_source_basename = std.fs.path.basename(c_object.src.src_path);
31023105
......@@ -4417,7 +4420,7 @@ fn updateStage1Module(comp: *Compilation, main_progress_node: *std.Progress.Node
44174420
44184421 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
44194422 defer arena_allocator.deinit();
4420 const arena = &arena_allocator.allocator;
4423 const arena = arena_allocator.getAllocator();
44214424
44224425 // Here we use the legacy stage1 C++ compiler to compile Zig code.
44234426 const mod = comp.bin_file.options.module.?;
......@@ -4454,7 +4457,7 @@ fn updateStage1Module(comp: *Compilation, main_progress_node: *std.Progress.Node
44544457
44554458 _ = try man.addFile(main_zig_file, null);
44564459 {
4457 var seen_table = std.AutoHashMap(*Package, void).init(&arena_allocator.allocator);
4460 var seen_table = std.AutoHashMap(*Package, void).init(arena_allocator.getAllocator());
44584461 try addPackageTableToCacheHash(&man.hash, &arena_allocator, mod.main_pkg.table, &seen_table, .{ .files = &man });
44594462 }
44604463 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" {
878878// - tokenize input, emit textual representation, and compare to expect
879879fn depTokenizer(input: []const u8, expect: []const u8) !void {
880880 var arena_allocator = std.heap.ArenaAllocator.init(std.testing.allocator);
881 const arena = &arena_allocator.allocator;
881 const arena = arena_allocator.getAllocator();
882882 defer arena_allocator.deinit();
883883
884884 var it: Tokenizer = .{ .bytes = input };
src/Module.zig+33-28
......@@ -517,7 +517,7 @@ pub const Decl = struct {
517517
518518 pub fn finalizeNewArena(decl: *Decl, arena: *std.heap.ArenaAllocator) !void {
519519 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);
521521 arena_state.* = arena.state;
522522 decl.value_arena = arena_state;
523523 }
......@@ -3159,10 +3159,11 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void {
31593159 const gpa = mod.gpa;
31603160 var new_decl_arena = std.heap.ArenaAllocator.init(gpa);
31613161 errdefer new_decl_arena.deinit();
3162 const new_decl_arena_allocator = new_decl_arena.getAllocator();
31623163
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);
31663167 const ty_ty = comptime Type.initTag(.type);
31673168 struct_obj.* = .{
31683169 .owner_decl = undefined, // set below
......@@ -3202,12 +3203,13 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void {
32023203
32033204 var sema_arena = std.heap.ArenaAllocator.init(gpa);
32043205 defer sema_arena.deinit();
3206 const sema_arena_allocator = sema_arena.getAllocator();
32053207
32063208 var sema: Sema = .{
32073209 .mod = mod,
32083210 .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,
32113213 .code = file.zir,
32123214 .owner_decl = new_decl,
32133215 .func = null,
......@@ -3216,7 +3218,7 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void {
32163218 };
32173219 defer sema.deinit();
32183220
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);
32203222 defer wip_captures.deinit();
32213223
32223224 var block_scope: Sema.Block = .{
......@@ -3265,15 +3267,17 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool {
32653267 // We need the memory for the Type to go into the arena for the Decl
32663268 var decl_arena = std.heap.ArenaAllocator.init(gpa);
32673269 errdefer decl_arena.deinit();
3270 const decl_arena_allocator = decl_arena.getAllocator();
32683271
32693272 var analysis_arena = std.heap.ArenaAllocator.init(gpa);
32703273 defer analysis_arena.deinit();
3274 const analysis_arena_allocator = analysis_arena.getAllocator();
32713275
32723276 var sema: Sema = .{
32733277 .mod = mod,
32743278 .gpa = gpa,
3275 .arena = &analysis_arena.allocator,
3276 .perm_arena = &decl_arena.allocator,
3279 .arena = analysis_arena_allocator,
3280 .perm_arena = decl_arena_allocator,
32773281 .code = zir,
32783282 .owner_decl = decl,
32793283 .func = null,
......@@ -3296,7 +3300,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool {
32963300 }
32973301 log.debug("semaDecl {*} ({s})", .{ decl, decl.name });
32983302
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);
33003304 defer wip_captures.deinit();
33013305
33023306 var block_scope: Sema.Block = .{
......@@ -3356,7 +3360,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool {
33563360 // not the struct itself.
33573361 try sema.resolveTypeLayout(&block_scope, src, decl_tv.ty);
33583362
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);
33603364
33613365 if (decl.is_usingnamespace) {
33623366 const ty_ty = Type.initTag(.type);
......@@ -3370,7 +3374,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool {
33703374 }
33713375
33723376 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);
33743378 decl.align_val = Value.initTag(.null_value);
33753379 decl.linksection_val = Value.initTag(.null_value);
33763380 decl.has_tv = true;
......@@ -3400,10 +3404,10 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool {
34003404 decl.clearValues(gpa);
34013405 }
34023406
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);
34073411 decl.@"addrspace" = address_space;
34083412 decl.has_tv = true;
34093413 decl.owns_tv = owns_tv;
......@@ -3453,7 +3457,7 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool {
34533457 decl.owns_tv = true;
34543458 queue_linker_work = true;
34553459
3456 const copied_init = try variable.init.copy(&decl_arena.allocator);
3460 const copied_init = try variable.init.copy(decl_arena_allocator);
34573461 variable.init = copied_init;
34583462 }
34593463 },
......@@ -3476,10 +3480,10 @@ fn semaDecl(mod: *Module, decl: *Decl) !bool {
34763480 },
34773481 }
34783482
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);
34833487 decl.@"addrspace" = address_space;
34843488 decl.has_tv = true;
34853489 decl_arena_state.* = decl_arena.state;
......@@ -4128,12 +4132,13 @@ pub fn analyzeFnBody(mod: *Module, decl: *Decl, func: *Fn, arena: Allocator) Sem
41284132 // Use the Decl's arena for captured values.
41294133 var decl_arena = decl.value_arena.?.promote(gpa);
41304134 defer decl.value_arena.?.* = decl_arena.state;
4135 const decl_arena_allocator = decl_arena.getAllocator();
41314136
41324137 var sema: Sema = .{
41334138 .mod = mod,
41344139 .gpa = gpa,
41354140 .arena = arena,
4136 .perm_arena = &decl_arena.allocator,
4141 .perm_arena = decl_arena_allocator,
41374142 .code = decl.getFileScope().zir,
41384143 .owner_decl = decl,
41394144 .func = func,
......@@ -4147,7 +4152,7 @@ pub fn analyzeFnBody(mod: *Module, decl: *Decl, func: *Fn, arena: Allocator) Sem
41474152 try sema.air_extra.ensureTotalCapacity(gpa, reserved_count);
41484153 sema.air_extra.items.len += reserved_count;
41494154
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);
41514156 defer wip_captures.deinit();
41524157
41534158 var inner_block: Sema.Block = .{
......@@ -4751,7 +4756,7 @@ pub fn populateTestFunctions(mod: *Module) !void {
47514756 // decl reference it as a slice.
47524757 var new_decl_arena = std.heap.ArenaAllocator.init(gpa);
47534758 errdefer new_decl_arena.deinit();
4754 const arena = &new_decl_arena.allocator;
4759 const arena = new_decl_arena.getAllocator();
47554760
47564761 const test_fn_vals = try arena.alloc(Value, mod.test_functions.count());
47574762 const array_decl = try mod.createAnonymousDeclFromDecl(decl, decl.src_namespace, null, .{
......@@ -4770,10 +4775,10 @@ pub fn populateTestFunctions(mod: *Module) !void {
47704775 const test_name_decl = n: {
47714776 var name_decl_arena = std.heap.ArenaAllocator.init(gpa);
47724777 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);
47744779 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),
47774782 });
47784783 try test_name_decl.finalizeNewArena(&name_decl_arena);
47794784 break :n test_name_decl;
......@@ -4802,7 +4807,7 @@ pub fn populateTestFunctions(mod: *Module) !void {
48024807 {
48034808 var new_decl_arena = std.heap.ArenaAllocator.init(gpa);
48044809 errdefer new_decl_arena.deinit();
4805 const arena = &new_decl_arena.allocator;
4810 const arena = new_decl_arena.getAllocator();
48064811
48074812 // This copy accesses the old Decl Type/Value so it must be done before `clearValues`.
48084813 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 {
418418 finished: bool,
419419
420420 pub fn arena(wad: *WipAnonDecl) Allocator {
421 return &wad.new_decl_arena.allocator;
421 return wad.new_decl_arena.getAllocator();
422422 }
423423
424424 pub fn deinit(wad: *WipAnonDecl) void {
......@@ -1594,10 +1594,11 @@ fn zirStructDecl(
15941594
15951595 var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa);
15961596 errdefer new_decl_arena.deinit();
1597 const new_decl_arena_allocator = new_decl_arena.getAllocator();
15971598
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);
16011602 const type_name = try sema.createTypeName(block, small.name_strategy);
16021603 const new_decl = try sema.mod.createAnonymousDeclNamed(block, .{
16031604 .ty = Type.type,
......@@ -1698,15 +1699,16 @@ fn zirEnumDecl(
16981699
16991700 var new_decl_arena = std.heap.ArenaAllocator.init(gpa);
17001701 errdefer new_decl_arena.deinit();
1702 const new_decl_arena_allocator = new_decl_arena.getAllocator();
17011703
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);
17041706 enum_ty_payload.* = .{
17051707 .base = .{ .tag = if (small.nonexhaustive) .enum_nonexhaustive else .enum_full },
17061708 .data = enum_obj,
17071709 };
17081710 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);
17101712 const type_name = try sema.createTypeName(block, small.name_strategy);
17111713 const new_decl = try mod.createAnonymousDeclNamed(block, .{
17121714 .ty = Type.type,
......@@ -1790,17 +1792,17 @@ fn zirEnumDecl(
17901792 break :blk try sema.resolveType(block, src, tag_type_ref);
17911793 }
17921794 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);
17941796 };
17951797 enum_obj.tag_ty = tag_ty;
17961798 }
17971799
1798 try enum_obj.fields.ensureTotalCapacity(&new_decl_arena.allocator, fields_len);
1800 try enum_obj.fields.ensureTotalCapacity(new_decl_arena_allocator, fields_len);
17991801 const any_values = for (sema.code.extra[body_end..][0..bit_bags_count]) |bag| {
18001802 if (bag != 0) break true;
18011803 } else false;
18021804 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, .{
18041806 .ty = enum_obj.tag_ty,
18051807 });
18061808 }
......@@ -1820,7 +1822,7 @@ fn zirEnumDecl(
18201822 extra_index += 1;
18211823
18221824 // 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);
18241826
18251827 const gop = enum_obj.fields.getOrPutAssumeCapacity(field_name);
18261828 if (gop.found_existing) {
......@@ -1843,12 +1845,12 @@ fn zirEnumDecl(
18431845 // that points to this default value expression rather than the struct.
18441846 // But only resolve the source location if we need to emit a compile error.
18451847 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);
18471849 enum_obj.values.putAssumeCapacityNoClobberContext(copied_tag_val, {}, .{
18481850 .ty = enum_obj.tag_ty,
18491851 });
18501852 } 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);
18521854 enum_obj.values.putAssumeCapacityNoClobberContext(tag_val, {}, .{ .ty = enum_obj.tag_ty });
18531855 }
18541856 }
......@@ -1887,16 +1889,17 @@ fn zirUnionDecl(
18871889
18881890 var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa);
18891891 errdefer new_decl_arena.deinit();
1892 const new_decl_arena_allocator = new_decl_arena.getAllocator();
18901893
1891 const union_obj = try new_decl_arena.allocator.create(Module.Union);
1894 const union_obj = try new_decl_arena_allocator.create(Module.Union);
18921895 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);
18941897 union_payload.* = .{
18951898 .base = .{ .tag = type_tag },
18961899 .data = union_obj,
18971900 };
18981901 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);
19001903 const type_name = try sema.createTypeName(block, small.name_strategy);
19011904 const new_decl = try sema.mod.createAnonymousDeclNamed(block, .{
19021905 .ty = Type.type,
......@@ -1955,15 +1958,16 @@ fn zirOpaqueDecl(
19551958
19561959 var new_decl_arena = std.heap.ArenaAllocator.init(gpa);
19571960 errdefer new_decl_arena.deinit();
1961 const new_decl_arena_allocator = new_decl_arena.getAllocator();
19581962
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);
19611965 opaque_ty_payload.* = .{
19621966 .base = .{ .tag = .@"opaque" },
19631967 .data = opaque_obj,
19641968 };
19651969 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);
19671971 const type_name = try sema.createTypeName(block, small.name_strategy);
19681972 const new_decl = try mod.createAnonymousDeclNamed(block, .{
19691973 .ty = Type.type,
......@@ -2008,10 +2012,11 @@ fn zirErrorSetDecl(
20082012
20092013 var new_decl_arena = std.heap.ArenaAllocator.init(gpa);
20102014 errdefer new_decl_arena.deinit();
2015 const new_decl_arena_allocator = new_decl_arena.getAllocator();
20112016
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);
20152020 const type_name = try sema.createTypeName(block, name_strategy);
20162021 const new_decl = try sema.mod.createAnonymousDeclNamed(block, .{
20172022 .ty = Type.type,
......@@ -2019,9 +2024,9 @@ fn zirErrorSetDecl(
20192024 }, type_name);
20202025 new_decl.owns_tv = true;
20212026 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);
20232028 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));
20252030 }
20262031 error_set.* = .{
20272032 .owner_decl = new_decl,
......@@ -3935,7 +3940,7 @@ fn analyzeCall(
39353940 {
39363941 var arena_allocator = std.heap.ArenaAllocator.init(gpa);
39373942 errdefer arena_allocator.deinit();
3938 const arena = &arena_allocator.allocator;
3943 const arena = arena_allocator.getAllocator();
39393944
39403945 for (memoized_call_key.args) |*arg| {
39413946 arg.* = try arg.*.copy(arena);
......@@ -4069,6 +4074,7 @@ fn analyzeCall(
40694074
40704075 var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa);
40714076 errdefer new_decl_arena.deinit();
4077 const new_decl_arena_allocator = new_decl_arena.getAllocator();
40724078
40734079 // Re-run the block that creates the function, with the comptime parameters
40744080 // pre-populated inside `inst_map`. This causes `param_comptime` and
......@@ -4078,13 +4084,13 @@ fn analyzeCall(
40784084 .mod = mod,
40794085 .gpa = gpa,
40804086 .arena = sema.arena,
4081 .perm_arena = &new_decl_arena.allocator,
4087 .perm_arena = new_decl_arena_allocator,
40824088 .code = fn_zir,
40834089 .owner_decl = new_decl,
40844090 .func = null,
40854091 .fn_ret_ty = Type.void,
40864092 .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),
40884094 .comptime_args_fn_inst = module_fn.zir_body_inst,
40894095 .preallocated_new_func = new_module_func,
40904096 };
......@@ -4168,7 +4174,7 @@ fn analyzeCall(
41684174 else => continue,
41694175 }
41704176 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);
41724178 if (child_sema.resolveMaybeUndefValAllowVariables(
41734179 &child_block,
41744180 .unneeded,
......@@ -4176,7 +4182,7 @@ fn analyzeCall(
41764182 ) catch unreachable) |arg_val| {
41774183 child_sema.comptime_args[arg_i] = .{
41784184 .ty = copied_arg_ty,
4179 .val = try arg_val.copy(&new_decl_arena.allocator),
4185 .val = try arg_val.copy(new_decl_arena_allocator),
41804186 };
41814187 } else {
41824188 child_sema.comptime_args[arg_i] = .{
......@@ -4191,8 +4197,8 @@ fn analyzeCall(
41914197 try wip_captures.finalize();
41924198
41934199 // 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);
41964202 new_decl.analysis = .complete;
41974203
41984204 log.debug("generic function '{s}' instantiated with type {}", .{
......@@ -6047,8 +6053,8 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
60476053 defer arena.deinit();
60486054
60496055 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);
60526058 if (try range_set.spans(min_int, max_int, operand_ty)) {
60536059 if (special_prong == .@"else") {
60546060 return sema.fail(
......@@ -12795,7 +12801,7 @@ const ComptimePtrMutationKit = struct {
1279512801
1279612802 fn beginArena(self: *ComptimePtrMutationKit, gpa: Allocator) Allocator {
1279712803 self.decl_arena = self.decl_ref_mut.decl.value_arena.?.promote(gpa);
12798 return &self.decl_arena.allocator;
12804 return self.decl_arena.getAllocator();
1279912805 }
1280012806
1280112807 fn finishArena(self: *ComptimePtrMutationKit) void {
......@@ -14287,6 +14293,7 @@ fn semaStructFields(
1428714293
1428814294 var decl_arena = decl.value_arena.?.promote(gpa);
1428914295 defer decl.value_arena.?.* = decl_arena.state;
14296 const decl_arena_allocator = decl_arena.getAllocator();
1429014297
1429114298 var analysis_arena = std.heap.ArenaAllocator.init(gpa);
1429214299 defer analysis_arena.deinit();
......@@ -14294,8 +14301,8 @@ fn semaStructFields(
1429414301 var sema: Sema = .{
1429514302 .mod = mod,
1429614303 .gpa = gpa,
14297 .arena = &analysis_arena.allocator,
14298 .perm_arena = &decl_arena.allocator,
14304 .arena = analysis_arena.getAllocator(),
14305 .perm_arena = decl_arena_allocator,
1429914306 .code = zir,
1430014307 .owner_decl = decl,
1430114308 .func = null,
......@@ -14304,7 +14311,7 @@ fn semaStructFields(
1430414311 };
1430514312 defer sema.deinit();
1430614313
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);
1430814315 defer wip_captures.deinit();
1430914316
1431014317 var block_scope: Block = .{
......@@ -14328,7 +14335,7 @@ fn semaStructFields(
1432814335
1432914336 try wip_captures.finalize();
1433014337
14331 try struct_obj.fields.ensureTotalCapacity(&decl_arena.allocator, fields_len);
14338 try struct_obj.fields.ensureTotalCapacity(decl_arena_allocator, fields_len);
1433214339
1433314340 const bits_per_field = 4;
1433414341 const fields_per_u32 = 32 / bits_per_field;
......@@ -14359,7 +14366,7 @@ fn semaStructFields(
1435914366 extra_index += 1;
1436014367
1436114368 // 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);
1436314370 const field_ty: Type = if (field_type_ref == .none)
1436414371 Type.initTag(.noreturn)
1436514372 else
......@@ -14371,7 +14378,7 @@ fn semaStructFields(
1437114378 const gop = struct_obj.fields.getOrPutAssumeCapacity(field_name);
1437214379 assert(!gop.found_existing);
1437314380 gop.value_ptr.* = .{
14374 .ty = try field_ty.copy(&decl_arena.allocator),
14381 .ty = try field_ty.copy(decl_arena_allocator),
1437514382 .abi_align = Value.initTag(.abi_align_default),
1437614383 .default_val = Value.initTag(.unreachable_value),
1437714384 .is_comptime = is_comptime,
......@@ -14385,7 +14392,7 @@ fn semaStructFields(
1438514392 // that points to this alignment expression rather than the struct.
1438614393 // But only resolve the source location if we need to emit a compile error.
1438714394 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);
1438914396 }
1439014397 if (has_default) {
1439114398 const default_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
......@@ -14396,7 +14403,7 @@ fn semaStructFields(
1439614403 // But only resolve the source location if we need to emit a compile error.
1439714404 const default_val = (try sema.resolveMaybeUndefVal(&block_scope, src, default_inst)) orelse
1439814405 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);
1440014407 }
1440114408 }
1440214409}
......@@ -14454,6 +14461,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
1445414461
1445514462 var decl_arena = union_obj.owner_decl.value_arena.?.promote(gpa);
1445614463 defer union_obj.owner_decl.value_arena.?.* = decl_arena.state;
14464 const decl_arena_allocator = decl_arena.getAllocator();
1445714465
1445814466 var analysis_arena = std.heap.ArenaAllocator.init(gpa);
1445914467 defer analysis_arena.deinit();
......@@ -14461,8 +14469,8 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
1446114469 var sema: Sema = .{
1446214470 .mod = mod,
1446314471 .gpa = gpa,
14464 .arena = &analysis_arena.allocator,
14465 .perm_arena = &decl_arena.allocator,
14472 .arena = analysis_arena.getAllocator(),
14473 .perm_arena = decl_arena_allocator,
1446614474 .code = zir,
1446714475 .owner_decl = decl,
1446814476 .func = null,
......@@ -14471,7 +14479,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
1447114479 };
1447214480 defer sema.deinit();
1447314481
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);
1447514483 defer wip_captures.deinit();
1447614484
1447714485 var block_scope: Block = .{
......@@ -14495,7 +14503,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
1449514503
1449614504 try wip_captures.finalize();
1449714505
14498 try union_obj.fields.ensureTotalCapacity(&decl_arena.allocator, fields_len);
14506 try union_obj.fields.ensureTotalCapacity(decl_arena_allocator, fields_len);
1449914507
1450014508 var int_tag_ty: Type = undefined;
1450114509 var enum_field_names: ?*Module.EnumNumbered.NameMap = null;
......@@ -14571,7 +14579,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
1457114579 }
1457214580
1457314581 // 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);
1457514583 if (enum_field_names) |set| {
1457614584 set.putAssumeCapacity(field_name, {});
1457714585 }
......@@ -14589,7 +14597,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
1458914597 const gop = union_obj.fields.getOrPutAssumeCapacity(field_name);
1459014598 assert(!gop.found_existing);
1459114599 gop.value_ptr.* = .{
14592 .ty = try field_ty.copy(&decl_arena.allocator),
14600 .ty = try field_ty.copy(decl_arena_allocator),
1459314601 .abi_align = Value.initTag(.abi_align_default),
1459414602 };
1459514603
......@@ -14598,7 +14606,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
1459814606 // that points to this alignment expression rather than the struct.
1459914607 // But only resolve the source location if we need to emit a compile error.
1460014608 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);
1460214610 } else {
1460314611 gop.value_ptr.abi_align = Value.initTag(.abi_align_default);
1460414612 }
......@@ -14615,15 +14623,16 @@ fn generateUnionTagTypeNumbered(
1461514623
1461614624 var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa);
1461714625 errdefer new_decl_arena.deinit();
14626 const new_decl_arena_allocator = new_decl_arena.getAllocator();
1461814627
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);
1462114630 enum_ty_payload.* = .{
1462214631 .base = .{ .tag = .enum_numbered },
1462314632 .data = enum_obj,
1462414633 };
1462514634 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);
1462714636 // TODO better type name
1462814637 const new_decl = try mod.createAnonymousDecl(block, .{
1462914638 .ty = Type.type,
......@@ -14640,8 +14649,8 @@ fn generateUnionTagTypeNumbered(
1464014649 .node_offset = 0,
1464114650 };
1464214651 // 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 });
1464514654 try new_decl.finalizeNewArena(&new_decl_arena);
1464614655 return enum_ty;
1464714656}
......@@ -14651,15 +14660,16 @@ fn generateUnionTagTypeSimple(sema: *Sema, block: *Block, fields_len: u32) !Type
1465114660
1465214661 var new_decl_arena = std.heap.ArenaAllocator.init(sema.gpa);
1465314662 errdefer new_decl_arena.deinit();
14663 const new_decl_arena_allocator = new_decl_arena.getAllocator();
1465414664
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);
1465714667 enum_ty_payload.* = .{
1465814668 .base = .{ .tag = .enum_simple },
1465914669 .data = enum_obj,
1466014670 };
1466114671 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);
1466314673 // TODO better type name
1466414674 const new_decl = try mod.createAnonymousDecl(block, .{
1466514675 .ty = Type.type,
......@@ -14674,7 +14684,7 @@ fn generateUnionTagTypeSimple(sema: *Sema, block: *Block, fields_len: u32) !Type
1467414684 .node_offset = 0,
1467514685 };
1467614686 // 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);
1467814688 try new_decl.finalizeNewArena(&new_decl_arena);
1467914689 return enum_ty;
1468014690}
src/codegen/c.zig+2-1
......@@ -390,6 +390,7 @@ pub const DeclGen = struct {
390390 // Fall back to generic implementation.
391391 var arena = std.heap.ArenaAllocator.init(dg.module.gpa);
392392 defer arena.deinit();
393 const arena_allocator = arena.getAllocator();
393394
394395 try writer.writeAll("{");
395396 var index: usize = 0;
......@@ -397,7 +398,7 @@ pub const DeclGen = struct {
397398 const elem_ty = ty.elemType();
398399 while (index < len) : (index += 1) {
399400 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);
401402 try dg.renderValue(writer, elem_ty, elem_val);
402403 }
403404 if (ty.sentinel()) |sentinel_val| {
src/codegen/llvm.zig+5-5
......@@ -331,7 +331,7 @@ pub const Object = struct {
331331
332332 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
333333 defer arena_allocator.deinit();
334 const arena = &arena_allocator.allocator;
334 const arena = arena_allocator.getAllocator();
335335
336336 const mod = comp.bin_file.options.module.?;
337337 const cache_dir = mod.zig_cache_artifact_directory;
......@@ -779,7 +779,7 @@ pub const DeclGen = struct {
779779
780780 // The Type memory is ephemeral; since we want to store a longer-lived
781781 // 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());
783783
784784 const opaque_obj = t.castTag(.@"opaque").?.data;
785785 const name = try opaque_obj.getFullyQualifiedName(gpa);
......@@ -837,7 +837,7 @@ pub const DeclGen = struct {
837837
838838 // The Type memory is ephemeral; since we want to store a longer-lived
839839 // 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());
841841
842842 const struct_obj = t.castTag(.@"struct").?.data;
843843
......@@ -871,7 +871,7 @@ pub const DeclGen = struct {
871871
872872 // The Type memory is ephemeral; since we want to store a longer-lived
873873 // 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());
875875
876876 const union_obj = t.cast(Type.Payload.Union).?.data;
877877 const target = dg.module.getTarget();
......@@ -2485,7 +2485,7 @@ pub const FuncGen = struct {
24852485
24862486 var arena_allocator = std.heap.ArenaAllocator.init(self.gpa);
24872487 defer arena_allocator.deinit();
2488 const arena = &arena_allocator.allocator;
2488 const arena = arena_allocator.getAllocator();
24892489
24902490 const llvm_params_len = args.len;
24912491 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 {
8585 const anal = zir_state orelse return;
8686 // Note: We have the panic mutex here, so we can safely use the global crash heap.
8787 var fba = std.heap.FixedBufferAllocator.init(&crash_heap);
88 const allocator = &fba.allocator;
88 const allocator = fba.getAllocator();
8989
9090 const stderr = io.getStdErr().writer();
9191 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!*
6565
6666 var arena_allocator = std.heap.ArenaAllocator.init(gpa);
6767 errdefer arena_allocator.deinit();
68 const arena = &arena_allocator.allocator;
68 const arena = arena_allocator.getAllocator();
6969
7070 var all_versions = std.ArrayListUnmanaged(std.builtin.Version){};
7171 var all_functions = std.ArrayListUnmanaged(Fn){};
......@@ -256,7 +256,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
256256 const gpa = comp.gpa;
257257 var arena_allocator = std.heap.ArenaAllocator.init(gpa);
258258 defer arena_allocator.deinit();
259 const arena = &arena_allocator.allocator;
259 const arena = arena_allocator.getAllocator();
260260
261261 switch (crt_file) {
262262 .crti_o => {
......@@ -711,7 +711,7 @@ pub fn buildSharedObjects(comp: *Compilation) !void {
711711
712712 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
713713 defer arena_allocator.deinit();
714 const arena = &arena_allocator.allocator;
714 const arena = arena_allocator.getAllocator();
715715
716716 const target = comp.getTarget();
717717 const target_version = target.os.version_range.linux.glibc;
src/libcxx.zig+2-2
......@@ -89,7 +89,7 @@ pub fn buildLibCXX(comp: *Compilation) !void {
8989
9090 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
9191 defer arena_allocator.deinit();
92 const arena = &arena_allocator.allocator;
92 const arena = arena_allocator.getAllocator();
9393
9494 const root_name = "c++";
9595 const output_mode = .Lib;
......@@ -236,7 +236,7 @@ pub fn buildLibCXXABI(comp: *Compilation) !void {
236236
237237 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
238238 defer arena_allocator.deinit();
239 const arena = &arena_allocator.allocator;
239 const arena = arena_allocator.getAllocator();
240240
241241 const root_name = "c++abi";
242242 const output_mode = .Lib;
src/libtsan.zig+1-1
......@@ -15,7 +15,7 @@ pub fn buildTsan(comp: *Compilation) !void {
1515
1616 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
1717 defer arena_allocator.deinit();
18 const arena = &arena_allocator.allocator;
18 const arena = arena_allocator.getAllocator();
1919
2020 const root_name = "tsan";
2121 const output_mode = .Lib;
src/libunwind.zig+1-1
......@@ -17,7 +17,7 @@ pub fn buildStaticLib(comp: *Compilation) !void {
1717
1818 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
1919 defer arena_allocator.deinit();
20 const arena = &arena_allocator.allocator;
20 const arena = arena_allocator.getAllocator();
2121
2222 const root_name = "unwind";
2323 const output_mode = .Lib;
src/link.zig+1-1
......@@ -628,7 +628,7 @@ pub const File = struct {
628628
629629 var arena_allocator = std.heap.ArenaAllocator.init(base.allocator);
630630 defer arena_allocator.deinit();
631 const arena = &arena_allocator.allocator;
631 const arena = arena_allocator.getAllocator();
632632
633633 const directory = base.options.emit.?.directory; // Just an alias to make it shorter to type.
634634
src/link/C.zig+2-2
......@@ -128,7 +128,7 @@ pub fn updateFunc(self: *C, module: *Module, func: *Module.Fn, air: Air, livenes
128128 .decl = decl,
129129 .fwd_decl = fwd_decl.toManaged(module.gpa),
130130 .typedefs = typedefs.promote(module.gpa),
131 .typedefs_arena = &self.arena.allocator,
131 .typedefs_arena = self.arena.getAllocator(),
132132 },
133133 .code = code.toManaged(module.gpa),
134134 .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 {
193193 .decl = decl,
194194 .fwd_decl = fwd_decl.toManaged(module.gpa),
195195 .typedefs = typedefs.promote(module.gpa),
196 .typedefs_arena = &self.arena.allocator,
196 .typedefs_arena = self.arena.getAllocator(),
197197 },
198198 .code = code.toManaged(module.gpa),
199199 .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 {
877877
878878 var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator);
879879 defer arena_allocator.deinit();
880 const arena = &arena_allocator.allocator;
880 const arena = arena_allocator.getAllocator();
881881
882882 const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type.
883883
src/link/Elf.zig+1-1
......@@ -1243,7 +1243,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void {
12431243
12441244 var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator);
12451245 defer arena_allocator.deinit();
1246 const arena = &arena_allocator.allocator;
1246 const arena = arena_allocator.getAllocator();
12471247
12481248 const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type.
12491249
src/link/MachO.zig+2-2
......@@ -412,7 +412,7 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void {
412412
413413 var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator);
414414 defer arena_allocator.deinit();
415 const arena = &arena_allocator.allocator;
415 const arena = arena_allocator.getAllocator();
416416
417417 const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type.
418418
......@@ -5379,7 +5379,7 @@ fn snapshotState(self: *MachO) !void {
53795379
53805380 var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator);
53815381 defer arena_allocator.deinit();
5382 const arena = &arena_allocator.allocator;
5382 const arena = arena_allocator.getAllocator();
53835383
53845384 const out_file = try emit.directory.handle.createFile("snapshots.json", .{
53855385 .truncate = self.cold_start,
src/link/Plan9.zig+1-1
......@@ -168,7 +168,7 @@ fn putFn(self: *Plan9, decl: *Module.Decl, out: FnDeclOutput) !void {
168168 try fn_map_res.value_ptr.functions.put(gpa, decl, out);
169169 } else {
170170 const file = decl.getFileScope();
171 const arena = &self.path_arena.allocator;
171 const arena = self.path_arena.getAllocator();
172172 // each file gets a symbol
173173 fn_map_res.value_ptr.* = .{
174174 .sym_index = blk: {
src/link/Wasm.zig+1-1
......@@ -950,7 +950,7 @@ fn linkWithLLD(self: *Wasm, comp: *Compilation) !void {
950950
951951 var arena_allocator = std.heap.ArenaAllocator.init(self.base.allocator);
952952 defer arena_allocator.deinit();
953 const arena = &arena_allocator.allocator;
953 const arena = arena_allocator.getAllocator();
954954
955955 const directory = self.base.options.emit.?.directory; // Just an alias to make it shorter to type.
956956
src/link/tapi.zig+3-3
......@@ -120,7 +120,7 @@ pub const LibStub = struct {
120120 err: {
121121 log.debug("trying to parse as []TbdV4", .{});
122122 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);
124124 for (inner) |doc, i| {
125125 out[i] = .{ .v4 = doc };
126126 }
......@@ -130,7 +130,7 @@ pub const LibStub = struct {
130130 err: {
131131 log.debug("trying to parse as TbdV4", .{});
132132 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);
134134 out[0] = .{ .v4 = inner };
135135 break :blk out;
136136 }
......@@ -148,7 +148,7 @@ pub const LibStub = struct {
148148 err: {
149149 log.debug("trying to parse as TbdV3", .{});
150150 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);
152152 out[0] = .{ .v3 = inner };
153153 break :blk out;
154154 }
src/link/tapi/yaml.zig+7-6
......@@ -248,15 +248,16 @@ pub const Yaml = struct {
248248
249249 pub fn load(allocator: Allocator, source: []const u8) !Yaml {
250250 var arena = ArenaAllocator.init(allocator);
251 const arena_allocator = arena.getAllocator();
251252
252 var tree = Tree.init(&arena.allocator);
253 var tree = Tree.init(arena_allocator);
253254 try tree.parse(source);
254255
255 var docs = std.ArrayList(Value).init(&arena.allocator);
256 var docs = std.ArrayList(Value).init(arena_allocator);
256257 try docs.ensureUnusedCapacity(tree.docs.items.len);
257258
258259 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);
260261 docs.appendAssumeCapacity(value);
261262 }
262263
......@@ -299,7 +300,7 @@ pub const Yaml = struct {
299300 .Pointer => |info| {
300301 switch (info.size) {
301302 .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);
303304 for (self.docs.items) |doc, i| {
304305 parsed[i] = try self.parseValue(info.child, doc);
305306 }
......@@ -361,7 +362,7 @@ pub const Yaml = struct {
361362
362363 inline for (struct_info.fields) |field| {
363364 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, "_", "-");
365366 break :blk map.get(field_name);
366367 };
367368
......@@ -382,7 +383,7 @@ pub const Yaml = struct {
382383
383384 fn parsePointer(self: *Yaml, comptime T: type, value: Value) Error!T {
384385 const ptr_info = @typeInfo(T).Pointer;
385 const arena = &self.arena.allocator;
386 const arena = self.arena.getAllocator();
386387
387388 switch (ptr_info.size) {
388389 .Slice => {
src/main.zig+4-4
......@@ -139,7 +139,7 @@ pub fn main() anyerror!void {
139139 const gpa = gpa: {
140140 if (!builtin.link_libc) {
141141 gpa_need_deinit = true;
142 break :gpa &general_purpose_allocator.allocator;
142 break :gpa general_purpose_allocator.getAllocator();
143143 }
144144 // We would prefer to use raw libc allocator here, but cannot
145145 // use it if it won't support the alignment we need.
......@@ -153,7 +153,7 @@ pub fn main() anyerror!void {
153153 };
154154 var arena_instance = std.heap.ArenaAllocator.init(gpa);
155155 defer arena_instance.deinit();
156 const arena = &arena_instance.allocator;
156 const arena = arena_instance.getAllocator();
157157
158158 const args = try process.argsAlloc(arena);
159159
......@@ -3619,7 +3619,7 @@ pub fn cmdFmt(gpa: Allocator, arena: Allocator, args: []const []const u8) !void
36193619 var errors = std.ArrayList(Compilation.AllErrors.Message).init(gpa);
36203620 defer errors.deinit();
36213621
3622 try Compilation.AllErrors.addZir(&arena_instance.allocator, &errors, &file);
3622 try Compilation.AllErrors.addZir(arena_instance.getAllocator(), &errors, &file);
36233623 const ttyconf: std.debug.TTY.Config = switch (color) {
36243624 .auto => std.debug.detectTTYConfig(),
36253625 .on => .escape_codes,
......@@ -3818,7 +3818,7 @@ fn fmtPathFile(
38183818 var errors = std.ArrayList(Compilation.AllErrors.Message).init(fmt.gpa);
38193819 defer errors.deinit();
38203820
3821 try Compilation.AllErrors.addZir(&arena_instance.allocator, &errors, &file);
3821 try Compilation.AllErrors.addZir(arena_instance.getAllocator(), &errors, &file);
38223822 const ttyconf: std.debug.TTY.Config = switch (fmt.color) {
38233823 .auto => std.debug.detectTTYConfig(),
38243824 .on => .escape_codes,
src/mingw.zig+2-2
......@@ -25,7 +25,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
2525 }
2626 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
2727 defer arena_allocator.deinit();
28 const arena = &arena_allocator.allocator;
28 const arena = arena_allocator.getAllocator();
2929
3030 switch (crt_file) {
3131 .crt2_o => {
......@@ -281,7 +281,7 @@ fn add_cc_args(
281281pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void {
282282 var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa);
283283 defer arena_allocator.deinit();
284 const arena = &arena_allocator.allocator;
284 const arena = arena_allocator.getAllocator();
285285
286286 const def_file_path = findDef(comp, arena, lib_name) catch |err| switch (err) {
287287 error.FileNotFound => {
src/musl.zig+1-1
......@@ -25,7 +25,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
2525 const gpa = comp.gpa;
2626 var arena_allocator = std.heap.ArenaAllocator.init(gpa);
2727 defer arena_allocator.deinit();
28 const arena = &arena_allocator.allocator;
28 const arena = arena_allocator.getAllocator();
2929
3030 switch (crt_file) {
3131 .crti_o => {
src/print_air.zig+1-1
......@@ -47,7 +47,7 @@ pub fn dump(gpa: Allocator, air: Air, zir: Zir, liveness: Liveness) void {
4747
4848 var writer: Writer = .{
4949 .gpa = gpa,
50 .arena = &arena.allocator,
50 .arena = arena.getAllocator(),
5151 .air = air,
5252 .zir = zir,
5353 .liveness = liveness,
src/print_zir.zig+3-3
......@@ -19,7 +19,7 @@ pub fn renderAsTextToFile(
1919
2020 var writer: Writer = .{
2121 .gpa = gpa,
22 .arena = &arena.allocator,
22 .arena = arena.getAllocator(),
2323 .file = scope_file,
2424 .code = scope_file.zir,
2525 .indent = 0,
......@@ -74,7 +74,7 @@ pub fn renderInstructionContext(
7474
7575 var writer: Writer = .{
7676 .gpa = gpa,
77 .arena = &arena.allocator,
77 .arena = arena.getAllocator(),
7878 .file = scope_file,
7979 .code = scope_file.zir,
8080 .indent = if (indent < 2) 2 else indent,
......@@ -106,7 +106,7 @@ pub fn renderSingleInstruction(
106106
107107 var writer: Writer = .{
108108 .gpa = gpa,
109 .arena = &arena.allocator,
109 .arena = arena.getAllocator(),
110110 .file = scope_file,
111111 .code = scope_file.zir,
112112 .indent = indent,
src/stage1.zig+1-1
......@@ -38,7 +38,7 @@ pub fn main(argc: c_int, argv: [*][*:0]u8) callconv(.C) c_int {
3838 const gpa = std.heap.c_allocator;
3939 var arena_instance = std.heap.ArenaAllocator.init(gpa);
4040 defer arena_instance.deinit();
41 const arena = &arena_instance.allocator;
41 const arena = arena_instance.getAllocator();
4242
4343 const args = arena.alloc([]const u8, @intCast(usize, argc)) catch fatal("{s}", .{"OutOfMemory"});
4444 for (args) |*arg, i| {
src/test.zig+1-1
......@@ -692,7 +692,7 @@ pub const TestContext = struct {
692692
693693 var arena_allocator = std.heap.ArenaAllocator.init(allocator);
694694 defer arena_allocator.deinit();
695 const arena = &arena_allocator.allocator;
695 const arena = arena_allocator.getAllocator();
696696
697697 var tmp = std.testing.tmpDir(.{});
698698 defer tmp.cleanup();
src/translate_c.zig+3-2
......@@ -373,13 +373,14 @@ pub fn translate(
373373 // from this function.
374374 var arena = std.heap.ArenaAllocator.init(gpa);
375375 errdefer arena.deinit();
376 const arena_allocator = arena.getAllocator();
376377
377378 var context = Context{
378379 .gpa = gpa,
379 .arena = &arena.allocator,
380 .arena = arena_allocator,
380381 .source_manager = ast_unit.getSourceManager(),
381382 .alias_list = AliasList.init(gpa),
382 .global_scope = try arena.allocator.create(Scope.Root),
383 .global_scope = try arena_allocator.create(Scope.Root),
383384 .clang_context = ast_unit.getASTContext(),
384385 .pattern_list = try PatternList.init(gpa),
385386 };
src/wasi_libc.zig+1-1
......@@ -67,7 +67,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
6767 const gpa = comp.gpa;
6868 var arena_allocator = std.heap.ArenaAllocator.init(gpa);
6969 defer arena_allocator.deinit();
70 const arena = &arena_allocator.allocator;
70 const arena = arena_allocator.getAllocator();
7171
7272 switch (crt_file) {
7373 .crt1_reactor_o => {
test/cli.zig+1-1
......@@ -16,7 +16,7 @@ pub fn main() !void {
1616 // skip my own exe name
1717 _ = arg_it.skip();
1818
19 a = &arena.allocator;
19 a = arena.getAllocator();
2020
2121 const zig_exe_rel = try (arg_it.next(a) orelse {
2222 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 {
491491 \\pub fn main() !void {
492492 \\ var allocator_buf: [10]u8 = undefined;
493493 \\ 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();
495495 \\
496496 \\ var a = try allocator.alloc(u8, 10);
497497 \\ a = allocator.shrink(a, 5);
test/compile_errors.zig+4-4
......@@ -6550,9 +6550,9 @@ pub fn addCases(ctx: *TestContext) !void {
65506550 ctx.objErrStage1("method call with first arg type wrong container",
65516551 \\pub const List = struct {
65526552 \\ len: usize,
6553 \\ allocator: *Allocator,
6553 \\ allocator: Allocator,
65546554 \\
6555 \\ pub fn init(allocator: *Allocator) List {
6555 \\ pub fn init(allocator: Allocator) List {
65566556 \\ return List {
65576557 \\ .len = 0,
65586558 \\ .allocator = allocator,
......@@ -6573,7 +6573,7 @@ pub fn addCases(ctx: *TestContext) !void {
65736573 \\ x.init();
65746574 \\}
65756575 , &[_][]const u8{
6576 "tmp.zig:23:5: error: expected type '*Allocator', found '*List'",
6576 "tmp.zig:23:5: error: expected type 'Allocator', found '*List'",
65776577 });
65786578
65796579 ctx.objErrStage1("binary not on number literal",
......@@ -7569,7 +7569,7 @@ pub fn addCases(ctx: *TestContext) !void {
75697569 \\
75707570 \\export fn entry() void {
75717571 \\ const a = MdNode.Header {
7572 \\ .text = MdText.init(&std.testing.allocator),
7572 \\ .text = MdText.init(std.testing.allocator),
75737573 \\ .weight = HeaderWeight.H1,
75747574 \\ };
75757575 \\ _ = a;
test/standalone/brace_expansion/main.zig+1-1
......@@ -16,7 +16,7 @@ const Token = union(enum) {
1616};
1717
1818var gpa = std.heap.GeneralPurposeAllocator(.{}){};
19var global_allocator = &gpa.allocator;
19const global_allocator = gpa.getAllocator();
2020
2121fn tokenize(input: []const u8) !ArrayList(Token) {
2222 const State = enum {
test/standalone/cat/main.zig+1-1
......@@ -8,7 +8,7 @@ const warn = std.log.warn;
88pub fn main() !void {
99 var arena_instance = std.heap.ArenaAllocator.init(std.heap.page_allocator);
1010 defer arena_instance.deinit();
11 const arena = &arena_instance.allocator;
11 const arena = arena_instance.getAllocator();
1212
1313 const args = try process.argsAlloc(arena);
1414
tools/gen_spirv_spec.zig+1-1
......@@ -4,7 +4,7 @@ const g = @import("spirv/grammar.zig");
44pub fn main() !void {
55 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
66 defer arena.deinit();
7 const allocator = &arena.allocator;
7 const allocator = arena.getAllocator();
88
99 const args = try std.process.argsAlloc(allocator);
1010 if (args.len != 2) {
tools/gen_stubs.zig+1-1
......@@ -25,7 +25,7 @@ pub fn main() !void {
2525
2626 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
2727 defer arena.deinit();
28 const ally = &arena.allocator;
28 const ally = arena.getAllocator();
2929
3030 var symbols = std.ArrayList(Symbol).init(ally);
3131 var sections = std.ArrayList([]const u8).init(ally);
tools/merge_anal_dumps.zig+1-1
......@@ -9,7 +9,7 @@ pub fn main() anyerror!void {
99 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
1010 defer arena.deinit();
1111
12 const allocator = &arena.allocator;
12 const allocator = arena.getAllocator();
1313
1414 const args = try std.process.argsAlloc(allocator);
1515
tools/process_headers.zig+1-1
......@@ -284,7 +284,7 @@ const LibCVendor = enum {
284284
285285pub fn main() !void {
286286 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
287 const allocator = &arena.allocator;
287 const allocator = arena.getAllocator();
288288 const args = try std.process.argsAlloc(allocator);
289289 var search_paths = std.ArrayList([]const u8).init(allocator);
290290 var opt_out_dir: ?[]const u8 = null;
tools/update-license-headers.zig+1-1
......@@ -10,7 +10,7 @@ pub fn main() !void {
1010 defer root_node.end();
1111
1212 var arena_allocator = std.heap.ArenaAllocator.init(std.heap.page_allocator);
13 const arena = &arena_allocator.allocator;
13 const arena = arena_allocator.getAllocator();
1414
1515 const args = try std.process.argsAlloc(arena);
1616 const path_to_walk = args[1];
tools/update_clang_options.zig+5
......@@ -450,8 +450,13 @@ const cpu_targets = struct {
450450pub fn main() anyerror!void {
451451 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
452452 defer arena.deinit();
453<<<<<<< HEAD
453454 const allocator = &arena.allocator;
454455
456=======
457
458 const allocator = arena.getAllocator();
459>>>>>>> 11157e318 (allocgate: stage 1 and 2 building)
455460 const args = try std.process.argsAlloc(allocator);
456461
457462 if (args.len <= 1) {
tools/update_cpu_features.zig+2-2
......@@ -769,7 +769,7 @@ const llvm_targets = [_]LlvmTarget{
769769pub fn main() anyerror!void {
770770 var arena_state = std.heap.ArenaAllocator.init(std.heap.page_allocator);
771771 defer arena_state.deinit();
772 const arena = &arena_state.allocator;
772 const arena = arena_state.getAllocator();
773773
774774 const args = try std.process.argsAlloc(arena);
775775 if (args.len <= 1) {
......@@ -845,7 +845,7 @@ fn processOneTarget(job: Job) anyerror!void {
845845
846846 var arena_state = std.heap.ArenaAllocator.init(std.heap.page_allocator);
847847 defer arena_state.deinit();
848 const arena = &arena_state.allocator;
848 const arena = arena_state.getAllocator();
849849
850850 var progress_node = job.root_progress.start(llvm_target.zig_name, 3);
851851 progress_node.activate();
tools/update_glibc.zig+1-1
......@@ -133,7 +133,7 @@ const Function = struct {
133133
134134pub fn main() !void {
135135 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
136 const allocator = &arena.allocator;
136 const allocator = arena.getAllocator();
137137 const args = try std.process.argsAlloc(allocator);
138138 const in_glibc_dir = args[1]; // path to the unzipped tarball of glibc, e.g. ~/downloads/glibc-2.25
139139 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 {
4848pub fn main() !void {
4949 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
5050 defer arena.deinit();
51 const allocator = &arena.allocator;
51 const allocator = arena.getAllocator();
5252
5353 const args = try std.process.argsAlloc(allocator);
5454