<?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>131923</bug_id>
          
          <creation_ts>2014-04-20 20:28:39 -0700</creation_ts>
          <short_desc>Speed up jsStringWithCache() through WeakGCMap inlining.</short_desc>
          <delta_ts>2014-04-20 21:19:38 -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>Bindings</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></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>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1002445</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-20 20:28:39 -0700</bug_when>
    <thetext>Speed up jsStringWithCache() through WeakGCMap inlining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002446</commentid>
    <comment_count>1</comment_count>
      <attachid>229780</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-20 20:33:16 -0700</bug_when>
    <thetext>Created attachment 229780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002448</commentid>
    <comment_count>2</comment_count>
      <attachid>229780</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-20 20:40:04 -0700</bug_when>
    <thetext>Comment on attachment 229780
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:66
&gt; +JSC::JSValue jsStringWithCache(JSC::ExecState* exec, const String&amp; s)

rename s to string?

&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:81
&gt; +    JSStringCache&amp; stringCache = currentWorld(exec).m_stringCache;
&gt; +    JSStringCache::AddResult addResult = stringCache.add(stringImpl, nullptr);

I suggest using auto. I also suggest getting rid of the stringCache local variable.

&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:83
&gt; +        addResult.iterator-&gt;value = JSC::jsString(exec, String(stringImpl));

Seems a shame to do String(stringImpl) here instead of just using &quot;s&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002453</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-20 20:54:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 229780 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=229780&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:66
&gt; &gt; +JSC::JSValue jsStringWithCache(JSC::ExecState* exec, const String&amp; s)
&gt; 
&gt; rename s to string?
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:81
&gt; &gt; +    JSStringCache&amp; stringCache = currentWorld(exec).m_stringCache;
&gt; &gt; +    JSStringCache::AddResult addResult = stringCache.add(stringImpl, nullptr);
&gt; 
&gt; I suggest using auto. I also suggest getting rid of the stringCache local variable.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:83
&gt; &gt; +        addResult.iterator-&gt;value = JSC::jsString(exec, String(stringImpl));
&gt; 
&gt; Seems a shame to do String(stringImpl) here instead of just using &quot;s&quot;

I&apos;ll get rid of the ref count churn here shortly. Will pretty up the names then too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002456</commentid>
    <comment_count>4</comment_count>
      <attachid>229780</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-20 21:19:35 -0700</bug_when>
    <thetext>Comment on attachment 229780
Patch

Clearing flags on attachment: 229780

Committed r167577: &lt;http://trac.webkit.org/changeset/167577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002457</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-20 21:19:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229780</attachid>
            <date>2014-04-20 20:33:16 -0700</date>
            <delta_ts>2014-04-20 21:19:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131923.diff</filename>
            <type>text/plain</type>
            <size>9667</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGIyNmNiODcuLmVkODhjYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA0LTIwICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBTcGVlZCB1cCBqc1N0cmluZ1dpdGhDYWNo
