Title: [288619] trunk/Source/WebCore
Revision
288619
Author
[email protected]
Date
2022-01-26 07:54:23 -0800 (Wed, 26 Jan 2022)

Log Message

AX: Do less work under m_changeLogLock in AXIsolatedTree::clear and AXIsolatedTree::setFocusedNodeID
https://bugs.webkit.org/show_bug.cgi?id=235624

Reviewed by Chris Fleizach.

AXIsolatedTree::clear and AXIsolatedTree::setFocusedNodeID
do work while holding m_changeLogLock that does not require this lock. This
patch moves this work before the lock acquisition so we hold the lock for as short
a time as possible.

* accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::clear):
(WebCore::AXIsolatedTree::setFocusedNodeID):
Move work that doesn't require m_changeLogLock before we acquire the lock.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (288618 => 288619)


--- trunk/Source/WebCore/ChangeLog	2022-01-26 14:45:01 UTC (rev 288618)
+++ trunk/Source/WebCore/ChangeLog	2022-01-26 15:54:23 UTC (rev 288619)
@@ -1,3 +1,20 @@
+2022-01-26  Tyler Wilcock  <[email protected]>
+
+        AX: Do less work under m_changeLogLock in AXIsolatedTree::clear and AXIsolatedTree::setFocusedNodeID
+        https://bugs.webkit.org/show_bug.cgi?id=235624
+
+        Reviewed by Chris Fleizach.
+
+        AXIsolatedTree::clear and AXIsolatedTree::setFocusedNodeID
+        do work while holding m_changeLogLock that does not require this lock. This
+        patch moves this work before the lock acquisition so we hold the lock for as short
+        a time as possible.
+
+        * accessibility/isolatedtree/AXIsolatedTree.cpp:
+        (WebCore::AXIsolatedTree::clear):
+        (WebCore::AXIsolatedTree::setFocusedNodeID):
+        Move work that doesn't require m_changeLogLock before we acquire the lock.
+
 2022-01-26  Antti Koivisto  <[email protected]>
 
         ASSERTION FAILED: !hasPendingSheets() under WebCore::Style::Scope::~Scope()

Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp (288618 => 288619)


--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp	2022-01-26 14:45:01 UTC (rev 288618)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp	2022-01-26 15:54:23 UTC (rev 288619)
@@ -76,11 +76,11 @@
     AXTRACE("AXIsolatedTree::clear");
     ASSERT(isMainThread());
     m_axObjectCache = nullptr;
+    m_nodeMap.clear();
 
     Locker locker { m_changeLogLock };
     m_pendingSubtreeRemovals.append(m_rootNode->objectID());
     m_rootNode = nullptr;
-    m_nodeMap.clear();
 }
 
 RefPtr<AXIsolatedTree> AXIsolatedTree::treeForID(AXIsolatedTreeID treeID)
@@ -431,11 +431,11 @@
     AXLOG(makeString("axID ", axID.loggingString()));
     ASSERT(isMainThread());
 
+    AXPropertyMap propertyMap;
+    propertyMap.set(AXPropertyName::IsFocused, true);
+
     Locker locker { m_changeLogLock };
     m_pendingFocusedNodeID = axID;
-
-    AXPropertyMap propertyMap;
-    propertyMap.set(AXPropertyName::IsFocused, true);
     m_pendingPropertyChanges.append({ axID, propertyMap });
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to