diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-06-09 19:15:57 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-06-09 19:15:57 +0900 |
commit | e03bf76b312e9cba0e44488fcd8f67099af816cb (patch) | |
tree | c0c8bcc84244b1ba53128ea80ff0dc4def33c779 /vm_core.h | |
parent | 9ba335e2eb79b1a75166828f437b71a1398ec3c5 (diff) |
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.h | 19 |
1 files changed, 8 insertions, 11 deletions
@@ -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; |