diff options
Diffstat (limited to 'tool/ruby_vm/views/_insn_len_info.erb')
-rw-r--r-- | tool/ruby_vm/views/_insn_len_info.erb | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/tool/ruby_vm/views/_insn_len_info.erb b/tool/ruby_vm/views/_insn_len_info.erb index b292f42fb5..569dca5845 100644 --- a/tool/ruby_vm/views/_insn_len_info.erb +++ b/tool/ruby_vm/views/_insn_len_info.erb @@ -7,15 +7,22 @@ %# details. CONSTFUNC(MAYBE_UNUSED(static int insn_len(VALUE insn))); -int -insn_len(VALUE i) -{ - static const char t[] = { +RUBY_SYMBOL_EXPORT_BEGIN /* for debuggers */ +extern const uint8_t rb_vm_insn_len_info[VM_INSTRUCTION_SIZE]; +RUBY_SYMBOL_EXPORT_END + +#ifdef RUBY_VM_INSNS_INFO +const uint8_t rb_vm_insn_len_info[] = { % RubyVM::Instructions.each_slice 23 do |a| - <%= a.map(&:width).join(', ') -%>, + <%= a.map(&:width).join(', ') -%>, % end - }; +}; - ASSERT_VM_INSTRUCTION_SIZE(t); - return t[i]; +ASSERT_VM_INSTRUCTION_SIZE(rb_vm_insn_len_info); +#endif + +int +insn_len(VALUE i) +{ + return rb_vm_insn_len_info[i]; } |