Title: [227828] branches/safari-605-branch/Source/WebCore
- Revision
- 227828
- Author
- [email protected]
- Date
- 2018-01-30 10:51:27 -0800 (Tue, 30 Jan 2018)
Log Message
Cherry-pick r227745. rdar://problem/37019493
Modified Paths
Diff
Modified: branches/safari-605-branch/Source/WebCore/ChangeLog (227827 => 227828)
--- branches/safari-605-branch/Source/WebCore/ChangeLog 2018-01-30 18:51:22 UTC (rev 227827)
+++ branches/safari-605-branch/Source/WebCore/ChangeLog 2018-01-30 18:51:27 UTC (rev 227828)
@@ -1,5 +1,28 @@
2018-01-30 Jason Marcell <[email protected]>
+ Cherry-pick r227745. rdar://problem/37019493
+
+ 2018-01-29 Chris Dumez <[email protected]>
+
+ Drop unnecessary "ServiceWorker Task Thread" in SWServer
+ https://bugs.webkit.org/show_bug.cgi?id=182253
+
+ Reviewed by Youenn Fablet.
+
+ Drop unnecessary "ServiceWorker Task Thread" in SWServer. We're spinning a thread for
+ each SWServer that is never used.
+
+ * workers/service/server/SWServer.cpp:
+ (WebCore::SWServer::~SWServer):
+ (WebCore::SWServer::SWServer):
+ (WebCore::SWServer::taskThreadEntryPoint): Deleted.
+ (WebCore::SWServer::postTask): Deleted.
+ (WebCore::SWServer::postTaskReply): Deleted.
+ (WebCore::SWServer::handleTaskRepliesOnMainThread): Deleted.
+ * workers/service/server/SWServer.h:
+
+2018-01-30 Jason Marcell <[email protected]>
+
Cherry-pick r227702. rdar://problem/37019515
2018-01-26 Dean Jackson <[email protected]>
Modified: branches/safari-605-branch/Source/WebCore/workers/service/server/SWServer.cpp (227827 => 227828)
--- branches/safari-605-branch/Source/WebCore/workers/service/server/SWServer.cpp 2018-01-30 18:51:22 UTC (rev 227827)
+++ branches/safari-605-branch/Source/WebCore/workers/service/server/SWServer.cpp 2018-01-30 18:51:27 UTC (rev 227828)
@@ -73,15 +73,6 @@
RELEASE_ASSERT(m_connections.isEmpty());
RELEASE_ASSERT(m_registrations.isEmpty());
RELEASE_ASSERT(m_jobQueues.isEmpty());
-
- ASSERT(m_taskQueue.isEmpty());
- ASSERT(m_taskReplyQueue.isEmpty());
-
- // For a SWServer to be cleanly shut down its thread must have finished and gone away.
- // At this stage in development of the feature that actually never happens.
- // But once it does start happening, this ASSERT will catch us doing it wrong.
- Locker<Lock> locker(m_taskThreadLock);
- ASSERT(!m_taskThread);
allServers().remove(this);
}
@@ -271,9 +262,6 @@
{
UNUSED_PARAM(registrationDatabaseDirectory);
allServers().add(this);
- m_taskThread = Thread::create(ASCIILiteral("ServiceWorker Task Thread"), [this] {
- taskThreadEntryPoint();
- });
}
// https://w3c.github.io/ServiceWorker/#schedule-job-algorithm
@@ -668,47 +656,6 @@
connection->fireActivateEvent(worker.identifier());
}
-void SWServer::taskThreadEntryPoint()
-{
- ASSERT(!isMainThread());
-
- while (!m_taskQueue.isKilled())
- m_taskQueue.waitForMessage().performTask();
-
- Locker<Lock> locker(m_taskThreadLock);
- m_taskThread = nullptr;
-}
-
-void SWServer::postTask(CrossThreadTask&& task)
-{
- m_taskQueue.append(WTFMove(task));
-}
-
-void SWServer::postTaskReply(CrossThreadTask&& task)
-{
- m_taskReplyQueue.append(WTFMove(task));
-
- Locker<Lock> locker(m_mainThreadReplyLock);
- if (m_mainThreadReplyScheduled)
- return;
-
- m_mainThreadReplyScheduled = true;
- callOnMainThread([this] {
- handleTaskRepliesOnMainThread();
- });
-}
-
-void SWServer::handleTaskRepliesOnMainThread()
-{
- {
- Locker<Lock> locker(m_mainThreadReplyLock);
- m_mainThreadReplyScheduled = false;
- }
-
- while (auto task = m_taskReplyQueue.tryGetMessage())
- task->performTask();
-}
-
void SWServer::registerConnection(Connection& connection)
{
auto result = m_connections.add(connection.identifier(), nullptr);
Modified: branches/safari-605-branch/Source/WebCore/workers/service/server/SWServer.h (227827 => 227828)
--- branches/safari-605-branch/Source/WebCore/workers/service/server/SWServer.h 2018-01-30 18:51:22 UTC (rev 227827)
+++ branches/safari-605-branch/Source/WebCore/workers/service/server/SWServer.h 2018-01-30 18:51:27 UTC (rev 227828)
@@ -37,8 +37,6 @@
#include "ServiceWorkerRegistrationData.h"
#include "ServiceWorkerRegistrationKey.h"
#include "ServiceWorkerTypes.h"
-#include <wtf/CrossThreadQueue.h>
-#include <wtf/CrossThreadTask.h>
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
#include <wtf/ObjectIdentifier.h>
@@ -137,9 +135,6 @@
void resolveUnregistrationJob(const ServiceWorkerJobData&, const ServiceWorkerRegistrationKey&, bool unregistrationResult);
void startScriptFetch(const ServiceWorkerJobData&, FetchOptions::Cache);
- void postTask(CrossThreadTask&&);
- void postTaskReply(CrossThreadTask&&);
-
void updateWorker(Connection&, const ServiceWorkerJobDataIdentifier&, SWServerRegistration&, const URL&, const String& script, const ContentSecurityPolicyResponseHeaders&, WorkerType);
void terminateWorker(SWServerWorker&);
void syncTerminateWorker(SWServerWorker&);
@@ -186,9 +181,6 @@
void registerConnection(Connection&);
void unregisterConnection(Connection&);
- void taskThreadEntryPoint();
- void handleTaskRepliesOnMainThread();
-
void scriptFetchFinished(Connection&, const ServiceWorkerFetchResult&);
void didResolveRegistrationPromise(Connection&, const ServiceWorkerRegistrationKey&);
@@ -228,14 +220,6 @@
HashMap<ServiceWorkerClientIdentifier, ServiceWorkerClientData> m_clientsById;
HashMap<ServiceWorkerClientIdentifier, ServiceWorkerIdentifier> m_clientToControllingWorker;
- RefPtr<Thread> m_taskThread;
- Lock m_taskThreadLock;
-
- CrossThreadQueue<CrossThreadTask> m_taskQueue;
- CrossThreadQueue<CrossThreadTask> m_taskReplyQueue;
-
- Lock m_mainThreadReplyLock;
- bool m_mainThreadReplyScheduled { false };
UniqueRef<SWOriginStore> m_originStore;
RegistrationStore m_registrationStore;
Vector<ServiceWorkerContextData> m_pendingContextDatas;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes