summaryrefslogtreecommitdiff
path: root/template/builtin_binary.rbbin.tmpl
diff options
context:
space:
mode:
Diffstat (limited to 'template/builtin_binary.rbbin.tmpl')
-rw-r--r--template/builtin_binary.rbbin.tmpl35
1 files changed, 35 insertions, 0 deletions
diff --git a/template/builtin_binary.rbbin.tmpl b/template/builtin_binary.rbbin.tmpl
new file mode 100644
index 0000000000..df835bbbf9
--- /dev/null
+++ b/template/builtin_binary.rbbin.tmpl
@@ -0,0 +1,35 @@
+// -*- c -*-
+// DO NOT MODIFY THIS FILE DIRECTLY.
+// auto-generated file by tool/generic_erb.rb
+// with template/builtin_binary.rbbin.tmpl
+% unless ARGV.include?('--cross=yes')
+% ary = RubyVM.enum_for(:each_builtin).to_a
+% ary.each{|feature, iseq|
+% bin = iseq.to_binary
+
+static const union {
+ unsigned char binary[<%= bin.bytesize %>];
+ uint32_t align_as_ibf_header;
+} <%= feature %>_builtin = {
+ .binary = {
+% bin \
+% . each_byte \
+% . each_slice(12) {|a|
+ <%= a.map{ '0x%02x,' % _1 }.join(' ') %>
+% }
+ }
+};
+% }
+
+#define BUILTIN_BIN(feature) \
+ { #feature, feature ## _builtin.binary, sizeof(feature ## _builtin.binary), }
+static const struct builtin_binary builtin_binary[] = {
+% ary.each{|feature, |
+ BUILTIN_BIN(<%= feature %>),
+% }
+ { NULL, },/* sentinel */
+};
+
+#define BUILTIN_BINARY_SIZE <%= ary.size %>
+STATIC_ASSERT(n_builtin, numberof(builtin_binary) == BUILTIN_BINARY_SIZE + 1);
+% end