ZSgpIHRocm91Z2ggV2Vha0dDTWFwIGlubGluaW5nLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTMxOTIzPgorCisgICAgICAgIEFsd2F5cyBpbmxpbmUgV2Vha0dDTWFwOjphZGQoKSBi
dXQgbW92ZSB0aGUgc2xvdyBnYXJiYWdlIGNvbGxlY3RpbmcKKyAgICAgICAgcGF0aCBvdXQtb2Yt
bGluZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHJ1bnRpbWUvV2Vha0dDTWFwLmg6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6YWRkKToKKyAg
ICAgICAgKEpTQzo6V2Vha0dDTWFwOjpnY01hcCk6CisKIDIwMTQtMDQtMjAgIEzDoXN6bMOzIExh
bmfDsyAgPGxsYW5nby51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIEph
dmFTY3JpcHRDb3JlOiBBUk0gYnVpbGQgZml4IGFmdGVyIHIxNjcwOTQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCmluZGV4IGQ5YzFmYjYuLjg0MzI0OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCkBAIC02MiwxMCArNjIsMTAg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tYXAuc2V0KGtleSwgc3RkOjptb3ZlKHZhbHVl
KSk7CiAgICAgfQogCi0gICAgQWRkUmVzdWx0IGFkZChjb25zdCBLZXlUeXBlJiBrZXksIFZhbHVl
VHlwZSB2YWx1ZSkKKyAgICBBTFdBWVNfSU5MSU5FIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlw
ZSYga2V5LCBWYWx1ZVR5cGUgdmFsdWUpCiAgICAgewogICAgICAgICBnY01hcElmTmVlZGVkKCk7
Ci0gICAgICAgIEFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBudWxscHRyKTsK
KyAgICAgICAgQWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFwLmZhc3RBZGQoa2V5LCBudWxscHRy
KTsKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSB7IC8vIE5ldyB2YWx1
ZSBvciBmb3VuZCBhIHpvbWJpZSB2YWx1ZS4KICAgICAgICAgICAgIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5ID0gdHJ1ZTsKICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1vdmUodmFsdWUpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IGludCBtaW5HQ1RocmVzaG9sZCA9IDM7CiAKLSAgICB2b2lkIGdjTWFwKCkK
KyAgICBORVZFUl9JTkxJTkUgdm9pZCBnY01hcCgpCiAgICAgewogICAgICAgICBWZWN0b3I8S2V5
VHlwZSwgND4gem9tYmllczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkYWQxYzhkLi5mMGM3ZWMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE0LTA0LTIwICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTcGVlZCB1cCBqc1N0cmluZ1dpdGhDYWNoZSgpIHRocm91Z2ggV2Vha0dDTWFwIGlu
bGluaW5nLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMxOTIzPgorCisgICAgICAg
IEFkZCBIYXNoTWFwOjpmYXN0QWRkKCksIHdoaWNoIGlzIHRoZSBzYW1lIGFzIGFkZCgpIGV4Y2Vw
dCB3ZSdsbCB0ZWxsCisgICAgICAgIHRoZSBjb21waWxlciB0byBhZ2dyZXNzaXZlbHkgaW5saW5l
IGl0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL0hhc2hNYXAuaDoKKyAgICAgICAgKiB3dGYvSGFzaFRhYmxlLmg6CisKIDIwMTQtMDQtMTkg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGl0IGVhc2ll
ciB0byBjaGVjayBpZiBhbiBpbnRlZ2VyIHN1bSB3b3VsZCBvdmVyZmxvdwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvSGFzaE1hcC5oIGIvU291cmNlL1dURi93dGYvSGFzaE1hcC5oCmluZGV4
IGJlMzAwMTQuLmIxNzAzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKQEAgLTExNCw2ICsxMTQsMTAgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYs
IFYmJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFkZChLZXlUeXBlJiYs
IFYmJik7CiAKKyAgICAvLyBTYW1lIGFzIGFkZCgpLCBidXQgYWdncmVzc2l2ZWx5IGlubGluZWQu
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGZhc3RBZGQoY29uc3QgS2V5VHlw
ZSYsIFYmJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGZhc3RBZGQoS2V5
VHlwZSYmLCBWJiYpOworCiAgICAgYm9vbCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOwogICAgIGJv
b2wgcmVtb3ZlKGl0ZXJhdG9yKTsKICAgICB2b2lkIGNsZWFyKCk7CkBAIC0yNzYsNyArMjgwLDcg
QEAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcs
IE1hcHBlZFRyYWl0c0FyZz46OmlubGluZVMKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0
eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0Fy
ZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5h
bWUgVj4KLWF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRz
QXJnLCBNYXBwZWRUcmFpdHNBcmc+OjppbmxpbmVBZGQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBB
ZGRSZXN1bHQKK0FMV0FZU19JTkxJTkUgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBI
YXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmlubGluZUFkZChLJiYga2V5
LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUg
YWRkPEhhc2hNYXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaEZ1bmN0aW9ucz4+
KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpKTsKIH0KQEAgLTMx
Niw2ICszMjAsMjAgQEAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBL
ZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXkKICAgICByZXR1cm4gaW5saW5l
QWRkKHN0ZDo6bW92ZShrZXkpLCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitBTFdBWVNfSU5MSU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBl
ZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpmYXN0QWRkKGNv
bnN0IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0Cit7CisgICAgcmV0dXJu
IGlubGluZUFkZChrZXksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5
cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK0FMV0FZU19JTkxJTkUgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJn
LCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmZhc3RBZGQoS2V5VHlw
ZSYmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0Cit7CisgICAgcmV0dXJuIGlubGluZUFk
ZChzdGQ6Om1vdmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOworfQorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBNYXBwZWRUcmFpdHM+CiBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6
Z2V0KGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QgLT4gTWFwcGVkUGVla1R5cGUKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYvSGFzaFRh
YmxlLmgKaW5kZXggNWExN2UwZS4uMzY2NmZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTc4Myw3ICs3
ODMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPgotICAgIGlubGlu
ZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjo6YWRkKFQmJiBrZXksIEV4dHJhJiYgZXh0cmEpIC0+IEFkZFJlc3Vs
dAorICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChUJiYga2V5LCBFeHRyYSYm
IGV4dHJhKSAtPiBBZGRSZXN1bHQKICAgICB7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xh
dG9yPihrZXkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ4ODY1ZS4uMjIwYWY5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDE0LTA0LTIwICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxl
LmNvbT4KKworICAgICAgICBTcGVlZCB1cCBqc1N0cmluZ1dpdGhDYWNoZSgpIHRocm91Z2ggV2Vh
a0dDTWFwIGlubGluaW5nLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMxOTIzPgor
CisgICAgICAgIElubGluZSB0aGUgY29tbW9uIHBhdGggb2YgV2Vha0dDTWFwOjphZGQoKSBpbiBq
c1N0cmluZ1dpdGhDYWNoZSgpLgorICAgICAgICAyNiUgcHJvZ3Jlc3Npb24gb24gQmluZGluZ3Mv
aWQtZ2V0dGVyLmh0bWwKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc1N0cmluZ1dpdGhDYWNoZSk6CisKKyAgICAgICAgICAgIE1vdmUganNTdHJp
bmdXaXRoQ2FjaGUoKSBvdXQgb2YgbGluZSBzaW5jZSB3ZSdyZSBub3cgYmxvd2luZyB1cAorICAg
ICAgICAgICAgaXRzIHNpemUgcXVpdGUgYSBiaXQuCisKIDIwMTQtMDQtMjAgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgYm91bmRpbmcgYm94IGNvbXB1
dGF0aW9uIGZvciBzaW1wbGUgbGluZSBsYXlvdXQgaXMgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggMzQxN2VlNi4uOGY4YWQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTc0Niw2ICs3
NDYsNyBAQCBfX1pON1dlYkNvcmUxN1N1YnJlc291cmNlTG9hZGVyNmNyZWF0ZUVQTlNfNUZyYW1l
RVBOU18xNENhY2hlZFJlc291cmNlRVJLTlNfMTVSZQogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0
cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlD
bGFzc0luZm9FCiBfX1pON1dlYkNvcmUxN2RyYXdMYXllckNvbnRlbnRzRVA5Q0dDb250ZXh0UE5T
XzE1UGxhdGZvcm1DQUxheWVyRVJOM1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTVFTlM0XzE1
Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxN2VuY29kZUZvckZpbGVOYW1lRVJLTjNX
VEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTdqc1N0cmluZ1dpdGhDYWNoZUVQTjNKU0M5RXhlY1N0
YXRlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CiBf
X1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dl
YkNvcmUxN3NSR0JDb2xvclNwYWNlUmVmRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCmluZGV4IDAzOTU1ZWYuLjBkOTMwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNjMsNiArNjMsMjcgQEAgY29uc3Qg
SlNDOjpIYXNoVGFibGUmIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoVk0mIHZtLCBjb25zdCBK
U0M6Okhhc2hUYWJsZSYgc3QKICAgICByZXR1cm4gRE9NT2JqZWN0SGFzaFRhYmxlTWFwOjptYXBG
b3Iodm0pLmdldChzdGF0aWNUYWJsZSk7CiB9CiAKK0pTQzo6SlNWYWx1ZSBqc1N0cmluZ1dpdGhD
YWNoZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKQoreworICAgIFN0cmlu
Z0ltcGwqIHN0cmluZ0ltcGwgPSBzLmltcGwoKTsKKyAgICBpZiAoIXN0cmluZ0ltcGwgfHwgIXN0
cmluZ0ltcGwtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsK
KworICAgIGlmIChzdHJpbmdJbXBsLT5sZW5ndGgoKSA9PSAxKSB7CisgICAgICAgIFVDaGFyIHNp
bmdsZUNoYXJhY3RlciA9ICgqc3RyaW5nSW1wbClbMHVdOworICAgICAgICBpZiAoc2luZ2xlQ2hh
cmFjdGVyIDw9IEpTQzo6bWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKSB7CisgICAgICAgICAgICBK
U0M6OlZNKiB2bSA9ICZleGVjLT52bSgpOworICAgICAgICAgICAgcmV0dXJuIHZtLT5zbWFsbFN0
cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNp
bmdsZUNoYXJhY3RlcikpOworICAgICAgICB9CisgICAgfQorCisgICAgSlNTdHJpbmdDYWNoZSYg
c3RyaW5nQ2FjaGUgPSBjdXJyZW50V29ybGQoZXhlYykubV9zdHJpbmdDYWNoZTsKKyAgICBKU1N0
cmluZ0NhY2hlOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gc3RyaW5nQ2FjaGUuYWRkKHN0cmluZ0lt
cGwsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IEpTQzo6anNTdHJpbmcoZXhlYywgU3RyaW5nKHN0cmlu
Z0ltcGwpKTsKKyAgICByZXR1cm4gSlNDOjpKU1ZhbHVlKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuZ2V0KCkpOworfQorCiBKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBzKQogewogICAgIGlmIChzLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA0ODM1MDQ5Li4zN2NjNGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtNTU5LDI3ICs1NTksNiBA
QCBib29sIHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coSlNDOjpFeGVjU3RhdGUqLCBET01X
aW5kb3cmLCBTdHJpbmcmIG1lc3NhZ2UpOwogdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1l
KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgb2Jq
ZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKLWlubGluZSBKU0M6
OkpTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0
cmluZyYgcykKLXsKLSAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gcy5pbXBsKCk7Ci0gICAg
aWYgKCFzdHJpbmdJbXBsIHx8ICFzdHJpbmdJbXBsLT5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJu
IGpzRW1wdHlTdHJpbmcoZXhlYyk7Ci0KLSAgICBpZiAoc3RyaW5nSW1wbC0+bGVuZ3RoKCkgPT0g
MSkgewotICAgICAgICBVQ2hhciBzaW5nbGVDaGFyYWN0ZXIgPSAoKnN0cmluZ0ltcGwpWzB1XTsK
LSAgICAgICAgaWYgKHNpbmdsZUNoYXJhY3RlciA8PSBKU0M6Om1heFNpbmdsZUNoYXJhY3RlclN0
cmluZykgewotICAgICAgICAgICAgSlNDOjpWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICAgICAg
ICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihzaW5nbGVDaGFyYWN0ZXIpKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIEpTU3RyaW5nQ2FjaGUmIHN0cmluZ0NhY2hlID0gY3VycmVudFdvcmxkKGV4ZWMpLm1f
c3RyaW5nQ2FjaGU7Ci0gICAgSlNTdHJpbmdDYWNoZTo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IHN0
cmluZ0NhY2hlLmFkZChzdHJpbmdJbXBsLCBudWxscHRyKTsKLSAgICBpZiAoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBKU0M6OmpzU3Ry
aW5nKGV4ZWMsIFN0cmluZyhzdHJpbmdJbXBsKSk7Ci0gICAgcmV0dXJuIEpTQzo6SlNWYWx1ZShh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKLX0KLQogaW5saW5lIFN0cmluZyBwcm9w
ZXJ0eU5hbWVUb1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
cmV0dXJuIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>