summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2023-04-14 16:28:14 -0400
committerPeter Zhu <peter@peterzhu.ca>2023-04-16 11:06:31 -0400
commita0d1069e03fd52355e26d8cc3cbbed34632876e6 (patch)
tree3abec6a571c2a53631fc1d385e2bf7fe429251af /internal
parent24b137336b71f77bf9ae9c532c0a5520709f73e8 (diff)
downloadruby-a0d1069e03fd52355e26d8cc3cbbed34632876e6.tar.gz
Make classes embedded on 32 bit
Classes are now exactly 80 bytes when embedded, which perfectly fits the 3rd size pool on 32 bit systems.
Diffstat (limited to 'internal')
-rw-r--r--internal/class.h11
-rw-r--r--internal/gc.h3
2 files changed, 1 insertions, 13 deletions
diff --git a/internal/class.h b/internal/class.h
index 3e5108a3bd..b33c807e97 100644
--- a/internal/class.h
+++ b/internal/class.h
@@ -76,21 +76,12 @@ struct RClass {
struct RBasic basic;
VALUE super;
struct rb_id_table *m_tbl;
-#if !RCLASS_EXT_EMBEDDED
- struct rb_classext_struct *ptr;
-#endif
};
-#if RCLASS_EXT_EMBEDDED
// Assert that classes can be embedded in size_pools[2] (which has 160B slot size)
STATIC_ASSERT(sizeof_rb_classext_t, sizeof(struct RClass) + sizeof(rb_classext_t) <= 4 * RVALUE_SIZE);
-#endif
-#if RCLASS_EXT_EMBEDDED
-# define RCLASS_EXT(c) ((rb_classext_t *)((char *)(c) + sizeof(struct RClass)))
-#else
-# define RCLASS_EXT(c) (RCLASS(c)->ptr)
-#endif
+#define RCLASS_EXT(c) ((rb_classext_t *)((char *)(c) + sizeof(struct RClass)))
#define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
#define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl)
#define RCLASS_IVPTR(c) (RCLASS_EXT(c)->iv_ptr)
diff --git a/internal/gc.h b/internal/gc.h
index bb0f8016fb..d19b09f6fc 100644
--- a/internal/gc.h
+++ b/internal/gc.h
@@ -189,9 +189,6 @@ struct rb_objspace; /* in vm_core.h */
# define SIZE_POOL_COUNT 5
#endif
-// TODO: Make rb_classext_t small enough to fit in 80 bytes on 32 bit
-#define RCLASS_EXT_EMBEDDED (SIZEOF_UINT64_T == SIZEOF_VALUE)
-
typedef struct ractor_newobj_size_pool_cache {
struct RVALUE *freelist;
struct heap_page *using_page;