[webkit-reviews] review granted: [Bug 30612] Remove threadsafe refcounting from tasks used with WTF::MessageQueue. : [Attachment 42245] Proposed patch.
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Nov 2 08:31:43 PST 2009
David Levin <levin at chromium.org> has granted Dmitry Titov
<dimich at chromium.org>'s request for review:
Bug 30612: Remove threadsafe refcounting from tasks used with
WTF::MessageQueue.
https://bugs.webkit.org/show_bug.cgi?id=30612
Attachment 42245: Proposed patch.
https://bugs.webkit.org/attachment.cgi?id=42245&action=review
------- Additional Comments from David Levin <levin at chromium.org>
Just a few things to fix on landing.
> diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
> + * wtf/MessageQueue.h:
> + (WTF::MessageQueue::alwaysTruePredicate):
> + (WTF::::~MessageQueue):
> + (WTF::::append):
> + (WTF::::appendAndCheckEmpty):
> + (WTF::::prepend):
> + (WTF::::waitForMessage):
> + (WTF::::waitForMessageFilteredWithTimeout):
> + (WTF::::tryGetMessage):
> + (WTF::::removeIf):
These functions declarations are messed up. Please fix them.
> diff --git a/JavaScriptCore/wtf/MessageQueue.h
b/JavaScriptCore/wtf/MessageQueue.h
> + inline void MessageQueue<DataType>::~MessageQueue()
> + {
> + MutexLocker lock(m_mutex);
> +
> + while (!m_queue.isEmpty()) {
> + DequeConstIterator<DataType*> found = m_queue.begin();
> + DataType* ptr = *found;
> + m_queue.remove(found);
> + delete ptr;
> + }
> + }
Consider using "deleteAllValues" from Deque.h
> +
> +
Extra blank line.
> + inline PassOwnPtr<DataType>
MessageQueue<DataType>::waitForMessageFilteredWithTimeout(MessageQueueWaitResul
t& result, Predicate& predicate, double absoluteTime)
> + DataType* ptr = *found;
ptr? (name) How about message or data.... ?
> + inline PassOwnPtr<DataType> MessageQueue<DataType>::tryGetMessage()
> + DataType* ptr = m_queue.first();
ptr? (name)
> @@ -157,9 +181,11 @@ namespace WTF {
> inline void MessageQueue<DataType>::removeIf(Predicate& predicate)
> + DataType* ptr = *found;
ptr? (name)
> diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
> 2009-10-30 Dmitry Titov <dimich at chromium.org>
>
> + Reviewed by NOBODY (OOPS!).
> +
> + Remove threadsafe refcounting from tasks used with
WTF::MessageQueue.
> + https://bugs.webkit.org/show_bug.cgi?id=30612
> +
> + No new tests since no new functionality. Storage, MessagePorts and
Workers tests cover this.
> +
> + There is a lot of files but most changes are simply replace RefPtr
and PassRefPtr to
/There is/There are/
/to/with/
> diff --git a/WebCore/dom/default/PlatformMessagePortChannel.cpp
b/WebCore/dom/default/PlatformMessagePortChannel.cpp
> @@ -193,7 +193,7 @@ void
PlatformMessagePortChannel::postMessageToRemote(PassOwnPtr<MessagePortChann
> bool
PlatformMessagePortChannel::tryGetMessageFromRemote(OwnPtr<MessagePortChannel::
EventData>& result)
> {
> MutexLocker lock(m_mutex);
> + return (result = m_incomingQueue->tryGetMessage());
It would be nice to not write this on one line, which can easily making it look
like == was intended at first glance.
result = m_incomingQueue->tryGetMessage();
return result;
> diff --git a/WebCore/storage/LocalStorageThread.cpp
b/WebCore/storage/LocalStorageThread.cpp
> while (true) {
> - RefPtr<LocalStorageTask> task;
> - if (!m_queue.waitForMessage(task))
> + OwnPtr<LocalStorageTask> task = m_queue.waitForMessage();
> + if (!task)
> break;
For similar code in WebCore/storage/DatabaseThread.cpp, you re-wrote this to be
while (OwnPtr<LocalStorageTask> task = m_queue.waitForMessage()) {
(and if you do that I think the contents will be a single line so no {} around
that.)
> diff --git a/WebCore/workers/WorkerRunLoop.cpp
b/WebCore/workers/WorkerRunLoop.cpp
> +void WorkerRunLoop::Task::performTask(ScriptExecutionContext* context) {
m_task->performTask(context); }
Should be multiple lines.
More information about the webkit-reviews
mailing list