From d5752f73d2288f5ccce0ff6015d929227b914588 Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Wed, 7 Sep 2022 06:21:00 +0900 Subject: [PATCH] Add another method for debugging --- mjit_compiler.rb | 6 ++++++ 1 file changed, 6 insertions(+) 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)))'