Skip to content

Commit ee3949a

Browse files
aidenfoxiveyk0kubun
authored andcommitted
Improve register alloc and dealloc error messaging (Shopify/zjit#90)
1 parent a9809a6 commit ee3949a

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

zjit/src/backend/lir.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,7 +1022,8 @@ impl RegisterPool {
10221022

10231023
/// Allocate a specific register
10241024
fn take_reg(&mut self, reg: &Reg, vreg_idx: usize) -> Reg {
1025-
let reg_idx = self.regs.iter().position(|elem| elem.reg_no == reg.reg_no).unwrap();
1025+
let reg_idx = self.regs.iter().position(|elem| elem.reg_no == reg.reg_no)
1026+
.unwrap_or_else(|| panic!("Unable to find register: {}", reg.reg_no));
10261027
assert_eq!(self.pool[reg_idx], None, "register already allocated");
10271028
self.pool[reg_idx] = Some(vreg_idx);
10281029
self.live_regs += 1;
@@ -1032,7 +1033,8 @@ impl RegisterPool {
10321033
// Mutate the pool to indicate that the given register is being returned
10331034
// as it is no longer used by the instruction that previously held it.
10341035
fn dealloc_reg(&mut self, reg: &Reg) {
1035-
let reg_idx = self.regs.iter().position(|elem| elem.reg_no == reg.reg_no).unwrap();
1036+
let reg_idx = self.regs.iter().position(|elem| elem.reg_no == reg.reg_no)
1037+
.unwrap_or_else(|| panic!("Unable to find register: {}", reg.reg_no));
10361038
if self.pool[reg_idx].is_some() {
10371039
self.pool[reg_idx] = None;
10381040
self.live_regs -= 1;

0 commit comments

Comments
 (0)