<?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>144585</bug_id>
          
          <creation_ts>2015-05-04 10:20:44 -0700</creation_ts>
          <short_desc>Optimize WeakBlock&apos;s &quot;reap&quot; and &quot;visit&quot; operations.</short_desc>
          <delta_ts>2015-05-05 00:26:27 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>mhahnenb</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091419</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-04 10:20:44 -0700</bug_when>
    <thetext>WeakBlock&apos;s reap() and visit() could be a lot faster if they stopped doing so many paranoid address checks. Have patch, will post.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091421</commentid>
    <comment_count>1</comment_count>
      <attachid>252319</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-04 10:21:38 -0700</bug_when>
    <thetext>Created attachment 252319
Patch idea</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091433</commentid>
    <comment_count>2</comment_count>
      <attachid>252319</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-05-04 10:46:01 -0700</bug_when>
    <thetext>Comment on attachment 252319
Patch idea

View in context: https://bugs.webkit.org/attachment.cgi?id=252319&amp;action=review

r=me

&gt; Source/JavaScriptCore/heap/MarkedBlock.h:415
&gt; +    inline bool MarkedBlock::isLiveForWeakBlockScan(const JSCell* cell)

Let&apos;s call this isMarkedOrNewlyAllocated, and have isLive call it. That way, the MarkedBlock class is not responsible for promising that it&apos;s right to call this during weak block scan. It&apos;s only responsible for providing the answer that it knows.

&gt; Source/JavaScriptCore/heap/WeakBlock.h:74
&gt; +    void didDetachFromMarkedBlock() { m_markedBlock = nullptr; }

I think we usually call this &quot;disconnectMarkedBlock&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091513</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-04 13:43:30 -0700</bug_when>
    <thetext>Committed r183769: &lt;http://trac.webkit.org/changeset/183769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091710</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-05 00:26:27 -0700</bug_when>
    <thetext>mac-mavericks perf bot says this was a 3.2% progression on Dromaeo/dom-modify :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252319</attachid>
            <date>2015-05-04 10:21:38 -0700</date>
            <delta_ts>2015-05-04 10:46:01 -0700</delta_ts>
            <desc>Patch idea</desc>
            <filename>bug-144585.diff</filename>
            <type>text/plain</type>
            <size>10390</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDMyMzcyYWIuLjg0NWVkOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE1LTA1LTA0ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBXZWFrQmxvY2sncyAicmVh
