summaryrefslogtreecommitdiff
path: root/lib/ruby_vm/mjit/jit_state.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ruby_vm/mjit/jit_state.rb')
-rw-r--r--lib/ruby_vm/mjit/jit_state.rb8
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?