diff options
| author | Matt Valentine-House <matt@eightbitraptor.com> | 2021-01-26 16:06:31 +0000 |
|---|---|---|
| committer | Aaron Patterson <aaron.patterson@gmail.com> | 2021-02-01 08:42:54 -0800 |
| commit | 49950266be32ae09ee6a17539c4412f032995fc6 (patch) | |
| tree | e829c015229561092c05ba8205ce989ae785e499 | |
| parent | 1cdae49d39fbaef654df487f168d1fb14a146d59 (diff) | |
Add RCLASS_PARENT_SUBMODULES Macro
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4124
| -rw-r--r-- | class.c | 16 | ||||
| -rw-r--r-- | internal/class.h | 1 |
2 files changed, 9 insertions, 8 deletions
@@ -56,11 +56,11 @@ rb_class_subclass_add(VALUE super, VALUE klass) head = RCLASS_EXT(super)->subclasses; if (head) { entry->next = head; - RCLASS_EXT(head->klass)->parent_subclasses = &entry->next; + RCLASS_PARENT_SUBCLASSES(head->klass) = &entry->next; } RCLASS_EXT(super)->subclasses = entry; - RCLASS_EXT(klass)->parent_subclasses = &RCLASS_EXT(super)->subclasses; + RCLASS_PARENT_SUBCLASSES(klass) = &RCLASS_EXT(super)->subclasses; } } @@ -88,17 +88,17 @@ rb_class_remove_from_super_subclasses(VALUE klass) { rb_subclass_entry_t *entry; - if (RCLASS_EXT(klass)->parent_subclasses) { - entry = *RCLASS_EXT(klass)->parent_subclasses; + if (RCLASS_PARENT_SUBCLASSES(klass)) { + entry = *RCLASS_PARENT_SUBCLASSES(klass); - *RCLASS_EXT(klass)->parent_subclasses = entry->next; + *RCLASS_PARENT_SUBCLASSES(klass) = entry->next; if (entry->next) { - RCLASS_EXT(entry->next->klass)->parent_subclasses = RCLASS_EXT(klass)->parent_subclasses; + RCLASS_PARENT_SUBCLASSES(entry->next->klass) = RCLASS_PARENT_SUBCLASSES(klass); } xfree(entry); } - RCLASS_EXT(klass)->parent_subclasses = NULL; + RCLASS_PARENT_SUBCLASSES(klass) = NULL; } void @@ -182,7 +182,7 @@ class_alloc(VALUE flags, VALUE klass) RCLASS_IV_INDEX_TBL(obj) = 0; RCLASS_SET_SUPER((VALUE)obj, 0); RCLASS_EXT(obj)->subclasses = NULL; - RCLASS_EXT(obj)->parent_subclasses = NULL; + RCLASS_PARENT_SUBCLASSES(obj) = NULL; RCLASS_EXT(obj)->module_subclasses = NULL; */ RCLASS_SET_ORIGIN((VALUE)obj, (VALUE)obj); diff --git a/internal/class.h b/internal/class.h index eade920ff0..da1df196be 100644 --- a/internal/class.h +++ b/internal/class.h @@ -92,6 +92,7 @@ typedef struct rb_classext_struct rb_classext_t; # define RCLASS_SERIAL(c) (RCLASS_EXT(c)->class_serial) #endif #define RCLASS_INCLUDER(c) (RCLASS_EXT(c)->includer) +#define RCLASS_PARENT_SUBCLASSES(c) (RCLASS_EXT(c)->parent_subclasses) #define RICLASS_IS_ORIGIN FL_USER5 #define RCLASS_CLONED FL_USER6 |