cCIgYW5kICJ2aXNpdCIgb3BlcmF0aW9ucy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE0NDU4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWFrQmxvY2sgd2FzIHVzaW5nIEhlYXA6OmlzTGl2ZSh2b2lkKikgdG8gZGV0ZXJtaW5lIHRo
ZSBsaXZlbmVzcyBvZiB3ZWFrIHBvaW50ZWVzLgorICAgICAgICBUaGF0IGZ1bmN0aW9uIHdhcyBy
ZWFsbHkgd3JpdHRlbiB3aXRoIGNvbnNlcnZhdGl2ZSByb290cyBtYXJraW5nIGluIG1pbmQsIGFu
ZCB3aWxsIGRvIGEgYnVuY2gKKyAgICAgICAgb2Ygc2FuaXR5IGFuZCBib3VuZHMgY2hlY2tzLgor
CisgICAgICAgIEZvciB3ZWFrcywgd2Uga25vdyB0aGF0IHRoZSBwb2ludGVyIHdpbGwgaGF2ZSBi
ZWVuIGEgdmFsaWQgY2VsbCBwb2ludGVyIGludG8gYSBibG9jaworICAgICAgICBvZiBhcHByb3By
aWF0ZSBjZWxsIHNpemUsIHNvIHdlIGNhbiBza2lwIGEgbG90IG9mIHRoZSBjaGVja3MuCisKKyAg
ICAgICAgV2Ugbm93IGtlZXAgYSBwb2ludGVyIHRvIHRoZSBNYXJrZWRCbG9jayBpbiBlYWNoIFdl
YWtCbG9jay4gVGhhdCB3YXkgd2Ugbm8gbG9uZ2VyIGhhdmUgdG8gZG8KKyAgICAgICAgTWFya2Vk
QmxvY2s6OmJsb2NrRm9yKCkgZm9yIGV2ZXJ5IHNpbmdsZSBjZWxsIHdoZW4gaXRlcmF0aW5nLgor
CisgICAgICAgIE5vdGUgdGhhdCBhIFdlYWtCbG9jaydzIE1hcmtlZEJsb2NrIHBvaW50ZXIgYmVj
b21lcyBudWxsIHdoZW4gd2UgZGV0YWNoIGEgbG9naWNhbGx5IGVtcHR5CisgICAgICAgIFdlYWtC
bG9jayBmcm9tIGl0cyBXZWFrU2V0IGFuZCB0cmFuc2ZlciBvd25lcnNoaXAgdG8gSGVhcC4gQXQg
dGhhdCBwb2ludCwgdGhlIGJsb2NrIHdpbGwgbmV2ZXIKKyAgICAgICAgYmUgcG9pbnRpbmcgdG8g
YW55IGxpdmUgY2VsbHMsIGFuZCB0aGUgb25seSBvcGVyYXRpb24gdGhhdCB3aWxsIHJ1biBvbiB0
aGUgYmxvY2sgaXMgc3dlZXAoKS4KKworICAgICAgICBGaW5hbGx5LCBNYXJrZWRCbG9jayBhbGxv
d3MgbGl2ZW5lc3MgcXVlcmllcyBpbiB0aHJlZSBzdGF0ZXM6IE1hcmtlZCwgUmV0aXJlZCwgYW5k
IEFsbG9jYXRlZC4KKyAgICAgICAgSW4gQWxsb2NhdGVkIHN0YXRlLCBhbGwgY2VsbHMgYXJlIHJl
cG9ydGVkIGFzIGxpdmUuIFRoaXMgc3RhdGUgd2lsbCByZXNldCB0byBNYXJrZWQgb24gbmV4dCBH
Qy4KKyAgICAgICAgVGhpcyBwYXRjaCB1c2VzIHRoYXQga25vd2xlZGdlIHRvIGF2b2lkIGJyYW5j
aGluZyBvbiB0aGUgTWFya2VkQmxvY2sncyBzdGF0ZSBmb3IgZXZlcnkgY2VsbC4KKworICAgICAg
ICBUaGlzIGlzIGEgfjN4IHNwZWVkdXAgb2YgdmlzaXQoKSBhbmQgYSB+Mnggc3BlZWR1cCBvZiBy
ZWFwKCkgb24gRHJvbWFlby9kb20tbW9kaWZ5LCBuZXR0aW5nCisgICAgICAgIHdoYXQgbG9va3Mg
bGlrZSBhIDElIHNwZWVkdXAgbG9jYWxseS4KKworICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOiBQYXNzICp0aGlz
IHRvIHRoZSBXZWFrU2V0J3MgY3Rvci4KKworICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTGl2ZUZvcldlYWtCbG9ja1NjYW4pOiBBZGRl
ZCwgc3RyaXBwZWQtZG93biB2ZXJzaW9uIG9mIGlzTGl2ZSgpIHdoZW4gdGhlCisgICAgICAgIGJs
b2NrJ3Mgc3RhdGUgaXMga25vd24gdG8gYmUgZWl0aGVyIE1hcmtlZCBvciBSZXRpcmVkLgorCisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0FsbG9jYXRlZCk6IEFkZGVkLCB0ZWxscyBXZWFr
QmxvY2sgaXQncyBva2F5IHRvIHNraXAgcmVhcC92aXNpdCBzaW5jZSBpc0xpdmUoKQorICAgICAg
ICB3b3VsZCByZXBvcnQgdGhhdCBhbGwgY2VsbHMgYXJlIGxpdmUgYW55d2F5LgorCisgICAgICAg
ICogaGVhcC9XZWFrQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpXZWFrQmxvY2s6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6V2Vha0Jsb2NrKTogU3Rhc2ggYSBNYXJrZWRCbG9j
ayogb24gZWFjaCBXZWFrQmxvY2suCisKKyAgICAgICAgKEpTQzo6V2Vha0Jsb2NrOjp2aXNpdCk6
CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6cmVhcCk6IE9wdGltaXplZCB0aGVzZSB0d28gdG8g
YXZvaWQgYSBidW5jaCBvZiBwb2ludGVyIGFyaXRobWV0aWMgYW5kIGJyYW5jaGVzLgorCisgICAg
ICAgICogaGVhcC9XZWFrQmxvY2suaDoKKyAgICAgICAgKEpTQzo6V2Vha0Jsb2NrOjpkaWREZXRh
Y2hGcm9tTWFya2VkQmxvY2spOiBBZGRlZC4KKyAgICAgICAgKiBoZWFwL1dlYWtTZXQuY3BwOgor
ICAgICAgICAoSlNDOjpXZWFrU2V0Ojpzd2VlcCk6IENhbGwgdGhlIGFib3ZlIHdoZW4gcmVtb3Zp
bmcgYSBXZWFrQmxvY2sgZnJvbSBXZWFrU2V0IGFuZCB0cmFuc2ZlcnJpbmcKKyAgICAgICAgb3du
ZXJzaGlwIHRvIEhlYXAgdW50aWwgaXQgY2FuIGRpZSBwZWFjZWZ1bGx5LgorCisgICAgICAgIChK
U0M6OldlYWtTZXQ6OmFkZEFsbG9jYXRvcik6CisgICAgICAgICogaGVhcC9XZWFrU2V0Lmg6Cisg
ICAgICAgIChKU0M6OldlYWtTZXQ6OldlYWtTZXQpOiBHaXZlIFdlYWtTZXQgYSBNYXJrZWRCbG9j
ayYgZm9yIHBhc3Npbmcgb24gdG8gV2Vha0Jsb2Nrcy4KKwogMjAxNS0wNS0wMSAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBDbGFzcyBzeW50YXggc2hvdWxkIGFs
bG93IHN0cmluZyBhbmQgbnVtZXJpYyBpZGVudGlmaWVycyBmb3IgbWV0aG9kIG5hbWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKaW5kZXggOTIwZDQ2Mi4uMzVh
NjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcApAQCAt
NTIsNyArNTIsNyBAQCBNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbAogICAgICwgbV9uZWVkc0Rlc3Ry
dWN0aW9uKG5lZWRzRGVzdHJ1Y3Rpb24pCiAgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCiAg
ICAgLCBtX3N0YXRlKE5ldykgLy8gQWxsIGNlbGxzIHN0YXJ0IG91dCB1bm1hcmtlZC4KLSAgICAs
IG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+dm0oKSkKKyAgICAsIG1fd2Vha1NldChhbGxv
Y2F0b3ItPmhlYXAoKS0+dm0oKSwgKnRoaXMpCiB7CiAgICAgQVNTRVJUKGFsbG9jYXRvcik7CiAg
ICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IDM1NzdlZWMuLmQyYTUzNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMTY0LDYgKzE2NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCop
OwogICAgICAgICBib29sIGlzTGl2ZShjb25zdCBKU0NlbGwqKTsKICAgICAgICAgYm9vbCBpc0xp
dmVDZWxsKGNvbnN0IHZvaWQqKTsKKyAgICAgICAgYm9vbCBpc0xpdmVGb3JXZWFrQmxvY2tTY2Fu
KGNvbnN0IEpTQ2VsbCopOwogICAgICAgICB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7CiAg
ICAgICAgIHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwogCkBAIC0xNzYsNiArMTc3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0TmV3bHlBbGxvY2F0ZWQoY29uc3Qg
dm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwog
CisgICAgICAgIGJvb2wgaXNBbGxvY2F0ZWQoKSBjb25zdDsKICAgICAgICAgYm9vbCBuZWVkc1N3
ZWVwaW5nKCk7CiAgICAgICAgIHZvaWQgZGlkUmV0aXJlQmxvY2soY29uc3QgRnJlZUxpc3QmKTsK
ICAgICAgICAgdm9pZCB3aWxsUmVtb3ZlQmxvY2soKTsKQEAgLTQxMCw2ICs0MTIsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6aXNMaXZlRm9yV2Vha0Jsb2NrU2Nhbihjb25zdCBKU0NlbGwqIGNl
bGwpCisgICAgeworICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBSZXRpcmVkIHx8IG1fc3RhdGUg
PT0gTWFya2VkKTsKKyAgICAgICAgcmV0dXJuIG1fbWFya3MuZ2V0KGF0b21OdW1iZXIoY2VsbCkp
IHx8IChtX25ld2x5QWxsb2NhdGVkICYmIGlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOworICAgIH0K
KwogICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0xpdmUoY29uc3QgSlNDZWxsKiBjZWxs
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CkBAIC00ODYsNiArNDk0LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7CiAgICAg
fQogCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQWxsb2NhdGVkKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3N0YXRlID09IEFsbG9jYXRlZDsKKyAgICB9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9XZWFrQmxvY2suY3BwCmluZGV4IGJmZWE5M2IuLjdlY2RhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcApAQCAtMzQsOSArMzQsOSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotV2Vha0Jsb2NrKiBXZWFrQmxvY2s6OmNyZWF0ZSgpCitXZWFrQmxvY2sqIFdlYWtC
bG9jazo6Y3JlYXRlKE1hcmtlZEJsb2NrJiBtYXJrZWRCbG9jaykKIHsKLSAgICByZXR1cm4gbmV3
IChOb3ROdWxsLCBmYXN0TWFsbG9jKGJsb2NrU2l6ZSkpIFdlYWtCbG9jaygpOworICAgIHJldHVy
biBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoYmxvY2tTaXplKSkgV2Vha0Jsb2NrKG1hcmtlZEJs
b2NrKTsKIH0KIAogdm9pZCBXZWFrQmxvY2s6OmRlc3Ryb3koV2Vha0Jsb2NrKiBibG9jaykKQEAg
LTQ1LDggKzQ1LDkgQEAgdm9pZCBXZWFrQmxvY2s6OmRlc3Ryb3koV2Vha0Jsb2NrKiBibG9jaykK
ICAgICBmYXN0RnJlZShibG9jayk7CiB9CiAKLVdlYWtCbG9jazo6V2Vha0Jsb2NrKCkKK1dlYWtC
bG9jazo6V2Vha0Jsb2NrKE1hcmtlZEJsb2NrJiBtYXJrZWRCbG9jaykKICAgICA6IERvdWJseUxp
bmtlZExpc3ROb2RlPFdlYWtCbG9jaz4oKQorICAgICwgbV9tYXJrZWRCbG9jaygmbWFya2VkQmxv
Y2spCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWFrSW1wbENvdW50KCk7ICsraSkg
ewogICAgICAgICBXZWFrSW1wbCogd2Vha0ltcGwgPSAmd2Vha0ltcGxzKClbaV07CkBAIC05OCw2
ICs5OSwxMiBAQCB2b2lkIFdlYWtCbG9jazo6dmlzaXQoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9v
dFZpc2l0b3IpCiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8g
SWYgdGhpcyBXZWFrQmxvY2sgZG9lc24ndCBiZWxvbmcgdG8gYSBNYXJrZWRCbG9jaywgd2Ugd29u
J3QgZXZlbiBiZSBoZXJlLgorICAgIEFTU0VSVChtX21hcmtlZEJsb2NrKTsKKworICAgIGlmICht
X21hcmtlZEJsb2NrLT5pc0FsbG9jYXRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBTbG90
VmlzaXRvciYgdmlzaXRvciA9IGhlYXBSb290VmlzaXRvci52aXNpdG9yKCk7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdlYWtJbXBsQ291bnQoKTsgKytpKSB7CkBAIC0xMDYsNyArMTEz
LDcgQEAgdm9pZCBXZWFrQmxvY2s6OnZpc2l0KEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNp
dG9yKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgY29uc3QgSlNWYWx1ZSYganNW
YWx1ZSA9IHdlYWtJbXBsLT5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChIZWFwOjppc0xpdmUoanNW
YWx1ZS5hc0NlbGwoKSkpCisgICAgICAgIGlmIChtX21hcmtlZEJsb2NrLT5pc0xpdmVGb3JXZWFr
QmxvY2tTY2FuKGpzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgV2Vha0hhbmRsZU93bmVyKiB3ZWFrSGFuZGxlT3duZXIgPSB3ZWFrSW1wbC0+d2Vha0hh
bmRsZU93bmVyKCk7CkBAIC0xMjYsMTIgKzEzMywxOCBAQCB2b2lkIFdlYWtCbG9jazo6cmVhcCgp
CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gSWYgdGhpcyBX
ZWFrQmxvY2sgZG9lc24ndCBiZWxvbmcgdG8gYSBNYXJrZWRCbG9jaywgd2Ugd29uJ3QgZXZlbiBi
ZSBoZXJlLgorICAgIEFTU0VSVChtX21hcmtlZEJsb2NrKTsKKworICAgIGlmIChtX21hcmtlZEJs
b2NrLT5pc0FsbG9jYXRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHdlYWtJbXBsQ291bnQoKTsgKytpKSB7CiAgICAgICAgIFdlYWtJbXBsKiB3ZWFr
SW1wbCA9ICZ3ZWFrSW1wbHMoKVtpXTsKICAgICAgICAgaWYgKHdlYWtJbXBsLT5zdGF0ZSgpID4g
V2Vha0ltcGw6OkRlYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoSGVh
cDo6aXNMaXZlKHdlYWtJbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpKSB7CisgICAgICAgIGlmICht
X21hcmtlZEJsb2NrLT5pc0xpdmVGb3JXZWFrQmxvY2tTY2FuKHdlYWtJbXBsLT5qc1ZhbHVlKCku
YXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQod2Vha0ltcGwtPnN0YXRlKCkgPT0gV2Vh
a0ltcGw6OkxpdmUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmgKaW5kZXggMzA2Y2ZlMi4uZGZjMjIwYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKIGNsYXNzIEpTVmFsdWU7CitjbGFz
cyBNYXJrZWRCbG9jazsKIGNsYXNzIFdlYWtIYW5kbGVPd25lcjsKIAogY2xhc3MgV2Vha0Jsb2Nr
IDogcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFdlYWtCbG9jaz4gewpAQCAtNTUsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEZyZWVDZWxsKiBmcmVlTGlzdCB7IG51bGxwdHIgfTsKICAg
ICB9OwogCi0gICAgc3RhdGljIFdlYWtCbG9jayogY3JlYXRlKCk7CisgICAgc3RhdGljIFdlYWtC
bG9jayogY3JlYXRlKE1hcmtlZEJsb2NrJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShXZWFr
QmxvY2sqKTsKIAogICAgIHN0YXRpYyBXZWFrSW1wbCogYXNXZWFrSW1wbChGcmVlQ2VsbCopOwpA
QCAtNzAsMTcgKzcxLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYXAoKTsKIAogICAgIHZvaWQg
bGFzdENoYW5jZVRvRmluYWxpemUoKTsKKyAgICB2b2lkIGRpZERldGFjaEZyb21NYXJrZWRCbG9j
aygpIHsgbV9tYXJrZWRCbG9jayA9IG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
RnJlZUNlbGwqIGFzRnJlZUNlbGwoV2Vha0ltcGwqKTsKIAotICAgIFdlYWtCbG9jaygpOworICAg
IGV4cGxpY2l0IFdlYWtCbG9jayhNYXJrZWRCbG9jayYpOwogICAgIFdlYWtJbXBsKiBmaXJzdFdl
YWtJbXBsKCk7CiAgICAgdm9pZCBmaW5hbGl6ZShXZWFrSW1wbCopOwogICAgIFdlYWtJbXBsKiB3
ZWFrSW1wbHMoKTsKICAgICBzaXplX3Qgd2Vha0ltcGxDb3VudCgpOwogICAgIHZvaWQgYWRkVG9G
cmVlTGlzdChGcmVlQ2VsbCoqLCBXZWFrSW1wbCopOwogCisgICAgTWFya2VkQmxvY2sqIG1fbWFy
a2VkQmxvY2s7CiAgICAgV2Vha0Jsb2NrKiBtX3ByZXY7CiAgICAgV2Vha0Jsb2NrKiBtX25leHQ7
CiAgICAgU3dlZXBSZXN1bHQgbV9zd2VlcFJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha1NldC5jcHAKaW5kZXggNzA2OWRhZC4uYzdjZmNhNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV2Vha1NldC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgdm9pZCBXZWFrU2V0Ojpzd2VlcCgp
CiAgICAgICAgICAgICAvLyB0byB0aGUgSGVhcCBzbyB3ZSBkb24ndCBwaW4gZG93biB0aGUgZW50
aXJlIDY0a0IgTWFya2VkQmxvY2suCiAgICAgICAgICAgICBtX2Jsb2Nrcy5yZW1vdmUoYmxvY2sp
OwogICAgICAgICAgICAgaGVhcCgpLT5hZGRMb2dpY2FsbHlFbXB0eVdlYWtCbG9jayhibG9jayk7
CisgICAgICAgICAgICBibG9jay0+ZGlkRGV0YWNoRnJvbU1hcmtlZEJsb2NrKCk7CiAgICAgICAg
IH0KICAgICAgICAgYmxvY2sgPSBuZXh0QmxvY2s7CiAgICAgfQpAQCAtODQsNyArODUsNyBAQCBX
ZWFrQmxvY2s6OkZyZWVDZWxsKiBXZWFrU2V0Ojp0cnlGaW5kQWxsb2NhdG9yKCkKIAogV2Vha0Js
b2NrOjpGcmVlQ2VsbCogV2Vha1NldDo6YWRkQWxsb2NhdG9yKCkKIHsKLSAgICBXZWFrQmxvY2sq
IGJsb2NrID0gV2Vha0Jsb2NrOjpjcmVhdGUoKTsKKyAgICBXZWFrQmxvY2sqIGJsb2NrID0gV2Vh
a0Jsb2NrOjpjcmVhdGUobV9tYXJrZWRCbG9jayk7CiAgICAgaGVhcCgpLT5kaWRBbGxvY2F0ZShX
ZWFrQmxvY2s6OmJsb2NrU2l6ZSk7CiAgICAgbV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsKICAgICBX
ZWFrQmxvY2s6OlN3ZWVwUmVzdWx0IHN3ZWVwUmVzdWx0ID0gYmxvY2stPnRha2VTd2VlcFJlc3Vs
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5oCmluZGV4IGE1ZGRjYWYuLmRiZGU1
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0LmgKQEAgLTMxLDYgKzMxLDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTWFya2VkQmxvY2s7CiBjbGFz
cyBXZWFrSW1wbDsKIAogY2xhc3MgV2Vha1NldCB7CkBAIC00MCw3ICs0MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2Vha0ltcGwqIGFsbG9jYXRlKEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciog
PSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CiAgICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZShXZWFr
SW1wbCopOwogCi0gICAgV2Vha1NldChWTSopOworICAgIFdlYWtTZXQoVk0qLCBNYXJrZWRCbG9j
ayYpOwogICAgIH5XZWFrU2V0KCk7CiAgICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwog
CkBAIC02NSwxMiArNjYsMTQgQEAgcHJpdmF0ZToKICAgICBXZWFrQmxvY2sqIG1fbmV4dEFsbG9j
YXRvcjsKICAgICBEb3VibHlMaW5rZWRMaXN0PFdlYWtCbG9jaz4gbV9ibG9ja3M7CiAgICAgVk0q
IG1fdm07CisgICAgTWFya2VkQmxvY2smIG1fbWFya2VkQmxvY2s7CiB9OwogCi1pbmxpbmUgV2Vh
a1NldDo6V2Vha1NldChWTSogdm0pCitpbmxpbmUgV2Vha1NldDo6V2Vha1NldChWTSogdm0sIE1h
cmtlZEJsb2NrJiBtYXJrZWRCbG9jaykKICAgICA6IG1fYWxsb2NhdG9yKDApCiAgICAgLCBtX25l
eHRBbGxvY2F0b3IoMCkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX21hcmtlZEJsb2NrKG1hcmtl
ZEJsb2NrKQogewogfQogCg==
</data>
<flag name="review"
          id="277160"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>