diff options
Diffstat (limited to 'tool/mk_builtin_binary.rb')
-rw-r--r-- | tool/mk_builtin_binary.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tool/mk_builtin_binary.rb b/tool/mk_builtin_binary.rb new file mode 100644 index 0000000000..a5c962d5c1 --- /dev/null +++ b/tool/mk_builtin_binary.rb @@ -0,0 +1,33 @@ +# +# make builtin_binary.inc file. +# + +def dump_bin iseq + bin = iseq.to_binary + bin.each_byte.with_index{|b, index| + print "\n " if (index%20) == 0 + print "0x#{'%02x' % b.ord}, " + } +end + +ary = [] +RubyVM::each_builtin{|feature, iseq| + ary << [feature, iseq] +} + +$stdout = open('builtin_binary.inc', 'wb') + +ary.each{|feature, iseq| + puts "static const unsigned char #{feature}_bin[] = {" + dump_bin(iseq) + puts "};" +} + +puts "static const struct builtin_binary builtin_binary[] = {" +ary.each{|feature, iseq| + puts " {#{feature.dump}, #{feature}_bin, sizeof(#{feature}_bin)}," +} +puts " {NULL}," # dummy sentry +puts "};" + +puts "#define BUILTIN_BINARY_SIZE #{ary.size}" |