Chromium Code Reviews| 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 1efce1287e4568084cc78c51e92915c2f06fee5a..ce1a326307bad22b89e5fea597ce3273a0cd14d0 100644 |
| --- a/third_party/WebKit/Source/core/dom/Node.h |
| +++ b/third_party/WebKit/Source/core/dom/Node.h |
| @@ -511,13 +511,22 @@ 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; |
| + if (layoutObject) |
| + setFlag(HasLayoutObjectFlag); |
|
esprehn
2016/08/05 21:26:26
setFlag(static_cast<bool>(layoutObject), HasLayout
Bugs Nash
2016/08/12 03:55:33
Done
|
| + else |
| + clearFlag(HasLayoutObjectFlag); |
| } |
| // Use these two methods with caution. |
| @@ -732,10 +741,12 @@ private: |
| V0CustomElementFlag = 1 << 28, |
| V0CustomElementUpgradedFlag = 1 << 29, |
| + HasLayoutObjectFlag = 1 << 30, |
| + |
| DefaultNodeFlags = IsFinishedParsingChildrenFlag | NeedsReattachStyleChange |
| }; |
| - // 3 bits remaining. |
| + // 1 bit remaining. |
|
esprehn
2016/08/05 21:26:26
thanks for fixing this :)
|
| bool getFlag(NodeFlags mask) const { return m_nodeFlags & mask; } |
| void setFlag(bool f, NodeFlags mask) { m_nodeFlags = (m_nodeFlags & ~mask) | (-(int32_t)f & mask); } |
| @@ -767,6 +778,7 @@ protected: |
| static void reattachWhitespaceSiblingsIfNeeded(Text* start); |
| + bool hasLayoutObject() const { return getFlag(HasLayoutObjectFlag); } |
| bool hasRareData() const { return getFlag(HasRareDataFlag); } |
| NodeRareData* rareData() const; |
| @@ -825,6 +837,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; |