summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
authorJohn Hawthorn <john@hawthorn.email>2022-03-17 11:56:00 -0700
committerJohn Hawthorn <john@hawthorn.email>2022-03-17 11:56:49 -0700
commitb8e72bd2e96c1ff9b25bea848abdfd0494c40b19 (patch)
tree30968a92c8c7c1ec7e265bc87337566e98867f1d /object.c
parentb6804d62f822237e136e698e006c913df9990ec2 (diff)
Revert "Faster rb_class_superclass"
This reverts commit 29b68b89a0c0ea7de46c058fab746550398151f0.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5678
Diffstat (limited to 'object.c')
-rw-r--r--object.c13
1 files 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)
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