diff -up js-1.8.5/js/src/jsval.h.pad-the-structs-and-asserts js-1.8.5/js/src/jsval.h --- js-1.8.5/js/src/jsval.h.pad-the-structs-and-asserts 2011-11-28 12:46:32.811556132 -0600 +++ js-1.8.5/js/src/jsval.h 2011-11-28 12:46:43.493448233 -0600 @@ -343,11 +343,11 @@ typedef union jsval_layout uint64 payload47 : 47; } debugView; struct { + uint32 padding; union { int32 i32; uint32 u32; JSWhyMagic why; - jsuword word; } payload; } s; double asDouble; diff -up js-1.8.5/js/src/jsvalue.h.pad-the-structs-and-asserts js-1.8.5/js/src/jsvalue.h --- js-1.8.5/js/src/jsvalue.h.pad-the-structs-and-asserts 2011-11-28 12:46:37.246509255 -0600 +++ js-1.8.5/js/src/jsvalue.h 2011-11-28 12:46:43.495448203 -0600 @@ -291,7 +291,6 @@ JSVAL_EXTRACT_NON_DOUBLE_TAG_IMPL(jsval_ } #ifdef __cplusplus -JS_STATIC_ASSERT(offsetof(jsval_layout, s.payload) == 0); JS_STATIC_ASSERT((JSVAL_TYPE_NONFUNOBJ & 0xF) == JSVAL_TYPE_OBJECT); JS_STATIC_ASSERT((JSVAL_TYPE_FUNOBJ & 0xF) == JSVAL_TYPE_OBJECT); #endif @@ -729,7 +728,11 @@ class Value } const jsuword *payloadWord() const { +#if JS_BITS_PER_WORD == 32 return &data.s.payload.word; +#elif JS_BITS_PER_WORD == 64 + return &data.asBits; +#endif } private: