diff options
author | Jimmy Miller <jimmy.miller@shopify.com> | 2022-09-14 10:32:22 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-14 10:32:22 -0400 |
commit | 758a1d730230ad0f4adfd7681c1fe4c8ac398bde (patch) | |
tree | 876164dea874742b50ad53ee14fa30473c20b930 /yjit.c | |
parent | 8f37e9c91814357f79911e208ef4d0d56dfa9433 (diff) |
Initial support for VM_CALL_ARGS_SPLAT (#6341)
* Initial support for VM_CALL_ARGS_SPLAT
This implements support for calls with splat (*) for some methods. In
benchmarks this made very little difference for most benchmarks, but a
large difference for binarytrees. Looking at side exits, many
benchmarks now don't exit for splat, but exit for some other
reason. Binarytrees however had a number of calls that used splat args
that are now much faster. In my non-scientific benchmarking this made
splat args performance on par with not using splat args at all.
* Fix wording and whitespace
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
* Get rid of side_effect reassignment
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
Notes
Notes:
Merged-By: maximecb <maximecb@ruby-lang.org>
Diffstat (limited to 'yjit.c')
-rw-r--r-- | yjit.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -604,6 +604,12 @@ rb_get_iseq_flags_has_rest(const rb_iseq_t *iseq) } bool +rb_get_iseq_flags_ruby2_keywords(const rb_iseq_t *iseq) +{ + return iseq->body->param.flags.ruby2_keywords; +} + +bool rb_get_iseq_flags_has_block(const rb_iseq_t *iseq) { return iseq->body->param.flags.has_block; |