WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
30805
Add MessageQueue::removeWithPredicate to remove certain tasks without pulling them from the queue.
https://bugs.webkit.org/show_bug.cgi?id=30805
Summary
Add MessageQueue::removeWithPredicate to remove certain tasks without pulling...
Dmitry Titov
Reported
2009-10-26 21:07:52 PDT
As part of removing thread-safe refcounting from tasks, it makes sense to add the method on MessageQueue that would remove specified set of tasksk from the queue. Otherwise, this operation is done by removing tasksk from the queue and then re-inserting them back, which is longer, results in more locking operations and doesn't help
bug 30612
.
Attachments
Proposed patch.
(4.14 KB, patch)
2009-10-28 12:06 PDT
,
Dmitry Titov
levin
: review+
dimich
: commit-queue-
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Dmitry Titov
Comment 1
2009-10-28 12:06:06 PDT
Created
attachment 42047
[details]
Proposed patch.
David Levin
Comment 2
2009-10-28 13:54:28 PDT
Comment on
attachment 42047
[details]
Proposed patch. Just a few nits. Please fix and submit.
> diff --git a/JavaScriptCore/wtf/MessageQueue.h b/JavaScriptCore/wtf/MessageQueue.h > + void removeWithPredicate(Predicate&);
Consider using "removeIf" instead of "removeWithPredicate" (It is similar in naming to the findIf method on Deque).
> + inline void MessageQueue<DataType>::removeWithPredicate(Predicate& predicate) > + { > + MutexLocker lock(m_mutex); > + DequeConstIterator<DataType> found = m_queue.end(); > + while ((found = m_queue.findIf(predicate)) != m_queue.end()) { > + m_queue.remove(found); ASSERT(0);
Please remove "ASSERT(0);"
> diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog > + (WebCore::SameDatabasePredicate::SameDatabasePredicate): Added predicate that flags the tasks belonging to specified database.
Consider: to "a" specified database.
> + (WebCore::DatabaseThread::unscheduleDatabaseTasks): changed to use new removeWithPredicate method.
Consider: use "the" new removeWithPredicate
Dmitry Titov
Comment 3
2009-10-28 16:23:19 PDT
Fixed all and landed:
http://trac.webkit.org/changeset/50247
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug