[webkit-changes] [WebKit/WebKit] ea5e30: Move Node flags for ownerships and relationships t...

Ryosuke Niwa noreply at github.com
Thu Dec 21 10:21:50 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ea5e30e46342b0e755281a1ffb2f23c37a2b9bcd
      https://github.com/WebKit/WebKit/commit/ea5e30e46342b0e755281a1ffb2f23c37a2b9bcd
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2023-12-21 (Thu, 21 Dec 2023)

  Changed paths:
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Element.cpp
    M Source/WebCore/dom/Element.h
    M Source/WebCore/dom/EventTarget.h
    M Source/WebCore/dom/GCReachableRef.cpp
    M Source/WebCore/dom/GCReachableRef.h
    M Source/WebCore/dom/Node.cpp
    M Source/WebCore/dom/Node.h
    M Source/WebCore/dom/PseudoElement.cpp
    M Source/WebCore/dom/ShadowRoot.cpp
    M Source/WebCore/html/HTMLMaybeFormAssociatedCustomElement.cpp
    M Source/WebCore/html/HTMLMaybeFormAssociatedCustomElement.h
    M Source/WebCore/svg/SVGElement.h

  Log Message:
  -----------
  Move Node flags for ownerships and relationships to EventTargetFlag
https://bugs.webkit.org/show_bug.cgi?id=266754

Reviewed by Tim Nguyen.

This PR consolidates NodeFlag flags that express ownership and relationships with other objects
to EventTargetFlag. NodeFlag now represents Node's types and its own state.

The lower 16-bit of NodeFlag is now reserved for type information, and only upper 16-bits can be
used to express Node's states.

It also generalizes GCReachableRefMap so that it works with any EventTarget instead of just Node.

* Source/WebCore/dom/Document.cpp:
(WebCore::Document::Document):
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::addToTopLayer):
(WebCore::Element::removeFromTopLayer):
* Source/WebCore/dom/Element.h:
(WebCore::Element::isInTopLayer const):
(WebCore::Element::effectiveLangKnownToMatchDocumentElement const):
(WebCore::Element::setEffectiveLangKnownToMatchDocumentElement):
(WebCore::Element::hasEverHadSmoothScroll const):
(WebCore::Element::setHasEverHadSmoothScroll):
* Source/WebCore/dom/EventTarget.h:
(WebCore::EventTarget::isInGCReacheableRefMap const): Moved from Node.
(WebCore::EventTarget::setIsInGCReacheableRefMap): Ditto.
(WebCore::EventTarget::clearEventTargetFlag): Added.
(WebCore::EventTarget::setEventTargetFlag): Use OptionSet to manipulate bitfields for clarity
and simplicity.
* Source/WebCore/dom/GCReachableRef.cpp:
(WebCore::GCReachableRefMap::map):
* Source/WebCore/dom/GCReachableRef.h:
(WebCore::GCReachableRefMap::contains): Now works with any EventTarget, not just Node.
(WebCore::GCReachableRefMap::add): Ditto.
(WebCore::GCReachableRefMap::remove): Ditto.
* Source/WebCore/dom/Node.cpp:
(WebCore::Node::insertedIntoAncestor):
(WebCore::Node::removedFromAncestor):
(WebCore::Node::moveTreeToNewScope):
* Source/WebCore/dom/Node.h:
(WebCore::Node::hasSyntheticAttrChildNodes const):
(WebCore::Node::setHasSyntheticAttrChildNodes):
(WebCore::Node::hasShadowRootContainingSlots const):
(WebCore::Node::setHasShadowRootContainingSlots):
(WebCore::Node::isConnected const):
(WebCore::Node::isInShadowTree const):
(WebCore::Node::isInTreeScope const):
(WebCore::Node::hasBeenInUserAgentShadowTree const):
(WebCore::Node::isInGCReacheableRefMap const): Deleted.
(WebCore::Node::setIsInGCReacheableRefMap): Deleted.
* Source/WebCore/dom/PseudoElement.cpp:
(WebCore::PseudoElement::PseudoElement):
* Source/WebCore/dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::ShadowRoot):
* Source/WebCore/html/HTMLMaybeFormAssociatedCustomElement.cpp:
(WebCore::HTMLMaybeFormAssociatedCustomElement::setInterfaceIsFormAssociated):
* Source/WebCore/html/HTMLMaybeFormAssociatedCustomElement.h:
* Source/WebCore/svg/SVGElement.h:
(WebCore::SVGElement::hasPendingResources const):
(WebCore::SVGElement::setHasPendingResources):
(WebCore::SVGElement::clearHasPendingResources):

Canonical link: https://commits.webkit.org/272421@main




More information about the webkit-changes mailing list