diff options
author | John Hawthorn <john@hawthorn.email> | 2022-03-17 11:56:00 -0700 |
---|---|---|
committer | John Hawthorn <john@hawthorn.email> | 2022-03-17 11:56:49 -0700 |
commit | b8e72bd2e96c1ff9b25bea848abdfd0494c40b19 (patch) | |
tree | 30968a92c8c7c1ec7e265bc87337566e98867f1d /object.c | |
parent | b6804d62f822237e136e698e006c913df9990ec2 (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.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -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 |