Title: [96422] trunk/Source/WebCore
Revision
96422
Author
commit-qu...@webkit.org
Date
2011-09-30 13:49:27 -0700 (Fri, 30 Sep 2011)

Log Message

REGRESSION(r82611) InlineBox has 33 bits of bitset, causing alignment issues and extra memory use.
https://bugs.webkit.org/show_bug.cgi?id=64914

Patch by Andreas Kling <kl...@webkit.org> on 2011-09-30
Reviewed by Antti Koivisto.

Remove InlineBox::prevOnLineExists() and its two accompanying bitfields
since nobody is using them anymore. nextOnLineExists() is still used by
GTK+ accessibility code.

Also added a compile-time assertion to guard against future bloating of
the InlineBox class.

* rendering/InlineBox.cpp:
(WebCore::SameSizeAsInlineBox::~SameSizeAsInlineBox):
* rendering/InlineBox.h:
(WebCore::InlineBox::InlineBox):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (96421 => 96422)


--- trunk/Source/WebCore/ChangeLog	2011-09-30 20:47:43 UTC (rev 96421)
+++ trunk/Source/WebCore/ChangeLog	2011-09-30 20:49:27 UTC (rev 96422)
@@ -1,3 +1,22 @@
+2011-09-30  Andreas Kling  <kl...@webkit.org>
+
+        REGRESSION(r82611) InlineBox has 33 bits of bitset, causing alignment issues and extra memory use.
+        https://bugs.webkit.org/show_bug.cgi?id=64914
+
+        Reviewed by Antti Koivisto.
+
+        Remove InlineBox::prevOnLineExists() and its two accompanying bitfields
+        since nobody is using them anymore. nextOnLineExists() is still used by
+        GTK+ accessibility code.
+
+        Also added a compile-time assertion to guard against future bloating of
+        the InlineBox class.
+
+        * rendering/InlineBox.cpp:
+        (WebCore::SameSizeAsInlineBox::~SameSizeAsInlineBox):
+        * rendering/InlineBox.h:
+        (WebCore::InlineBox::InlineBox):
+
 2011-09-30  Pierre Rossi  <pierre.ro...@gmail.com>
 
         [Qt] Build fix: Qt::escape is deprecated in Qt5

Modified: trunk/Source/WebCore/rendering/InlineBox.cpp (96421 => 96422)


--- trunk/Source/WebCore/rendering/InlineBox.cpp	2011-09-30 20:47:43 UTC (rev 96421)
+++ trunk/Source/WebCore/rendering/InlineBox.cpp	2011-09-30 20:49:27 UTC (rev 96422)
@@ -34,6 +34,19 @@
 using namespace std;
 
 namespace WebCore {
+
+class SameSizeAsInlineBox {
+    virtual ~SameSizeAsInlineBox() { }
+    void* a[4];
+    FloatPoint b;
+    float c;
+    uint32_t d;
+#ifndef NDEBUG
+    bool e;
+#endif
+};
+
+COMPILE_ASSERT(sizeof(InlineBox) == sizeof(SameSizeAsInlineBox), InlineBox_size_guard);
     
 #ifndef NDEBUG
 static bool inInlineBoxDetach;
@@ -258,21 +271,6 @@
     return m_nextOnLineExists;
 }
 
-bool InlineBox::prevOnLineExists() const
-{
-    if (!m_determinedIfPrevOnLineExists) {
-        m_determinedIfPrevOnLineExists = true;
-        
-        if (!parent())
-            m_prevOnLineExists = false;
-        else if (prevOnLine())
-            m_prevOnLineExists = true;
-        else
-            m_prevOnLineExists = parent()->prevOnLineExists();
-    }
-    return m_prevOnLineExists;
-}
-
 InlineBox* InlineBox::nextLeafChild() const
 {
     InlineBox* leaf = 0;

Modified: trunk/Source/WebCore/rendering/InlineBox.h (96421 => 96422)


--- trunk/Source/WebCore/rendering/InlineBox.h	2011-09-30 20:47:43 UTC (rev 96421)
+++ trunk/Source/WebCore/rendering/InlineBox.h	2011-09-30 20:49:27 UTC (rev 96422)
@@ -56,9 +56,7 @@
         , m_dirOverride(false)
         , m_isText(false)
         , m_determinedIfNextOnLineExists(false)
-        , m_determinedIfPrevOnLineExists(false)
         , m_nextOnLineExists(false)
-        , m_prevOnLineExists(false)
         , m_expansion(0)
 #ifndef NDEBUG
         , m_hasBadParent(false)
@@ -90,9 +88,7 @@
         , m_dirOverride(false)
         , m_isText(false)
         , m_determinedIfNextOnLineExists(false)
-        , m_determinedIfPrevOnLineExists(false)
         , m_nextOnLineExists(false)
-        , m_prevOnLineExists(false)
         , m_expansion(0)
 #ifndef NDEBUG
         , m_hasBadParent(false)
@@ -203,7 +199,6 @@
         m_prev = prev;
     }
     bool nextOnLineExists() const;
-    bool prevOnLineExists() const;
 
     virtual bool isLeaf() const { return true; }
     
@@ -364,9 +359,7 @@
     bool m_isText : 1; // Whether or not this object represents text with a non-zero height. Includes non-image list markers, text boxes.
 protected:
     mutable bool m_determinedIfNextOnLineExists : 1;
-    mutable bool m_determinedIfPrevOnLineExists : 1;
     mutable bool m_nextOnLineExists : 1;
-    mutable bool m_prevOnLineExists : 1;
     signed m_expansion : 11; // for justified text
 
 #ifndef NDEBUG
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to