Modified: trunk/Source/WebCore/ChangeLog (262131 => 262132)
--- trunk/Source/WebCore/ChangeLog 2020-05-26 00:03:15 UTC (rev 262131)
+++ trunk/Source/WebCore/ChangeLog 2020-05-26 00:26:39 UTC (rev 262132)
@@ -1,3 +1,22 @@
+2020-05-25 Simon Fraser <[email protected]>
+
+ Make isTableRow() an inline function
+ https://bugs.webkit.org/show_bug.cgi?id=212360
+
+ Reviewed by Darin Adler.
+
+ isTableCell() is a virtual function that's called in some hot code paths, like RenderLayer::localBoundingBox(),
+ so make it inline by using a spare bit on RenderObject.
+
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isTableCaption const):
+ (WebCore::RenderObject::isTableRow const):
+ (WebCore::RenderObject::setIsTableRow):
+ (WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::RenderTableRow):
+ * rendering/RenderTableRow.h:
+
2020-05-25 Alex Christensen <[email protected]>
Expose more network metrics to WebCoreNSURLSession
Modified: trunk/Source/WebCore/rendering/RenderObject.h (262131 => 262132)
--- trunk/Source/WebCore/rendering/RenderObject.h 2020-05-26 00:03:15 UTC (rev 262131)
+++ trunk/Source/WebCore/rendering/RenderObject.h 2020-05-26 00:26:39 UTC (rev 262132)
@@ -239,7 +239,6 @@
virtual bool isTableCell() const { return false; }
virtual bool isRenderTableCol() const { return false; }
virtual bool isTableCaption() const { return false; }
- virtual bool isTableRow() const { return false; }
virtual bool isTableSection() const { return false; }
virtual bool isTextControl() const { return false; }
virtual bool isTextArea() const { return false; }
@@ -396,6 +395,7 @@
bool isLineBreakOpportunity() const { return isLineBreak() && isWBR(); }
bool isTextOrLineBreak() const { return isText() || isLineBreak(); }
bool isBox() const { return m_bitfields.isBox(); }
+ bool isTableRow() const { return m_bitfields.isTableRow(); }
bool isRenderView() const { return m_bitfields.isBox() && m_bitfields.isTextOrRenderView(); }
bool isInline() const { return m_bitfields.isInline(); } // inline object
bool isReplaced() const { return m_bitfields.isReplaced(); } // a "replaced" element (see CSS)
@@ -488,6 +488,7 @@
void setIsText() { ASSERT(!isBox()); m_bitfields.setIsTextOrRenderView(true); }
void setIsLineBreak() { m_bitfields.setIsLineBreak(true); }
void setIsBox() { m_bitfields.setIsBox(true); }
+ void setIsTableRow() { m_bitfields.setIsTableRow(true); }
void setIsRenderView() { ASSERT(isBox()); m_bitfields.setIsTextOrRenderView(true); }
void setReplaced(bool b = true) { m_bitfields.setIsReplaced(b); }
void setHorizontalWritingMode(bool b = true) { m_bitfields.setHorizontalWritingMode(b); }
@@ -820,6 +821,7 @@
, m_isAnonymous(node.isDocumentNode())
, m_isTextOrRenderView(false)
, m_isBox(false)
+ , m_isTableRow(false)
, m_isInline(true)
, m_isReplaced(false)
, m_isLineBreak(false)
@@ -851,6 +853,7 @@
ADD_BOOLEAN_BITFIELD(isAnonymous, IsAnonymous);
ADD_BOOLEAN_BITFIELD(isTextOrRenderView, IsTextOrRenderView);
ADD_BOOLEAN_BITFIELD(isBox, IsBox);
+ ADD_BOOLEAN_BITFIELD(isTableRow, IsTableRow);
ADD_BOOLEAN_BITFIELD(isInline, IsInline);
ADD_BOOLEAN_BITFIELD(isReplaced, IsReplaced);
ADD_BOOLEAN_BITFIELD(isLineBreak, IsLineBreak);
@@ -859,7 +862,6 @@
ADD_BOOLEAN_BITFIELD(hasLayer, HasLayer);
ADD_BOOLEAN_BITFIELD(hasOverflowClip, HasOverflowClip); // Set in the case of overflow:auto/scroll/hidden
ADD_BOOLEAN_BITFIELD(hasTransformRelatedProperty, HasTransformRelatedProperty);
- ADD_BOOLEAN_BITFIELD(unused, Unused);
ADD_BOOLEAN_BITFIELD(everHadLayout, EverHadLayout);
Modified: trunk/Source/WebCore/rendering/RenderTableRow.cpp (262131 => 262132)
--- trunk/Source/WebCore/rendering/RenderTableRow.cpp 2020-05-26 00:03:15 UTC (rev 262131)
+++ trunk/Source/WebCore/rendering/RenderTableRow.cpp 2020-05-26 00:26:39 UTC (rev 262132)
@@ -48,6 +48,7 @@
, m_rowIndex(unsetRowIndex)
{
setInline(false);
+ setIsTableRow();
}
RenderTableRow::RenderTableRow(Document& document, RenderStyle&& style)
@@ -55,6 +56,7 @@
, m_rowIndex(unsetRowIndex)
{
setInline(false);
+ setIsTableRow();
}
void RenderTableRow::willBeRemovedFromTree()
Modified: trunk/Source/WebCore/rendering/RenderTableRow.h (262131 => 262132)
--- trunk/Source/WebCore/rendering/RenderTableRow.h 2020-05-26 00:03:15 UTC (rev 262131)
+++ trunk/Source/WebCore/rendering/RenderTableRow.h 2020-05-26 00:26:39 UTC (rev 262132)
@@ -70,8 +70,6 @@
const char* renderName() const override { return (isAnonymous() || isPseudoElement()) ? "RenderTableRow (anonymous)" : "RenderTableRow"; }
- bool isTableRow() const override { return true; }
-
bool canHaveChildren() const override { return true; }
void willBeRemovedFromTree() override;