<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>30805</bug_id>
          
          <creation_ts>2009-10-26 21:07:52 -0700</creation_ts>
          <short_desc>Add MessageQueue::removeWithPredicate to remove certain tasks without pulling them from the queue.</short_desc>
          <delta_ts>2009-10-28 16:23:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>30612</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>158087</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-10-26 21:07:52 -0700</bug_when>
    <thetext>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&apos;t help bug 30612.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158653</commentid>
    <comment_count>1</comment_count>
      <attachid>42047</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-10-28 12:06:06 -0700</bug_when>
    <thetext>Created attachment 42047
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158692</commentid>
    <comment_count>2</comment_count>
      <attachid>42047</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-10-28 13:54:28 -0700</bug_when>
    <thetext>Comment on attachment 42047
Proposed patch.

Just a few nits. Please fix and submit.


&gt; diff --git a/JavaScriptCore/wtf/MessageQueue.h b/JavaScriptCore/wtf/MessageQueue.h
&gt; +        void removeWithPredicate(Predicate&amp;);

Consider using &quot;removeIf&quot; instead of &quot;removeWithPredicate&quot; (It is similar in naming to the findIf method on Deque).


&gt; +    inline void MessageQueue&lt;DataType&gt;::removeWithPredicate(Predicate&amp; predicate)
&gt; +    {
&gt; +        MutexLocker lock(m_mutex);
&gt; +        DequeConstIterator&lt;DataType&gt; found = m_queue.end();
&gt; +        while ((found = m_queue.findIf(predicate)) != m_queue.end()) {
&gt; +            m_queue.remove(found); ASSERT(0);

Please remove &quot;ASSERT(0);&quot;



&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +        (WebCore::SameDatabasePredicate::SameDatabasePredicate): Added predicate that flags the tasks belonging to specified database.

Consider: to &quot;a&quot; specified database.

&gt; +        (WebCore::DatabaseThread::unscheduleDatabaseTasks): changed to use new removeWithPredicate method.

Consider: use &quot;the&quot; new removeWithPredicate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158766</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-10-28 16:23:19 -0700</bug_when>
    <thetext>Fixed all and landed: http://trac.webkit.org/changeset/50247</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42047</attachid>
            <date>2009-10-28 12:06:06 -0700</date>
            <delta_ts>2009-10-28 13:54:28 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4236</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1MmJjZGVmLi5mZTg2MTAxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMDktMTAtMjYgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwODA1CisgICAgICAgIEFkZCBNZXNzYWdlUXVl
dWU6OnJlbW92ZVdpdGhQcmVkaWNhdGUgdG8gcmVtb3ZlIGNlcnRhaW4gdGFza3Mgd2l0aG91dCBw
dWxsaW5nIHRoZW0gZnJvbSB0aGUgcXVldWUuCisgICAgICAgIEV4aXN0aW5nIERhdGFiYXNlIHRl
c3RzIGNvdmVyIHRoaXMgc2luY2UgRGF0YWJhc2UgcmVtb3ZlcyB0YXNrcyB3aGVuIGl0IGlzIHN0
b3BwZWQuCisKKyAgICAgICAgKiB3dGYvTWVzc2FnZVF1ZXVlLmg6CisgICAgICAgIChXVEY6Ojo6
cmVtb3ZlV2l0aFByZWRpY2F0ZSk6CisKIDIwMDktMTAtMjEgIEpvbiBIb25leWN1dHQgIDxqaG9u
ZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzI3MDMyMD4gU2Ny
ZWVuc2hvdHMgb2Ygb2ZmLXNjcmVlbiBwbHVnLWlucyBhcmUgYmxhbmsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3d0Zi9NZXNzYWdlUXVldWUuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXNz
YWdlUXVldWUuaAppbmRleCAxMjI5MWNjLi5kMjdiYTg0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS93dGYvTWVzc2FnZVF1ZXVlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL01lc3NhZ2VR
dWV1ZS5oCkBAIC01NSw5ICs1NSwxMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgYm9vbCB3
YWl0Rm9yTWVzc2FnZShEYXRhVHlwZSYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVk
aWNhdGU+CiAgICAgICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgd2FpdEZvck1lc3NhZ2VGaWx0
ZXJlZFdpdGhUaW1lb3V0KERhdGFUeXBlJiwgUHJlZGljYXRlJiwgZG91YmxlIGFic29sdXRlVGlt
ZSk7Ci0gICAgICAgIHZvaWQga2lsbCgpOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBy
ZWRpY2F0ZT4KKyAgICAgICAgdm9pZCByZW1vdmVXaXRoUHJlZGljYXRlKFByZWRpY2F0ZSYpOwog
CiAgICAgICAgIGJvb2wgdHJ5R2V0TWVzc2FnZShEYXRhVHlwZSYpOworCisgICAgICAgIHZvaWQg
a2lsbCgpOwogICAgICAgICBib29sIGtpbGxlZCgpIGNvbnN0OwogCiAgICAgICAgIC8vIFRoZSBy
ZXN1bHQgb2YgaXNFbXB0eSgpIGlzIG9ubHkgdmFsaWQgaWYgbm8gb3RoZXIgdGhyZWFkIGlzIG1h
bmlwdWxhdGluZyB0aGUgcXVldWUgYXQgdGhlIHNhbWUgdGltZS4KQEAgLTE0OSw2ICsxNTMsMTcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5
cGU+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPgorICAgIGlubGluZSB2b2lkIE1l
c3NhZ2VRdWV1ZTxEYXRhVHlwZT46OnJlbW92ZVdpdGhQcmVkaWNhdGUoUHJlZGljYXRlJiBwcmVk
aWNhdGUpCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAg
ICBEZXF1ZUNvbnN0SXRlcmF0b3I8RGF0YVR5cGU+IGZvdW5kID0gbV9xdWV1ZS5lbmQoKTsKKyAg
ICAgICAgd2hpbGUgKChmb3VuZCA9IG1fcXVldWUuZmluZElmKHByZWRpY2F0ZSkpICE9IG1fcXVl
dWUuZW5kKCkpIHsKKyAgICAgICAgICAgIG1fcXVldWUucmVtb3ZlKGZvdW5kKTsgQVNTRVJUKDAp
OworICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KICAg
ICBpbmxpbmUgYm9vbCBNZXNzYWdlUXVldWU8RGF0YVR5cGU+Ojppc0VtcHR5KCkKICAgICB7CiAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY0YjBhNDEuLjFhZTgyZTkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMDktMTAtMjYgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwODA1CisgICAgICAgIEFkZCBNZXNz
YWdlUXVldWU6OnJlbW92ZVdpdGhQcmVkaWNhdGUgdG8gcmVtb3ZlIGNlcnRhaW4gdGFza3Mgd2l0
aG91dCBwdWxsaW5nIHRoZW0gZnJvbSB0aGUgcXVldWUuCisgICAgICAgIEV4aXN0aW5nIERhdGFi
YXNlIHRlc3RzIGNvdmVyIHRoaXMsIG5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorICAgICAg
ICAKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNhbWVEYXRhYmFzZVByZWRpY2F0ZTo6U2FtZURhdGFiYXNlUHJlZGljYXRlKTogQWRkZWQg
cHJlZGljYXRlIHRoYXQgZmxhZ3MgdGhlIHRhc2tzIGJlbG9uZ2luZyB0byBzcGVjaWZpZWQgZGF0
YWJhc2UuCisgICAgICAgIChXZWJDb3JlOjpTYW1lRGF0YWJhc2VQcmVkaWNhdGU6Om9wZXJhdG9y
KCkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnVuc2NoZWR1bGVEYXRhYmFz
ZVRhc2tzKTogY2hhbmdlZCB0byB1c2UgbmV3IHJlbW92ZVdpdGhQcmVkaWNhdGUgbWV0aG9kLgor
CiAyMDA5LTEwLTE0ICBHYXVyYXYgU2hhaCAgPGdhdXJhdnNoQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlVGhyZWFkLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAK
aW5kZXggOWUzYWZkZC4uY2Y0MDRkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlVGhyZWFkLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBA
IC0xNTIsMjIgKzE1MiwyMCBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpzY2hlZHVsZUltbWVkaWF0
ZVRhc2soUGFzc1JlZlB0cjxEYXRhYmFzZVRhc2s+IHRhc2spCiAgICAgbV9xdWV1ZS5wcmVwZW5k
KHRhc2spOwogfQogCitjbGFzcyBTYW1lRGF0YWJhc2VQcmVkaWNhdGUgeworcHVibGljOgorICAg
IFNhbWVEYXRhYmFzZVByZWRpY2F0ZShjb25zdCBEYXRhYmFzZSogZGF0YWJhc2UpIDogbV9kYXRh
YmFzZShkYXRhYmFzZSkgeyB9CisgICAgYm9vbCBvcGVyYXRvcigpKFJlZlB0cjxEYXRhYmFzZVRh
c2s+JiB0YXNrKSBjb25zdCB7IHJldHVybiB0YXNrLT5kYXRhYmFzZSgpID09IG1fZGF0YWJhc2U7
IH0KK3ByaXZhdGU6CisgICAgY29uc3QgRGF0YWJhc2UqIG1fZGF0YWJhc2U7Cit9OworCiB2b2lk
IERhdGFiYXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZSogZGF0YWJh
c2UpCiB7CiAgICAgLy8gTm90ZSB0aGF0IHRoZSB0aHJlYWQgbG9vcCBpcyBydW5uaW5nLCBzbyBz
b21lIHRhc2tzIGZvciB0aGUgZGF0YWJhc2UKICAgICAvLyBtYXkgc3RpbGwgYmUgZXhlY3V0ZWQu
IFRoaXMgaXMgdW5hdm9pZGFibGUuCi0KLSAgICBEZXF1ZTxSZWZQdHI8RGF0YWJhc2VUYXNrPiA+
IGZpbHRlcmVkUmV2ZXJzZVF1ZXVlOwotICAgIFJlZlB0cjxEYXRhYmFzZVRhc2s+IHRhc2s7Ci0g
ICAgd2hpbGUgKG1fcXVldWUudHJ5R2V0TWVzc2FnZSh0YXNrKSkgewotICAgICAgICBpZiAodGFz
ay0+ZGF0YWJhc2UoKSAhPSBkYXRhYmFzZSkKLSAgICAgICAgICAgIGZpbHRlcmVkUmV2ZXJzZVF1
ZXVlLmFwcGVuZCh0YXNrKTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoIWZpbHRlcmVkUmV2ZXJzZVF1
ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBtX3F1ZXVlLmFwcGVuZChmaWx0ZXJlZFJldmVyc2VR
dWV1ZS5maXJzdCgpKTsKLSAgICAgICAgZmlsdGVyZWRSZXZlcnNlUXVldWUucmVtb3ZlRmlyc3Qo
KTsKLSAgICB9CisgICAgU2FtZURhdGFiYXNlUHJlZGljYXRlIHByZWRpY2F0ZShkYXRhYmFzZSk7
CisgICAgbV9xdWV1ZS5yZW1vdmVXaXRoUHJlZGljYXRlKHByZWRpY2F0ZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="23540"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="23541"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>