mirror of
https://github.com/ziglang/zig.git
synced 2026-02-12 20:37:54 +00:00
stage2: remove value field from error
This saves memory and from what I have heard allows threading to be easier.
This commit is contained in:
parent
1f17221bc4
commit
58b14d01ae
@ -4101,7 +4101,6 @@ pub fn namedFieldPtr(
|
||||
scope.arena(),
|
||||
try Value.Tag.@"error".create(scope.arena(), .{
|
||||
.name = entry.key,
|
||||
.value = entry.value,
|
||||
}),
|
||||
),
|
||||
});
|
||||
|
||||
@ -1561,7 +1561,6 @@ pub const Value = extern union {
|
||||
.@"error" => {
|
||||
const payload = self.castTag(.@"error").?.data;
|
||||
hasher.update(payload.name);
|
||||
std.hash.autoHash(&hasher, payload.value);
|
||||
},
|
||||
.error_union => {
|
||||
const payload = self.castTag(.error_union).?.data;
|
||||
@ -2157,7 +2156,6 @@ pub const Value = extern union {
|
||||
/// duration of the compilation.
|
||||
/// TODO revisit this when we have the concept of the error tag type
|
||||
name: []const u8,
|
||||
value: u16,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -1178,7 +1178,6 @@ fn zirErrorValue(mod: *Module, scope: *Scope, inst: *zir.Inst.ErrorValue) InnerE
|
||||
.ty = result_type,
|
||||
.val = try Value.Tag.@"error".create(scope.arena(), .{
|
||||
.name = entry.key,
|
||||
.value = entry.value,
|
||||
}),
|
||||
});
|
||||
}
|
||||
@ -2215,7 +2214,8 @@ fn zirCmp(
|
||||
}
|
||||
if (rhs.value()) |rval| {
|
||||
if (lhs.value()) |lval| {
|
||||
return mod.constBool(scope, inst.base.src, (lval.castTag(.@"error").?.data.value == rval.castTag(.@"error").?.data.value) == (op == .eq));
|
||||
// TODO optimisation oppurtunity: evaluate if std.mem.eql is faster with the names, or calling to Module.getErrorValue to get the values and then compare them is faster
|
||||
return mod.constBool(scope, inst.base.src, std.mem.eql(u8, lval.castTag(.@"error").?.data.name, rval.castTag(.@"error").?.data.name) == (op == .eq));
|
||||
}
|
||||
}
|
||||
return mod.fail(scope, inst.base.src, "TODO implement equality comparison between runtime errors", .{});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user