%# -*- mode:c; style:ruby; coding: utf-8; indent-tabs-mode: nil -*- %# Copyright (c) 2017 Urabe, Shyouhei. All rights reserved. %# %# This file is a part of the programming language Ruby. Permission is hereby %# granted, to either redistribute and/or modify this file, provided that the %# conditions mentioned in the file COPYING are met. Consult the file for %# details. CONSTFUNC(MAYBE_UNUSED(static const char *insn_name(VALUE insn))); const char * insn_name(VALUE i) { static const unsigned short o[] = { % a = RubyVM::Instructions.map {|i| i.name } % o = 0 % a.each_slice 12 do |b| <%= b.map {|i| j = o; o += i.size + 1; sprintf("%4d", j) }.join(', ') %>, % end }; static const char t[] = { % a.each_slice 2 do |b| <%= b.map {|i| sprintf("%-30s", cstr(i)) }.join(' "\0" ') %> "\0" % end }; ASSERT_VM_INSTRUCTION_SIZE(o); return &t[o[i]]; }