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

ruby-changes:69779

From: Koichi <ko1@a...>
Date: Wed, 17 Nov 2021 22:22:01 +0900 (JST)
Subject: [ruby-changes:69779] 8d7116552d (master): assert `cc->cme_ != NULL`

https://git.ruby-lang.org/ruby.git/commit/?id=8d7116552d

From 8d7116552dace6d0a9a8f0bbe2fe0f02fcff6532 Mon Sep 17 00:00:00 2001
From: Koichi Sasada <ko1@a...>
Date: Tue, 16 Nov 2021 18:02:16 +0900
Subject: assert `cc->cme_ != NULL`

when `vm_cc_markable(cc)`.
---
 vm_callinfo.h | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/vm_callinfo.h b/vm_callinfo.h
index 2641ee79c52..91ed55bf5f5 100644
--- a/vm_callinfo.h
+++ b/vm_callinfo.h
@@ -321,10 +321,19 @@ vm_cc_class_check(const struct rb_callcache *cc, VALUE klass) https://github.com/ruby/ruby/blob/trunk/vm_callinfo.h#L321
     return cc->klass == klass;
 }
 
+static inline int
+vm_cc_markable(const struct rb_callcache *cc)
+{
+    VM_ASSERT(IMEMO_TYPE_P(cc, imemo_callcache));
+    return FL_TEST_RAW((VALUE)cc, VM_CALLCACHE_UNMARKABLE) == 0;
+}
+
 static inline const struct rb_callable_method_entry_struct *
 vm_cc_cme(const struct rb_callcache *cc)
 {
     VM_ASSERT(IMEMO_TYPE_P(cc, imemo_callcache));
+    VM_ASSERT(!vm_cc_markable(cc) || cc->cme_ != NULL);
+
     return cc->cme_;
 }
 
@@ -350,13 +359,6 @@ vm_cc_cmethod_missing_reason(const struct rb_callcache *cc) https://github.com/ruby/ruby/blob/trunk/vm_callinfo.h#L359
     return cc->aux_.method_missing_reason;
 }
 
-static inline int
-vm_cc_markable(const struct rb_callcache *cc)
-{
-    VM_ASSERT(IMEMO_TYPE_P(cc, imemo_callcache));
-    return FL_TEST_RAW((VALUE)cc, VM_CALLCACHE_UNMARKABLE) == 0;
-}
-
 static inline bool
 vm_cc_invalidated_p(const struct rb_callcache *cc)
 {
-- 
cgit v1.2.1


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

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