Fix packing in StyleBoxData for Windows.
authoralexis.menard@openbossa.org <alexis.menard@openbossa.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Jun 2012 23:07:21 +0000 (23:07 +0000)
committeralexis.menard@openbossa.org <alexis.menard@openbossa.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Jun 2012 23:07:21 +0000 (23:07 +0000)
https://bugs.webkit.org/show_bug.cgi?id=88858

Reviewed by Tony Chang.

MSVC doesn't pack bitfields if the types are mixed.
We can safely change the bool type to an unsigned so
the packing will happen. I have added a compile assert
for future regressions.

No new tests : we should not see any regressions.

* rendering/style/StyleBoxData.h:
* rendering/style/StyleBoxData.cpp:
(StyleBoxData):

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

Source/WebCore/ChangeLog
Source/WebCore/rendering/style/StyleBoxData.cpp
Source/WebCore/rendering/style/StyleBoxData.h

index 4996ec5..1ff1516 100644 (file)
@@ -1,3 +1,21 @@
+2012-06-12  Alexis Menard  <alexis.menard@openbossa.org>
+
+        Fix packing in StyleBoxData for Windows.
+        https://bugs.webkit.org/show_bug.cgi?id=88858
+
+        Reviewed by Tony Chang.
+
+        MSVC doesn't pack bitfields if the types are mixed.
+        We can safely change the bool type to an unsigned so
+        the packing will happen. I have added a compile assert
+        for future regressions.
+
+        No new tests : we should not see any regressions.
+
+        * rendering/style/StyleBoxData.h:
+        * rendering/style/StyleBoxData.cpp:
+        (StyleBoxData):
+
 2012-06-12  Adrienne Walker  <enne@google.com>
 
         [chromium] Paint scrollbars on WebKit thread and composite those textures
 2012-06-12  Adrienne Walker  <enne@google.com>
 
         [chromium] Paint scrollbars on WebKit thread and composite those textures
index a378695..3fc00c8 100644 (file)
 
 namespace WebCore {
 
 
 namespace WebCore {
 
+struct SameSizeAsStyleBoxData : public RefCounted<SameSizeAsStyleBoxData> {
+    Length length[7];
+    int m_zIndex;
+    uint32_t bitfields;
+};
+
+COMPILE_ASSERT(sizeof(StyleBoxData) == sizeof(SameSizeAsStyleBoxData), StyleBoxData_should_not_grow);
+
 StyleBoxData::StyleBoxData()
     : m_minWidth(RenderStyle::initialMinSize())
     , m_maxWidth(RenderStyle::initialMaxSize())
 StyleBoxData::StyleBoxData()
     : m_minWidth(RenderStyle::initialMinSize())
     , m_maxWidth(RenderStyle::initialMaxSize())
index c0d249b..86fd6e9 100644 (file)
@@ -80,7 +80,7 @@ private:
     Length m_verticalAlign;
 
     int m_zIndex;
     Length m_verticalAlign;
 
     int m_zIndex;
-    bool m_hasAutoZIndex : 1;
+    unsigned m_hasAutoZIndex : 1;
     unsigned m_boxSizing : 1; // EBoxSizing
 #if ENABLE(CSS_BOX_DECORATION_BREAK)
     unsigned m_boxDecorationBreak : 1; // EBoxDecorationBreak
     unsigned m_boxSizing : 1; // EBoxSizing
 #if ENABLE(CSS_BOX_DECORATION_BREAK)
     unsigned m_boxDecorationBreak : 1; // EBoxDecorationBreak