[前][次][番号順一覧][スレッド一覧]

ruby-changes:64144

From: Koichi <ko1@a...>
Date: Mon, 14 Dec 2020 18:39:10 +0900 (JST)
Subject: [ruby-changes:64144] 7060d6b721 (master): fix condition and add another debug counter

https://git.ruby-lang.org/ruby.git/commit/?id=7060d6b721

From 7060d6b721092d56f1cbc084940db960e01671fd Mon Sep 17 00:00:00 2001
From: Koichi Sasada <ko1@a...>
Date: Mon, 14 Dec 2020 18:37:22 +0900
Subject: fix condition and add another debug counter

mc_inline_miss_same_def is added to check same method or not.
Also the mc_inline_miss_same_cc calculation was fixed.

diff --git a/debug_counter.h b/debug_counter.h
index 8b23f17..597307c 100644
--- a/debug_counter.h
+++ b/debug_counter.h
@@ -21,6 +21,7 @@ RB_DEBUG_COUNTER(mc_inline_miss_invalidated) // IMC miss by invalidated ME https://github.com/ruby/ruby/blob/trunk/debug_counter.h#L21
 RB_DEBUG_COUNTER(mc_inline_miss_empty)       // IMC miss because prev is empty slot
 RB_DEBUG_COUNTER(mc_inline_miss_same_cc)     // IMC miss, but same CC
 RB_DEBUG_COUNTER(mc_inline_miss_same_cme)    // IMC miss, but same CME
+RB_DEBUG_COUNTER(mc_inline_miss_same_def)    // IMC miss, but same definition
 RB_DEBUG_COUNTER(mc_inline_miss_diff)        // IMC miss, different methods
 
 RB_DEBUG_COUNTER(mc_cme_complement)          // number of acquiring complement CME
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 9cade36..ac0f999 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -1694,12 +1694,16 @@ rb_vm_search_method_slowpath(VALUE cd_owner, struct rb_call_data *cd, VALUE klas https://github.com/ruby/ruby/blob/trunk/vm_insnhelper.c#L1694
             // empty
             RB_DEBUG_COUNTER_INC(mc_inline_miss_empty);
         }
-        else if (old_cc == cd->cc) {
+        else if (old_cc == cc) {
             RB_DEBUG_COUNTER_INC(mc_inline_miss_same_cc);
         }
         else if (vm_cc_cme(old_cc) == vm_cc_cme(cc)) {
             RB_DEBUG_COUNTER_INC(mc_inline_miss_same_cme);
         }
+        else if (vm_cc_cme(old_cc) && vm_cc_cme(cc) &&
+                 vm_cc_cme(old_cc)->def == vm_cc_cme(cc)->def) {
+            RB_DEBUG_COUNTER_INC(mc_inline_miss_same_def);
+        }
         else {
             RB_DEBUG_COUNTER_INC(mc_inline_miss_diff);
         }
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]