[webkit-changes] [WebKit/WebKit] a40f3a: Address safer C++ static analysis warnings in WKOb...

Chris Dumez noreply at github.com
Fri Feb 21 07:35:25 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a40f3a3fba44cd2c0d2afcde46fe1b32b1a8fe35
      https://github.com/WebKit/WebKit/commit/a40f3a3fba44cd2c0d2afcde46fe1b32b1a8fe35
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2025-02-21 (Fri, 21 Feb 2025)

  Changed paths:
    M Source/JavaScriptCore/dfg/DFGAbstractValue.cpp
    M Source/WTF/SaferCPPExpectations/MemoryUnsafeCastCheckerExpectations
    M Source/WTF/WTF.xcodeproj/project.pbxproj
    A Source/WTF/wtf/AlignedStorage.h
    M Source/WTF/wtf/CMakeLists.txt
    M Source/WTF/wtf/HashTable.h
    M Source/WTF/wtf/NeverDestroyed.h
    M Source/WTF/wtf/RobinHoodHashTable.h
    M Source/WTF/wtf/threads/Signals.h
    M Source/WebKit/SaferCPPExpectations/MemoryUnsafeCastCheckerExpectations
    M Source/WebKit/Shared/API/Cocoa/_WKFrameHandleInternal.h
    M Source/WebKit/Shared/API/Cocoa/_WKHitTestResultInternal.h
    M Source/WebKit/Shared/Cocoa/WKNSArray.mm
    M Source/WebKit/Shared/Cocoa/WKNSData.mm
    M Source/WebKit/Shared/Cocoa/WKNSDictionary.mm
    M Source/WebKit/Shared/Cocoa/WKNSNumber.mm
    M Source/WebKit/Shared/Cocoa/WKObject.h
    M Source/WebKit/UIProcess/API/Cocoa/WKBackForwardList.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKBackForwardListItem.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStoreInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKContentWorldInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKContextMenuElementInfoInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKDownloadInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKFrameInfoInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKHTTPCookieStoreInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKNavigation.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKNavigationActionInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKNavigationData.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKNavigationResponseInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParametersInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKPreferencesInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKSecurityOriginInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKUserContentControllerInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKUserScriptInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionActionInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionCommandInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContextInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerConfigurationInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataRecordInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMatchPatternInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMessagePortInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStoreInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWindowFeaturesInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifestInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKAttachmentInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSessionInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKContentRuleListActionInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKContextMenuElementInfoInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKCustomHeaderFieldsInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKDataTaskInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKFeatureInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKFrameTreeNodeInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKGeolocationPositionInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfigurationInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKInspectorDebuggableInfoInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtensionInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfigurationInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadInfoInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstPartyInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsThirdPartyInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementInfoInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementRequestInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKTextRunInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKUserInitiatedActionInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheetInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKVisitedLinkStoreInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponseInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionSidebarInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebPushDaemonConnectionInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebPushMessageInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebPushSubscriptionDataInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfigurationInternal.h
    M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInCSSStyleDeclarationHandle.mm
    M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm
    M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm
    M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm
    M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm
    M Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm
    M Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm
    M Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm

  Log Message:
  -----------
  Address safer C++ static analysis warnings in WKObject.h
https://bugs.webkit.org/show_bug.cgi?id=288056

Reviewed by Timothy Hatcher and Darin Adler.

- Replace API::ObjectStorage with a new WTF::AlignedStorage type
- WTF::AlignedStorage offers several benefits since it is strongly typed and it
  doesn't rely on std::aligned_storage which is deprecated in C++23. Instead,
  it uses `alignas(Alignment) std::byte m_storage[sizeof(T)];` which is the
  suggested replacement in the standard. WTF::AlignedStorage also has the
  benefit of hiding away the reinterpret_cast which is still required and
  requirements suppression to silence static analysis
- The PR adopts WTF::AlignedStorage instead of std::aligned_storage in several
  places too.

* Source/JavaScriptCore/dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::ensureCanInitializeWithZeros):
* Source/WTF/WTF.xcodeproj/project.pbxproj:
* Source/WTF/wtf/AlignedStorage.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementInfoInternal.h.
(WTF::sizeof):
* Source/WTF/wtf/HashTable.h:
(WTF::shouldValidateKey>::checkKey):
* Source/WTF/wtf/NeverDestroyed.h:
(WTF::NeverDestroyed::storagePointer const):
(WTF::LazyNeverDestroyed::storagePointerWithoutAccessCheck const):
* Source/WTF/wtf/RobinHoodHashTable.h:
(WTF::SizePolicy>::checkKey):
* Source/WTF/wtf/threads/Signals.h:
* Source/WebKit/SaferCPPExpectations/MemoryUnsafeCastCheckerExpectations:
* Source/WebKit/Shared/API/Cocoa/_WKFrameHandleInternal.h:
* Source/WebKit/Shared/API/Cocoa/_WKHitTestResultInternal.h:
* Source/WebKit/Shared/Cocoa/WKNSArray.mm:
* Source/WebKit/Shared/Cocoa/WKNSData.mm:
* Source/WebKit/Shared/Cocoa/WKNSDictionary.mm:
* Source/WebKit/Shared/Cocoa/WKNSNumber.mm:
* Source/WebKit/Shared/Cocoa/WKObject.h:
(API::ObjectStorage::get): Deleted.
(API::ObjectStorage::operator*): Deleted.
(API::ObjectStorage::operator->): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/WKBackForwardList.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKBackForwardListItem.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStoreInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKContentWorldInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKContextMenuElementInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKDownloadInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKFrameInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKHTTPCookieStoreInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigation.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigationActionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigationData.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigationResponseInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParametersInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKPreferencesInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKSecurityOriginInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKUserContentControllerInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKUserScriptInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionActionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionCommandInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContextInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerConfigurationInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionControllerInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionDataRecordInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMatchPatternInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionMessagePortInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStoreInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWindowFeaturesInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifestInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKAttachmentInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSessionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKContentRuleListActionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKContextMenuElementInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKCustomHeaderFieldsInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKDataTaskInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKFeatureInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKFrameTreeNodeInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKGeolocationPositionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfigurationInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKInspectorDebuggableInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtensionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKInspectorInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfigurationInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstPartyInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadStatisticsThirdPartyInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementInfoInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTargetedElementRequestInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTextRunInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKUserInitiatedActionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheetInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKVisitedLinkStoreInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponseInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionSidebarInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebPushDaemonConnectionInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebPushMessageInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebPushSubscriptionDataInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfigurationInternal.h:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInCSSStyleDeclarationHandle.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
* Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

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