1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Pack iseq_inline_constant_cache_entry

Reordered iseq_inline_constant_cache_entry members not to exceed
the size of RValue.
This commit is contained in:
Nobuyoshi Nakada 2021-06-09 19:15:57 +09:00
parent 9ba335e2eb
commit e03bf76b31
No known key found for this signature in database
GPG key ID: 7CD2805BFA3770C6

View file

@ -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;