diff options
author | Jimmy Miller <jimmy.miller@shopify.com> | 2023-01-19 13:42:49 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-19 13:42:49 -0500 |
commit | 762a3d80f77db0f96d3e01ccd1cc7b3891f0cfcf (patch) | |
tree | a1437a0b91802041580bbc006909c4b8da364a96 /yjit/src/stats.rs | |
parent | 8872ebec6a3edc8327b5f348656c73a52bceda4a (diff) | |
download | ruby-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/src/stats.rs')
-rw-r--r-- | yjit/src/stats.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/yjit/src/stats.rs b/yjit/src/stats.rs index 2145cdf923..de1310d78b 100644 --- a/yjit/src/stats.rs +++ b/yjit/src/stats.rs @@ -188,6 +188,7 @@ make_counters! { send_cfunc_toomany_args, send_cfunc_tracing, send_cfunc_kwargs, + send_cfunc_splat_with_kw, send_attrset_kwargs, send_iseq_tailcall, send_iseq_arity_error, @@ -209,9 +210,18 @@ make_counters! { send_se_cf_overflow, send_se_protected_check_failed, send_splatarray_length_not_equal, + send_splatarray_last_ruby_2_keywords, send_splat_not_array, send_args_splat_non_iseq, - send_args_splat_cfunc, + send_args_splat_ivar, + send_args_splat_attrset, + send_args_splat_bmethod, + send_args_splat_aref, + send_args_splat_aset, + send_args_splat_optimized, + send_args_splat_cfunc_var_args, + send_args_splat_cfunc_zuper, + send_args_splat_cfunc_ruby2_keywords, send_iseq_ruby2_keywords, send_send_not_imm, send_send_wrong_args, |