[webkit-changes] [WebKit/WebKit] f4cd05: AX: it's inefficient to put large object types in ...

Commit Queue noreply at github.com
Fri May 17 17:25:29 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f4cd05fb5b19e4d48fdbbaa1cd86e3b83d6ee475
      https://github.com/WebKit/WebKit/commit/f4cd05fb5b19e4d48fdbbaa1cd86e3b83d6ee475
  Author: Dominic Mazzoni <dm_mazzoni at apple.com>
  Date:   2024-05-17 (Fri, 17 May 2024)

  Changed paths:
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h

  Log Message:
  -----------
  AX: it's inefficient to put large object types in AXPropertyValueVariant
https://bugs.webkit.org/show_bug.cgi?id=273959
rdar://problem/127821883

Reviewed by Andres Gonzalez.

sizeof(AXPropertyValueVariant) is currently 88 bytes. If we take out URL and Path, it drops to 32 bytes, which is a very significant savings since we're storing lots of these for every isolated tree node.

Wrapping URL and Path in shared_ptr is an easy workaround. That way only the pointer is stored in the variant. We can't use unique_ptr because we store the variant in a HashMap that requires it to be copyable.

* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeProperties):
(WebCore::AXIsolatedObject::setProperty):
(WebCore::AXIsolatedObject::urlAttributeValue const):
(WebCore::AXIsolatedObject::pathAttributeValue const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
(WebCore::AXIsolatedObject::propertyValue const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::create):
(WebCore::AXIsolatedTree::updateNodeProperties):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:

Canonical link: https://commits.webkit.org/278940@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