[webkit-changes] [WebKit/WebKit] 21b412: Split NodeFlag into type flags and state flags

Ryosuke Niwa noreply at github.com
Wed Dec 20 19:42:21 PST 2023


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

  Changed paths:
    M Source/WebCore/cssjit/SelectorCompiler.cpp
    M Source/WebCore/dom/Attr.cpp
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/DocumentFragment.cpp
    M Source/WebCore/dom/DocumentFragment.h
    M Source/WebCore/dom/DocumentType.cpp
    M Source/WebCore/dom/Node.cpp
    M Source/WebCore/dom/Node.h
    M Source/WebCore/dom/PseudoElement.cpp
    M Source/WebCore/dom/ShadowRoot.cpp

  Log Message:
  -----------
  Split NodeFlag into type flags and state flags
https://bugs.webkit.org/show_bug.cgi?id=266738

Reviewed by Tim Nguyen.

Consolidate NodeFlag's which denote a type information into the lowest 14 bits of NodeFlag, and assert that
these are only flags set forth the flags passed to ConstructionType flag. Also assert that setNodeFlag or
clearNodeFlag is never called with NodeFlag's that denote a type information.

To make these changes, flip the semantics of NodeFlag::IsParsingChildrenFinished so that the flag is set
when child nodes are being parsed (and rename the flag to NodeFlag::IsParsingChildren). Use setNodeFlag in
the constructors to set IsConnected and IsInShadowTree flags instead of including them in ConstructionType.

There should be no observable behavior differences.

* Source/WebCore/cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsLastChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsOnlyChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateNthLastChildParentCheckAndRelationUpdate):
* Source/WebCore/dom/Attr.cpp:
(WebCore::Attr::Attr):
* Source/WebCore/dom/Document.cpp:
(WebCore::m_frameIdentifier):
(WebCore::Document::documentFragmentForInnerOuterHTML):
* Source/WebCore/dom/DocumentFragment.cpp:
(WebCore::DocumentFragment::createForInnerOuterHTML):
* Source/WebCore/dom/DocumentFragment.h:
(WebCore::DocumentFragment::setIsDocumentFragmentForInnerOuterHTML): Deleted.
* Source/WebCore/dom/DocumentType.cpp:
(WebCore::DocumentType::DocumentType):
* Source/WebCore/dom/Node.h:
(WebCore::Node::flagIsParsingChildren):
(WebCore::Node::setNodeFlag const):
(WebCore::Node::clearNodeFlag const):
(WebCore::Node::isParsingChildrenFinished const):
(WebCore::Node::setIsParsingChildrenFinished):
(WebCore::Node::clearIsParsingChildrenFinished):
(WebCore::Node::flagIsParsingChildrenFinished): Deleted.
* Source/WebCore/dom/PseudoElement.cpp:
(WebCore::PseudoElement::PseudoElement):
* Source/WebCore/dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::ShadowRoot):

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




More information about the webkit-changes mailing list