aboutsummaryrefslogtreecommitdiffstats
path: root/yjit/bindgen
diff options
context:
space:
mode:
authorJimmy Miller <jimmy.miller@shopify.com>2023-01-19 13:42:49 -0500
committerGitHub <noreply@github.com>2023-01-19 13:42:49 -0500
commit762a3d80f77db0f96d3e01ccd1cc7b3891f0cfcf (patch)
treea1437a0b91802041580bbc006909c4b8da364a96 /yjit/bindgen
parent8872ebec6a3edc8327b5f348656c73a52bceda4a (diff)
downloadruby-762a3d80f77db0f96d3e01ccd1cc7b3891f0cfcf.tar.gz
Implement splat for cfuncs. Split exit exit cases to better capture where we are exiting (#6929)
YJIT: Implement splat for cfuncs. Split exit cases This also implements a new check for ruby2keywords as the last argument of a splat. This does mean that we generate more code, but in actual benchmarks where we gained speed from this (binarytrees) I don't see any significant slow down. I did have to struggle here with the register allocator to find code that didn't allocate too many registers. It's a bit hard when everything is implicit. But I think I got to the minimal amount of copying and stuff given our current allocation strategy.
Diffstat (limited to 'yjit/bindgen')
-rw-r--r--yjit/bindgen/src/main.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/yjit/bindgen/src/main.rs b/yjit/bindgen/src/main.rs
index 98d9161866..229b02bdcd 100644
--- a/yjit/bindgen/src/main.rs
+++ b/yjit/bindgen/src/main.rs
@@ -227,6 +227,9 @@ fn main() {
// From include/ruby/internal/value_type.h
.allowlist_type("ruby_value_type") // really old C extension API
+ // From include/ruby/internal/hash.h
+ .allowlist_type("ruby_rhash_flags") // really old C extension API
+
// Autogenerated into id.h
.allowlist_type("ruby_method_ids")