https://bugs.webkit.org/show_bug.cgi?id=64914
Patch by Andreas Kling <kling@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):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@96422
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-09-30 Andreas Kling <kling@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.rossi@gmail.com>
[Qt] Build fix: Qt::escape is deprecated in Qt5
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;
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;
, 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)
, 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)
m_prev = prev;
}
bool nextOnLineExists() const;
- bool prevOnLineExists() const;
virtual bool isLeaf() const { return true; }
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