Changeset 180054 in webkit
- Timestamp:
- Feb 13, 2015, 9:50:15 AM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/Source/WebKit2/ChangeLog ¶
r180052 r180054 1 2015-02-13 Antti Koivisto <antti@apple.com> 2 3 WorkQueue should support concurrent queues 4 https://bugs.webkit.org/show_bug.cgi?id=141559 5 6 Reviewed by Anders Carlsson. 7 8 * DatabaseProcess/DatabaseProcess.cpp: 9 (WebKit::DatabaseProcess::DatabaseProcess): 10 * Platform/IPC/Connection.h: 11 * Platform/IPC/mac/ConnectionMac.mm: 12 (IPC::Connection::open): 13 * Platform/WorkQueue.cpp: 14 (WorkQueue::create): 15 16 Also make create return a Ref. 17 18 (WorkQueue::WorkQueue): 19 * Platform/WorkQueue.h: 20 21 Add queue type enum. 22 23 * Platform/efl/WorkQueueEfl.cpp: 24 (WorkQueue::platformInitialize): 25 * Platform/gtk/WorkQueueGtk.cpp: 26 (WorkQueue::platformInitialize): 27 * Platform/mac/WorkQueueMac.cpp: 28 (WorkQueue::platformInitialize): 29 * Shared/mac/SecItemShim.cpp: 30 (WebKit::SecItemShim::initializeConnection): 31 * Shared/mac/SecItemShim.h: 32 * UIProcess/Launcher/ProcessLauncher.cpp: 33 (WebKit::processLauncherWorkQueue): 34 * UIProcess/mac/SecItemShimProxy.cpp: 35 (WebKit::SecItemShimProxy::initializeConnection): 36 * UIProcess/mac/SecItemShimProxy.h: 37 * WebProcess/Plugins/PluginProcessConnectionManager.cpp: 38 (WebKit::PluginProcessConnectionManager::initializeConnection): 39 * WebProcess/Plugins/PluginProcessConnectionManager.h: 40 * WebProcess/WebPage/EventDispatcher.cpp: 41 (WebKit::EventDispatcher::EventDispatcher): 42 (WebKit::EventDispatcher::initializeConnection): 43 * WebProcess/WebPage/EventDispatcher.h: 44 * WebProcess/WebPage/ViewUpdateDispatcher.h: 45 1 46 2015-02-12 Anders Carlsson <andersca@apple.com> 2 47 -
TabularUnified trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp ¶
r179409 r180054 55 55 56 56 DatabaseProcess::DatabaseProcess() 57 : m_queue( adoptRef(*WorkQueue::create("com.apple.WebKit.DatabaseProcess").leakRef()))57 : m_queue(WorkQueue::create("com.apple.WebKit.DatabaseProcess")) 58 58 , m_webOriginDataManager(std::make_unique<WebOriginDataManager>(*this, *this)) 59 59 { -
TabularUnified trunk/Source/WebKit2/Platform/IPC/Connection.h ¶
r179326 r180054 244 244 245 245 bool m_isConnected; 246 Ref Ptr<WorkQueue> m_connectionQueue;246 Ref<WorkQueue> m_connectionQueue; 247 247 WTF::RunLoop& m_clientRunLoop; 248 248 -
TabularUnified trunk/Source/WebKit2/Platform/IPC/mac/ConnectionMac.mm ¶
r179707 r180054 207 207 // Register the data available handler. 208 208 RefPtr<Connection> connection(this); 209 m_receivePortDataAvailableSource = createDataAvailableSource(m_receivePort, *m_connectionQueue, [connection] {209 m_receivePortDataAvailableSource = createDataAvailableSource(m_receivePort, m_connectionQueue, [connection] { 210 210 connection->receiveSourceEventHandler(); 211 211 }); … … 214 214 // If we have an exception port, register the data available handler and send over the port to the other end. 215 215 if (m_exceptionPort) { 216 m_exceptionPortDataAvailableSource = createDataAvailableSource(m_exceptionPort, *m_connectionQueue, [connection] {216 m_exceptionPortDataAvailableSource = createDataAvailableSource(m_exceptionPort, m_connectionQueue, [connection] { 217 217 connection->exceptionSourceEventHandler(); 218 218 }); -
TabularUnified trunk/Source/WebKit2/Platform/WorkQueue.cpp ¶
r169926 r180054 27 27 #include "WorkQueue.h" 28 28 29 PassRefPtr<WorkQueue> WorkQueue::create(const char* name, QOS qos)29 Ref<WorkQueue> WorkQueue::create(const char* name, Type type, QOS qos) 30 30 { 31 return adoptRef( new WorkQueue(name, qos));31 return adoptRef(*new WorkQueue(name, type, qos)); 32 32 } 33 33 34 WorkQueue::WorkQueue(const char* name, QOS qos)34 WorkQueue::WorkQueue(const char* name, Type type, QOS qos) 35 35 { 36 platformInitialize(name, qos);36 platformInitialize(name, type, qos); 37 37 } 38 38 -
TabularUnified trunk/Source/WebKit2/Platform/WorkQueue.h ¶
r179395 r180054 55 55 class WorkQueue final : public FunctionDispatcher { 56 56 public: 57 enum class Type { 58 Serial, 59 Concurrent 60 }; 57 61 enum class QOS { 58 62 UserInteractive, … … 63 67 }; 64 68 65 static PassRefPtr<WorkQueue> create(const char* name, QOS = QOS::Default);69 static Ref<WorkQueue> create(const char* name, Type = Type::Serial, QOS = QOS::Default); 66 70 virtual ~WorkQueue(); 67 71 … … 80 84 81 85 private: 82 explicit WorkQueue(const char* name, QOS);86 explicit WorkQueue(const char* name, Type, QOS); 83 87 84 void platformInitialize(const char* name, QOS);88 void platformInitialize(const char* name, Type, QOS); 85 89 void platformInvalidate(); 86 90 -
TabularUnified trunk/Source/WebKit2/Platform/efl/WorkQueueEfl.cpp ¶
r170774 r180054 24 24 #include <DispatchQueueWorkItemEfl.h> 25 25 26 void WorkQueue::platformInitialize(const char* name, QOS)26 void WorkQueue::platformInitialize(const char* name, Type, QOS) 27 27 { 28 28 m_dispatchQueue = DispatchQueue::create(name); -
TabularUnified trunk/Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp ¶
r179395 r180054 33 33 static const size_t kVisualStudioThreadNameLimit = 31; 34 34 35 void WorkQueue::platformInitialize(const char* name, QOS)35 void WorkQueue::platformInitialize(const char* name, Type, QOS) 36 36 { 37 37 m_eventContext = adoptGRef(g_main_context_new()); -
TabularUnified trunk/Source/WebKit2/Platform/mac/WorkQueueMac.cpp ¶
r169926 r180054 63 63 #endif 64 64 65 void WorkQueue::platformInitialize(const char* name, QOS qos)65 void WorkQueue::platformInitialize(const char* name, Type type, QOS qos) 66 66 { 67 dispatch_queue_attr_t attr = 0;67 dispatch_queue_attr_t attr = type == Type::Concurrent ? DISPATCH_QUEUE_CONCURRENT : DISPATCH_QUEUE_SERIAL; 68 68 #if HAVE(QOS_CLASSES) 69 attr = dispatch_queue_attr_make_with_qos_class( DISPATCH_QUEUE_SERIAL, dispatchQOSClass(qos), 0);69 attr = dispatch_queue_attr_make_with_qos_class(attr, dispatchQOSClass(qos), 0); 70 70 #endif 71 71 m_dispatchQueue = dispatch_queue_create(name, attr); -
TabularUnified trunk/Source/WebKit2/Shared/mac/SecItemShim.cpp ¶
r179409 r180054 179 179 void SecItemShim::initializeConnection(IPC::Connection* connection) 180 180 { 181 connection->addWorkQueueMessageReceiver(Messages::SecItemShim::messageReceiverName(), m_queue.get(), this);181 connection->addWorkQueueMessageReceiver(Messages::SecItemShim::messageReceiverName(), &m_queue.get(), this); 182 182 } 183 183 -
TabularUnified trunk/Source/WebKit2/Shared/mac/SecItemShim.h ¶
r179409 r180054 52 52 void secItemResponse(uint64_t requestID, const SecItemResponseData&); 53 53 54 Ref Ptr<WorkQueue> m_queue;54 Ref<WorkQueue> m_queue; 55 55 }; 56 56 -
TabularUnified trunk/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp ¶
r177425 r180054 28 28 29 29 #include "WorkQueue.h" 30 #include <wtf/StdLibExtras.h> 30 #include <wtf/StdLibExtras.h> 31 31 32 32 namespace WebKit { … … 34 34 static WorkQueue& processLauncherWorkQueue() 35 35 { 36 static WorkQueue& processLauncherWorkQueue = *WorkQueue::create("com.apple.WebKit.ProcessLauncher").leakRef(); 36 37 static WorkQueue& processLauncherWorkQueue = WorkQueue::create("com.apple.WebKit.ProcessLauncher").leakRef(); 37 38 return processLauncherWorkQueue; 38 39 } -
TabularUnified trunk/Source/WebKit2/UIProcess/mac/SecItemShimProxy.cpp ¶
r179409 r180054 55 55 void SecItemShimProxy::initializeConnection(IPC::Connection& connection) 56 56 { 57 connection.addWorkQueueMessageReceiver(Messages::SecItemShimProxy::messageReceiverName(), m_queue.get(), this);57 connection.addWorkQueueMessageReceiver(Messages::SecItemShimProxy::messageReceiverName(), &m_queue.get(), this); 58 58 } 59 59 -
TabularUnified trunk/Source/WebKit2/UIProcess/mac/SecItemShimProxy.h ¶
r179409 r180054 50 50 void secItemRequest(IPC::Connection&, uint64_t requestID, const SecItemRequestData&); 51 51 52 Ref Ptr<WorkQueue> m_queue;52 Ref<WorkQueue> m_queue; 53 53 }; 54 54 -
TabularUnified trunk/Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.cpp ¶
r179409 r180054 59 59 void PluginProcessConnectionManager::initializeConnection(IPC::Connection* connection) 60 60 { 61 connection->addWorkQueueMessageReceiver(Messages::PluginProcessConnectionManager::messageReceiverName(), m_queue.get(), this);61 connection->addWorkQueueMessageReceiver(Messages::PluginProcessConnectionManager::messageReceiverName(), &m_queue.get(), this); 62 62 } 63 63 -
TabularUnified trunk/Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.h ¶
r177917 r180054 61 61 void pluginProcessCrashed(uint64_t pluginProcessToken); 62 62 63 Ref Ptr<WorkQueue> m_queue;63 Ref<WorkQueue> m_queue; 64 64 65 65 Vector<RefPtr<PluginProcessConnection>> m_pluginProcessConnections; -
TabularUnified trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp ¶
r179409 r180054 53 53 54 54 EventDispatcher::EventDispatcher() 55 : m_queue(WorkQueue::create("com.apple.WebKit.EventDispatcher", WorkQueue:: QOS::UserInteractive))55 : m_queue(WorkQueue::create("com.apple.WebKit.EventDispatcher", WorkQueue::Type::Serial, WorkQueue::QOS::UserInteractive)) 56 56 , m_recentWheelEventDeltaTracker(std::make_unique<WheelEventDeltaTracker>()) 57 57 #if ENABLE(IOS_TOUCH_EVENTS) … … 88 88 void EventDispatcher::initializeConnection(IPC::Connection* connection) 89 89 { 90 connection->addWorkQueueMessageReceiver(Messages::EventDispatcher::messageReceiverName(), m_queue.get(), this);90 connection->addWorkQueueMessageReceiver(Messages::EventDispatcher::messageReceiverName(), &m_queue.get(), this); 91 91 } 92 92 -
TabularUnified trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h ¶
r177917 r180054 90 90 #endif 91 91 92 Ref Ptr<WorkQueue> m_queue;92 Ref<WorkQueue> m_queue; 93 93 94 94 #if ENABLE(ASYNC_SCROLLING) -
TabularUnified trunk/Source/WebKit2/WebProcess/WebPage/ViewUpdateDispatcher.cpp ¶
r179409 r180054 53 53 void ViewUpdateDispatcher::initializeConnection(IPC::Connection* connection) 54 54 { 55 connection->addWorkQueueMessageReceiver(Messages::ViewUpdateDispatcher::messageReceiverName(), m_queue.get(), this);55 connection->addWorkQueueMessageReceiver(Messages::ViewUpdateDispatcher::messageReceiverName(), &m_queue.get(), this); 56 56 } 57 57 -
TabularUnified trunk/Source/WebKit2/WebProcess/WebPage/ViewUpdateDispatcher.h ¶
r177917 r180054 57 57 }; 58 58 59 Ref Ptr<WorkQueue> m_queue;59 Ref<WorkQueue> m_queue; 60 60 SpinLock m_dataMutex; 61 61 HashMap<uint64_t, UpdateData> m_latestUpdate;
Note:
See TracChangeset
for help on using the changeset viewer.