From 070caf54d2a17168d3de05aa1633979c8545f8f4 Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Wed, 2 Jun 2021 01:16:49 -0700 Subject: Refactor rb_vm_insn_addr2insn calls It's been a way too much amount of ifdefs. --- iseq.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'iseq.c') diff --git a/iseq.c b/iseq.c index fdaf55ced0..4ad1fc23be 100644 --- a/iseq.c +++ b/iseq.c @@ -3192,6 +3192,18 @@ rb_vm_insn_addr2insn(const void *addr) rb_bug("rb_vm_insn_addr2insn: invalid insn address: %p", addr); } +// Decode `iseq->body->iseq_encoded[i]` to an insn. +int +rb_vm_insn_decode(const VALUE encoded) +{ +#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE + int insn = rb_vm_insn_addr2insn((void *)encoded); +#else + int insn = (int)encoded; +#endif + return insn; +} + static inline int encoded_iseq_trace_instrument(VALUE *iseq_encoded_insn, rb_event_flag_t turnon, bool remain_current_trace) { -- cgit v1.2.3