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`.
This commit is contained in:
Alan Wu 2024-01-16 16:24:54 -05:00
parent 5471f99eea
commit 2bf9970101
2 changed files with 10 additions and 5 deletions

View File

@ -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;
}

View File

@ -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,