authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-24 15:41:59-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-24 15:41:59-07:00
log16d54c70eb35b58e871c538bf172991aa81191fe
tree7c3df86465e4319d4ed1b237d6b0f1fa3f166e81
parent5de9aac7491958806164f46c356fce983b1c8624

stage2: getErrorValue takes advantage of HashMap getOrPut API


1 files changed, 8 insertions(+), 8 deletions(-)

src-self-hosted/Module.zig+8-8
...@@ -2082,14 +2082,14 @@ fn createNewDecl(...@@ -2082,14 +2082,14 @@ fn createNewDecl(
20822082
2083/// Get error value for error tag `name`.2083/// Get error value for error tag `name`.
2084pub fn getErrorValue(self: *Module, name: []const u8) !std.StringHashMapUnmanaged(u16).Entry {2084pub fn getErrorValue(self: *Module, name: []const u8) !std.StringHashMapUnmanaged(u16).Entry {
2085 const new_val = @intCast(u16, self.global_error_set.items().len);2085 const gop = try self.global_error_set.getOrPut(self.gpa, name);
2086 if (self.global_error_set.getEntry(name)) |some| return some.*;2086 if (gop.found_existing)
20872087 return gop.entry.*;
2088 const duped = try self.gpa.dupe(u8, name);2088 errdefer self.global_error_set.removeAssertDiscard(name);
2089 errdefer self.gpa.free(duped);2089
20902090 gop.entry.key = try self.gpa.dupe(u8, name);
2091 try self.global_error_set.put(self.gpa, duped, new_val);2091 gop.entry.value = @intCast(u16, self.global_error_set.items().len - 1);
2092 return self.global_error_set.getEntry(duped).?.*;2092 return gop.entry.*;
2093}2093}
20942094
2095/// TODO split this into `requireRuntimeBlock` and `requireFunctionBlock` and audit callsites.2095/// TODO split this into `requireRuntimeBlock` and `requireFunctionBlock` and audit callsites.