SameSizeAsInlineBox mismatch on ARMV7.
authorzalan@apple.com <zalan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 22 May 2017 20:28:06 +0000 (20:28 +0000)
committerzalan@apple.com <zalan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 22 May 2017 20:28:06 +0000 (20:28 +0000)
https://bugs.webkit.org/show_bug.cgi?id=172459

Reviewed by Simon Fraser.

Due to the ARMV7/i386 padding behaviour mismatch, forcing m_bitfields to be 32bits does not always
produce the desired padding.
Move the bool to the end of the member list and let m_deletionSentinel (4bytes) force
padding.

* rendering/InlineBox.cpp:
* rendering/InlineBox.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@217242 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/rendering/InlineBox.cpp
Source/WebCore/rendering/InlineBox.h

index e6658b3..4274a54 100644 (file)
@@ -1,3 +1,18 @@
+2017-05-22  Zalan Bujtas  <zalan@apple.com>
+
+        SameSizeAsInlineBox mismatch on ARMV7.
+        https://bugs.webkit.org/show_bug.cgi?id=172459
+
+        Reviewed by Simon Fraser.
+
+        Due to the ARMV7/i386 padding behaviour mismatch, forcing m_bitfields to be 32bits does not always
+        produce the desired padding.
+        Move the bool to the end of the member list and let m_deletionSentinel (4bytes) force
+        padding.
+
+        * rendering/InlineBox.cpp:
+        * rendering/InlineBox.h:
+
 2017-05-22  Myles C. Maxfield  <mmaxfield@apple.com>
 
         Enable the woff2-variations @font-face format identifier
index 9266c1c..d771bfc 100644 (file)
@@ -39,11 +39,11 @@ struct SameSizeAsInlineBox {
     void* a[4];
     FloatPoint b;
     float c[2];
-    unsigned d; /*InlineBoxBitfields m_bitfields is padded to 32bits*/
+    unsigned d : 23;
 #if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
-    bool i;
     unsigned s;
     bool f;
+    bool i;
 #endif
 };
 
index 85cd766..c5b96a1 100644 (file)
@@ -412,13 +412,13 @@ protected:
     bool extracted() const { return m_bitfields.extracted(); }
 
 #if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
-protected:
-    bool m_isEverInChildList { true };
 private:
     static constexpr unsigned deletionSentinelNotDeletedValue = 0xF0F0F0F0U;
     static constexpr unsigned deletionSentinelDeletedValue = 0xF0DEADF0U;
     unsigned m_deletionSentinel { deletionSentinelNotDeletedValue };
     bool m_hasBadParent { false };
+protected:
+    bool m_isEverInChildList { true };
 #endif
 };