diff options
author | Peter Zhu <[email protected]> | 2023-06-14 08:01:15 -0400 |
---|---|---|
committer | Peter Zhu <[email protected]> | 2023-06-14 10:42:40 -0400 |
commit | 813a5f4fc46a24ca1695d23c159250b9e1080ac7 (patch) | |
tree | 1bd011d57bfd9b636737e07c1901bc655ce6d514 /internal/class.h | |
parent | 37513490442322e82961bf6d06c1c86d55cb3830 (diff) |
Directly allocate FrozenCore as an ICLASS
It's a bad idea to overwrite the flags as the garbage collector may have
set other flags.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7940
Diffstat (limited to 'internal/class.h')
-rw-r--r-- | internal/class.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/internal/class.h b/internal/class.h index d76da84bd1..146123005e 100644 --- a/internal/class.h +++ b/internal/class.h @@ -119,6 +119,7 @@ VALUE rb_module_s_alloc(VALUE klass); void rb_module_set_initialized(VALUE module); void rb_module_check_initializable(VALUE module); VALUE rb_make_metaclass(VALUE, VALUE); +VALUE rb_iclass_alloc(VALUE klass); VALUE rb_include_class_new(VALUE, VALUE); void rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE); void rb_class_detach_subclasses(VALUE); @@ -205,7 +206,7 @@ RCLASS_SET_SUPER(VALUE klass, VALUE super) static inline void RCLASS_SET_CLASSPATH(VALUE klass, VALUE classpath, bool permanent) { - assert(BUILTIN_TYPE(klass) == T_CLASS || BUILTIN_TYPE(klass) == T_MODULE); + assert(BUILTIN_TYPE(klass) == T_CLASS || BUILTIN_TYPE(klass) == T_MODULE || klass == rb_mRubyVMFrozenCore); assert(classpath == 0 || BUILTIN_TYPE(classpath) == T_STRING); RB_OBJ_WRITE(klass, &(RCLASS_EXT(klass)->classpath), classpath); |