1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Add another method for debugging

This commit is contained in:
Takashi Kokubun 2022-09-07 06:21:00 +09:00
parent 4c1f6750f2
commit d5752f73d2
No known key found for this signature in database
GPG key ID: 6FFC433B12EE23DD

View file

@ -90,10 +90,16 @@ if RubyVM::MJIT.enabled?
} }
end end
# Convert encoded VM pointers to insn BINs.
def rb_vm_insn_decode(encoded) def rb_vm_insn_decode(encoded)
Primitive.cexpr! 'INT2NUM(rb_vm_insn_decode(NUM2PTR(encoded)))' Primitive.cexpr! 'INT2NUM(rb_vm_insn_decode(NUM2PTR(encoded)))'
end 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) def insn_may_depend_on_sp_or_pc(insn, opes)
_opes_addr = opes.to_i _opes_addr = opes.to_i
Primitive.cexpr! 'RBOOL(insn_may_depend_on_sp_or_pc(NUM2INT(insn), (VALUE *)NUM2PTR(_opes_addr)))' Primitive.cexpr! 'RBOOL(insn_may_depend_on_sp_or_pc(NUM2INT(insn), (VALUE *)NUM2PTR(_opes_addr)))'