summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--class.c4
-rw-r--r--internal/class.h4
-rw-r--r--vm_insnhelper.c2
3 files changed, 5 insertions, 5 deletions
diff --git a/class.c b/class.c
index 7e0099944a..7ac7813f17 100644
--- a/class.c
+++ b/class.c
@@ -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));
diff --git a/internal/class.h b/internal/class.h
index 9f933c1fee..0ac8e7c875 100644
--- a/internal/class.h
+++ b/internal/class.h
@@ -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
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index e985e52077..f4894225d7 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -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);