diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2025-01-16 04:20:41 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-16 04:20:41 -0500 |
| commit | d4fe4698d9ff865ed1dc7e0163f2d5fcbe2b45a6 (patch) | |
| tree | 160d596e8ab0ab9568dac3f026c2ce42ad1c935e /src/register_manager.zig | |
| parent | 77273103a8f9895ceab28287dffcf4d4c6fcb91b (diff) | |
| parent | eda8b6e137a10f398cd292b533e924960f7fc409 (diff) | |
| download | zig-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.zig | 23 |
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); } |
