Move RCLASS_CLONED to rb_classext_struct

This commit moves RCLASS_CLONED from the flags to the
rb_classext_struct. This frees the FL_USER1 bit.
This commit is contained in:
Peter Zhu 2023-04-14 16:25:06 -04:00
Родитель fac814c2dc
Коммит ad3d4e87d7
3 изменённых файлов: 5 добавлений и 5 удалений

Просмотреть файл

@ -508,8 +508,8 @@ rb_mod_init_copy(VALUE clone, VALUE orig)
/* cloned flag is refer at constant inline cache
* see vm_get_const_key_cref() in vm_insnhelper.c
*/
FL_SET(clone, RCLASS_CLONED);
FL_SET(orig , RCLASS_CLONED);
RCLASS_EXT(clone)->cloned = true;
RCLASS_EXT(orig)->cloned = true;
if (!FL_TEST(CLASS_OF(clone), FL_SINGLETON)) {
RBASIC_SET_CLASS(clone, rb_singleton_class_clone(orig));

Просмотреть файл

@ -67,7 +67,8 @@ struct rb_classext_struct {
#endif
attr_index_t max_iv_count;
unsigned char variation_count;
bool permanent_classpath;
bool permanent_classpath : 1;
bool cloned : 1;
VALUE classpath;
};
typedef struct rb_classext_struct rb_classext_t;
@ -110,7 +111,6 @@ STATIC_ASSERT(sizeof_rb_classext_t, sizeof(struct RClass) + sizeof(rb_classext_t
#define RCLASS_ATTACHED_OBJECT(c) (RCLASS_EXT(c)->as.singleton_class.attached_object)
#define RICLASS_IS_ORIGIN FL_USER0
#define RCLASS_CLONED FL_USER1
#define RCLASS_SUPERCLASSES_INCLUDE_SELF FL_USER2
#define RICLASS_ORIGIN_SHARED_MTBL FL_USER3

Просмотреть файл

@ -895,7 +895,7 @@ vm_get_const_key_cref(const VALUE *ep)
while (cref) {
if (FL_TEST(CREF_CLASS(cref), FL_SINGLETON) ||
FL_TEST(CREF_CLASS(cref), RCLASS_CLONED)) {
RCLASS_EXT(CREF_CLASS(cref))->cloned) {
return key_cref;
}
cref = CREF_NEXT(cref);