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/src/stats.rs | |
parent | 8f37e9c91814357f79911e208ef4d0d56dfa9433 (diff) | |
download | ruby-758a1d730230ad0f4adfd7681c1fe4c8ac398bde.tar.gz |
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>
Diffstat (limited to 'yjit/src/stats.rs')
-rw-r--r-- | yjit/src/stats.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/yjit/src/stats.rs b/yjit/src/stats.rs index 4843cecf92..56aa0b4081 100644 --- a/yjit/src/stats.rs +++ b/yjit/src/stats.rs @@ -164,7 +164,8 @@ make_counters! { send_keywords, send_kw_splat, - send_args_splat, + send_args_splat_super, + send_iseq_zsuper, send_block_arg, send_ivar_set_method, send_zsuper_method, @@ -192,6 +193,10 @@ make_counters! { send_getter_arity, send_se_cf_overflow, send_se_protected_check_failed, + send_splatarray_rhs_too_small, + send_splat_not_array, + send_args_splat_variadic, + send_iseq_ruby2_keywords, traced_cfunc_return, |