[webkit-changes] [WebKit/WebKit] ef19f9: Cache "containsOnlyASCIIWhitespace" on Node

Simon Fraser noreply at github.com
Fri Jan 5 20:15:08 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ef19f93eea992586bc6636a05d1445d0200ca626
      https://github.com/WebKit/WebKit/commit/ef19f93eea992586bc6636a05d1445d0200ca626
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2024-01-05 (Fri, 05 Jan 2024)

  Changed paths:
    M Source/WebCore/dom/CharacterData.cpp
    M Source/WebCore/dom/CharacterData.h
    M Source/WebCore/dom/Node.h
    M Source/WebCore/html/HTMLObjectElement.cpp
    M Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
    M Source/WebCore/rendering/updating/RenderTreeUpdater.cpp
    M Source/WebCore/style/StyleTreeResolver.cpp

  Log Message:
  -----------
  Cache "containsOnlyASCIIWhitespace" on Node
https://bugs.webkit.org/show_bug.cgi?id=267010
rdar://120391238

Reviewed by Ryosuke Niwa.

The call to `text->containsOnlyASCIIWhitespace()` in TreeResolver::resolveComposedTree() shows up on MotionMark
profiles (in the Design subtest). We can cache this state for Text nodes by using two bits from Node's StateFlags.

The "known" state is cleared by functions on CharacterData that mutate the content.

* Source/WebCore/dom/CharacterData.cpp:
(WebCore::CharacterData::substringData const):
(WebCore::CharacterData::parserAppendData):
(WebCore::CharacterData::setDataWithoutUpdate):
(WebCore::CharacterData::setDataAndUpdate):
(WebCore::CharacterData::containsOnlyASCIIWhitespace const):
(WebCore::CharacterData::substringData): Deleted.
* Source/WebCore/dom/CharacterData.h:
(WebCore::CharacterData::setDataWithoutUpdate): Deleted.
* Source/WebCore/dom/Node.h:
* Source/WebCore/html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::hasFallbackContent const):
(WebCore::preventsParentObjectFromExposure):
* Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:
(WebCore::containsOnlyASCIIWhitespace):
* Source/WebCore/rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateRenderTree):
(WebCore::RenderTreeUpdater::textRendererIsNeeded):
* Source/WebCore/style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveComposedTree):

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




More information about the webkit-changes mailing list