<?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>146006</bug_id>
          
          <creation_ts>2015-06-15 22:18:46 -0700</creation_ts>
          <short_desc>[JSC] Pre-bake final Structure for RegExp matches arrays.</short_desc>
          <delta_ts>2015-06-16 11:38:51 -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>312.x</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>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1102164</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-06-15 22:18:46 -0700</bug_when>
    <thetext>RegExp matches arrays always have the &quot;input&quot; and &quot;index&quot; fields. We can save time by pre-baking a Structure with these fields already added instead of starting from scratch every time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102213</commentid>
    <comment_count>1</comment_count>
      <attachid>254947</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-06-16 03:07:49 -0700</bug_when>
    <thetext>Created attachment 254947
Patch

regexp         x2      34.85803+-0.22637    ^    31.52553+-0.38239       ^ definitely 1.1057x faster

:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102268</commentid>
    <comment_count>2</comment_count>
      <attachid>254947</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-16 10:48:55 -0700</bug_when>
    <thetext>Comment on attachment 254947
Patch

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

So many pointers that seem like they should be references! JavaScriptCore sometimes seems like it’s on a different continent from the rest of WebKit.

&gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.cpp:91
&gt; +    RELEASE_ASSERT(offset == indexPropertyOffset);

Why RELEASE_ASSERT instead of ASSERT exactly? I guess because this code is run only once and it would be really bad if this was untrue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102287</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-06-16 11:12:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 254947 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=254947&amp;action=review
&gt; 
&gt; So many pointers that seem like they should be references! JavaScriptCore
&gt; sometimes seems like it’s on a different continent from the rest of WebKit.

Truth.

&gt; &gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.cpp:91
&gt; &gt; +    RELEASE_ASSERT(offset == indexPropertyOffset);
&gt; 
&gt; Why RELEASE_ASSERT instead of ASSERT exactly? I guess because this code is
&gt; run only once and it would be really bad if this was untrue?

That was my thinking. It seemed more important when I was really sleepy, a regular assertion will do fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102295</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-06-16 11:38:51 -0700</bug_when>
    <thetext>Committed r185597: &lt;http://trac.webkit.org/changeset/185597&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254947</attachid>
            <date>2015-06-16 03:07:49 -0700</date>
            <delta_ts>2015-06-16 10:48:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146006.diff</filename>
            <type>text/plain</type>
            <size>10222</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE0NDZmZDUuLmQ3ZTVkNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTA2LTE2ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBQcmUtYmFrZSBmaW5hbCBTdHJ1
