[webkit-changes] [WebKit/WebKit] 4c56da: Speed up use of WeakPtr with EventTarget objects (...
Chris Dumez
noreply at github.com
Wed Dec 13 08:02:48 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4c56da25ced28ccc63d3d4e45c4f8451c1c67e5e
https://github.com/WebKit/WebKit/commit/4c56da25ced28ccc63d3d4e45c4f8451c1c67e5e
Author: Chris Dumez <cdumez at apple.com>
Date: 2023-12-13 (Wed, 13 Dec 2023)
Changed paths:
M Source/WebCore/Modules/cookie-store/CookieStore.cpp
M Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp
M Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.h
M Source/WebCore/Modules/permissions/MainThreadPermissionObserver.cpp
M Source/WebCore/Modules/permissions/MainThreadPermissionObserver.h
M Source/WebCore/Modules/permissions/PermissionStatus.cpp
M Source/WebCore/Modules/permissions/PermissionStatus.h
M Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.h
M Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.h
M Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.h
M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.h
M Source/WebCore/dom/BroadcastChannel.cpp
M Source/WebCore/dom/EventTarget.h
M Source/WebCore/dom/MessagePort.cpp
M Source/WebCore/dom/MessagePort.h
M Source/WebCore/html/OffscreenCanvas.h
Log Message:
-----------
Speed up use of WeakPtr with EventTarget objects (such as Node)
https://bugs.webkit.org/show_bug.cgi?id=265878
Reviewed by Darin Adler.
Speed up use of WeakPtr with EventTarget objects (such as Node) by using a
single thread ref count instead of ThreadSafeRefCounted for the WeakPtr
implementation object, like we did for RenderObjects.
Most of the EventTarget didn't need a thread-safe WeakPtr impl. For the
subclasses that did, I either:
- Updated the logic to avoid ref'ing / deref'ing the WeakPtr on a different
thread.
- Had the subclass inherit ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr
and used ThreadSafeWeakPtr instead of WeakPtr.
This tested as a small Speedometer progression (~0.3% on M1 with 98%
confidence). More importantly, this will help us convert more
CheckedPtr<Node> into WeakPtr<Node> without hurting performance.
* Source/WebCore/Modules/cookie-store/CookieStore.cpp:
(WebCore::CookieStore::MainThreadBridge::detach):
(WebCore::CookieStore::~CookieStore):
* Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp:
(WebCore::processFrame):
(WebCore::RTCRtpSFrameTransform::initializeTransformer):
(WebCore::transformFrame):
(WebCore::RTCRtpSFrameTransform::createStreams):
* Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.h:
* Source/WebCore/Modules/permissions/MainThreadPermissionObserver.cpp:
(WebCore::MainThreadPermissionObserver::MainThreadPermissionObserver):
(WebCore::MainThreadPermissionObserver::stateChanged):
* Source/WebCore/Modules/permissions/MainThreadPermissionObserver.h:
* Source/WebCore/Modules/permissions/PermissionStatus.cpp:
(WebCore::PermissionStatus::PermissionStatus):
(WebCore::PermissionStatus::virtualHasPendingActivity const):
* Source/WebCore/Modules/permissions/PermissionStatus.h:
* Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.cpp:
(WebCore::WebCodecsAudioDecoder::configure):
* Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.h:
* Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.cpp:
(WebCore::WebCodecsAudioEncoder::configure):
* Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.h:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.cpp:
(WebCore::WebCodecsVideoDecoder::configure):
* Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.h:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp:
(WebCore::WebCodecsVideoEncoder::configure):
(WebCore::WebCodecsVideoEncoder::encode):
(WebCore::WebCodecsVideoEncoder::flush):
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.h:
* Source/WebCore/dom/BroadcastChannel.cpp:
(WebCore::BroadcastChannel::MainThreadBridge::detach):
(WebCore::BroadcastChannel::~BroadcastChannel):
* Source/WebCore/dom/EventTarget.h:
* Source/WebCore/dom/MessagePort.cpp:
(WebCore::WTF_REQUIRES_LOCK):
(WebCore::MessagePort::MessagePort):
(WebCore::MessagePort::~MessagePort):
(WebCore::MessagePort::ref const): Deleted.
(WebCore::MessagePort::deref const): Deleted.
* Source/WebCore/dom/MessagePort.h:
* Source/WebCore/html/OffscreenCanvas.h:
Canonical link: https://commits.webkit.org/271982@main
More information about the webkit-changes
mailing list