summaryrefslogtreecommitdiff
path: root/yjit
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2023-11-23 15:33:43 -0500
committerGitHub <noreply@github.com>2023-11-23 15:33:43 -0500
commitf05d586cc99ceed0666459603bfe2aa77a2291ab (patch)
treedf29c3d3255418f1fbf8bfeb62e22f8b4c495b38 /yjit
parent315240e73bac5a00e7f8f3e9d7cb77f903281544 (diff)
YJIT: record `num_send_cfunc` stat (#9022)
* YJIT: record num_send_cfunc stat Also report num_send_known_cfunc as percentage of num_send_cfunc * Rename num_send_known_cfunc => num_send_cfunc_inline Name seems more descriptive of what we do with out custom codegen
Diffstat (limited to 'yjit')
-rw-r--r--yjit/src/codegen.rs5
-rw-r--r--yjit/src/stats.rs3
2 files changed, 5 insertions, 3 deletions
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index 1d264ccb49..7846635e71 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -5398,6 +5398,8 @@ fn gen_send_cfunc(
return None;
}
+ gen_counter_incr(asm, Counter::num_send_cfunc);
+
// Delegate to codegen for C methods if we have it.
if kw_arg.is_null() && flags & VM_CALL_OPT_SEND == 0 && flags & VM_CALL_ARGS_SPLAT == 0 && (cfunc_argc == -1 || argc == cfunc_argc) {
let codegen_p = lookup_cfunc_codegen(unsafe { (*cme).def });
@@ -5405,7 +5407,7 @@ fn gen_send_cfunc(
if let Some(known_cfunc_codegen) = codegen_p {
if known_cfunc_codegen(jit, asm, ocb, ci, cme, block, argc, recv_known_klass) {
assert_eq!(expected_stack_after, asm.ctx.get_stack_size() as i32);
- gen_counter_incr(asm, Counter::num_send_known_cfunc);
+ gen_counter_incr(asm, Counter::num_send_cfunc_inline);
// cfunc codegen generated code. Terminate the block so
// there isn't multiple calls in the same block.
jump_to_next_insn(jit, asm, ocb);
@@ -5433,7 +5435,6 @@ fn gen_send_cfunc(
argc - kw_arg_num + 1
};
-
// If the argument count doesn't match
if cfunc_argc >= 0 && cfunc_argc != passed_argc && flags & VM_CALL_ARGS_SPLAT == 0 {
gen_counter_incr(asm, Counter::send_cfunc_argc_mismatch);
diff --git a/yjit/src/stats.rs b/yjit/src/stats.rs
index 4fc1825991..e3b6103299 100644
--- a/yjit/src/stats.rs
+++ b/yjit/src/stats.rs
@@ -482,7 +482,8 @@ make_counters! {
num_send_dynamic,
num_send_inline,
num_send_leaf_builtin,
- num_send_known_cfunc,
+ num_send_cfunc,
+ num_send_cfunc_inline,
num_getivar_megamorphic,
num_setivar_megamorphic,