summaryrefslogtreecommitdiff
path: root/yjit/src/stats.rs
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/src/stats.rs
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/src/stats.rs')
-rw-r--r--yjit/src/stats.rs12
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,