aboutsummaryrefslogtreecommitdiff
path: root/src/register_manager.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-01-16 04:20:41 -0500
committerGitHub <noreply@github.com>2025-01-16 04:20:41 -0500
commitd4fe4698d9ff865ed1dc7e0163f2d5fcbe2b45a6 (patch)
tree160d596e8ab0ab9568dac3f026c2ce42ad1c935e /src/register_manager.zig
parent77273103a8f9895ceab28287dffcf4d4c6fcb91b (diff)
parenteda8b6e137a10f398cd292b533e924960f7fc409 (diff)
downloadzig-d4fe4698d9ff865ed1dc7e0163f2d5fcbe2b45a6.tar.gz
zig-d4fe4698d9ff865ed1dc7e0163f2d5fcbe2b45a6.zip
Merge pull request #22220 from ziglang/wasm-linker
wasm linker: aggressive rewrite towards Data-Oriented Design
Diffstat (limited to 'src/register_manager.zig')
-rw-r--r--src/register_manager.zig23
1 files changed, 9 insertions, 14 deletions
diff --git a/src/register_manager.zig b/src/register_manager.zig
index c24cda6cf5..48b12a59d2 100644
--- a/src/register_manager.zig
+++ b/src/register_manager.zig
@@ -14,19 +14,14 @@ const link = @import("link.zig");
const log = std.log.scoped(.register_manager);
-pub const AllocateRegistersError = error{
- /// No registers are available anymore
+pub const AllocationError = error{
OutOfRegisters,
- /// Can happen when spilling an instruction in codegen runs out of
- /// memory, so we propagate that error
OutOfMemory,
- /// Can happen when spilling an instruction in codegen triggers integer
- /// overflow, so we propagate that error
+ /// Compiler was asked to operate on a number larger than supported.
Overflow,
- /// Can happen when spilling an instruction triggers a codegen
- /// error, so we propagate that error
+ /// Indicates the error is already stored in `failed_codegen` on the Zcu.
CodegenFail,
-} || link.File.UpdateDebugInfoError;
+};
pub fn RegisterManager(
comptime Function: type,
@@ -281,7 +276,7 @@ pub fn RegisterManager(
comptime count: comptime_int,
insts: [count]?Air.Inst.Index,
register_class: RegisterBitSet,
- ) AllocateRegistersError![count]Register {
+ ) AllocationError![count]Register {
comptime assert(count > 0 and count <= tracked_registers.len);
var locked_registers = self.locked_registers;
@@ -338,7 +333,7 @@ pub fn RegisterManager(
self: *Self,
inst: ?Air.Inst.Index,
register_class: RegisterBitSet,
- ) AllocateRegistersError!Register {
+ ) AllocationError!Register {
return (try self.allocRegs(1, .{inst}, register_class))[0];
}
@@ -349,7 +344,7 @@ pub fn RegisterManager(
self: *Self,
tracked_index: TrackedIndex,
inst: ?Air.Inst.Index,
- ) AllocateRegistersError!void {
+ ) AllocationError!void {
log.debug("getReg {} for inst {?}", .{ regAtTrackedIndex(tracked_index), inst });
if (!self.isRegIndexFree(tracked_index)) {
// Move the instruction that was previously there to a
@@ -362,7 +357,7 @@ pub fn RegisterManager(
}
self.getRegIndexAssumeFree(tracked_index, inst);
}
- pub fn getReg(self: *Self, reg: Register, inst: ?Air.Inst.Index) AllocateRegistersError!void {
+ pub fn getReg(self: *Self, reg: Register, inst: ?Air.Inst.Index) AllocationError!void {
log.debug("getting reg: {}", .{reg});
return self.getRegIndex(indexOfRegIntoTracked(reg) orelse return, inst);
}
@@ -370,7 +365,7 @@ pub fn RegisterManager(
self: *Self,
comptime reg: Register,
inst: ?Air.Inst.Index,
- ) AllocateRegistersError!void {
+ ) AllocationError!void {
return self.getRegIndex((comptime indexOfRegIntoTracked(reg)) orelse return, inst);
}