[webkit-changes] [WebKit/WebKit] 002bcd: [CSS Typed OM] Fix reference cycle between the com...

Ryan Reno noreply at github.com
Wed Sep 11 10:22:46 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 002bcd5e72150ed17b53a718853ca784544080bc
      https://github.com/WebKit/WebKit/commit/002bcd5e72150ed17b53a718853ca784544080bc
  Author: Ryan Reno <rreno at apple.com>
  Date:   2024-09-11 (Wed, 11 Sep 2024)

  Changed paths:
    A LayoutTests/css-typedom/computed-style-map-lifetime-expected.txt
    A LayoutTests/css-typedom/computed-style-map-lifetime.html
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    A Source/WebCore/bindings/js/JSStylePropertyMapReadOnlyCustom.cpp
    M Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.cpp
    M Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.h
    M Source/WebCore/css/typedom/DeclaredStylePropertyMap.h
    M Source/WebCore/css/typedom/HashMapStylePropertyMapReadOnly.h
    M Source/WebCore/css/typedom/InlineStylePropertyMap.h
    M Source/WebCore/css/typedom/StylePropertyMapReadOnly.h
    M Source/WebCore/css/typedom/StylePropertyMapReadOnly.idl

  Log Message:
  -----------
  [CSS Typed OM] Fix reference cycle between the computed style property map and DOM elements
https://bugs.webkit.org/show_bug.cgi?id=279268
rdar://135356992

Reviewed by Chris Dumez and Matthieu Dubet.

There is a ref cycle between Element.computedStylePropertyMap and the
element itself. This change makes the back reference between
ComputedStylePropertyMapReadOnly and the element weak. To cover the case
where a JS reference is held to the computedStylePropertyMap but the
element has been disconnected from the document and is eligible for GC
the map will keep the element alive.

Verified fix with run-webkit-tests --world-leaks imported/w3c/web-platform-tests/css/css-typed-om
and the new layout test to verify GC behavior.

* LayoutTests/css-typedom/computed-style-map-lifetime-expected.txt: Added.
* LayoutTests/css-typedom/computed-style-map-lifetime.html: Added.
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/bindings/js/JSStylePropertyMapReadOnlyCustom.cpp: Copied from Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.h.
(WebCore::JSStylePropertyMapReadOnly::visitAdditionalChildren):
* Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.h:
* Source/WebCore/css/typedom/DeclaredStylePropertyMap.h:
* Source/WebCore/css/typedom/HashMapStylePropertyMapReadOnly.h:
* Source/WebCore/css/typedom/InlineStylePropertyMap.h:
* Source/WebCore/css/typedom/StylePropertyMapReadOnly.h:
* Source/WebCore/css/typedom/StylePropertyMapReadOnly.idl:

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list