diff options
| author | Alan Wu <XrXr@users.noreply.github.com> | 2024-01-16 16:24:54 -0500 |
|---|---|---|
| committer | Alan Wu <XrXr@users.noreply.github.com> | 2024-01-16 16:54:34 -0500 |
| commit | 2bf9970101c87bcece5401ca7a7c7e4d54cb64aa (patch) | |
| tree | 164433c5adb5c02821675507751c412eaedd1e8a | |
| parent | 5471f99eead4dd77f1d418eca04d7656bb97f01d (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.rs | 10 | ||||
| -rw-r--r-- | yjit/src/stats.rs | 5 |
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, |
