summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Wu <XrXr@users.noreply.github.com>2024-01-16 16:24:54 -0500
committerAlan Wu <XrXr@users.noreply.github.com>2024-01-16 16:54:34 -0500
commit2bf9970101c87bcece5401ca7a7c7e4d54cb64aa (patch)
tree164433c5adb5c02821675507751c412eaedd1e8a
parent5471f99eead4dd77f1d418eca04d7656bb97f01d (diff)
YJIT: Finer breakdown for block_arg counters
For example, on `lobsters` the block_arg reason was at ~10%. With this change it shows that 6% of that is `send_cfunc_block_arg`.
-rw-r--r--yjit/src/codegen.rs10
-rw-r--r--yjit/src/stats.rs5
2 files changed, 10 insertions, 5 deletions
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index e626a71d88..2c3e61356c 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -5605,7 +5605,7 @@ fn gen_send_cfunc(
// Nothing to do
}
_ => {
- gen_counter_incr(asm, Counter::send_block_arg);
+ gen_counter_incr(asm, Counter::send_cfunc_block_arg);
return None;
}
}
@@ -7009,7 +7009,7 @@ fn exit_if_unsupported_block_arg_type(
Some(Some(Type::TProc))
}
_ => {
- gen_counter_incr(asm, Counter::send_block_arg);
+ gen_counter_incr(asm, Counter::send_iseq_block_arg_type);
None
}
}
@@ -7341,7 +7341,7 @@ fn gen_send_general(
let ivar_name = unsafe { get_cme_def_body_attr_id(cme) };
if flags & VM_CALL_ARGS_BLOCKARG != 0 {
- gen_counter_incr(asm, Counter::send_block_arg);
+ gen_counter_incr(asm, Counter::send_getter_block_arg);
return None;
}
@@ -7373,7 +7373,7 @@ fn gen_send_general(
gen_counter_incr(asm, Counter::send_cfunc_tracing);
return None;
} else if flags & VM_CALL_ARGS_BLOCKARG != 0 {
- gen_counter_incr(asm, Counter::send_block_arg);
+ gen_counter_incr(asm, Counter::send_attrset_block_arg);
return None;
} else {
let ivar_name = unsafe { get_cme_def_body_attr_id(cme) };
@@ -7396,7 +7396,7 @@ fn gen_send_general(
// Send family of methods, e.g. call/apply
VM_METHOD_TYPE_OPTIMIZED => {
if flags & VM_CALL_ARGS_BLOCKARG != 0 {
- gen_counter_incr(asm, Counter::send_block_arg);
+ gen_counter_incr(asm, Counter::send_optimized_block_arg);
return None;
}
diff --git a/yjit/src/stats.rs b/yjit/src/stats.rs
index f4c53a50f9..924628e13a 100644
--- a/yjit/src/stats.rs
+++ b/yjit/src/stats.rs
@@ -319,14 +319,17 @@ make_counters! {
send_private_not_fcall,
send_cfunc_ruby_array_varg,
send_cfunc_argc_mismatch,
+ send_cfunc_block_arg,
send_cfunc_toomany_args,
send_cfunc_tracing,
send_cfunc_kwargs,
send_cfunc_splat_with_kw,
send_cfunc_splat_send,
send_attrset_kwargs,
+ send_attrset_block_arg,
send_iseq_tailcall,
send_iseq_arity_error,
+ send_iseq_block_arg_type,
send_iseq_clobbering_block_arg,
send_iseq_leaf_builtin_block_arg_block_param,
send_iseq_only_keywords,
@@ -343,6 +346,7 @@ make_counters! {
send_iseq_too_many_kwargs,
send_not_implemented_method,
send_getter_arity,
+ send_getter_block_arg,
send_args_splat_non_iseq,
send_args_splat_ivar,
send_args_splat_attrset,
@@ -371,6 +375,7 @@ make_counters! {
send_iseq_has_rest_opt_and_block,
send_bmethod_ractor,
send_bmethod_block_arg,
+ send_optimized_block_arg,
invokesuper_defined_class_mismatch,
invokesuper_kw_splat,