diff options
| author | Max Bernstein <max.bernstein@shopify.com> | 2025-02-06 15:37:49 -0500 |
|---|---|---|
| committer | Takashi Kokubun <takashikkbn@gmail.com> | 2025-04-18 21:52:56 +0900 |
| commit | 518a387d6c5ca72eab09eaea8091234cd86132e8 (patch) | |
| tree | aa64d33a1c70c52fde6931d18bfe590c6b253508 | |
| parent | 5f199c8f4b217a3b931fc5335fe79fe0e34ffd95 (diff) | |
Pretty print fixnum
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/13131
| -rw-r--r-- | zjit/src/cruby.rs | 5 | ||||
| -rw-r--r-- | zjit/src/ir.rs | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/zjit/src/cruby.rs b/zjit/src/cruby.rs index 709f60bcd0..4f2e881f36 100644 --- a/zjit/src/cruby.rs +++ b/zjit/src/cruby.rs @@ -466,6 +466,11 @@ impl VALUE { } } + pub fn as_fixnum(self) -> i64 { + assert!(self.fixnum_p()); + (self.0 >> 1) as i64 + } + pub fn as_isize(self) -> isize { let VALUE(is) = self; is as isize diff --git a/zjit/src/ir.rs b/zjit/src/ir.rs index ad198f2fca..28ac98e5ea 100644 --- a/zjit/src/ir.rs +++ b/zjit/src/ir.rs @@ -32,6 +32,7 @@ enum Opnd { impl std::fmt::Display for Opnd { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { match self { + Opnd::Const(val) if val.fixnum_p() => write!(f, "Fixnum({})", val.as_fixnum()), Opnd::Const(val) => write!(f, "Const({:?})", val.as_ptr::<u8>()), Opnd::Insn(insn_id) => write!(f, "{insn_id}"), } |
