diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-07-23 05:20:04 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-07-23 05:20:04 +0900 |
commit | 11f3da8e9dd98cb6b0c2c2fd22220f8508af32f2 (patch) | |
tree | aa8c4e873f6e7340f2d7796a215a05581ca4a196 /method.h | |
parent | 6b62aa7aec1c8beffafc5e321419cba408bf3c24 (diff) |
Stop packing rb_method_definition_t
By using `BITFIELD`, `type` field should not be forced to align.
Diffstat (limited to 'method.h')
-rw-r--r-- | method.h | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -160,7 +160,7 @@ enum method_optimized_type { OPTIMIZED_METHOD_TYPE__MAX }; -PACKED_STRUCT_UNALIGNED(struct rb_method_definition_struct { +struct rb_method_definition_struct { BITFIELD(rb_method_type_t, type, VM_METHOD_TYPE_MINIMUM_BITS); int alias_count : 28; int complemented_count : 28; @@ -177,9 +177,10 @@ PACKED_STRUCT_UNALIGNED(struct rb_method_definition_struct { } body; ID original_id; -}); +}; typedef struct rb_method_definition_struct rb_method_definition_t; +STATIC_ASSERT(sizeof_method_def, offsetof(rb_method_definition_t, body)==8); #define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF) #define UNDEFINED_REFINED_METHOD_P(def) \ |