summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2023-07-26 12:59:59 -0700
committerGitHub <noreply@github.com>2023-07-26 12:59:59 -0700
commit9bdd48597297dcb01a7e07f5a0f716c4ea9cc1e1 (patch)
tree5dda5b5857ecb404cf15121575574d8bb554d471
parent37160be439c9a368c206b2eec713820dc97e4e0f (diff)
YJIT: Count the number of dynamic send dispatches (#8122)
Notes
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
-rw-r--r--yjit.rb1
-rw-r--r--yjit/src/codegen.rs1
-rw-r--r--yjit/src/stats.rs1
3 files changed, 3 insertions, 0 deletions
diff --git a/yjit.rb b/yjit.rb
index 3308be60c6..cbbf772fac 100644
--- a/yjit.rb
+++ b/yjit.rb
@@ -270,6 +270,7 @@ module RubyVM::YJIT
out.puts "num_send: " + format_number(13, stats[:num_send])
out.puts "num_send_known_class: " + format_number_pct(13, stats[:num_send_known_class], stats[:num_send])
out.puts "num_send_polymorphic: " + format_number_pct(13, stats[:num_send_polymorphic], stats[:num_send])
+ out.puts "num_send_dynamic: " + format_number_pct(13, stats[:num_send_dynamic], stats[:num_send])
if stats[:num_send_x86_rel32] != 0 || stats[:num_send_x86_reg] != 0
out.puts "num_send_x86_rel32: " + format_number(13, stats[:num_send_x86_rel32])
out.puts "num_send_x86_reg: " + format_number(13, stats[:num_send_x86_reg])
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index 6c36a28c6a..f72185b846 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -6488,6 +6488,7 @@ fn gen_send_dynamic<F: Fn(&mut Assembler) -> Opnd>(
// Fix the interpreter SP deviated by vm_sendish
asm.mov(Opnd::mem(64, CFP, RUBY_OFFSET_CFP_SP), SP);
+ gen_counter_incr(asm, Counter::num_send_dynamic);
Some(KeepCompiling)
}
diff --git a/yjit/src/stats.rs b/yjit/src/stats.rs
index a58d232f56..8606e8be87 100644
--- a/yjit/src/stats.rs
+++ b/yjit/src/stats.rs
@@ -410,6 +410,7 @@ make_counters! {
num_send_polymorphic,
num_send_x86_rel32,
num_send_x86_reg,
+ num_send_dynamic,
iseq_stack_too_large,
iseq_too_long,