Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 373b5f1310c1d92cb0aef4b501a3bef651d07bf1
      
https://github.com/WebKit/WebKit/commit/373b5f1310c1d92cb0aef4b501a3bef651d07bf1
  Author: Yusuke Suzuki <ysuz...@apple.com>
  Date:   2023-11-17 (Fri, 17 Nov 2023)

  Changed paths:
    M Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
    M 
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp
    M 
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp
    M 
Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
    M Source/WebCore/css/parser/CSSParserContext.h
    M Source/WebCore/css/parser/CSSParserFastPaths.cpp
    M Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp
    M Source/WebCore/css/process-css-properties.py

  Log Message:
  -----------
  style.display setter should be fast
https://bugs.webkit.org/show_bug.cgi?id=265009
rdar://118548941

Reviewed by Chris Dumez.

While `style.display` setter can be called frequently, this isn't optimized 
well.
This patch optimizes it in three ways.

1. We should have CSSParserFastPaths for display with simple one keyword, like, 
`style.display = "none"`.
2. We found that JSCSSStyleDeclaration::put is completely disabling IC and 
using the slowest path.
   Since JSCSSStyleDeclaration does not have any named getters / setters, we 
should use JSObject::put when
   we access to named property. We add a path which uses JSObject::put when 
propertyName is not index.
3. CSSParserContext is frequently created. We should use bitfields to make it 
much smaller (from 110 => 64).

* Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:
(GeneratePut):
(InstanceOverridesIndexedDefineOwnProperty):
(InstanceOverridesNamedDefineOwnProperty):
(InstanceOverridesDefineOwnProperty):
* Source/WebCore/css/parser/CSSParserFastPaths.cpp:
(WebCore::parseDisplay):
(WebCore::CSSParserFastPaths::maybeParseValue):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to