Skip to content

Commit 95731d9

Browse files
committed
ZJIT: Add display nicknames for common integer ranges
1 parent 525252f commit 95731d9

2 files changed

Lines changed: 18 additions & 7 deletions

File tree

zjit/src/hir/opt_tests.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14367,7 +14367,7 @@ mod hir_opt_tests {
1436714367
v28:BasicObject = InvokeBuiltin <inline_expr>, v23
1436814368
CheckInterrupts
1436914369
Return v28
14370-
bb8(v48:BasicObject, v49:Fixnum[0..=4611686018427387903]):
14370+
bb8(v48:BasicObject, v49:Fixnum[Nonnegative]):
1437114371
v84:Array = RefineType v48, Array
1437214372
v85:CInt64 = ArrayLength v84
1437314373
v86:Fixnum = BoxFixnum v85
@@ -14376,13 +14376,13 @@ mod hir_opt_tests {
1437614376
IfFalse v54, bb7(v48, v49)
1437714377
CheckInterrupts
1437814378
Return v48
14379-
bb7(v67:BasicObject, v68:Fixnum[0..=4611686018427387903]):
14379+
bb7(v67:BasicObject, v68:Fixnum[Nonnegative]):
1438014380
v88:Array = RefineType v67, Array
1438114381
v89:CInt64 = UnboxFixnum v68
1438214382
v90:BasicObject = ArrayAref v88, v89
1438314383
v74:BasicObject = InvokeBlock, v90 # SendFallbackReason: Uncategorized(invokeblock)
1438414384
v91:Fixnum[1] = Const Value(1)
14385-
v92:Fixnum[1..=4611686018427387903] = FixnumAdd v68, v91
14385+
v92:Fixnum[Positive] = FixnumAdd v68, v91
1438614386
PatchPoint NoEPEscape(each)
1438714387
Jump bb8(v67, v92)
1438814388
");
@@ -14559,7 +14559,7 @@ mod hir_opt_tests {
1455914559
v13:Fixnum[0] = Const Value(0)
1456014560
CheckInterrupts
1456114561
Jump bb5(v8, v13)
14562-
bb5(v19:BasicObject, v20:Fixnum[0..=4611686018427387903]):
14562+
bb5(v19:BasicObject, v20:Fixnum[Nonnegative]):
1456314563
v24:Fixnum[5] = Const Value(5)
1456414564
PatchPoint MethodRedefined(Integer@0x1000, <@0x1008, cme:0x1010)
1456514565
v57:BoolExact = FixnumLt v20, v24
@@ -14568,10 +14568,10 @@ mod hir_opt_tests {
1456814568
IfTrue v30, bb4(v19, v20)
1456914569
CheckInterrupts
1457014570
Return v20
14571-
bb4(v43:BasicObject, v44:Fixnum[0..=4611686018427387903]):
14571+
bb4(v43:BasicObject, v44:Fixnum[Nonnegative]):
1457214572
PatchPoint MethodRedefined(Integer@0x1000, succ@0x1038, cme:0x1040)
1457314573
v61:Fixnum[1] = Const Value(1)
14574-
v62:Fixnum[1..=4611686018427387903] = FixnumAdd v44, v61
14574+
v62:Fixnum[Positive] = FixnumAdd v44, v61
1457514575
Jump bb5(v43, v62)
1457614576
");
1457714577
}

zjit/src/hir_type/mod.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,18 @@ fn write_spec(f: &mut std::fmt::Formatter, printer: &TypePrinter) -> std::fmt::R
105105
Specialization::Int(val) if ty.is_subtype(types::CPtr) => write!(f, "[{}]", Const::CPtr(val as *const u8).print(printer.ptr_map)),
106106
Specialization::Int(val) => write!(f, "[{val}]"),
107107
Specialization::Double(val) => write!(f, "[{val}]"),
108-
Specialization::Range(lo, hi) => write!(f, "[{lo}..={hi}]"),
108+
Specialization::Range(lo, hi) => {
109+
use crate::cruby::{RUBY_FIXNUM_MIN, RUBY_FIXNUM_MAX};
110+
let fmin = RUBY_FIXNUM_MIN as i64;
111+
let fmax = RUBY_FIXNUM_MAX as i64;
112+
match (lo, hi) {
113+
(0, h) if h == fmax => write!(f, "[Nonnegative]"),
114+
(1, h) if h == fmax => write!(f, "[Positive]"),
115+
(l, -1) if l == fmin => write!(f, "[Negative]"),
116+
(l, 0) if l == fmin => write!(f, "[Nonpositive]"),
117+
_ => write!(f, "[{lo}..={hi}]"),
118+
}
119+
}
109120
}
110121
}
111122

0 commit comments

Comments
 (0)