summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-10-26 23:39:43 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-10-27 02:05:06 +0900
commite3a783b14191fef175c9a59996afdc744c8edc4c (patch)
tree33e1fa96535433dc67e7b8fac63c738e32e88b0c /gc.c
parentafdca0e780760e008e26f4c9fc7262a0a4fe56bb (diff)
Align `RFloat` at VALUE boundary
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5027
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/gc.c b/gc.c
index 0c739ba709..bd3915fb47 100644
--- a/gc.c
+++ b/gc.c
@@ -565,10 +565,6 @@ struct RMoved {
#define RMOVED(obj) ((struct RMoved *)(obj))
-#if (SIZEOF_DOUBLE > SIZEOF_VALUE) && (defined(_MSC_VER) || defined(__CYGWIN__))
-#pragma pack(push, 4) /* == SIZEOF_VALUE: magic for reducing sizeof(RVALUE): 24 -> 20 */
-#endif
-
typedef struct RVALUE {
union {
struct {
@@ -618,9 +614,12 @@ typedef struct RVALUE {
#endif
} RVALUE;
-#if (SIZEOF_DOUBLE > SIZEOF_VALUE) && (defined(_MSC_VER) || defined(__CYGWIN__))
-#pragma pack(pop)
+#if GC_DEBUG
+STATIC_ASSERT(sizeof_rvalue, offsetof(RVALUE, file) == SIZEOF_VALUE * 5);
+#else
+STATIC_ASSERT(sizeof_rvalue, sizeof(RVALUE) == SIZEOF_VALUE * 5);
#endif
+STATIC_ASSERT(alignof_rvalue, RUBY_ALIGNOF(RVALUE) == SIZEOF_VALUE);
typedef uintptr_t bits_t;
enum {