authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-07-04 22:25:49+00:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-07-05 21:11:42+00:00
log3a89f214aa672c5844def1704845ad38ea60bdcd
tree0beea13a328bf74507509bb249211406e11bdb09
parent3c8b13d998c5c58c8171d36d7506ea3a181d0db9

update more HashMap API usage


8 files changed, 112 insertions(+), 153 deletions(-)

doc/docgen.zig+1-1
......@@ -392,7 +392,7 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc {
392392 .n = header_stack_size,
393393 },
394394 });
395 if (try urls.put(urlized, tag_token)) |entry| {
395 if (try urls.fetchPut(urlized, tag_token)) |entry| {
396396 parseError(tokenizer, tag_token, "duplicate header url: #{}", .{urlized}) catch {};
397397 parseError(tokenizer, entry.value, "other tag here", .{}) catch {};
398398 return error.ParseError;
doc/langref.html.in+3-11
......@@ -5363,11 +5363,11 @@ const std = @import("std");
53635363const assert = std.debug.assert;
53645364
53655365test "turn HashMap into a set with void" {
5366 var map = std.HashMap(i32, void, hash_i32, eql_i32).init(std.testing.allocator);
5366 var map = std.AutoHashMap(i32, void).init(std.testing.allocator);
53675367 defer map.deinit();
53685368
5369 _ = try map.put(1, {});
5370 _ = try map.put(2, {});
5369 try map.put(1, {});
5370 try map.put(2, {});
53715371
53725372 assert(map.contains(2));
53735373 assert(!map.contains(3));
......@@ -5375,14 +5375,6 @@ test "turn HashMap into a set with void" {
53755375 _ = map.remove(2);
53765376 assert(!map.contains(2));
53775377}
5378
5379fn hash_i32(x: i32) u32 {
5380 return @bitCast(u32, x);
5381}
5382
5383fn eql_i32(a: i32, b: i32) bool {
5384 return a == b;
5385}
53865378 {#code_end#}
53875379 <p>Note that this is different from using a dummy value for the hash map value.
53885380 By using {#syntax#}void{#endsyntax#} as the type of the value, the hash map entry type has no value field, and
lib/std/debug.zig+3-3
......@@ -1132,7 +1132,7 @@ pub const DebugInfo = struct {
11321132 const seg_end = seg_start + segment_cmd.vmsize;
11331133
11341134 if (rebased_address >= seg_start and rebased_address < seg_end) {
1135 if (self.address_map.getValue(base_address)) |obj_di| {
1135 if (self.address_map.get(base_address)) |obj_di| {
11361136 return obj_di;
11371137 }
11381138
......@@ -1204,7 +1204,7 @@ pub const DebugInfo = struct {
12041204 const seg_end = seg_start + info.SizeOfImage;
12051205
12061206 if (address >= seg_start and address < seg_end) {
1207 if (self.address_map.getValue(seg_start)) |obj_di| {
1207 if (self.address_map.get(seg_start)) |obj_di| {
12081208 return obj_di;
12091209 }
12101210
......@@ -1441,7 +1441,7 @@ pub const ModuleDebugInfo = switch (builtin.os.tag) {
14411441 const o_file_path = mem.spanZ(self.strings[symbol.ofile.?.n_strx..]);
14421442
14431443 // Check if its debug infos are already in the cache
1444 var o_file_di = self.ofiles.getValue(o_file_path) orelse
1444 var o_file_di = self.ofiles.get(o_file_path) orelse
14451445 (self.loadOFile(o_file_path) catch |err| switch (err) {
14461446 error.FileNotFound,
14471447 error.MissingDebugInfo,
lib/std/hash_map.zig+1-1
......@@ -458,7 +458,7 @@ pub fn HashMapUnmanaged(
458458 }
459459
460460 /// Inserts a new `Entry` into the hash map, returning the previous one, if any.
461 /// If insertion happuns, asserts there is enough capacity without allocating.
461 /// If insertion happens, asserts there is enough capacity without allocating.
462462 pub fn fetchPutAssumeCapacity(self: *Self, key: K, value: V) ?Entry {
463463 const gop = self.getOrPutAssumeCapacity(key);
464464 var result: ?Entry = null;
src-self-hosted/Module.zig+83-114
......@@ -75,7 +75,7 @@ deletion_set: std.ArrayListUnmanaged(*Decl) = .{},
7575
7676keep_source_files_loaded: bool,
7777
78const DeclTable = std.HashMap(Scope.NameHash, *Decl, Scope.name_hash_hash, Scope.name_hash_eql);
78const DeclTable = std.HashMap(Scope.NameHash, *Decl, Scope.name_hash_hash, Scope.name_hash_eql, false);
7979
8080const WorkItem = union(enum) {
8181 /// Write the machine code for a Decl to the output file.
......@@ -795,49 +795,38 @@ pub fn deinit(self: *Module) void {
795795 const allocator = self.allocator;
796796 self.deletion_set.deinit(allocator);
797797 self.work_queue.deinit();
798 {
799 var it = self.decl_table.iterator();
800 while (it.next()) |kv| {
801 kv.value.destroy(allocator);
802 }
803 self.decl_table.deinit();
798
799 for (self.decl_table.items()) |entry| {
800 entry.value.destroy(allocator);
804801 }
805 {
806 var it = self.failed_decls.iterator();
807 while (it.next()) |kv| {
808 kv.value.destroy(allocator);
809 }
810 self.failed_decls.deinit();
802 self.decl_table.deinit();
803
804 for (self.failed_decls.items()) |entry| {
805 entry.value.destroy(allocator);
811806 }
812 {
813 var it = self.failed_files.iterator();
814 while (it.next()) |kv| {
815 kv.value.destroy(allocator);
816 }
817 self.failed_files.deinit();
807 self.failed_decls.deinit();
808
809 for (self.failed_files.items()) |entry| {
810 entry.value.destroy(allocator);
818811 }
819 {
820 var it = self.failed_exports.iterator();
821 while (it.next()) |kv| {
822 kv.value.destroy(allocator);
823 }
824 self.failed_exports.deinit();
812 self.failed_files.deinit();
813
814 for (self.failed_exports.items()) |entry| {
815 entry.value.destroy(allocator);
825816 }
826 {
827 var it = self.decl_exports.iterator();
828 while (it.next()) |kv| {
829 const export_list = kv.value;
830 allocator.free(export_list);
831 }
832 self.decl_exports.deinit();
817 self.failed_exports.deinit();
818
819 for (self.decl_exports.items()) |entry| {
820 const export_list = entry.value;
821 allocator.free(export_list);
833822 }
834 {
835 var it = self.export_owners.iterator();
836 while (it.next()) |kv| {
837 freeExportList(allocator, kv.value);
838 }
839 self.export_owners.deinit();
823 self.decl_exports.deinit();
824
825 for (self.export_owners.items()) |entry| {
826 freeExportList(allocator, entry.value);
840827 }
828 self.export_owners.deinit();
829
841830 self.symbol_exports.deinit();
842831 self.root_scope.destroy(allocator);
843832 self.* = undefined;
......@@ -918,9 +907,9 @@ pub fn makeBinFileWritable(self: *Module) !void {
918907}
919908
920909pub fn totalErrorCount(self: *Module) usize {
921 const total = self.failed_decls.size +
922 self.failed_files.size +
923 self.failed_exports.size;
910 const total = self.failed_decls.items().len +
911 self.failed_files.items().len +
912 self.failed_exports.items().len;
924913 return if (total == 0) @boolToInt(self.link_error_flags.no_entry_point_found) else total;
925914}
926915
......@@ -931,32 +920,23 @@ pub fn getAllErrorsAlloc(self: *Module) !AllErrors {
931920 var errors = std.ArrayList(AllErrors.Message).init(self.allocator);
932921 defer errors.deinit();
933922
934 {
935 var it = self.failed_files.iterator();
936 while (it.next()) |kv| {
937 const scope = kv.key;
938 const err_msg = kv.value;
939 const source = try scope.getSource(self);
940 try AllErrors.add(&arena, &errors, scope.subFilePath(), source, err_msg.*);
941 }
923 for (self.failed_files.items()) |entry| {
924 const scope = entry.key;
925 const err_msg = entry.value;
926 const source = try scope.getSource(self);
927 try AllErrors.add(&arena, &errors, scope.subFilePath(), source, err_msg.*);
942928 }
943 {
944 var it = self.failed_decls.iterator();
945 while (it.next()) |kv| {
946 const decl = kv.key;
947 const err_msg = kv.value;
948 const source = try decl.scope.getSource(self);
949 try AllErrors.add(&arena, &errors, decl.scope.subFilePath(), source, err_msg.*);
950 }
929 for (self.failed_decls.items()) |entry| {
930 const decl = entry.key;
931 const err_msg = entry.value;
932 const source = try decl.scope.getSource(self);
933 try AllErrors.add(&arena, &errors, decl.scope.subFilePath(), source, err_msg.*);
951934 }
952 {
953 var it = self.failed_exports.iterator();
954 while (it.next()) |kv| {
955 const decl = kv.key.owner_decl;
956 const err_msg = kv.value;
957 const source = try decl.scope.getSource(self);
958 try AllErrors.add(&arena, &errors, decl.scope.subFilePath(), source, err_msg.*);
959 }
935 for (self.failed_exports.items()) |entry| {
936 const decl = entry.key.owner_decl;
937 const err_msg = entry.value;
938 const source = try decl.scope.getSource(self);
939 try AllErrors.add(&arena, &errors, decl.scope.subFilePath(), source, err_msg.*);
960940 }
961941
962942 if (errors.items.len == 0 and self.link_error_flags.no_entry_point_found) {
......@@ -1016,7 +996,7 @@ pub fn performAllTheWork(self: *Module) error{OutOfMemory}!void {
1016996 decl.analysis = .dependency_failure;
1017997 },
1018998 else => {
1019 try self.failed_decls.ensureCapacity(self.failed_decls.size + 1);
999 try self.failed_decls.ensureCapacity(self.failed_decls.items().len + 1);
10201000 self.failed_decls.putAssumeCapacityNoClobber(decl, try ErrorMsg.create(
10211001 self.allocator,
10221002 decl.src(),
......@@ -1086,7 +1066,7 @@ fn ensureDeclAnalyzed(self: *Module, decl: *Decl) InnerError!void {
10861066 error.OutOfMemory => return error.OutOfMemory,
10871067 error.AnalysisFail => return error.AnalysisFail,
10881068 else => {
1089 try self.failed_decls.ensureCapacity(self.failed_decls.size + 1);
1069 try self.failed_decls.ensureCapacity(self.failed_decls.items().len + 1);
10901070 self.failed_decls.putAssumeCapacityNoClobber(decl, try ErrorMsg.create(
10911071 self.allocator,
10921072 decl.src(),
......@@ -1636,7 +1616,7 @@ fn declareDeclDependency(self: *Module, depender: *Decl, dependee: *Decl) !void
16361616fn getSrcModule(self: *Module, root_scope: *Scope.ZIRModule) !*zir.Module {
16371617 switch (root_scope.status) {
16381618 .never_loaded, .unloaded_success => {
1639 try self.failed_files.ensureCapacity(self.failed_files.size + 1);
1619 try self.failed_files.ensureCapacity(self.failed_files.items().len + 1);
16401620
16411621 const source = try root_scope.getSource(self);
16421622
......@@ -1677,7 +1657,7 @@ fn getAstTree(self: *Module, root_scope: *Scope.File) !*ast.Tree {
16771657
16781658 switch (root_scope.status) {
16791659 .never_loaded, .unloaded_success => {
1680 try self.failed_files.ensureCapacity(self.failed_files.size + 1);
1660 try self.failed_files.ensureCapacity(self.failed_files.items().len + 1);
16811661
16821662 const source = try root_scope.getSource(self);
16831663
......@@ -1745,8 +1725,7 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {
17451725 const name = tree.tokenSliceLoc(name_loc);
17461726 const name_hash = root_scope.fullyQualifiedNameHash(name);
17471727 const contents_hash = std.zig.hashSrc(tree.getNodeSource(src_decl));
1748 if (self.decl_table.get(name_hash)) |kv| {
1749 const decl = kv.value;
1728 if (self.decl_table.get(name_hash)) |decl| {
17501729 // Update the AST Node index of the decl, even if its contents are unchanged, it may
17511730 // have been re-ordered.
17521731 decl.src_index = decl_i;
......@@ -1774,14 +1753,11 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {
17741753 // TODO also look for global variable declarations
17751754 // TODO also look for comptime blocks and exported globals
17761755 }
1777 {
1778 // Handle explicitly deleted decls from the source code. Not to be confused
1779 // with when we delete decls because they are no longer referenced.
1780 var it = deleted_decls.iterator();
1781 while (it.next()) |kv| {
1782 //std.debug.warn("noticed '{}' deleted from source\n", .{kv.key.name});
1783 try self.deleteDecl(kv.key);
1784 }
1756 // Handle explicitly deleted decls from the source code. Not to be confused
1757 // with when we delete decls because they are no longer referenced.
1758 for (deleted_decls.items()) |entry| {
1759 //std.debug.warn("noticed '{}' deleted from source\n", .{entry.key.name});
1760 try self.deleteDecl(entry.key);
17851761 }
17861762}
17871763
......@@ -1800,18 +1776,14 @@ fn analyzeRootZIRModule(self: *Module, root_scope: *Scope.ZIRModule) !void {
18001776 // we know which ones have been deleted.
18011777 var deleted_decls = std.AutoHashMap(*Decl, void).init(self.allocator);
18021778 defer deleted_decls.deinit();
1803 try deleted_decls.ensureCapacity(self.decl_table.size);
1804 {
1805 var it = self.decl_table.iterator();
1806 while (it.next()) |kv| {
1807 deleted_decls.putAssumeCapacityNoClobber(kv.value, {});
1808 }
1779 try deleted_decls.ensureCapacity(self.decl_table.items().len);
1780 for (self.decl_table.items()) |entry| {
1781 deleted_decls.putAssumeCapacityNoClobber(entry.value, {});
18091782 }
18101783
18111784 for (src_module.decls) |src_decl, decl_i| {
18121785 const name_hash = root_scope.fullyQualifiedNameHash(src_decl.name);
1813 if (self.decl_table.get(name_hash)) |kv| {
1814 const decl = kv.value;
1786 if (self.decl_table.get(name_hash)) |decl| {
18151787 deleted_decls.removeAssertDiscard(decl);
18161788 //std.debug.warn("'{}' contents: '{}'\n", .{ src_decl.name, src_decl.contents });
18171789 if (!srcHashEql(src_decl.contents_hash, decl.contents_hash)) {
......@@ -1835,14 +1807,11 @@ fn analyzeRootZIRModule(self: *Module, root_scope: *Scope.ZIRModule) !void {
18351807 for (exports_to_resolve.items) |export_decl| {
18361808 _ = try self.resolveZirDecl(&root_scope.base, export_decl);
18371809 }
1838 {
1839 // Handle explicitly deleted decls from the source code. Not to be confused
1840 // with when we delete decls because they are no longer referenced.
1841 var it = deleted_decls.iterator();
1842 while (it.next()) |kv| {
1843 //std.debug.warn("noticed '{}' deleted from source\n", .{kv.key.name});
1844 try self.deleteDecl(kv.key);
1845 }
1810 // Handle explicitly deleted decls from the source code. Not to be confused
1811 // with when we delete decls because they are no longer referenced.
1812 for (deleted_decls.items()) |entry| {
1813 //std.debug.warn("noticed '{}' deleted from source\n", .{entry.key.name});
1814 try self.deleteDecl(entry.key);
18461815 }
18471816}
18481817
......@@ -1888,7 +1857,7 @@ fn deleteDeclExports(self: *Module, decl: *Decl) void {
18881857 const kv = self.export_owners.remove(decl) orelse return;
18891858
18901859 for (kv.value) |exp| {
1891 if (self.decl_exports.get(exp.exported_decl)) |decl_exports_kv| {
1860 if (self.decl_exports.getEntry(exp.exported_decl)) |decl_exports_kv| {
18921861 // Remove exports with owner_decl matching the regenerating decl.
18931862 const list = decl_exports_kv.value;
18941863 var i: usize = 0;
......@@ -1983,7 +1952,7 @@ fn createNewDecl(
19831952 name_hash: Scope.NameHash,
19841953 contents_hash: std.zig.SrcHash,
19851954) !*Decl {
1986 try self.decl_table.ensureCapacity(self.decl_table.size + 1);
1955 try self.decl_table.ensureCapacity(self.decl_table.items().len + 1);
19871956 const new_decl = try self.allocateNewDecl(scope, src_index, contents_hash);
19881957 errdefer self.allocator.destroy(new_decl);
19891958 new_decl.name = try mem.dupeZ(self.allocator, u8, decl_name);
......@@ -2043,7 +2012,7 @@ fn resolveZirDecl(self: *Module, scope: *Scope, src_decl: *zir.Decl) InnerError!
20432012
20442013fn resolveZirDeclHavingIndex(self: *Module, scope: *Scope, src_decl: *zir.Decl, src_index: usize) InnerError!*Decl {
20452014 const name_hash = scope.namespace().fullyQualifiedNameHash(src_decl.name);
2046 const decl = self.decl_table.getValue(name_hash).?;
2015 const decl = self.decl_table.get(name_hash).?;
20472016 decl.src_index = src_index;
20482017 try self.ensureDeclAnalyzed(decl);
20492018 return decl;
......@@ -2148,8 +2117,8 @@ fn analyzeExport(self: *Module, scope: *Scope, src: usize, symbol_name: []const
21482117 else => return self.fail(scope, src, "unable to export type '{}'", .{typed_value.ty}),
21492118 }
21502119
2151 try self.decl_exports.ensureCapacity(self.decl_exports.size + 1);
2152 try self.export_owners.ensureCapacity(self.export_owners.size + 1);
2120 try self.decl_exports.ensureCapacity(self.decl_exports.items().len + 1);
2121 try self.export_owners.ensureCapacity(self.export_owners.items().len + 1);
21532122
21542123 const new_export = try self.allocator.create(Export);
21552124 errdefer self.allocator.destroy(new_export);
......@@ -2168,23 +2137,23 @@ fn analyzeExport(self: *Module, scope: *Scope, src: usize, symbol_name: []const
21682137 // Add to export_owners table.
21692138 const eo_gop = self.export_owners.getOrPut(owner_decl) catch unreachable;
21702139 if (!eo_gop.found_existing) {
2171 eo_gop.kv.value = &[0]*Export{};
2140 eo_gop.entry.value = &[0]*Export{};
21722141 }
2173 eo_gop.kv.value = try self.allocator.realloc(eo_gop.kv.value, eo_gop.kv.value.len + 1);
2174 eo_gop.kv.value[eo_gop.kv.value.len - 1] = new_export;
2175 errdefer eo_gop.kv.value = self.allocator.shrink(eo_gop.kv.value, eo_gop.kv.value.len - 1);
2142 eo_gop.entry.value = try self.allocator.realloc(eo_gop.entry.value, eo_gop.entry.value.len + 1);
2143 eo_gop.entry.value[eo_gop.entry.value.len - 1] = new_export;
2144 errdefer eo_gop.entry.value = self.allocator.shrink(eo_gop.entry.value, eo_gop.entry.value.len - 1);
21762145
21772146 // Add to exported_decl table.
21782147 const de_gop = self.decl_exports.getOrPut(exported_decl) catch unreachable;
21792148 if (!de_gop.found_existing) {
2180 de_gop.kv.value = &[0]*Export{};
2149 de_gop.entry.value = &[0]*Export{};
21812150 }
2182 de_gop.kv.value = try self.allocator.realloc(de_gop.kv.value, de_gop.kv.value.len + 1);
2183 de_gop.kv.value[de_gop.kv.value.len - 1] = new_export;
2184 errdefer de_gop.kv.value = self.allocator.shrink(de_gop.kv.value, de_gop.kv.value.len - 1);
2151 de_gop.entry.value = try self.allocator.realloc(de_gop.entry.value, de_gop.entry.value.len + 1);
2152 de_gop.entry.value[de_gop.entry.value.len - 1] = new_export;
2153 errdefer de_gop.entry.value = self.allocator.shrink(de_gop.entry.value, de_gop.entry.value.len - 1);
21852154
21862155 if (self.symbol_exports.get(symbol_name)) |_| {
2187 try self.failed_exports.ensureCapacity(self.failed_exports.size + 1);
2156 try self.failed_exports.ensureCapacity(self.failed_exports.items().len + 1);
21882157 self.failed_exports.putAssumeCapacityNoClobber(new_export, try ErrorMsg.create(
21892158 self.allocator,
21902159 src,
......@@ -2197,10 +2166,10 @@ fn analyzeExport(self: *Module, scope: *Scope, src: usize, symbol_name: []const
21972166 }
21982167
21992168 try self.symbol_exports.putNoClobber(symbol_name, new_export);
2200 self.bin_file.updateDeclExports(self, exported_decl, de_gop.kv.value) catch |err| switch (err) {
2169 self.bin_file.updateDeclExports(self, exported_decl, de_gop.entry.value) catch |err| switch (err) {
22012170 error.OutOfMemory => return error.OutOfMemory,
22022171 else => {
2203 try self.failed_exports.ensureCapacity(self.failed_exports.size + 1);
2172 try self.failed_exports.ensureCapacity(self.failed_exports.items().len + 1);
22042173 self.failed_exports.putAssumeCapacityNoClobber(new_export, try ErrorMsg.create(
22052174 self.allocator,
22062175 src,
......@@ -2494,7 +2463,7 @@ fn getNextAnonNameIndex(self: *Module) usize {
24942463fn lookupDeclName(self: *Module, scope: *Scope, ident_name: []const u8) ?*Decl {
24952464 const namespace = scope.namespace();
24962465 const name_hash = namespace.fullyQualifiedNameHash(ident_name);
2497 return self.decl_table.getValue(name_hash);
2466 return self.decl_table.get(name_hash);
24982467}
24992468
25002469fn analyzeInstExport(self: *Module, scope: *Scope, export_inst: *zir.Inst.Export) InnerError!*Inst {
......@@ -3489,8 +3458,8 @@ fn failNode(
34893458fn failWithOwnedErrorMsg(self: *Module, scope: *Scope, src: usize, err_msg: *ErrorMsg) InnerError {
34903459 {
34913460 errdefer err_msg.destroy(self.allocator);
3492 try self.failed_decls.ensureCapacity(self.failed_decls.size + 1);
3493 try self.failed_files.ensureCapacity(self.failed_files.size + 1);
3461 try self.failed_decls.ensureCapacity(self.failed_decls.items().len + 1);
3462 try self.failed_files.ensureCapacity(self.failed_files.items().len + 1);
34943463 }
34953464 switch (scope.tag) {
34963465 .decl => {
src-self-hosted/codegen.zig+2-2
......@@ -705,7 +705,7 @@ const Function = struct {
705705 }
706706
707707 fn resolveInst(self: *Function, inst: *ir.Inst) !MCValue {
708 if (self.inst_table.getValue(inst)) |mcv| {
708 if (self.inst_table.get(inst)) |mcv| {
709709 return mcv;
710710 }
711711 if (inst.cast(ir.Inst.Constant)) |const_inst| {
......@@ -713,7 +713,7 @@ const Function = struct {
713713 try self.inst_table.putNoClobber(inst, mcvalue);
714714 return mcvalue;
715715 } else {
716 return self.inst_table.getValue(inst).?;
716 return self.inst_table.get(inst).?;
717717 }
718718 }
719719
src-self-hosted/link.zig+3-3
......@@ -1071,7 +1071,7 @@ pub const ElfFile = struct {
10711071 try self.file.?.pwriteAll(code, file_offset);
10721072
10731073 // Since we updated the vaddr and the size, each corresponding export symbol also needs to be updated.
1074 const decl_exports = module.decl_exports.getValue(decl) orelse &[0]*Module.Export{};
1074 const decl_exports = module.decl_exports.get(decl) orelse &[0]*Module.Export{};
10751075 return self.updateDeclExports(module, decl, decl_exports);
10761076 }
10771077
......@@ -1093,7 +1093,7 @@ pub const ElfFile = struct {
10931093 for (exports) |exp| {
10941094 if (exp.options.section) |section_name| {
10951095 if (!mem.eql(u8, section_name, ".text")) {
1096 try module.failed_exports.ensureCapacity(module.failed_exports.size + 1);
1096 try module.failed_exports.ensureCapacity(module.failed_exports.items().len + 1);
10971097 module.failed_exports.putAssumeCapacityNoClobber(
10981098 exp,
10991099 try Module.ErrorMsg.create(self.allocator, 0, "Unimplemented: ExportOptions.section", .{}),
......@@ -1111,7 +1111,7 @@ pub const ElfFile = struct {
11111111 },
11121112 .Weak => elf.STB_WEAK,
11131113 .LinkOnce => {
1114 try module.failed_exports.ensureCapacity(module.failed_exports.size + 1);
1114 try module.failed_exports.ensureCapacity(module.failed_exports.items().len + 1);
11151115 module.failed_exports.putAssumeCapacityNoClobber(
11161116 exp,
11171117 try Module.ErrorMsg.create(self.allocator, 0, "Unimplemented: GlobalLinkage.LinkOnce", .{}),
src-self-hosted/zir.zig+16-18
......@@ -758,7 +758,7 @@ pub const Module = struct {
758758 }
759759
760760 fn writeInstParamToStream(self: Module, stream: var, inst: *Inst, inst_table: *const InstPtrTable) !void {
761 if (inst_table.getValue(inst)) |info| {
761 if (inst_table.get(inst)) |info| {
762762 if (info.index) |i| {
763763 try stream.print("%{}", .{info.index});
764764 } else {
......@@ -843,7 +843,7 @@ const Parser = struct {
843843 skipSpace(self);
844844 const decl = try parseInstruction(self, &body_context, ident);
845845 const ident_index = body_context.instructions.items.len;
846 if (try body_context.name_map.put(ident, decl.inst)) |_| {
846 if (try body_context.name_map.fetchPut(ident, decl.inst)) |_| {
847847 return self.fail("redefinition of identifier '{}'", .{ident});
848848 }
849849 try body_context.instructions.append(decl.inst);
......@@ -929,7 +929,7 @@ const Parser = struct {
929929 skipSpace(self);
930930 const decl = try parseInstruction(self, null, ident);
931931 const ident_index = self.decls.items.len;
932 if (try self.global_name_map.put(ident, decl.inst)) |_| {
932 if (try self.global_name_map.fetchPut(ident, decl.inst)) |_| {
933933 return self.fail("redefinition of identifier '{}'", .{ident});
934934 }
935935 try self.decls.append(self.allocator, decl);
......@@ -1153,7 +1153,7 @@ const Parser = struct {
11531153 else => continue,
11541154 };
11551155 const ident = self.source[name_start..self.i];
1156 const kv = map.get(ident) orelse {
1156 return map.get(ident) orelse {
11571157 const bad_name = self.source[name_start - 1 .. self.i];
11581158 const src = name_start - 1;
11591159 if (local_ref) {
......@@ -1172,7 +1172,6 @@ const Parser = struct {
11721172 return &declval.base;
11731173 }
11741174 };
1175 return kv.value;
11761175 }
11771176
11781177 fn generateName(self: *Parser) ![]u8 {
......@@ -1219,13 +1218,12 @@ const EmitZIR = struct {
12191218 // by the hash table.
12201219 var src_decls = std.ArrayList(*IrModule.Decl).init(self.allocator);
12211220 defer src_decls.deinit();
1222 try src_decls.ensureCapacity(self.old_module.decl_table.size);
1223 try self.decls.ensureCapacity(self.allocator, self.old_module.decl_table.size);
1224 try self.names.ensureCapacity(self.old_module.decl_table.size);
1221 try src_decls.ensureCapacity(self.old_module.decl_table.items().len);
1222 try self.decls.ensureCapacity(self.allocator, self.old_module.decl_table.items().len);
1223 try self.names.ensureCapacity(self.old_module.decl_table.items().len);
12251224
1226 var decl_it = self.old_module.decl_table.iterator();
1227 while (decl_it.next()) |kv| {
1228 const decl = kv.value;
1225 for (self.old_module.decl_table.items()) |entry| {
1226 const decl = entry.value;
12291227 src_decls.appendAssumeCapacity(decl);
12301228 self.names.putAssumeCapacityNoClobber(mem.spanZ(decl.name), {});
12311229 }
......@@ -1248,7 +1246,7 @@ const EmitZIR = struct {
12481246 .codegen_failure,
12491247 .dependency_failure,
12501248 .codegen_failure_retryable,
1251 => if (self.old_module.failed_decls.getValue(ir_decl)) |err_msg| {
1249 => if (self.old_module.failed_decls.get(ir_decl)) |err_msg| {
12521250 const fail_inst = try self.arena.allocator.create(Inst.CompileError);
12531251 fail_inst.* = .{
12541252 .base = .{
......@@ -1270,7 +1268,7 @@ const EmitZIR = struct {
12701268 continue;
12711269 },
12721270 }
1273 if (self.old_module.export_owners.getValue(ir_decl)) |exports| {
1271 if (self.old_module.export_owners.get(ir_decl)) |exports| {
12741272 for (exports) |module_export| {
12751273 const symbol_name = try self.emitStringLiteral(module_export.src, module_export.options.name);
12761274 const export_inst = try self.arena.allocator.create(Inst.Export);
......@@ -1314,7 +1312,7 @@ const EmitZIR = struct {
13141312 try new_body.inst_table.putNoClobber(inst, new_inst);
13151313 return new_inst;
13161314 } else {
1317 return new_body.inst_table.getValue(inst).?;
1315 return new_body.inst_table.get(inst).?;
13181316 }
13191317 }
13201318
......@@ -1424,7 +1422,7 @@ const EmitZIR = struct {
14241422 try self.emitBody(body, &inst_table, &instructions);
14251423 },
14261424 .sema_failure => {
1427 const err_msg = self.old_module.failed_decls.getValue(module_fn.owner_decl).?;
1425 const err_msg = self.old_module.failed_decls.get(module_fn.owner_decl).?;
14281426 const fail_inst = try self.arena.allocator.create(Inst.CompileError);
14291427 fail_inst.* = .{
14301428 .base = .{
......@@ -1841,7 +1839,7 @@ const EmitZIR = struct {
18411839 self.next_auto_name += 1;
18421840 const gop = try self.names.getOrPut(proposed_name);
18431841 if (!gop.found_existing) {
1844 gop.kv.value = {};
1842 gop.entry.value = {};
18451843 return proposed_name;
18461844 }
18471845 }
......@@ -1861,9 +1859,9 @@ const EmitZIR = struct {
18611859 },
18621860 .kw_args = .{},
18631861 };
1864 gop.kv.value = try self.emitUnnamedDecl(&primitive_inst.base);
1862 gop.entry.value = try self.emitUnnamedDecl(&primitive_inst.base);
18651863 }
1866 return gop.kv.value;
1864 return gop.entry.value;
18671865 }
18681866
18691867 fn emitStringLiteral(self: *EmitZIR, src: usize, str: []const u8) !*Decl {