summaryrefslogtreecommitdiff
path: root/iseq.c
diff options
context:
space:
mode:
Diffstat (limited to 'iseq.c')
-rw-r--r--iseq.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/iseq.c b/iseq.c
index 1860cb12f9..b6d8c7224a 100644
--- a/iseq.c
+++ b/iseq.c
@@ -189,23 +189,16 @@ rb_iseq_each_value(const rb_iseq_t *iseq, iseq_value_itr_t * func, void *data)
unsigned int size;
VALUE *code;
size_t n;
- rb_vm_insns_translator_t * translator;
+ rb_vm_insns_translator_t *const translator =
+#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
+ (FL_TEST(iseq, ISEQ_TRANSLATED)) ? rb_vm_insn_addr2insn2 :
+#endif
+ rb_vm_insn_null_translator;
const struct rb_iseq_constant_body *const body = iseq->body;
size = body->iseq_size;
code = body->iseq_encoded;
-#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
- if (FL_TEST(iseq, ISEQ_TRANSLATED)) {
- translator = rb_vm_insn_addr2insn2;
- }
- else {
- translator = rb_vm_insn_null_translator;
- }
-#else
- translator = rb_vm_insn_null_translator;
-#endif
-
for (n = 0; n < size;) {
n += iseq_extract_values(code, n, func, data, translator);
}