aboutsummaryrefslogtreecommitdiffstats
path: root/mjit_compiler.rb
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2022-09-07 06:21:00 +0900
committerTakashi Kokubun <takashikkbn@gmail.com>2022-09-07 06:21:13 +0900
commitd5752f73d2288f5ccce0ff6015d929227b914588 (patch)
tree0c7e21149e94c7717d7d807c046f75010cddfe94 /mjit_compiler.rb
parent4c1f6750f2c333be2adf7ceab644598b230606d2 (diff)
downloadruby-d5752f73d2288f5ccce0ff6015d929227b914588.tar.gz
Add another method for debugging
Diffstat (limited to 'mjit_compiler.rb')
-rw-r--r--mjit_compiler.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/mjit_compiler.rb b/mjit_compiler.rb
index 77dcf7ef51..9e032fc747 100644
--- a/mjit_compiler.rb
+++ b/mjit_compiler.rb
@@ -90,10 +90,16 @@ if RubyVM::MJIT.enabled?
}
end
+ # Convert encoded VM pointers to insn BINs.
def rb_vm_insn_decode(encoded)
Primitive.cexpr! 'INT2NUM(rb_vm_insn_decode(NUM2PTR(encoded)))'
end
+ # Convert insn BINs to encoded VM pointers. This one is not used by the compiler, but useful for debugging.
+ def rb_vm_insn_encode(bin)
+ Primitive.cexpr! 'PTR2NUM((VALUE)rb_vm_get_insns_address_table()[NUM2INT(bin)])'
+ end
+
def insn_may_depend_on_sp_or_pc(insn, opes)
_opes_addr = opes.to_i
Primitive.cexpr! 'RBOOL(insn_may_depend_on_sp_or_pc(NUM2INT(insn), (VALUE *)NUM2PTR(_opes_addr)))'