summaryrefslogtreecommitdiff
path: root/tool/mk_builtin_binary.rb
diff options
context:
space:
mode:
Diffstat (limited to 'tool/mk_builtin_binary.rb')
-rw-r--r--tool/mk_builtin_binary.rb33
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}"