Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c608d58420169f906dcbb3d4bfe4dce388b6c02e https://github.com/WebKit/WebKit/commit/c608d58420169f906dcbb3d4bfe4dce388b6c02e Author: Tyler Wilcock <tyle...@apple.com> Date: 2024-04-02 (Tue, 02 Apr 2024)
Changed paths: M Source/WebCore/accessibility/AXObjectCache.cpp M Source/WebCore/accessibility/AXObjectCache.h M Source/WebCore/accessibility/AccessibilityListBoxOption.cpp M Source/WebCore/accessibility/AccessibilityMathMLElement.cpp M Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp M Source/WebCore/accessibility/AccessibilityNodeObject.cpp M Source/WebCore/accessibility/AccessibilityObject.cpp M Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp M Source/WebCore/accessibility/AccessibilityRenderObject.cpp M Source/WebCore/accessibility/AccessibilitySVGElement.cpp M Source/WebCore/accessibility/AccessibilityScrollView.cpp M Source/WebCore/accessibility/AccessibilityTable.cpp M Source/WebCore/accessibility/AccessibilityTableCell.cpp M Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm M Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm M Source/WebCore/inspector/InspectorAuditAccessibilityObject.cpp M Source/WebCore/inspector/InspectorOverlay.cpp M Source/WebCore/inspector/agents/InspectorDOMAgent.cpp M Source/WebCore/testing/Internals.cpp Log Message: ----------- AX: Introduce reference versions of AXObjectCache::get and AXObjectCache::getOrCreate https://bugs.webkit.org/show_bug.cgi?id=271949 rdar://problem/125689037 Reviewed by Chris Fleizach. At most callsites of AXObjectCache::get and AXObjectCache::getOrCreate, we already know the Node* / RenderObject* / Widget* is not null, but we still perform an extra null check in these methods anyways, which is a waste. And looking at the assembly generated by clang, it's not smart enough to optimize the null checks away itself in any of these contexts. This patch adds versions of these methods that take references, and adds dereferences at callsites that have already checked for a null value. This saves over 16 million null checks simply loading gmail.com, without any other navigation or action. * Source/WebCore/accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::modalElementHasAccessibleContent): (WebCore::AXObjectCache::isNodeVisible const): (WebCore::AXObjectCache::focusedImageMapUIElement): (WebCore::AXObjectCache::get const): (WebCore::AXObjectCache::getOrCreate): (WebCore::AXObjectCache::handleMenuOpened): (WebCore::AXObjectCache::childrenChanged): (WebCore::AXObjectCache::postNotification): (WebCore::AXObjectCache::handleMenuItemSelected): (WebCore::AXObjectCache::onTextCompositionChange): (WebCore::AXObjectCache::postTextStateChangeNotification): (WebCore::AXObjectCache::postTextReplacementNotification): (WebCore::AXObjectCache::postTextReplacementNotificationForTextControl): (WebCore::AXObjectCache::frameLoadingEventNotification): (WebCore::AXObjectCache::focusCurrentModal): (WebCore::AXObjectCache::handleActiveDescendantChange): (WebCore::AXObjectCache::shouldProcessAttributeChange): (WebCore::AXObjectCache::handleAttributeChange): (WebCore::AXObjectCache::characterOffsetFromVisiblePosition): (WebCore::AXObjectCache::accessibilityObjectForTextMarkerData): (WebCore::AXObjectCache::nodeIsTextControl): (WebCore::AXObjectCache::performDeferredCacheUpdate): (WebCore::AXObjectCache::deferTextChangedIfNeeded): (WebCore::isNodeAriaVisible): (WebCore::AXObjectCache::addRelation): (WebCore::AXObjectCache::addLabelForRelation): (WebCore::AXObjectCache::isDescendantOfRelatedNode): (WebCore::AXObjectCache::get): Deleted. * Source/WebCore/accessibility/AXObjectCache.h: * Source/WebCore/accessibility/AccessibilityListBoxOption.cpp: (WebCore::AccessibilityListBoxOption::elementRect const): (WebCore::AccessibilityListBoxOption::parentObject const): * Source/WebCore/accessibility/AccessibilityMathMLElement.cpp: (WebCore::AccessibilityMathMLElement::mathPrescripts): (WebCore::AccessibilityMathMLElement::mathPostscripts): * Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp: (WebCore::AccessibilityMenuListPopup::menuListOptionAccessibilityObject const): * Source/WebCore/accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::firstChild const): (WebCore::AccessibilityNodeObject::lastChild const): (WebCore::AccessibilityNodeObject::previousSibling const): (WebCore::AccessibilityNodeObject::nextSibling const): (WebCore::AccessibilityNodeObject::parentObject const): (WebCore::AccessibilityNodeObject::checkboxOrRadioRect const): (WebCore::AccessibilityNodeObject::addChildren): (WebCore::AccessibilityNodeObject::menuButtonForMenu const): (WebCore::AccessibilityNodeObject::captionForFigure const): (WebCore::AccessibilityNodeObject::helpText const): (WebCore::accessibleNameForNode): (WebCore::AccessibilityNodeObject::accessibilityDescriptionForChildren const): * Source/WebCore/accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::displayContentsParent const): (WebCore::appendAccessibilityObject): (WebCore::AccessibilityObject::replacedNodeNeedsCharacter): (WebCore::AccessibilityObject::anchorElementForNode): (WebCore::AccessibilityObject::headingElementForNode): (WebCore::AccessibilityObject::supportsPressAction const): (WebCore::AccessibilityObject::elementAccessibilityHitTest const): * Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp: (WebCore::AccessibilityProgressIndicator::valueDescription const): * Source/WebCore/accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::firstChild const): (WebCore::AccessibilityRenderObject::lastChild const): (WebCore::AccessibilityRenderObject::previousSibling const): (WebCore::AccessibilityRenderObject::nextSibling const): (WebCore::AccessibilityRenderObject::parentObject const): (WebCore::AccessibilityRenderObject::anchorElement const): (WebCore::AccessibilityRenderObject::helpText const): (WebCore::AccessibilityRenderObject::titleUIElement const): (WebCore::AccessibilityRenderObject::documentLinks): (WebCore::AccessibilityRenderObject::nodeIsTextControl const): (WebCore::AccessibilityRenderObject::accessibilityHitTest const): (WebCore::AccessibilityRenderObject::observableObject const): (WebCore::AccessibilityRenderObject::remoteSVGRootElement const): (WebCore::AccessibilityRenderObject::addAttachmentChildren): (WebCore::AccessibilityRenderObject::addNodeOnlyChildren): (WebCore::AccessibilityRenderObject::addListItemMarker): * Source/WebCore/accessibility/AccessibilitySVGElement.cpp: (WebCore::AccessibilitySVGElement::targetForUseElement const): * Source/WebCore/accessibility/AccessibilityScrollView.cpp: (WebCore::AccessibilityScrollView::addChildScrollbar): (WebCore::AccessibilityScrollView::webAreaObject const): (WebCore::AccessibilityScrollView::parentObject const): * Source/WebCore/accessibility/AccessibilityTable.cpp: (WebCore::AccessibilityTable::isDataTable const): (WebCore::AccessibilityTable::addChildren): * Source/WebCore/accessibility/AccessibilityTableCell.cpp: (WebCore::AccessibilityTableCell::titleUIElement const): * Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm: (WebCore::attributeStringSetLanguage): (WebCore::attributeStringSetStyle): (WebCore::attributedStringSetCompositionAttributes): * Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper _accessibilityParentForSubview:]): * Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm: (WebCore::attributedStringSetBlockquoteLevel): (WebCore::attributedStringSetExpandedText): * Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm: (-[WebAccessibilityObjectWrapper _accessibilityParentForSubview:]): * Source/WebCore/inspector/InspectorAuditAccessibilityObject.cpp: (WebCore::accessibilityObjectForNode): * Source/WebCore/inspector/InspectorOverlay.cpp: (WebCore::InspectorOverlay::drawElementTitle): * Source/WebCore/inspector/agents/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties): * Source/WebCore/testing/Internals.cpp: (WebCore::Internals::axObjectForElement const): Canonical link: https://commits.webkit.org/276927@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes