diff options
Diffstat (limited to 'lib/ruby_vm/mjit/jit_state.rb')
-rw-r--r-- | lib/ruby_vm/mjit/jit_state.rb | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/ruby_vm/mjit/jit_state.rb b/lib/ruby_vm/mjit/jit_state.rb index 3e5fe996fa..aec4e51c48 100644 --- a/lib/ruby_vm/mjit/jit_state.rb +++ b/lib/ruby_vm/mjit/jit_state.rb @@ -13,9 +13,13 @@ module RubyVM::MJIT Compiler.decode_insn(C.VALUE.new(pc).*) end - def operand(index, signed: false) + def operand(index, signed: false, ruby: false) addr = pc + (index + 1) * Fiddle::SIZEOF_VOIDP - Fiddle::Pointer.new(addr)[0, Fiddle::SIZEOF_VOIDP].unpack(signed ? 'q' : 'Q')[0] + value = Fiddle::Pointer.new(addr)[0, Fiddle::SIZEOF_VOIDP].unpack(signed ? 'q' : 'Q')[0] + if ruby + value = C.to_ruby(value) + end + value end def at_current_insn? |