Index: third_party/WebKit/Source/core/dom/Node.h |
diff --git a/third_party/WebKit/Source/core/dom/Node.h b/third_party/WebKit/Source/core/dom/Node.h |
index ec0f9f4b18b730382cb721ea37aadbea645fe07b..c2f9e88615682c8eb34d42904d0a2aadd0e138a6 100644 |
--- a/third_party/WebKit/Source/core/dom/Node.h |
+++ b/third_party/WebKit/Source/core/dom/Node.h |
@@ -477,13 +477,19 @@ public: |
// As layoutObject() includes a branch you should avoid calling it repeatedly in hot code paths. |
// Note that if a Node has a layoutObject, it's parentNode is guaranteed to have one as well. |
- LayoutObject* layoutObject() const { return hasRareData() ? m_data.m_rareData->layoutObject() : m_data.m_layoutObject; } |
+ LayoutObject* layoutObject() const |
+ { |
+ if (hasRareData()) |
+ return m_data.m_rareData->layoutObject(); |
+ return hasLayoutObject() ? m_data.m_layoutObject : nullptr; |
+ } |
void setLayoutObject(LayoutObject* layoutObject) |
{ |
if (hasRareData()) |
m_data.m_rareData->setLayoutObject(layoutObject); |
else |
m_data.m_layoutObject = layoutObject; |
+ setFlag(static_cast<bool>(layoutObject), HasLayoutObjectFlag); |
} |
// Use these two methods with caution. |
@@ -697,10 +703,12 @@ private: |
V0CustomElementFlag = 1 << 28, |
V0CustomElementUpgradedFlag = 1 << 29, |
+ HasLayoutObjectFlag = 1 << 30, |
+ |
DefaultNodeFlags = IsFinishedParsingChildrenFlag | NeedsReattachStyleChange |
}; |
- // 3 bits remaining. |
+ // 1 bit remaining. |
bool getFlag(NodeFlags mask) const { return m_nodeFlags & mask; } |
void setFlag(bool f, NodeFlags mask) { m_nodeFlags = (m_nodeFlags & ~mask) | (-(int32_t)f & mask); } |
@@ -732,6 +740,7 @@ protected: |
static void reattachWhitespaceSiblingsIfNeeded(Text* start); |
+ bool hasLayoutObject() const { return getFlag(HasLayoutObjectFlag); } |
bool hasRareData() const { return getFlag(HasRareDataFlag); } |
NodeRareData* rareData() const; |
@@ -786,6 +795,7 @@ private: |
// When a node has rare data we move the layoutObject into the rare data. |
union DataUnion { |
DataUnion() : m_layoutObject(nullptr) { } |
+ ComputedStyle* m_computedStyle; |
// LayoutObjects are fully owned by their DOM node. See LayoutObject's |
// LIFETIME documentation section. |
LayoutObject* m_layoutObject; |