summaryrefslogtreecommitdiff
path: root/template
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2025-04-06 12:24:23 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2025-04-06 12:24:23 +0900
commite25889951f39aff6e3c16ecee10e678912454e69 (patch)
treee221c92e4e7723014807c683ca3a20cd8b4dad4e /template
parentb5ac483d9546f5e3bc8d72ef3efb8c90c9452069 (diff)
Ensure builtin binaries are aligned to ibf_header
Since IBF result string size should be multiple of 4, this should not increase the binary size actually.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/13075
Diffstat (limited to 'template')
-rw-r--r--template/builtin_binary.inc.tmpl15
1 files changed, 10 insertions, 5 deletions
diff --git a/template/builtin_binary.inc.tmpl b/template/builtin_binary.inc.tmpl
index 2c2f071705..1e3fc63680 100644
--- a/template/builtin_binary.inc.tmpl
+++ b/template/builtin_binary.inc.tmpl
@@ -5,19 +5,24 @@
% unless ARGV.include?('--cross=yes')
% ary = RubyVM.enum_for(:each_builtin).to_a
% ary.each{|feature, iseq|
+% bin = iseq.to_binary
-static const unsigned char <%= feature %>_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(' ') %>
+ <%= a.map{ '0x%02x,' % _1 }.join(' ') %>
% }
+ }
};
% }
#define BUILTIN_BIN(feature) \
- { #feature, feature ## _bin, sizeof(feature ## _bin), }
+ { #feature, feature ## _builtin.binary, sizeof(feature ## _builtin.binary), }
static const struct builtin_binary builtin_binary[] = {
% ary.each{|feature, |
BUILTIN_BIN(<%= feature %>),