diff options
author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-23 08:32:30 +0000 |
---|---|---|
committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-23 08:32:30 +0000 |
commit | d574683c40d42c1ec834c99c2717cbd8de442353 (patch) | |
tree | 1fcdc749e929fe7d036d1dd6a8e969041e669792 /compile.c | |
parent | bf6e2eb7e7ca144dc8a71d87d36edb0d852519a2 (diff) |
iseq.c: add a map from encoded insn to insn data
This enhances rb_vm_insn_addr2insn which retrieves a decoded insn number
from encoded insn.
The insn data table include not only decoded insn number, but also its
len, trace and non-trace version of encoded insn.
This table can be used to simplify trace instrumentation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'compile.c')
-rw-r--r-- | compile.c | 29 |
1 files changed, 0 insertions, 29 deletions
@@ -746,35 +746,6 @@ rb_iseq_translate_threaded_code(rb_iseq_t *iseq) return COMPILE_OK; } -#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE -static st_table *addr2insn; - -void -rb_addr2insn_init(void) -{ - const void * const *table = rb_vm_get_insns_address_table(); - st_data_t insn; - - addr2insn = st_init_numtable_with_size(VM_INSTRUCTION_SIZE); - for (insn = 0; insn < VM_INSTRUCTION_SIZE; insn++) { - st_add_direct(addr2insn, (st_data_t)table[insn], insn); - } -} - -int -rb_vm_insn_addr2insn(const void *addr) -{ - st_data_t key = (st_data_t)addr; - st_data_t val; - - if (st_lookup(addr2insn, key, &val)) { - return (int)val; - } - - rb_bug("rb_vm_insn_addr2insn: invalid insn address: %p", addr); -} -#endif /* OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE */ - VALUE * rb_iseq_original_iseq(const rb_iseq_t *iseq) /* cold path */ { |