Repository: WebKit/WebKit
Pull request #42125: Further optimize performMicrotaskCheckpoint
Author: login: Constellation
Labels: name: JavaScriptCore
description: For bugs in JavaScriptCore, the JS engine used by WebKit, other than kxmlcore issues.
Created: 2025-03-08T07:11:57Z | Merged: 2025-03-08T21:27:16Z

#### fb47e460117fd9f9ab9557aeaa1dac713abb98df
<pre>
Further optimize performMicrotaskCheckpoint
<a href="https://bugs.webkit.org/show_bug.cgi?id=289399">https://bugs.webkit.org/show_bug.cgi?id=289399</a>
<a href="https://rdar.apple.com/146537356">rdar://146537356</a>

Reviewed by Ryosuke Niwa.

From profiling data, it turned out that still performMicrotaskCheckpoint
is taking significant amount of time. This patch further optimizes this
code driven by collected profile data.

1. We do realm switching in performMicrotaskCheckpoint instead of using
   JSExecState. Since this is the code in performMicrotaskCheckpoint,
   we do not need to have JSExecState. We can avoid repeated lookup of
   ThreadGlobalData.
2. Profile data turned out that VM::clearException (non inlined) is hot.
   We were thinking this is rarely called. But since microtask is
   draining the exception, we need to clear exception frequently and it
   is calling this function frequently. This patch makes it inlined.

* Source/JavaScriptCore/runtime/VM.cpp:
(JSC::VM::clearException): Deleted.
* Source/JavaScriptCore/runtime/VM.h:
(JSC::VM::clearException):
* Source/WebCore/bindings/js/JSExecState.cpp:
(WebCore::JSExecState::runTask): Deleted.
* Source/WebCore/dom/Microtasks.cpp:
(WebCore::runJSMicrotask):
(WebCore::MicrotaskQueue::performMicrotaskCheckpoint):

