| 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;
|
|
|