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

ruby-changes:71455

From: John <ko1@a...>
Date: Fri, 18 Mar 2022 03:56:59 +0900 (JST)
Subject: [ruby-changes:71455] b8e72bd2e9 (master): Revert "Faster rb_class_superclass"

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

From b8e72bd2e96c1ff9b25bea848abdfd0494c40b19 Mon Sep 17 00:00:00 2001
From: John Hawthorn <john@h...>
Date: Thu, 17 Mar 2022 11:56:00 -0700
Subject: Revert "Faster rb_class_superclass"

This reverts commit 29b68b89a0c0ea7de46c058fab746550398151f0.
---
 object.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/object.c b/object.c
index 26eb823621..f6736fbe8b 100644
--- a/object.c
+++ b/object.c
@@ -2034,18 +2034,19 @@ rb_class_new_instance(int argc, const VALUE *argv, VALUE klass) https://github.com/ruby/ruby/blob/trunk/object.c#L2034
 VALUE
 rb_class_superclass(VALUE klass)
 {
-    RUBY_ASSERT(RB_TYPE_P(klass, T_CLASS));
-
     VALUE super = RCLASS_SUPER(klass);
 
     if (!super) {
 	if (klass == rb_cBasicObject) return Qnil;
 	rb_raise(rb_eTypeError, "uninitialized class");
-    } else {
-        super = RCLASS_SUPERCLASSES(klass)[RCLASS_SUPERCLASS_DEPTH(klass) - 1];
-        RUBY_ASSERT(RB_TYPE_P(klass, T_CLASS));
-        return super;
     }
+    while (RB_TYPE_P(super, T_ICLASS)) {
+	super = RCLASS_SUPER(super);
+    }
+    if (!super) {
+	return Qnil;
+    }
+    return super;
 }
 
 VALUE
-- 
cgit v1.2.1


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

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