aboutsummaryrefslogtreecommitdiffstats
path: root/vm_core.h
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-06-09 19:15:57 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-06-09 19:15:57 +0900
commite03bf76b312e9cba0e44488fcd8f67099af816cb (patch)
treec0c8bcc84244b1ba53128ea80ff0dc4def33c779 /vm_core.h
parent9ba335e2eb79b1a75166828f437b71a1398ec3c5 (diff)
downloadruby-e03bf76b312e9cba0e44488fcd8f67099af816cb.tar.gz
Pack iseq_inline_constant_cache_entry
Reordered iseq_inline_constant_cache_entry members not to exceed the size of RValue.
Diffstat (limited to 'vm_core.h')
-rw-r--r--vm_core.h19
1 files changed, 8 insertions, 11 deletions
diff --git a/vm_core.h b/vm_core.h
index 0657271740..7eda31f11e 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -218,23 +218,20 @@ struct rb_control_frame_struct;
/* iseq data type */
typedef struct rb_compile_option_struct rb_compile_option_t;
-#if (SIZEOF_SERIAL_T > SIZEOF_VOIDP) && defined(__CYGWIN__)
-#pragma pack(push, 4) /* == SIZEOF_VOIDP */
-#endif
-
// imemo_constcache
struct iseq_inline_constant_cache_entry {
VALUE flags;
VALUE value; // v0
- const rb_cref_t *ic_cref; // v1
- rb_serial_t ic_serial; // v2
- // v3
-};
-
-#if (SIZEOF_SERIAL_T > SIZEOF_VOIDP) && defined(__CYGWIN__)
-#pragma pack(pop)
+ rb_serial_t ic_serial; // v1
+#if (SIZEOF_SERIAL_T < 2 * SIZEOF_VOIDP)
+ VALUE ic_padding; // v2
#endif
+ const rb_cref_t *ic_cref; // v3
+};
+STATIC_ASSERT(sizeof_iseq_inline_constant_cache_entry,
+ (offsetof(struct iseq_inline_constant_cache_entry, ic_cref) +
+ sizeof(const rb_cref_t *)) <= sizeof(struct RObject));
struct iseq_inline_constant_cache {
struct iseq_inline_constant_cache_entry *entry;