- Revision
- 266714
- Author
- [email protected]
- Date
- 2020-09-07 21:30:14 -0700 (Mon, 07 Sep 2020)
Log Message
Move all remaining flags from ElementRareData to Node to reduce the frequency
https://bugs.webkit.org/show_bug.cgi?id=216208
Reviewed by Darin Adler.
This patch moves all remaining bit flags from ElementRareData to Node::m_nodeFlags. It also stores
tabIndex of 0 and -1 in Node::m_nodeFlags to avoid creating ElementRareData for these common values.
No new tests since there should be no behavioral change.
* dom/Element.cpp:
(WebCore::Element::clearTabIndexExplicitlyIfNeeded): Deleted. Merged into setTabIndexExplicitly.
(WebCore::Element::setTabIndexExplicitly): Now takes Optional<int>. Stores 0 and -1 as node flags.
(WebCore::Element::tabIndexSetExplicitly const): Added the special casing for 0 and -1.
(WebCore::Element::removedFromAncestor):
(WebCore::Element::containsFullScreenElement const): Deleted.
(WebCore::Element::setContainsFullScreenElement):
(WebCore::Element::hasPendingResources const): Deleted.
(WebCore::Element::setHasPendingResources): Deleted.
(WebCore::Element::clearHasPendingResources): Deleted.
(WebCore::Element::hasCSSAnimation const): Deleted.
(WebCore::Element::setHasCSSAnimation): Deleted.
(WebCore::Element::clearHasCSSAnimation): Deleted.
(WebCore::Element::createElementIdentifier):
* dom/Element.h:
(WebCore::Element::hasPendingResources const): Moved here from Element.cpp.
(WebCore::Element::setHasPendingResources): Ditto.
(WebCore::Element::clearHasPendingResources): Ditto.
(WebCore::Element::hasCSSAnimation const): Ditto.
(WebCore::Element::setHasCSSAnimation): Ditto.
(WebCore::Element::clearHasCSSAnimation): Ditto.
(WebCore::Element::containsFullScreenElement const): Ditto.
* dom/ElementRareData.cpp:
* dom/ElementRareData.h:
(WebCore::ElementRareData::tabIndex const): Deleted.
(WebCore::ElementRareData::setTabIndexExplicitly): Deleted.
(WebCore::ElementRareData::tabIndexSetExplicitly const): Deleted.
(WebCore::ElementRareData::clearTabIndexExplicitly): Deleted.
(WebCore::ElementRareData::containsFullScreenElement): Deleted.
(WebCore::ElementRareData::setContainsFullScreenElement): Deleted.
(WebCore::ElementRareData::hasPendingResources const): Deleted.
(WebCore::ElementRareData::setHasPendingResources): Deleted.
(WebCore::ElementRareData::hasCSSAnimation const): Deleted.
(WebCore::ElementRareData::setHasCSSAnimation): Deleted.
(WebCore::ElementRareData::hasElementIdentifier const): Deleted.
(WebCore::ElementRareData::setHasElementIdentifier): Deleted.
(WebCore::ElementRareData::useTypes const): Added the missing use types for style maps, part list,
and part names.
(WebCore::ElementRareData::ElementRareData):
(WebCore::ElementRareData::unusualTabIndex const): Renamed from tabIndex.
(WebCore::ElementRareData::setUnusualTabIndex): Ditto from setTabIndexExplicitly.
* dom/Node.cpp:
(WebCore::stringForRareDataUseType): Added the missing strings.
* dom/Node.h:
(WebCore::Node::NodeFlags): Moved bit flags from ElementRareData and reserved the two highest bits
to store TabIndexState.
(WebCore::Node::s_tabIndexStateBitOffset): Added.
(WebCore::Node::s_tabIndexStateBitMask): Added.
(WebCore::Node::TabIndexState): Added.
(WebCore::Node::tabIndexState const): Added.
(WebCore::Node::setTabIndexState): Added.
* dom/NodeRareData.h:
(WebCore::NodeRareData::UseType): Added the missing use types: style maps, part list, and part names.
* html/HTMLElement.cpp:
(WebCore::HTMLElement::parseAttribute):
* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::parseAttribute):
* svg/SVGElement.cpp:
(WebCore::SVGElement::parseAttribute):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (266713 => 266714)
--- trunk/Source/WebCore/ChangeLog 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/ChangeLog 2020-09-08 04:30:14 UTC (rev 266714)
@@ -1,3 +1,75 @@
+2020-09-07 Ryosuke Niwa <[email protected]>
+
+ Move all remaining flags from ElementRareData to Node to reduce the frequency
+ https://bugs.webkit.org/show_bug.cgi?id=216208
+
+ Reviewed by Darin Adler.
+
+ This patch moves all remaining bit flags from ElementRareData to Node::m_nodeFlags. It also stores
+ tabIndex of 0 and -1 in Node::m_nodeFlags to avoid creating ElementRareData for these common values.
+
+ No new tests since there should be no behavioral change.
+
+ * dom/Element.cpp:
+ (WebCore::Element::clearTabIndexExplicitlyIfNeeded): Deleted. Merged into setTabIndexExplicitly.
+ (WebCore::Element::setTabIndexExplicitly): Now takes Optional<int>. Stores 0 and -1 as node flags.
+ (WebCore::Element::tabIndexSetExplicitly const): Added the special casing for 0 and -1.
+ (WebCore::Element::removedFromAncestor):
+ (WebCore::Element::containsFullScreenElement const): Deleted.
+ (WebCore::Element::setContainsFullScreenElement):
+ (WebCore::Element::hasPendingResources const): Deleted.
+ (WebCore::Element::setHasPendingResources): Deleted.
+ (WebCore::Element::clearHasPendingResources): Deleted.
+ (WebCore::Element::hasCSSAnimation const): Deleted.
+ (WebCore::Element::setHasCSSAnimation): Deleted.
+ (WebCore::Element::clearHasCSSAnimation): Deleted.
+ (WebCore::Element::createElementIdentifier):
+ * dom/Element.h:
+ (WebCore::Element::hasPendingResources const): Moved here from Element.cpp.
+ (WebCore::Element::setHasPendingResources): Ditto.
+ (WebCore::Element::clearHasPendingResources): Ditto.
+ (WebCore::Element::hasCSSAnimation const): Ditto.
+ (WebCore::Element::setHasCSSAnimation): Ditto.
+ (WebCore::Element::clearHasCSSAnimation): Ditto.
+ (WebCore::Element::containsFullScreenElement const): Ditto.
+ * dom/ElementRareData.cpp:
+ * dom/ElementRareData.h:
+ (WebCore::ElementRareData::tabIndex const): Deleted.
+ (WebCore::ElementRareData::setTabIndexExplicitly): Deleted.
+ (WebCore::ElementRareData::tabIndexSetExplicitly const): Deleted.
+ (WebCore::ElementRareData::clearTabIndexExplicitly): Deleted.
+ (WebCore::ElementRareData::containsFullScreenElement): Deleted.
+ (WebCore::ElementRareData::setContainsFullScreenElement): Deleted.
+ (WebCore::ElementRareData::hasPendingResources const): Deleted.
+ (WebCore::ElementRareData::setHasPendingResources): Deleted.
+ (WebCore::ElementRareData::hasCSSAnimation const): Deleted.
+ (WebCore::ElementRareData::setHasCSSAnimation): Deleted.
+ (WebCore::ElementRareData::hasElementIdentifier const): Deleted.
+ (WebCore::ElementRareData::setHasElementIdentifier): Deleted.
+ (WebCore::ElementRareData::useTypes const): Added the missing use types for style maps, part list,
+ and part names.
+ (WebCore::ElementRareData::ElementRareData):
+ (WebCore::ElementRareData::unusualTabIndex const): Renamed from tabIndex.
+ (WebCore::ElementRareData::setUnusualTabIndex): Ditto from setTabIndexExplicitly.
+ * dom/Node.cpp:
+ (WebCore::stringForRareDataUseType): Added the missing strings.
+ * dom/Node.h:
+ (WebCore::Node::NodeFlags): Moved bit flags from ElementRareData and reserved the two highest bits
+ to store TabIndexState.
+ (WebCore::Node::s_tabIndexStateBitOffset): Added.
+ (WebCore::Node::s_tabIndexStateBitMask): Added.
+ (WebCore::Node::TabIndexState): Added.
+ (WebCore::Node::tabIndexState const): Added.
+ (WebCore::Node::setTabIndexState): Added.
+ * dom/NodeRareData.h:
+ (WebCore::NodeRareData::UseType): Added the missing use types: style maps, part list, and part names.
+ * html/HTMLElement.cpp:
+ (WebCore::HTMLElement::parseAttribute):
+ * mathml/MathMLElement.cpp:
+ (WebCore::MathMLElement::parseAttribute):
+ * svg/SVGElement.cpp:
+ (WebCore::SVGElement::parseAttribute):
+
2020-09-07 Chris Dumez <[email protected]>
AudioParam.cancelAndHoldAtTime() is missing
Modified: trunk/Source/WebCore/dom/Element.cpp (266713 => 266714)
--- trunk/Source/WebCore/dom/Element.cpp 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/dom/Element.cpp 2020-09-08 04:30:14 UTC (rev 266714)
@@ -241,22 +241,40 @@
return static_cast<ElementRareData&>(ensureRareData());
}
-void Element::clearTabIndexExplicitlyIfNeeded()
+void Element::setTabIndexExplicitly(Optional<int> tabIndex)
{
- if (hasRareData())
- elementRareData()->clearTabIndexExplicitly();
+ if (!tabIndex) {
+ setTabIndexState(TabIndexState::NotSet);
+ return;
+ }
+ setTabIndexState([this, value = tabIndex.value()]() {
+ switch (value) {
+ case 0:
+ return TabIndexState::Zero;
+ case -1:
+ return TabIndexState::NegativeOne;
+ default:
+ ensureElementRareData().setUnusualTabIndex(value);
+ return TabIndexState::InRareData;
+ }
+ }());
}
-void Element::setTabIndexExplicitly(int tabIndex)
-{
- ensureElementRareData().setTabIndexExplicitly(tabIndex);
-}
-
Optional<int> Element::tabIndexSetExplicitly() const
{
- if (!hasRareData())
+ switch (tabIndexState()) {
+ case TabIndexState::NotSet:
return WTF::nullopt;
- return elementRareData()->tabIndex();
+ case TabIndexState::Zero:
+ return 0;
+ case TabIndexState::NegativeOne:
+ return -1;
+ case TabIndexState::InRareData:
+ ASSERT(hasRareData());
+ return elementRareData()->unusualTabIndex();
+ }
+ ASSERT_NOT_REACHED();
+ return WTF::nullopt;
}
int Element::defaultTabIndex() const
@@ -2266,9 +2284,9 @@
}
#endif
- if (hasRareData() && elementRareData()->hasElementIdentifier()) {
+ if (getFlag(HasElementIdentifierFlag)) {
document().identifiedElementWasRemovedFromDocument(*this);
- elementRareData()->setHasElementIdentifier(false);
+ clearFlag(HasElementIdentifierFlag);
}
}
@@ -3716,14 +3734,12 @@
document().fullscreenManager().requestFullscreenForElement(this, FullscreenManager::EnforceIFrameAllowFullscreenRequirement);
}
-bool Element::containsFullScreenElement() const
-{
- return hasRareData() && elementRareData()->containsFullScreenElement();
-}
-
void Element::setContainsFullScreenElement(bool flag)
{
- ensureElementRareData().setContainsFullScreenElement(flag);
+ if (flag)
+ setFlag(ContainsFullScreenElementFlag);
+ else
+ clearFlag(ContainsFullScreenElementFlag);
invalidateStyleAndLayerComposition();
}
@@ -4366,40 +4382,6 @@
m_elementData = downcast<ShareableElementData>(*m_elementData).makeUniqueCopy();
}
-bool Element::hasPendingResources() const
-{
- return hasRareData() && elementRareData()->hasPendingResources();
-}
-
-void Element::setHasPendingResources()
-{
- ensureElementRareData().setHasPendingResources(true);
-}
-
-void Element::clearHasPendingResources()
-{
- if (!hasRareData())
- return;
- elementRareData()->setHasPendingResources(false);
-}
-
-bool Element::hasCSSAnimation() const
-{
- return hasRareData() && elementRareData()->hasCSSAnimation();
-}
-
-void Element::setHasCSSAnimation()
-{
- ensureElementRareData().setHasCSSAnimation(true);
-}
-
-void Element::clearHasCSSAnimation()
-{
- if (!hasRareData())
- return;
- elementRareData()->setHasCSSAnimation(false);
-}
-
bool Element::canContainRangeEndPoint() const
{
return !equalLettersIgnoringASCIICase(attributeWithoutSynchronization(roleAttr), "img");
@@ -4611,10 +4593,8 @@
ElementIdentifier Element::createElementIdentifier()
{
- auto& rareData = ensureElementRareData();
- ASSERT(!rareData.hasElementIdentifier());
-
- rareData.setHasElementIdentifier(true);
+ ASSERT(!getFlag(HasElementIdentifierFlag));
+ setFlag(HasElementIdentifierFlag);
return ElementIdentifier::generate();
}
Modified: trunk/Source/WebCore/dom/Element.h (266713 => 266714)
--- trunk/Source/WebCore/dom/Element.h 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/dom/Element.h 2020-09-08 04:30:14 UTC (rev 266714)
@@ -35,6 +35,8 @@
#include "WebAnimationTypes.h"
#include <_javascript_Core/Strong.h>
+#define DUMP_NODE_STATISTICS 0
+
namespace WebCore {
class CustomElementReactionQueue;
@@ -479,14 +481,14 @@
virtual bool childShouldCreateRenderer(const Node&) const;
- bool hasPendingResources() const;
- void setHasPendingResources();
- void clearHasPendingResources();
+ bool hasPendingResources() const { return getFlag(HasPendingResourcesFlag); }
+ void setHasPendingResources() { setFlag(HasPendingResourcesFlag); }
+ void clearHasPendingResources() { clearFlag(HasPendingResourcesFlag); }
virtual void buildPendingResource() { };
- bool hasCSSAnimation() const;
- void setHasCSSAnimation();
- void clearHasCSSAnimation();
+ bool hasCSSAnimation() const { return getFlag(HasCSSAnimationFlag); }
+ void setHasCSSAnimation() { setFlag(HasCSSAnimationFlag); }
+ void clearHasCSSAnimation() { clearFlag(HasCSSAnimationFlag); }
KeyframeEffectStack* keyframeEffectStack() const;
KeyframeEffectStack& ensureKeyframeEffectStack();
@@ -511,7 +513,7 @@
void setLastStyleChangeEventStyle(std::unique_ptr<const RenderStyle>&&);
#if ENABLE(FULLSCREEN_API)
- WEBCORE_EXPORT bool containsFullScreenElement() const;
+ bool containsFullScreenElement() const { return getFlag(ContainsFullScreenElementFlag); }
void setContainsFullScreenElement(bool);
void setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(bool);
WEBCORE_EXPORT virtual void webkitRequestFullscreen();
@@ -635,8 +637,7 @@
void removeAllEventListeners() final;
virtual void parserDidSetAttributes();
- void clearTabIndexExplicitlyIfNeeded();
- void setTabIndexExplicitly(int);
+ void setTabIndexExplicitly(Optional<int>);
void classAttributeChanged(const AtomString& newClassString);
void partAttributeChanged(const AtomString& newValue);
Modified: trunk/Source/WebCore/dom/ElementRareData.cpp (266713 => 266714)
--- trunk/Source/WebCore/dom/ElementRareData.cpp 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/dom/ElementRareData.cpp 2020-09-08 04:30:14 UTC (rev 266714)
@@ -36,11 +36,6 @@
struct SameSizeAsElementRareData : NodeRareData {
int tabIndex;
unsigned short childIndex;
-#if ENABLE(FULLSCREEN_API)
- unsigned bitfields : 12;
-#else
- unsigned bitfields : 11;
-#endif
LayoutSize sizeForResizing;
IntPoint savedLayerScrollPosition;
void* pointers[11];
Modified: trunk/Source/WebCore/dom/ElementRareData.h (266713 => 266714)
--- trunk/Source/WebCore/dom/ElementRareData.h 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/dom/ElementRareData.h 2020-09-08 04:30:14 UTC (rev 266714)
@@ -56,16 +56,9 @@
void resetComputedStyle();
void resetStyleRelations();
-
- Optional<int> tabIndex() const { return m_tabIndexWasSetExplicitly ? Optional<int> { m_tabIndex } : WTF::nullopt; }
- void setTabIndexExplicitly(int index) { m_tabIndex = index; m_tabIndexWasSetExplicitly = true; }
- bool tabIndexSetExplicitly() const { return m_tabIndexWasSetExplicitly; }
- void clearTabIndexExplicitly() { m_tabIndex = 0; m_tabIndexWasSetExplicitly = false; }
-#if ENABLE(FULLSCREEN_API)
- bool containsFullScreenElement() { return m_containsFullScreenElement; }
- void setContainsFullScreenElement(bool value) { m_containsFullScreenElement = value; }
-#endif
+ int unusualTabIndex() const;
+ void setUnusualTabIndex(int);
unsigned childIndex() const { return m_childIndex; }
void setChildIndex(unsigned index) { m_childIndex = index; }
@@ -96,18 +89,9 @@
IntPoint savedLayerScrollPosition() const { return m_savedLayerScrollPosition; }
void setSavedLayerScrollPosition(IntPoint position) { m_savedLayerScrollPosition = position; }
- bool hasPendingResources() const { return m_hasPendingResources; }
- void setHasPendingResources(bool has) { m_hasPendingResources = has; }
-
- bool hasCSSAnimation() const { return m_hasCSSAnimation; }
- void setHasCSSAnimation(bool value) { m_hasCSSAnimation = value; }
-
ElementAnimationRareData* elementAnimationRareData() { return m_animationRareData.get(); }
ElementAnimationRareData& ensureAnimationRareData();
- bool hasElementIdentifier() const { return m_hasElementIdentifier; }
- void setHasElementIdentifier(bool value) { m_hasElementIdentifier = value; }
-
DOMTokenList* partList() const { return m_partList.get(); }
void setPartList(std::unique_ptr<DOMTokenList> partList) { m_partList = WTFMove(partList); }
@@ -133,7 +117,7 @@
OptionSet<UseType> useTypes() const
{
auto result = NodeRareData::useTypes();
- if (m_tabIndexWasSetExplicitly)
+ if (m_unusualTabIndex)
result.add(UseType::TabIndex);
if (m_minimumSizeForResizing != defaultMinimumSizeForResizing())
result.add(UseType::MinimumSize);
@@ -157,24 +141,25 @@
if (m_resizeObserverData)
result.add(UseType::ResizeObserver);
#endif
+ if (m_animationRareData)
+ result.add(UseType::Animations);
if (m_beforePseudoElement || m_afterPseudoElement)
result.add(UseType::PseudoElements);
- if (m_animationRareData)
- result.add(UseType::Animations);
+#if ENABLE(CSS_TYPED_OM)
+ if (m_attributeStyleMap)
+ result.add(UseType::StyleMap);
+#endif
+ if (m_partList)
+ result.add(UseType::PartList);
+ if (!m_partNames.isEmpty())
+ result.add(UseType::PartNames);
return result;
}
#endif
private:
- int m_tabIndex;
- unsigned short m_childIndex;
- unsigned m_tabIndexWasSetExplicitly : 1;
-#if ENABLE(FULLSCREEN_API)
- unsigned m_containsFullScreenElement : 1;
-#endif
- unsigned m_hasPendingResources : 1;
- unsigned m_hasCSSAnimation : 1;
- unsigned m_hasElementIdentifier : 1;
+ int m_unusualTabIndex { 0 };
+ unsigned short m_childIndex { 0 };
LayoutSize m_minimumSizeForResizing;
IntPoint m_savedLayerScrollPosition;
@@ -210,15 +195,6 @@
inline ElementRareData::ElementRareData()
: NodeRareData(Type::Element)
- , m_tabIndex(0)
- , m_childIndex(0)
- , m_tabIndexWasSetExplicitly(false)
-#if ENABLE(FULLSCREEN_API)
- , m_containsFullScreenElement(false)
-#endif
- , m_hasPendingResources(false)
- , m_hasCSSAnimation(false)
- , m_hasElementIdentifier(false)
, m_minimumSizeForResizing(defaultMinimumSizeForResizing())
{
}
@@ -252,6 +228,18 @@
setChildIndex(0);
}
+inline int ElementRareData::unusualTabIndex() const
+{
+ ASSERT(m_unusualTabIndex); // setUnusualTabIndex must have been called before this.
+ return m_unusualTabIndex;
+}
+
+inline void ElementRareData::setUnusualTabIndex(int tabIndex)
+{
+ ASSERT(tabIndex && tabIndex != -1); // Common values of 0 and -1 are stored as TabIndexState in Node.
+ m_unusualTabIndex = tabIndex;
+}
+
inline ElementAnimationRareData& ElementRareData::ensureAnimationRareData()
{
if (!m_animationRareData)
Modified: trunk/Source/WebCore/dom/Node.cpp (266713 => 266714)
--- trunk/Source/WebCore/dom/Node.cpp 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/dom/Node.cpp 2020-09-08 04:30:14 UTC (rev 266714)
@@ -130,10 +130,18 @@
return "AttributeMap";
case NodeRareData::UseType::InteractionObserver:
return "InteractionObserver";
+ case NodeRareData::UseType::ResizeObserver:
+ return "ResizeObserver";
+ case NodeRareData::UseType::Animations:
+ return "Animations";
case NodeRareData::UseType::PseudoElements:
return "PseudoElements";
- case NodeRareData::UseType::Animations:
- return "Animations";
+ case NodeRareData::UseType::StyleMap:
+ return "StyleMap";
+ case NodeRareData::UseType::PartList:
+ return "PartList";
+ case NodeRareData::UseType::PartNames:
+ return "PartNames";
}
return nullptr;
}
Modified: trunk/Source/WebCore/dom/Node.h (266713 => 266714)
--- trunk/Source/WebCore/dom/Node.h 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/dom/Node.h 2020-09-08 04:30:14 UTC (rev 266714)
@@ -40,9 +40,6 @@
#include <wtf/URLHash.h>
#include <wtf/WeakPtr.h>
-// This needs to be here because Document.h also depends on it.
-#define DUMP_NODE_STATISTICS 0
-
namespace WTF {
class TextStream;
}
@@ -543,16 +540,36 @@
HasCustomStyleResolveCallbacksFlag = 1 << 22,
- // Bits 23-31 are free.
+ HasPendingResourcesFlag = 1 << 23,
+ HasCSSAnimationFlag = 1 << 24,
+ HasElementIdentifierFlag = 1 << 25,
+#if ENABLE(FULLSCREEN_API)
+ ContainsFullScreenElementFlag = 1 << 26,
+#endif
+ // Bits 27-29 are free.
+ // Bits 30-31: TabIndexState
+
DefaultNodeFlags = IsParsingChildrenFinishedFlag
};
+ static constexpr unsigned s_tabIndexStateBitOffset = 30;
+ static constexpr uint32_t s_tabIndexStateBitMask = 3U << s_tabIndexStateBitOffset;
+ enum class TabIndexState : uint8_t {
+ NotSet = 0,
+ Zero = 1,
+ NegativeOne = 2,
+ InRareData = 3,
+ };
+
bool getFlag(NodeFlags mask) const { return m_nodeFlags & mask; }
void setFlag(bool f, NodeFlags mask) const { m_nodeFlags = (m_nodeFlags & ~mask) | (-(int32_t)f & mask); }
void setFlag(NodeFlags mask) const { m_nodeFlags |= mask; }
void clearFlag(NodeFlags mask) const { m_nodeFlags &= ~mask; }
+ TabIndexState tabIndexState() const { return static_cast<TabIndexState>((m_nodeFlags & s_tabIndexStateBitMask) >> s_tabIndexStateBitOffset); }
+ void setTabIndexState(TabIndexState state) { m_nodeFlags = (m_nodeFlags & ~s_tabIndexStateBitMask) | (static_cast<uint32_t>(state) << s_tabIndexStateBitOffset); }
+
bool isParsingChildrenFinished() const { return getFlag(IsParsingChildrenFinishedFlag); }
void setIsParsingChildrenFinished() { setFlag(IsParsingChildrenFinishedFlag); }
void clearIsParsingChildrenFinished() { clearFlag(IsParsingChildrenFinishedFlag); }
Modified: trunk/Source/WebCore/dom/NodeRareData.h (266713 => 266714)
--- trunk/Source/WebCore/dom/NodeRareData.h 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/dom/NodeRareData.h 2020-09-08 04:30:14 UTC (rev 266714)
@@ -244,7 +244,7 @@
WTF_MAKE_STRUCT_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER(NodeRareData);
public:
#if defined(DUMP_NODE_STATISTICS) && DUMP_NODE_STATISTICS
- enum class UseType : uint16_t {
+ enum class UseType : uint32_t {
ConnectedFrameCount = 1 << 0,
NodeList = 1 << 1,
MutationObserver = 1 << 2,
@@ -258,8 +258,12 @@
CustomElementQueue = 1 << 10,
AttributeMap = 1 << 11,
InteractionObserver = 1 << 12,
- PseudoElements = 1 << 13,
+ ResizeObserver = 1 << 13,
Animations = 1 << 14,
+ PseudoElements = 1 << 15,
+ StyleMap = 1 << 16,
+ PartList = 1 << 17,
+ PartNames = 1 << 18,
};
#endif
Modified: trunk/Source/WebCore/html/HTMLElement.cpp (266713 => 266714)
--- trunk/Source/WebCore/html/HTMLElement.cpp 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/html/HTMLElement.cpp 2020-09-08 04:30:14 UTC (rev 266714)
@@ -452,7 +452,7 @@
if (name == tabindexAttr) {
if (value.isEmpty())
- clearTabIndexExplicitlyIfNeeded();
+ setTabIndexExplicitly(WTF::nullopt);
else if (auto optionalTabIndex = parseHTMLInteger(value))
setTabIndexExplicitly(optionalTabIndex.value());
return;
Modified: trunk/Source/WebCore/mathml/MathMLElement.cpp (266713 => 266714)
--- trunk/Source/WebCore/mathml/MathMLElement.cpp 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/mathml/MathMLElement.cpp 2020-09-08 04:30:14 UTC (rev 266714)
@@ -92,7 +92,7 @@
downcast<RenderTableCell>(renderer())->colSpanOrRowSpanChanged();
} else if (name == HTMLNames::tabindexAttr) {
if (value.isEmpty())
- clearTabIndexExplicitlyIfNeeded();
+ setTabIndexExplicitly(WTF::nullopt);
else if (auto optionalTabIndex = parseHTMLInteger(value))
setTabIndexExplicitly(optionalTabIndex.value());
} else {
Modified: trunk/Source/WebCore/svg/SVGElement.cpp (266713 => 266714)
--- trunk/Source/WebCore/svg/SVGElement.cpp 2020-09-08 03:50:14 UTC (rev 266713)
+++ trunk/Source/WebCore/svg/SVGElement.cpp 2020-09-08 04:30:14 UTC (rev 266714)
@@ -339,7 +339,7 @@
if (name == HTMLNames::tabindexAttr) {
if (value.isEmpty())
- clearTabIndexExplicitlyIfNeeded();
+ setTabIndexExplicitly(WTF::nullopt);
else if (auto optionalTabIndex = parseHTMLInteger(value))
setTabIndexExplicitly(optionalTabIndex.value());
return;