Pack RenderLayer harder.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Jan 2014 10:35:35 +0000 (10:35 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Jan 2014 10:35:35 +0000 (10:35 +0000)
<https://webkit.org/b/126967>

Re-arrange the members of ScrollableArea a bit so that RenderLayer
can combine its bitfields with the ones in ScrollableArea.
This makes RenderLayer fit into a snugger size class, saving 32 bytes
per layer.

296 kB progression on Membuster3.

Reviewed by Antti Koivisto.

* platform/ScrollableArea.cpp:
* platform/ScrollableArea.h:

    Put bitfield members at the end of ScrollableArea so inheriting
    classes can synergize with the padding.

* rendering/RenderLayer.h:

    Make m_blendMode a bitfield to avoid bloating the class.

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

Source/WebCore/ChangeLog
Source/WebCore/platform/ScrollableArea.cpp
Source/WebCore/platform/ScrollableArea.h
Source/WebCore/rendering/RenderLayer.h

index ea25f35b4facbb78401dd2c77b66d5d35f2c08dc..745400094b6b8395cf7a19f196874302aa484bce 100644 (file)
@@ -1,3 +1,27 @@
+2014-01-14  Andreas Kling  <akling@apple.com>
+
+        Pack RenderLayer harder.
+        <https://webkit.org/b/126967>
+
+        Re-arrange the members of ScrollableArea a bit so that RenderLayer
+        can combine its bitfields with the ones in ScrollableArea.
+        This makes RenderLayer fit into a snugger size class, saving 32 bytes
+        per layer.
+
+        296 kB progression on Membuster3.
+
+        Reviewed by Antti Koivisto.
+
+        * platform/ScrollableArea.cpp:
+        * platform/ScrollableArea.h:
+
+            Put bitfield members at the end of ScrollableArea so inheriting
+            classes can synergize with the padding.
+
+        * rendering/RenderLayer.h:
+
+            Make m_blendMode a bitfield to avoid bloating the class.
+
 2014-01-13  Tim Horton  <timothy_horton@apple.com>
 
         iOS WebCore build fixes
index 2bc84c5c1b2943a321b408c7853e0b9952d36f53..df753123b3006bddd3f5e9d150f6e94f05d7c7b1 100644 (file)
@@ -45,8 +45,8 @@ namespace WebCore {
 struct SameSizeAsScrollableArea {
     virtual ~SameSizeAsScrollableArea();
     void* pointer;
-    unsigned bitfields : 16;
     IntPoint origin;
+    unsigned bitfields : 16;
 };
 
 COMPILE_ASSERT(sizeof(ScrollableArea) == sizeof(SameSizeAsScrollableArea), ScrollableArea_should_stay_small);
index f17471d4d7d18eab49b2cd45a7ac57fc5f1b5cef..743d1d570dcd33ed75efd2537bd956094d4c81dc 100644 (file)
@@ -252,16 +252,6 @@ private:
     virtual void setScrollOffset(const IntPoint&) = 0;
 
     mutable OwnPtr<ScrollAnimator> m_scrollAnimator;
-    unsigned m_constrainsScrollingToContentEdge : 1;
-
-    unsigned m_inLiveResize : 1;
-
-    unsigned m_verticalScrollElasticity : 2; // ScrollElasticity
-    unsigned m_horizontalScrollElasticity : 2; // ScrollElasticity
-
-    unsigned m_scrollbarOverlayStyle : 2; // ScrollbarOverlayStyle
-
-    unsigned m_scrollOriginChanged : 1;
 
     // There are 8 possible combinations of writing mode and direction. Scroll origin will be non-zero in the x or y axis
     // if there is any reversed direction or writing-mode. The combinations are:
@@ -275,6 +265,17 @@ private:
     // vertical-rl / ltr            YES                     NO
     // vertical-rl / rtl            YES                     YES
     IntPoint m_scrollOrigin;
+
+    unsigned m_constrainsScrollingToContentEdge : 1;
+
+    unsigned m_inLiveResize : 1;
+
+    unsigned m_verticalScrollElasticity : 2; // ScrollElasticity
+    unsigned m_horizontalScrollElasticity : 2; // ScrollElasticity
+
+    unsigned m_scrollbarOverlayStyle : 2; // ScrollbarOverlayStyle
+
+    unsigned m_scrollOriginChanged : 1;
 };
 
 } // namespace WebCore
index 491132f53ac41ab7095c9cd568a2fcac23e41767..b20adece82ef7d65d3b7a56eff170adb3815f05f 100644 (file)
@@ -1260,7 +1260,7 @@ private:
 #endif
 
 #if ENABLE(CSS_COMPOSITING)
-    BlendMode m_blendMode;
+    BlendMode m_blendMode : 5;
 #endif
 
     RenderLayerModelObject& m_renderer;