Simplify unaligned write for pre-computed string hash

This commit is contained in:
Alan Wu 2024-06-13 17:59:40 -04:00
Родитель a8730adb60
Коммит 6416ee33eb
1 изменённых файлов: 2 добавлений и 3 удалений

Просмотреть файл

@ -376,9 +376,8 @@ str_precompute_hash(VALUE str)
RUBY_ASSERT(free_bytes >= sizeof(st_index_t));
#endif
typedef struct {char bytes[sizeof(st_index_t)];} unaligned_index;
union {st_index_t i; unaligned_index b;} u = {.i = str_do_hash(str)};
*(unaligned_index *)(RSTRING_END(str) + TERM_LEN(str)) = u.b;
st_index_t hash = str_do_hash(str);
memcpy(RSTRING_END(str) + TERM_LEN(str), &hash, sizeof(hash));
FL_SET(str, STR_PRECOMPUTED_HASH);