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