Canonical link: <a href="https://commits.webkit.org/291849@main">https://commits.webkit.org/291849@main</a>
</pre>
<!--EWS-Status-Bubble-Start-->
https://github.com/WebKit/WebKit/commit/252b1b49a980ae840cc6372c9bded78aa01f4479

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/94190 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/13777 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/3534 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/99201 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/44717 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/96240 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/14077 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/22207 "Built successfully") | [  ~~🧪 wpe-wk2~~](https://ews-build.webkit.org/#/builders/34/builds/71851 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/29191 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/97192 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/10440 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/85039 "Passed tests") | [❌ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/52192 "Found 1 new API test failure: /WPE/TestWebKitWebView:/webkit/WebKitWebView/save (failure)") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/10130 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/2726 "Passed tests") | [✅ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/44035 "Built successfully") | 
| [✅ 🛠 🧪 jsc](https://ews-build.webkit.org/#/builders/20/builds/86900 "Built successfully and passed tests") | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/80362 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/2816 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/101246 "Built successfully") | 
| [✅ 🛠 🧪 jsc-arm64](https://ews-build.webkit.org/#/builders/12/builds/92856 "Built successfully and passed tests") | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/21242 "Built successfully") | [✅ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/122/builds/15460 "Passed tests") | [  ~~🧪 gtk-wk2~~](https://ews-build.webkit.org/#/builders/1/builds/80859 "The change is no longer eligible for processing. Pull Request was already closed when EWS attempted to process it.") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/21494 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/81054 "Passed tests") | [  ~~🧪 api-gtk~~](https://ews-build.webkit.org/#/builders/21/builds/80241 "The change is no longer eligible for processing. Pull Request was already closed when EWS attempted to process it.") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/24781 "Passed tests") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/137/builds/2145 "Passed tests") | [✅ 🛠 playstation](https://ews-build.webkit.org/#/builders/134/builds/14421 "Built successfully") | 
| [✅ 🛠 🧪 unsafe-merge](https://ews-build.webkit.org/#/builders/22/builds/15109 "Built successfully and passed tests") | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/21226 "Built successfully") | [✅ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/26405 "Built successfully") | [✅ 🛠 jsc-armv7](https://ews-build.webkit.org/#/builders/35/builds/115506 "Built successfully") | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/20913 "Built successfully") | | [  ~~🧪 jsc-armv7-tests~~](https://ews-build.webkit.org/#/builders/25/builds/33160 "The change is no longer eligible for processing. Pull Request was already closed when EWS attempted to process it.") | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/24373 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/22654 "Built successfully") | | | 
<!--EWS-Status-Bubble-End-->


Diff:
diff --git a/Source/JavaScriptCore/runtime/MicrotaskQueue.h b/Source/JavaScriptCore/runtime/MicrotaskQueue.h
index 3525124d7d8c..ac5d8f2fa4ae 100644
--- a/Source/JavaScriptCore/runtime/MicrotaskQueue.h
+++ b/Source/JavaScriptCore/runtime/MicrotaskQueue.h
@@ -193,7 +193,7 @@ class MicrotaskQueue final : public BasicRawSentinelNode<MicrotaskQueue> {
 
     DECLARE_VISIT_AGGREGATE;
 
-    inline void performMicrotaskCheckpoint(VM&, const Invocable<QueuedTask::Result(QueuedTask&)> auto& functor);
+    inline void performMicrotaskCheckpoint(VM&, NOESCAPE const Invocable<QueuedTask::Result(QueuedTask&)> auto& functor);
 
     bool hasMicrotasksForFullyActiveDocument() const
     {
diff --git a/Source/JavaScriptCore/runtime/MicrotaskQueueInlines.h b/Source/JavaScriptCore/runtime/MicrotaskQueueInlines.h
index dfd2577f8eef..28fe965cb95a 100644
--- a/Source/JavaScriptCore/runtime/MicrotaskQueueInlines.h
+++ b/Source/JavaScriptCore/runtime/MicrotaskQueueInlines.h
@@ -31,7 +31,7 @@
 
 namespace JSC {
 
-inline void MicrotaskQueue::performMicrotaskCheckpoint(VM& vm, const Invocable<QueuedTask::Result(QueuedTask&)> auto& functor)
+inline void MicrotaskQueue::performMicrotaskCheckpoint(VM& vm, NOESCAPE const Invocable<QueuedTask::Result(QueuedTask&)> auto& functor)
 {
     auto catchScope = DECLARE_CATCH_SCOPE(vm);
     while (!m_queue.isEmpty()) {
diff --git a/Source/JavaScriptCore/runtime/VM.cpp b/Source/JavaScriptCore/runtime/VM.cpp
index 6829979e9874..add356c0c653 100644
--- a/Source/JavaScriptCore/runtime/VM.cpp
+++ b/Source/JavaScriptCore/runtime/VM.cpp
@@ -920,17 +920,6 @@ bool VM::hasExceptionsAfterHandlingTraps()
     return exception();
 }
 
-void VM::clearException()
-{
-#if ENABLE(EXCEPTION_SCOPE_VERIFICATION)
-    m_needExceptionCheck = false;
-    m_nativeStackTraceOfLastThrow = nullptr;
-    m_throwingThread = nullptr;
-#endif
-    m_exception = nullptr;
-    traps().clearTrapBit(VMTraps::NeedExceptionHandling);
-}
-
 void VM::setException(Exception* exception)
 {
     ASSERT(!exception || !isTerminationException(exception) || hasTerminationRequest());
diff --git a/Source/JavaScriptCore/runtime/VM.h b/Source/JavaScriptCore/runtime/VM.h
index 3a3601cb7e07..c95ba9c90dc2 100644
--- a/Source/JavaScriptCore/runtime/VM.h
+++ b/Source/JavaScriptCore/runtime/VM.h
@@ -998,7 +998,17 @@ class VM : public ThreadSafeRefCountedWithSuppressingSaferCPPChecking<VM>, publi
         return m_exception;
     }
 
-    JS_EXPORT_PRIVATE void clearException();
+    void clearException()
+    {
+#if ENABLE(EXCEPTION_SCOPE_VERIFICATION)
+        m_needExceptionCheck = false;
+        m_nativeStackTraceOfLastThrow = nullptr;
+        m_throwingThread = nullptr;
+#endif
+        m_exception = nullptr;
+        traps().clearTrapBit(VMTraps::NeedExceptionHandling);
+    }
+
     JS_EXPORT_PRIVATE void setException(Exception*);
 
 #if ENABLE(C_LOOP)
diff --git a/Source/WebCore/bindings/js/JSExecState.cpp b/Source/WebCore/bindings/js/JSExecState.cpp
index e67610f3a747..0e9755f85068 100644
--- a/Source/WebCore/bindings/js/JSExecState.cpp
+++ b/Source/WebCore/bindings/js/JSExecState.cpp
@@ -28,6 +28,7 @@
 
 #include "EventLoop.h"
 #include "JSDOMExceptionHandling.h"
+#include "Microtasks.h"
 #include "RejectedPromiseTracker.h"
 #include "ScriptExecutionContext.h"
 #include "WorkerGlobalScope.h"
@@ -53,6 +54,12 @@ JSC::JSValue evaluateHandlerFromAnyThread(JSC::JSGlobalObject* lexicalGlobalObje
     return JSExecState::evaluate(lexicalGlobalObject, source, thisValue, returnedException);
 }
 
+void JSExecState::runTask(JSC::JSGlobalObject* globalObject, JSC::QueuedTask& task)
+{
+    JSExecState currentState(globalObject);
+    MicrotaskQueue::runJSMicrotask(globalObject, globalObject->vm(), task);
+}
+
 ScriptExecutionContext* executionContext(JSC::JSGlobalObject* globalObject)
 {
     if (!globalObject || !globalObject->inherits<JSDOMGlobalObject>())
@@ -65,54 +72,4 @@ RefPtr<ScriptExecutionContext> protectedExecutionContext(JSC::JSGlobalObject* gl
     return executionContext(globalObject);
 }
 
-void JSExecState::runTask(JSC::JSGlobalObject* globalObject, JSC::QueuedTask& task)
-{
-    JSExecState currentState(globalObject);
-
-    auto& vm = globalObject->vm();
-    auto scope = DECLARE_CATCH_SCOPE(vm);
-
-    if (UNLIKELY(!task.job().isObject()))
-        return;
-
-    auto* job = JSC::asObject(task.job());
-
-    if (UNLIKELY(!scope.clearExceptionExceptTermination()))
-        return;
-
-    auto* lexicalGlobalObject = job->globalObject();
-    auto callData = JSC::getCallData(job);
-    if (UNLIKELY(!scope.clearExceptionExceptTermination()))
-        return;
-    ASSERT(callData.type != JSC::CallData::Type::None);
-
-    unsigned count = 0;
-    for (auto argument : task.arguments()) {
-        if (!argument)
-            break;
-        ++count;
-    }
-
-    if (UNLIKELY(globalObject->hasDebugger())) {
-        JSC::DeferTerminationForAWhile deferTerminationForAWhile(vm);
-        globalObject->debugger()->willRunMicrotask(globalObject, task.identifier());
-        scope.clearException();
-    }
-
-    NakedPtr<JSC::Exception> returnedException = nullptr;
-    if (LIKELY(!vm.hasPendingTerminationException())) {
-        JSExecState::profiledCall(lexicalGlobalObject, JSC::ProfilingReason::Microtask, job, callData, JSC::jsUndefined(), JSC::ArgList { std::bit_cast<JSC::EncodedJSValue*>(task.arguments().data()), count }, returnedException);
-        if (returnedException)
-            reportException(lexicalGlobalObject, returnedException);
-        scope.clearExceptionExceptTermination();
-    }
-
-    if (UNLIKELY(globalObject->hasDebugger())) {
-        JSC::DeferTerminationForAWhile deferTerminationForAWhile(vm);
-        globalObject->debugger()->didRunMicrotask(globalObject, task.identifier());
-        scope.clearException();
-    }
-}
-
-
 } // namespace WebCore
diff --git a/Source/WebCore/dom/Microtasks.cpp b/Source/WebCore/dom/Microtasks.cpp
index 1dffb1768d77..d2cfc50f86b1 100644
--- a/Source/WebCore/dom/Microtasks.cpp
+++ b/Source/WebCore/dom/Microtasks.cpp
@@ -25,6 +25,7 @@
 
 #include "CommonVM.h"
 #include "EventLoop.h"
+#include "JSDOMExceptionHandling.h"
 #include "JSExecState.h"
 #include "RejectedPromiseTracker.h"
 #include "ScriptExecutionContext.h"
@@ -66,6 +67,52 @@ void MicrotaskQueue::append(JSC::QueuedTask&& task)
     m_microtaskQueue.enqueue(WTFMove(task));
 }
 
+void MicrotaskQueue::runJSMicrotask(JSC::JSGlobalObject* globalObject, JSC::VM& vm, JSC::QueuedTask& task)
+{
+    auto scope = DECLARE_CATCH_SCOPE(vm);
+
+    if (UNLIKELY(!task.job().isObject()))
+        return;
+
+    auto* job = JSC::asObject(task.job());
+
+    if (UNLIKELY(!scope.clearExceptionExceptTermination()))
+        return;
+
+    auto* lexicalGlobalObject = job->globalObject();
+    auto callData = JSC::getCallData(job);
+    if (UNLIKELY(!scope.clearExceptionExceptTermination()))
+        return;
+    ASSERT(callData.type != JSC::CallData::Type::None);
+
+    unsigned count = 0;
+    for (auto argument : task.arguments()) {
+        if (!argument)
+            break;
+        ++count;
+    }
+
+    if (UNLIKELY(globalObject->hasDebugger())) {
+        JSC::DeferTerminationForAWhile deferTerminationForAWhile(vm);
+        globalObject->debugger()->willRunMicrotask(globalObject, task.identifier());
+        scope.clearException();
+    }
+
+    NakedPtr<JSC::Exception> returnedException = nullptr;
+    if (LIKELY(!vm.hasPendingTerminationException())) {
+        JSExecState::profiledCall(lexicalGlobalObject, JSC::ProfilingReason::Microtask, job, callData, JSC::jsUndefined(), JSC::ArgList { std::bit_cast<JSC::EncodedJSValue*>(task.arguments().data()), count }, returnedException);
+        if (returnedException)
+            reportException(lexicalGlobalObject, returnedException);
+        scope.clearExceptionExceptTermination();
+    }
+
+    if (UNLIKELY(globalObject->hasDebugger())) {
+        JSC::DeferTerminationForAWhile deferTerminationForAWhile(vm);
+        globalObject->debugger()->didRunMicrotask(globalObject, task.identifier());
+        scope.clearException();
+    }
+}
+
 void MicrotaskQueue::performMicrotaskCheckpoint()
 {
     if (m_performingMicrotaskCheckpoint)
@@ -75,28 +122,36 @@ void MicrotaskQueue::performMicrotaskCheckpoint()
     Ref vm = this->vm();
     JSC::JSLockHolder locker(vm);
     auto catchScope = DECLARE_CATCH_SCOPE(vm);
-
-    m_microtaskQueue.performMicrotaskCheckpoint(vm,
-        [&](JSC::QueuedTask& task) ALWAYS_INLINE_LAMBDA {
-            RefPtr dispatcher = downcast<WebCoreMicrotaskDispatcher>(task.dispatcher());
-            if (UNLIKELY(!dispatcher))
-                return JSC::QueuedTask::Result::Discard;
-
-            auto result = dispatcher->currentRunnability();
-            if (result == JSC::QueuedTask::Result::Executed) {
-                switch (dispatcher->type()) {
-                case WebCoreMicrotaskDispatcher::Type::JavaScript:
-                    JSExecState::runTask(task.globalObject(), task);
-                    break;
-                case WebCoreMicrotaskDispatcher::Type::None:
-                case WebCoreMicrotaskDispatcher::Type::UserGestureIndicator:
-                case WebCoreMicrotaskDispatcher::Type::Function:
-                    dispatcher->run(task);
-                    break;
+    {
+        SUPPRESS_UNCOUNTED_ARG auto& data = threadGlobalData();
+        auto* previousState = data.currentState();
+        m_microtaskQueue.performMicrotaskCheckpoint(vm,
+            [&](JSC::QueuedTask& task) ALWAYS_INLINE_LAMBDA {
+                RefPtr dispatcher = downcast<WebCoreMicrotaskDispatcher>(task.dispatcher());
+                if (UNLIKELY(!dispatcher))
+                    return JSC::QueuedTask::Result::Discard;
+
+                auto result = dispatcher->currentRunnability();
+                if (result == JSC::QueuedTask::Result::Executed) {
+                    switch (dispatcher->type()) {
+                    case WebCoreMicrotaskDispatcher::Type::JavaScript: {
+                        auto* globalObject = task.globalObject();
+                        data.setCurrentState(globalObject);
+                        runJSMicrotask(globalObject, vm, task);
+                        break;
+                    }
+                    case WebCoreMicrotaskDispatcher::Type::None:
+                    case WebCoreMicrotaskDispatcher::Type::UserGestureIndicator:
+                    case WebCoreMicrotaskDispatcher::Type::Function:
+                        data.setCurrentState(previousState);
+                        dispatcher->run(task);
+                        break;
+                    }
                 }
-            }
-            return result;
-        });
+                return result;
+            });
+        data.setCurrentState(previousState);
+    }
     vm->finalizeSynchronousJSExecution();
 
     if (!vm->executionForbidden()) {
diff --git a/Source/WebCore/dom/Microtasks.h b/Source/WebCore/dom/Microtasks.h
index 1b5e3c28da54..a9bd78b5cb13 100644
--- a/Source/WebCore/dom/Microtasks.h
+++ b/Source/WebCore/dom/Microtasks.h
@@ -68,6 +68,8 @@ class MicrotaskQueue final {
     bool isEmpty() const { return m_microtaskQueue.isEmpty(); }
     bool hasMicrotasksForFullyActiveDocument() const;
 
+    static void runJSMicrotask(JSC::JSGlobalObject*, JSC::VM&, JSC::QueuedTask&);
+
 private:
     JSC::VM& vm() const { return m_vm.get(); }
 


Reviews:
user: login: rniwa
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-08T21:08:12Z
user: login: rniwa
state: APPROVED
author_association: MEMBER
submitted_at: 2025-03-08T21:11:21Z
user: login: Constellation
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-08T21:24:10Z

Review comments:
diff_hunk: @@ -68,6 +68,8 @@ class MicrotaskQueue final {
     bool isEmpty() const { return m_microtaskQueue.isEmpty(); }
     bool hasMicrotasksForFullyActiveDocument() const;
 
+    static void runJSMicrotask(JSC::JSGlobalObject*, JSC::VM&, JSC::QueuedTask&);
path: Source/WebCore/dom/Microtasks.h
user: login: rniwa
body: It seems that this function can stay private now?
created_at: 2025-03-08T21:08:12Z
author_association: MEMBER
diff_hunk: @@ -68,6 +68,8 @@ class MicrotaskQueue final {
     bool isEmpty() const { return m_microtaskQueue.isEmpty(); }
     bool hasMicrotasksForFullyActiveDocument() const;
 
+    static void runJSMicrotask(JSC::JSGlobalObject*, JSC::VM&, JSC::QueuedTask&);
path: Source/WebCore/dom/Microtasks.h
user: login: Constellation
body: Unfortunately, it is still used in JSExecState and it is only used for UserGestureIndicator case. We would like to remove that and move the code to MicrotaskQueue (so it becomes centralized place to dispatch microtasks) so that we can remove this :)
created_at: 2025-03-08T21:24:10Z
author_association: MEMBER

PR comments:
user: login: webkit-early-warning-system
created_at: 2025-03-08T07:12:07Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/59f81b3397cbd1e92395e66f3cb45b5fa3e0d7ed)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/94165 "Passed style check") | [❌ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/13752 "Hash 59f81b33 for PR 42125 does not build (failure)") | [❌ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/3504 "Hash 59f81b33 for PR 42125 does not build (failure)") | [  ~~🛠 wpe~~](https://ews-build.webkit.org/#/builders/5/builds/99176 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🛠 win~~](https://ews-build.webkit.org/#/builders/59/builds/44692 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/96215 "Passed tests") | [❌ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/14052 "Hash 59f81b33 for PR 42125 does not build (failure)") | [❌ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/22182 "Hash 59f81b33 for PR 42125 does not build (failure)") | [  ~~🧪 wpe-wk2~~](https://ews-build.webkit.org/#/builders/5/builds/99176 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [  ~~🧪 win-tests~~](https://ews-build.webkit.org/#/builders/59/builds/44692 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/97167 "Passed tests") | [❌ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/130/builds/14052 "Hash 59f81b33 for PR 42125 does not build (failure)") | [❌ 🧪 api-mac](https://ews-build.webkit.org/#/builders/138/builds/3504 "Hash 59f81b33 for PR 42125 does not build (failure)") | [  ~~🧪 api-wpe~~](https://ews-build.webkit.org/#/builders/5/builds/99176 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [❌ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/130/builds/14052 "Hash 59f81b33 for PR 42125 does not build (failure)") | [❌ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/138/builds/3504 "Hash 59f81b33 for PR 42125 does not build (failure)") | [  ~~🛠 wpe-cairo~~](https://ews-build.webkit.org/#/builders/65/builds/44010 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| [✅ 🛠 🧪 jsc](https://ews-build.webkit.org/#/builders/20/builds/86875 "Built successfully and passed tests") | [❌ 🧪 api-ios](https://ews-build.webkit.org/#/builders/130/builds/14052 "Hash 59f81b33 for PR 42125 does not build (failure)") | [❌ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/138/builds/3504 "Hash 59f81b33 for PR 42125 does not build (failure)") | [  ~~🛠 gtk~~](https://ews-build.webkit.org/#/builders/2/builds/101219 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| [✅ 🛠 🧪 jsc-arm64](https://ews-build.webkit.org/#/builders/12/builds/92831 "Built successfully and passed tests") | [❌ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/21217 "Hash 59f81b33 for PR 42125 does not build (failure)") | [❌ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/123/builds/22182 "Hash 59f81b33 for PR 42125 does not build (failure)") | [  ~~🧪 gtk-wk2~~](https://ews-build.webkit.org/#/builders/2/builds/101219 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [❌ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/21469 "Hash 59f81b33 for PR 42125 does not build (failure)") | [❌ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/138/builds/3504 "Hash 59f81b33 for PR 42125 does not build (failure)") | [  ~~🧪 api-gtk~~](https://ews-build.webkit.org/#/builders/2/builds/101219 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [⏳ 🧪 vision-wk2 ](https://ews-build.webkit.org/#/builders/visionOS-2-Simulator-WK2-Tests-EWS "Waiting in queue, processing has not started yet") | [❌ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/138/builds/3504 "Hash 59f81b33 for PR 42125 does not build (failure)") | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/14384 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [❌ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/21201 "Hash 59f81b33 for PR 42125 does not build (failure)") | [❌ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/26380 "Failed to build and analyze WebKit") | [✅ 🛠 jsc-armv7](https://ews-build.webkit.org/#/builders/35/builds/115481 "Built successfully") | 
| | [❌ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/20888 "Hash 59f81b33 for PR 42125 does not build (failure)") | | [⏳ 🧪 jsc-armv7-tests](https://ews-build.webkit.org/#/builders/JSC-ARMv7-32bits-Tests-EWS "Waiting to run tests") | 
| | [❌ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/24348 "Hash 59f81b33 for PR 42125 does not build (failure)") | | | 
| | [❌ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/22629 "Hash 59f81b33 for PR 42125 does not build (failure)") | | | </details>
author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-03-08T07:45:54Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/c92f7b2b467eb00238621e44f4724661deec94b9)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/94167 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/13754 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/3506 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/99178 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/44694 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/96217 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/14054 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/22184 "Built successfully") | [✅ 🧪 wpe-wk2](https://ews-build.webkit.org/#/builders/34/builds/71829 "Passed tests") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/29170 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/97169 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/10417 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/85010 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/52170 "Passed tests") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/10107 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/2699 "Passed tests") | [✅ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/44012 "Built successfully") | 
| [✅ 🛠 🧪 jsc](https://ews-build.webkit.org/#/builders/20/builds/86877 "Built successfully and passed tests") | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/80340 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/2789 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/101221 "Built successfully") | 
| [✅ 🛠 🧪 jsc-arm64](https://ews-build.webkit.org/#/builders/12/builds/92833 "Built successfully and passed tests") | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/21219 "Built successfully") | [  ~~🧪 mac-AS-debug-wk2~~](https://ews-build.webkit.org/#/builders/122/builds/15436 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/1/builds/80834 "Passed tests") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/21471 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/81027 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/80216 "Passed tests") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/24761 "Passed tests") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/137/builds/2117 "Passed tests") | [✅ 🛠 playstation](https://ews-build.webkit.org/#/builders/134/builds/14386 "Built successfully") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/21203 "Built successfully") | [❌ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/26382 "Found 2 new failures in dom/Microtasks.cpp") | [✅ 🛠 jsc-armv7](https://ews-build.webkit.org/#/builders/35/builds/115483 "Built successfully") | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/20890 "Built successfully") | | [⏳ 🧪 jsc-armv7-tests](https://ews-build.webkit.org/#/builders/JSC-ARMv7-32bits-Tests-EWS "Waiting to run tests") | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/24350 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/22631 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-ews-buildbot
created_at: 2025-03-08T08:56:01Z
body: ### Safer C++ Build [#26382](https://ews-build.webkit.org/#/builders/120/builds/26382) (https://github.com/WebKit/WebKit/commit/c92f7b2b467eb00238621e44f4724661deec94b9)
:x: Found [2 new failures](https://ews-build.s3-us-west-2.amazonaws.com/macOS-Safer-CPP-Checks-EWS/c92f7b2b-26382/scan-build-output/new-results.html). Please address these issues before landing. See [WebKit Guidelines for Safer C++ Programming](https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines).
(cc @rniwa)

author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-03-08T09:37:00Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/64e2038cb8b994125b4f20ad5f63f4591dfd62ad)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/94173 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/13760 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/3513 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/99184 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/44700 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/96223 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/14060 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/22190 "Built successfully") | [✅ 🧪 wpe-wk2](https://ews-build.webkit.org/#/builders/34/builds/71838 "Passed tests") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/29174 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/97175 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/10423 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/85017 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/52179 "Passed tests") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/10113 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/2706 "Passed tests") | [✅ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/44018 "Built successfully") | 
| [✅ 🛠 🧪 jsc](https://ews-build.webkit.org/#/builders/20/builds/86883 "Built successfully and passed tests") | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/80346 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/2796 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/101227 "Built successfully") | 
| [✅ 🛠 🧪 jsc-arm64](https://ews-build.webkit.org/#/builders/12/builds/92839 "Built successfully and passed tests") | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/21225 "Built successfully") | [✅ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/122/builds/15441 "Passed tests") | [❌ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/1/builds/80838 "Found 1 new test failure: imported/w3c/web-platform-tests/css/css-view-transitions/active-view-transition-type-on-non-root.html (failure)") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/21477 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/81034 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/80220 "Passed tests") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/24766 "Passed tests") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/137/builds/2124 "Passed tests") | [✅ 🛠 playstation](https://ews-build.webkit.org/#/builders/134/builds/14395 "Built successfully") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/21209 "Built successfully") | [❌ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/26388 "") | [✅ 🛠 jsc-armv7](https://ews-build.webkit.org/#/builders/35/builds/115489 "Built successfully") | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/20896 "Built successfully") | | [⏳ 🧪 jsc-armv7-tests](https://ews-build.webkit.org/#/builders/JSC-ARMv7-32bits-Tests-EWS "Waiting to run tests") | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/24356 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/22637 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-ews-buildbot
created_at: 2025-03-08T12:04:18Z
body: ### Safer C++ Build [#26388](https://ews-build.webkit.org/#/builders/120/builds/26388) (https://github.com/WebKit/WebKit/commit/64e2038cb8b994125b4f20ad5f63f4591dfd62ad)
:x: Found [1 new failure](https://ews-build.s3-us-west-2.amazonaws.com/macOS-Safer-CPP-Checks-EWS/64e2038c-26388/scan-build-output/new-results.html). Please address these issues before landing. See [WebKit Guidelines for Safer C++ Programming](https://github.com/WebKit/WebKit/wiki/Safer-CPP-Guidelines).
(cc @rniwa)

author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-03-08T18:42:20Z
body: EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/5ef58a873c539d0ac4b448e22b2610500a148336)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/94188 "Passed style check") | [❌ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/13775 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/3532 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/99199 "Built successfully") | [❌ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/44715 "Hash 5ef58a87 for PR 42125 does not build (failure)") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/96238 "Passed tests") | [❌ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/14075 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/22205 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [  ~~🧪 wpe-wk2~~](https://ews-build.webkit.org/#/builders/34/builds/71849 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [❌ 🧪 win-tests](https://ews-build.webkit.org/#/builders/59/builds/44715 "Hash 5ef58a87 for PR 42125 does not build (failure)") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/97190 "Passed tests") | [❌ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/130/builds/14075 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🧪 api-mac](https://ews-build.webkit.org/#/builders/138/builds/3532 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/52190 "Passed tests") | 
| | [❌ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/130/builds/14075 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/138/builds/3532 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [✅ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/44033 "Built successfully") | 
| [❌ 🛠 🧪 jsc](https://ews-build.webkit.org/#/builders/20/builds/86898 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🧪 api-ios](https://ews-build.webkit.org/#/builders/130/builds/14075 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/138/builds/3532 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/101243 "Built successfully") | 
| [❌ 🛠 🧪 jsc-arm64](https://ews-build.webkit.org/#/builders/12/builds/92854 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/21240 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/123/builds/22205 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [  ~~🧪 gtk-wk2~~](https://ews-build.webkit.org/#/builders/1/builds/80853 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [❌ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/21492 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/138/builds/3532 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [  ~~🧪 api-gtk~~](https://ews-build.webkit.org/#/builders/21/builds/80235 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | 
| | [⏳ 🧪 vision-wk2 ](https://ews-build.webkit.org/#/builders/visionOS-2-Simulator-WK2-Tests-EWS "Waiting in queue, processing has not started yet") | [❌ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/138/builds/3532 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🛠 playstation](https://ews-build.webkit.org/#/builders/134/builds/14417 "Hash 5ef58a87 for PR 42125 does not build (failure)") | 
| | [❌ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/21224 "Hash 5ef58a87 for PR 42125 does not build (failure)") | [❌ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/26403 "Failed to build and analyze WebKit") | [✅ 🛠 jsc-armv7](https://ews-build.webkit.org/#/builders/35/builds/115504 "Built successfully") | 
| | [❌ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/20911 "Hash 5ef58a87 for PR 42125 does not build (failure)") | | [⏳ 🧪 jsc-armv7-tests](https://ews-build.webkit.org/#/builders/JSC-ARMv7-32bits-Tests-EWS "Waiting to run tests") | 
| | [❌ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/24371 "Hash 5ef58a87 for PR 42125 does not build (failure)") | | | 
| | [❌ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/22652 "Hash 5ef58a87 for PR 42125 does not build (failure)") | | | </details>
author_association: COLLABORATOR
user: login: webkit-early-warning-system
created_at: 2025-03-08T19:52:47Z
body: EWS run on current version of this PR (hash https://github.com/WebKit/WebKit/commit/252b1b49a980ae840cc6372c9bded78aa01f4479)<details>

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/94190 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/131/builds/13777 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/138/builds/3534 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/99201 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/44717 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/96240 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/130/builds/14077 "Built successfully") | [✅ 🛠 mac-AS-debug](https://ews-build.webkit.org/#/builders/123/builds/22207 "Built successfully") | [  ~~🧪 wpe-wk2~~](https://ews-build.webkit.org/#/builders/34/builds/71851 "The change is no longer eligible for processing. Commit was outdated when EWS attempted to process it.") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/29191 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/97192 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/132/builds/10440 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/85039 "Passed tests") | [❌ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/52192 "Found 1 new API test failure: /WPE/TestWebKitWebView:/webkit/WebKitWebView/save (failure)") | 
| | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/133/builds/10130 "Passed tests") | [✅ 🧪 mac-wk1](https://ews-build.webkit.org/#/builders/135/builds/2726 "Passed tests") | [✅ 🛠 wpe-cairo](https://ews-build.webkit.org/#/builders/65/builds/44035 "Built successfully") | 
| [✅ 🛠 🧪 jsc](https://ews-build.webkit.org/#/builders/20/builds/86900 "Built successfully and passed tests") | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/80362 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/136/builds/2816 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/101246 "Built successfully") | 
| [✅ 🛠 🧪 jsc-arm64](https://ews-build.webkit.org/#/builders/12/builds/92856 "Built successfully and passed tests") | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/128/builds/21242 "Built successfully") | [✅ 🧪 mac-AS-debug-wk2](https://ews-build.webkit.org/#/builders/122/builds/15460 "Passed tests") | [  ~~🧪 gtk-wk2~~](https://ews-build.webkit.org/#/builders/1/builds/80859 "The change is no longer eligible for processing. Pull Request was already closed when EWS attempted to process it.") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/121/builds/21494 "Built successfully") | [✅ 🧪 mac-wk2-stress](https://ews-build.webkit.org/#/builders/8/builds/81054 "Passed tests") | [  ~~🧪 api-gtk~~](https://ews-build.webkit.org/#/builders/21/builds/80241 "The change is no longer eligible for processing. Pull Request was already closed when EWS attempted to process it.") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/126/builds/24781 "Passed tests") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/137/builds/2145 "Passed tests") | [✅ 🛠 playstation](https://ews-build.webkit.org/#/builders/134/builds/14421 "Built successfully") | 
| [✅ 🛠 🧪 unsafe-merge](https://ews-build.webkit.org/#/builders/22/builds/15109 "Built successfully and passed tests") | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/127/builds/21226 "Built successfully") | [✅ 🛠 mac-safer-cpp](https://ews-build.webkit.org/#/builders/120/builds/26405 "Built successfully") | [✅ 🛠 jsc-armv7](https://ews-build.webkit.org/#/builders/35/builds/115506 "Built successfully") | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/125/builds/20913 "Built successfully") | | [  ~~🧪 jsc-armv7-tests~~](https://ews-build.webkit.org/#/builders/25/builds/33160 "The change is no longer eligible for processing. Pull Request was already closed when EWS attempted to process it.") | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/129/builds/24373 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/124/builds/22654 "Built successfully") | | | </details>
author_association: COLLABORATOR
user: login: webkit-commit-queue
created_at: 2025-03-08T21:27:16Z
body: Committed 291849@main (fb47e460117f): <https://commits.webkit.org/291849@main>

Reviewed commits have been landed. Closing PR #42125 and removing active labels.
author_association: COLLABORATOR