Y3R1cmUgZm9yIFJlZ0V4cCBtYXRjaGVzIGFycmF5cy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0NjAwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaW5jZSB3ZSBhbHdheXMgYWRkIHRoZSAiaW5kZXgiIGFuZCAiaW5wdXQiIGZpZWxk
cyB0byBSZWdFeHAgbWF0Y2hlcyBhcnJheXMsCisgICAgICAgIGNhY2hlIGEgZmluaXNoZWQgc3Ry
dWN0dXJlIG9uIHRoZSBnbG9iYWwgb2JqZWN0IHNvIHdlIGNhbiBjcmVhdGUgdGhlc2UgYXJyYXlz
IHdpdGhvdXQKKyAgICAgICAgc3RhcnRpbmcgZnJvbSBzY3JhdGNoIHdpdGggYSBiYXJlIGFycmF5
IGV2ZXJ5IHRpbWUuCisKKyAgICAgICAgMTAlIHByb2dyZXNzaW9uIG9uIE9jdGFuZS9yZWdleHAg
KG9uIG15IE1CUC4pCisKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkp
OiBGYWN0b3JlZCBvdXQgSlNBcnJheSBjb25zdHJ1Y3Rpb24gaW50byBhIGhlbHBlcgorICAgICAg
ICBzbyB3ZSBjYW4gY2FsbCB0aGlzIGZyb20gUmVnRXhwTWF0Y2hlc0FycmF5LmNwcC4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOiBBZGQgYSBjYWNo
ZWQgU3RydWN0dXJlIGZvciBSZWdFeHAKKyAgICAgICAgc3VicGF0dGVybiBtYXRjaGVzIGFycmF5
cy4KKworICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNOb25G
aW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOiBUd2VhayBhc3NlcnRpb24gdGhhdCB1c2VkIHRv
IGNoZWNrIHRoYXQKKyAgICAgICAgSlNOb25GaW5hbE9iamVjdHMgYWx3YXlzIHN0YXJ0IG91dCB3
aXRoIHplcm8gY2FwYWNpdHkuIFNpbmNlIFJlZ0V4cCBtYXRjaGVzIGFycmF5cyBub3cKKyAgICAg
ICAgc3RhcnQgb3V0IHdpdGggY2FwYWNpdHkgZm9yIDIgcHJvcGVydGllcywgdGhhdCB3b24ndCB3
b3JrLiBDaGFuZ2UgaXQgdG8gY2hlY2sgdGhhdCB3ZQorICAgICAgICBkb24ndCBoYXZlIGlubGlu
ZSBzdG9yYWdlIGluc3RlYWQsIHNpbmNlIHRoYXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBmaW5h
bCBvYmplY3RzLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzQXJyYXkpOiBIZWxwZXIgdG8gY29uc3Ry
dWN0IGEgSlNBcnJheSB3aXRoCisgICAgICAgIHRoZSBjYWNoZWQgU3RydWN0dXJlIGFuZCBhIEJ1
dHRlcmZseSB3aXRoIDIgc2xvdHMgb2YgcHJvcGVydHkgc3RvcmFnZS4KKworICAgICAgICAoSlND
OjpjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOiBDcmVhdGVzIHRoZSBhcnJheSBTdHJ1Y3R1cmUgdGhhdCBn
ZXRzIGNhY2hlZAorICAgICAgICBieSB0aGUgSlNHbG9iYWxPYmplY3QuCisKIDIwMTUtMDYtMTQg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0g
SW50cm9kdWNlICVJdGVyYXRvclByb3RvdHlwZSUgYW5kIGRyb3AgYWxsIFhYWEl0ZXJhdG9yQ29u
c3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCBiNzZm
YzliLi5hZjA2MTUwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApA
QCAtNTMsNiArNTMsNyBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNBcnJh
eSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCA9IDApOwor
ICAgIHN0YXRpYyBKU0FycmF5KiBjcmVhdGVXaXRoQnV0dGVyZmx5KFZNJiwgU3RydWN0dXJlKiwg
QnV0dGVyZmx5Kik7CiAKICAgICAvLyB0cnlDcmVhdGVVbmluaXRpYWxpemVkIGlzIHVzZWQgZm9y
IGZhc3QgY29uc3RydWN0aW9uIG9mIGFycmF5cyB3aG9zZSBzaXplIGFuZAogICAgIC8vIGNvbnRl
bnRzIGFyZSBrbm93biBhdCB0aW1lIG9mIGNyZWF0aW9uLiBDbGllbnRzIG9mIHRoaXMgaW50ZXJm
YWNlIG11c3Q6CkBAIC0yMTMsOSArMjE0LDggQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFsTGUKICAg
ICAgICAgICAgIHx8IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQXJyYXlT
dG9yYWdlKTsKICAgICAgICAgYnV0dGVyZmx5ID0gY3JlYXRlQXJyYXlCdXR0ZXJmbHkodm0sIDAs
IGluaXRpYWxMZW5ndGgpOwogICAgIH0KLSAgICBKU0FycmF5KiBhcnJheSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTQXJyYXk+KHZtLmhlYXApKSBKU0FycmF5KHZtLCBzdHJ1Y3R1cmUs
IGJ1dHRlcmZseSk7Ci0gICAgYXJyYXktPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZXR1cm4g
YXJyYXk7CisKKyAgICByZXR1cm4gY3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlLCBi
dXR0ZXJmbHkpOwogfQogCiBpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFsTGVu
Z3RoKQpAQCAtMjUzLDcgKzI1MywxMiBAQCBpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bgogICAgICAg
ICBzdG9yYWdlLT5tX3NwYXJzZU1hcC5jbGVhcigpOwogICAgICAgICBzdG9yYWdlLT5tX251bVZh
bHVlc0luVmVjdG9yID0gaW5pdGlhbExlbmd0aDsKICAgICB9Ci0gICAgICAgIAorCisgICAgcmV0
dXJuIGNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKK30KKwor
aW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCit7CiAgICAgSlNBcnJheSog
YXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5Pih2bS5oZWFwKSkgSlNB
cnJheSh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwogICAgIGFycmF5LT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgcmV0dXJuIGFycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGMxNGQwM2EuLjAxNjVkYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMx
Niw2ICszMTYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAg
ICBtX3JlZ0V4cFByb3RvdHlwZS5zZXQodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRl
KHZtLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpLCBlbXB0eVJlZ2V4KSk7CiAgICAgbV9yZWdFeHBTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBSZWdFeHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWdF
eHBQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgKnRoaXMp
KTsKICAgICAKICNpZiBFTkFCTEUoUFJPTUlTRVMpCiAgICAgbV9wcm9taXNlUHJvdG90eXBlLnNl
dCh2bSwgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgSlNQcm9t
aXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSkpOwpAQCAtNzc4LDYgKzc3OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBk
N2NiZThkLi45YjBlN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTI0OCw2ICsyNDgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZTsKIAorICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwor
CiAjaWYgRU5BQkxFKFBST01JU0VTKQogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJv
bWlzZVN0cnVjdHVyZTsKICNlbmRpZiAvLyBFTkFCTEUoUFJPTUlTRVMpCkBAIC00ODgsNiArNDkw
LDcgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogc3ltYm9sT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclJl
c3VsdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgaXRlcmF0b3JSZXN1
bHRTdHJ1Y3R1cmVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmpl
Y3QsIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUpOyB9CisgICAgU3RydWN0dXJlKiByZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZS5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKFBST01JU0VTKQogICAgIFN0cnVjdHVy
ZSogcHJvbWlzZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVN0cnVjdHVyZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNDk3
OWM0Ni4uMjQzMDljMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC0xMDExLDcgKzEwMTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAg
ICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkpOwor
ICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT5oYXNJbmxpbmVTdG9yYWdlKCkpOwog
ICAgICAgICBBU1NFUlQoY2xhc3NJbmZvKCkpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAppbmRleCBiMmZi
YTBhLi44MDViMjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxMSArMzEsMzAgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbmRleFByb3BlcnR5T2Zmc2V0
ID0gMTAwOworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGlucHV0UHJvcGVydHlPZmZzZXQg
PSAxMDE7CisKK3N0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0
Y2hlc0FycmF5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxM
ZW5ndGgpCit7CisgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNU
T1JfTEVOLCBpbml0aWFsTGVuZ3RoKTsKKyAgICBpZiAodmVjdG9yTGVuZ3RoID4gTUFYX1NUT1JB
R0VfVkVDVE9SX0xFTkdUSCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB2b2lkKiB0ZW1wOwor
ICAgIGlmICghdm0uaGVhcC50cnlBbGxvY2F0ZVN0b3JhZ2UoMCwgQnV0dGVyZmx5Ojp0b3RhbFNp
emUoMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCB2ZWN0b3JMZW5ndGgg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgJnRlbXApKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6ZnJvbUJhc2UodGVtcCwgMCwgc3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICBidXR0ZXJmbHktPnNldFZlY3Rvckxl
bmd0aCh2ZWN0b3JMZW5ndGgpOworICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGluaXRp
YWxMZW5ndGgpOworCisgICAgcmV0dXJuIEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0s
IHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKK30KKwogSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hl
c0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIGlucHV0LCBSZWdFeHAqIHJlZ0V4cCwg
TWF0Y2hSZXN1bHQgcmVzdWx0KQogewogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0gICAgSlNBcnJheSogYXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgcmVn
RXhwLT5udW1TdWJwYXR0ZXJucygpICsgMSk7CisgICAgSlNBcnJheSogYXJyYXkgPSB0cnlDcmVh
dGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlc0FycmF5KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBh
dHRlcm5zKCkgKyAxKTsKICAgICBSRUxFQVNFX0FTU0VSVChhcnJheSk7CiAKICAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiUmVpZnlpbmcgc3Vic3RyaW5nIHByb3BlcnRpZXMiKTsK
QEAgLTU4LDEwICs3NywyMSBAQCBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoRXhl
Y1N0YXRlKiBleGVjLCBKU1N0cmluZyogaW5wdXQsIFJlZ0V4cCogcmVnRQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgYXJyYXktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aW5kZXgs
IGpzTnVtYmVyKHJlc3VsdC5zdGFydCkpOwotICAgIGFycmF5LT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmlucHV0LCBpbnB1dCk7CisgICAgYXJyYXktPnB1dERpcmVjdCh2bSwgaW5k
ZXhQcm9wZXJ0eU9mZnNldCwganNOdW1iZXIocmVzdWx0LnN0YXJ0KSk7CisgICAgYXJyYXktPnB1
dERpcmVjdCh2bSwgaW5wdXRQcm9wZXJ0eU9mZnNldCwgaW5wdXQpOwogCiAgICAgcmV0dXJuIGFy
cmF5OwogfQogCitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QuYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldDsKKyAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPmFkZFByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbmRleCwgMCwgb2Zmc2V0KTsKKyAgICBS
RUxFQVNFX0FTU0VSVChvZmZzZXQgPT0gaW5kZXhQcm9wZXJ0eU9mZnNldCk7CisgICAgc3RydWN0
dXJlID0gc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0u
cHJvcGVydHlOYW1lcy0+aW5wdXQsIDAsIG9mZnNldCk7CisgICAgUkVMRUFTRV9BU1NFUlQob2Zm
c2V0ID09IGlucHV0UHJvcGVydHlPZmZzZXQpOworICAgIHJldHVybiBzdHJ1Y3R1cmU7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAppbmRleCBkZjcyZmFlLi42NjlkZDM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaApAQCAt
MjcsNiArMjcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1h
dGNoZXNBcnJheShFeGVjU3RhdGUqLCBKU1N0cmluZyosIFJlZ0V4cCosIE1hdGNoUmVzdWx0KTsK
K1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QmKTsKIAogfQogCg==
</data>
<flag name="review"
          id="279955"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>