mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
Use flag for RCLASS_IS_INITIALIZED
Previously we used a flag to set whether a module was uninitialized. When checked whether a class was initialized, we first had to check that it had a non-zero superclass, as well as that it wasn't BasicObject. With the advent of namespaces, RCLASS_SUPER is now an expensive operation, and though we could just check for the prime superclass, we might as well take this opportunity to use a flag so that we can perform the initialized check with as few instructions as possible. It's possible in the future that we could prevent uninitialized classes from being available to the user, but currently there are a few ways to do that.
This commit is contained in:
parent
3935b1c401
commit
d1343e12d2
Notes:
git
2025-05-28 15:44:19 +00:00
7 changed files with 41 additions and 30 deletions
3
eval.c
3
eval.c
|
@ -422,7 +422,8 @@ rb_class_modify_check(VALUE klass)
|
|||
Check_Type(klass, T_CLASS);
|
||||
}
|
||||
if (RB_TYPE_P(klass, T_MODULE)) {
|
||||
rb_module_set_initialized(klass);
|
||||
// TODO: shouldn't this only happen in a few places?
|
||||
rb_class_set_initialized(klass);
|
||||
}
|
||||
if (OBJ_FROZEN(klass)) {
|
||||
const char *desc;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue