<?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>167017</bug_id>
          
          <creation_ts>2017-01-13 13:46:28 -0800</creation_ts>
          <short_desc>Initialize the ArraySpecies watchpoint as Clear and transition to IsWatched once slice is called for the first time</short_desc>
          <delta_ts>2017-01-13 15:43:39 -0800</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>WebKit Local 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1266575</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-13 13:46:28 -0800</bug_when>
    <thetext>This seems to fix the JSBench regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266576</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-01-13 13:48:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/30019309&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266577</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-01-13 13:50:49 -0800</bug_when>
    <thetext>Fascinating!

What does it mean for the watchpoint to be lazy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266578</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-01-13 13:53:03 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Fascinating!
&gt; 
&gt; What does it mean for the watchpoint to be lazy?

It means that we don&apos;t initialize the watchpoint until the function using it is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266579</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-01-13 13:54:08 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Fascinating!
&gt; &gt; 
&gt; &gt; What does it mean for the watchpoint to be lazy?
&gt; 
&gt; It means that we don&apos;t initialize the watchpoint until the function using it
&gt; is called.

By using, you mean watching or...?

Is this an alternate way of saying whether the watchpoint is initialized watched or if the watchpoint is blind initially?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266582</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-13 13:57:14 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; Fascinating!
&gt; &gt; &gt; 
&gt; &gt; &gt; What does it mean for the watchpoint to be lazy?
&gt; &gt; 
&gt; &gt; It means that we don&apos;t initialize the watchpoint until the function using it
&gt; &gt; is called.
&gt; 
&gt; By using, you mean watching or...?
&gt; 
&gt; Is this an alternate way of saying whether the watchpoint is initialized
&gt; watched or if the watchpoint is blind initially?

The watchpoint is blind initially.
So we start it off as ClearWatchpoint.

From ClearWatchpoint, once slice is called for the first time, we can either do:
ClearWatchpoint =&gt; Invalidated
ClearWatchpoint =&gt; IsWatched

depending on the state of the world. We do this transition when slice is called for the fist time and reaches a certain execution point (past some number of exception checks regarding toNumber() on parameters).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266587</commentid>
    <comment_count>6</comment_count>
      <attachid>298786</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-13 14:19:35 -0800</bug_when>
    <thetext>Created attachment 298786
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266588</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-13 14:20:43 -0800</bug_when>
    <thetext>Attachment 298786 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266589</commentid>
    <comment_count>8</comment_count>
      <attachid>298786</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-01-13 14:23:04 -0800</bug_when>
    <thetext>Comment on attachment 298786
patch

Super cool.  Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266593</commentid>
    <comment_count>9</comment_count>
      <attachid>298786</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-01-13 14:34:19 -0800</bug_when>
    <thetext>Comment on attachment 298786
patch

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

r=me too.

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:-1362
&gt; -    ASSERT(constructorSlot.slotBase() == this);
&gt; -    ASSERT(constructorSlot.isCacheableValue());

I&apos;m surprised I put these assertions in, they are very clearly wrong... since someone could have changed these before we set the watchpoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266595</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-13 14:49:36 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 298786 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298786&amp;action=review
&gt; 
&gt; r=me too.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:-1362
&gt; &gt; -    ASSERT(constructorSlot.slotBase() == this);
&gt; &gt; -    ASSERT(constructorSlot.isCacheableValue());
&gt; 
&gt; I&apos;m surprised I put these assertions in, they are very clearly wrong...
&gt; since someone could have changed these before we set the watchpoint.
You didn&apos;t. I made them assertions because I switched this function to run from global object construction. But since that&apos;s no longer the case, I moved back to the checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266612</commentid>
    <comment_count>11</comment_count>
      <attachid>298786</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-01-13 15:38:27 -0800</bug_when>
    <thetext>Comment on attachment 298786
patch

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

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:1411
&gt; +    // We only watch this from the DFG, and the DFG makes sure to only start watching if the watchpoint is in the IsWatched state.
&gt; +    RELEASE_ASSERT(!globalObject-&gt;arraySpeciesWatchpoint().isBeingWatched()); 

Code seems to say is *not* in the IsWatched state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266616</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-13 15:41:04 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 298786 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298786&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:1411
&gt; &gt; +    // We only watch this from the DFG, and the DFG makes sure to only start watching if the watchpoint is in the IsWatched state.
&gt; &gt; +    RELEASE_ASSERT(!globalObject-&gt;arraySpeciesWatchpoint().isBeingWatched()); 
&gt; 
&gt; Code seems to say is *not* in the IsWatched state.

This function name is somewhat confusing, but it&apos;s not talking about IsWatched state, it&apos;s talking about if anybody is on the Watchpoint&apos;s list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266620</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-13 15:43:39 -0800</bug_when>
    <thetext>landed in:
https://trac.webkit.org/changeset/210745</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298786</attachid>
            <date>2017-01-13 14:19:35 -0800</date>
            <delta_ts>2017-01-13 14:34:31 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>11578</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEwNzQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDE3LTAxLTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEluaXRpYWxpemUgdGhlIEFycmF5U3BlY2llcyB3YXRjaHBvaW50IGFzIENsZWFyIGFuZCB0cmFu
c2l0aW9uIHRvIElzV2F0Y2hlZCBvbmNlIHNsaWNlIGlzIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRp
bWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzAx
NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAwMTkzMDk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisJCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgdG8gcmV2ZXJzZSB0
aGUgSlNCZW5jaCByZWdyZXNzaW9uIGZyb20gcjIxMDY5NS4KKyAgICAgICAgCisgICAgICAgIFRo
ZSBuZXcgc3RhdGUgZGlhZ3JhbSBmb3IgdGhlIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludCBpcyBh
cworICAgICAgICBmb2xsb3dzOgorICAgICAgICAKKyAgICAgICAgMS4gT24gR2xvYmFsT2JqZWN0
IGNvbnN0cnVjdGlvbiwgaXQgc3RhcnRzIGxpZmUgb3V0IGFzIENsZWFyV2F0Y2hwb2ludC4KKyAg
ICAgICAgMi4gV2hlbiBzbGljZSBpcyBjYWxsZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCB3ZSBvYnNl
cnZlIHRoZSBzdGF0ZQorICAgICAgICBvZiB0aGUgd29ybGQsIGFuZCBlaXRoZXIgdHJhbnNpdGlv
biBpdCB0byBJc1dhdGNoZWQgaWYgd2Ugd2VyZSBhYmxlCisgICAgICAgIHRvIHNldCB1cCB0aGUg
b2JqZWN0IHByb3BlcnR5IGNvbmRpdGlvbnMsIG9yIHRvIElzSW52YWxpZGF0ZWQgaWYgd2UKKyAg
ICAgICAgd2VyZSBub3QuCisgICAgICAgIDMuIFRoZSBERkcgY29tcGlsZXIgd2lsbCBub3cgb25s
eSBsb3dlciBzbGljZSBhcyBhbiBpbnRyaW5zaWMgaWYKKyAgICAgICAgaXQgb2JzZXJ2ZWQgdGhl
IHNwZWNpZXNXYXRjaHBvaW50LnN0YXRlKCkgYXMgSXNXYXRjaGVkLgorICAgICAgICA0LiBUaGUg
SXNXYXRjaGVkID0+IElzSW52YWxpZGF0ZWQgdHJhbnNpdGlvbiBoYXBwZW5zIG9ubHkgd2hlbgor
ICAgICAgICBvbmUgb2YgdGhlIG9iamVjdCBwcm9wZXJ0eSBjb25kaXRpb24gd2F0Y2hwb2ludHMg
ZmlyZS4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzcGVjaWVzV2F0Y2hw
b2ludElzVmFsaWQpOgorICAgICAgICAoSlNDOjpzcGVjaWVzQ29uc3RydWN0QXJyYXkpOgorICAg
ICAgICAoSlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkpOgorICAgICAgICAo
SlNDOjpBcnJheVByb3RvdHlwZTo6dHJ5SW5pdGlhbGl6ZVNwZWNpZXNXYXRjaHBvaW50KToKKyAg
ICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6SlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisKIDIwMTctMDEtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgUmVzZXJ2ZSBjYXBhY2l0eSBmb3IgU3RyaW5nQnVpbGRlciBpbiB1bmVzY2FwZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHJldmlzaW9uIDIxMDY5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjc4LDcgKzIyNzgsNyBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsCiAgICAgICAgICAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBhcnJheVByb3RvdHlwZVRyYW5zaXRpb24gPSBnbG9iYWxPYmplY3QtPmFy
cmF5UHJvdG90eXBlKCktPnN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldCgpOwog
CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoZSBBcnJheS9P
YmplY3QucHJvdG90eXBlIHRyYW5zaXRpb24gYXMgbG9uZyBhcyB3ZSBPU1IgZXhpdHRlZCBpZiB3
ZSBzYXcgYSBob2xlLgotICAgICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlTcGVjaWVz
V2F0Y2hwb2ludCgpLmlzU3RpbGxWYWxpZCgpCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5hcnJheVNwZWNpZXNXYXRjaHBvaW50KCkuc3RhdGUoKSA9PSBJc1dhdGNoZWQKICAgICAgICAg
ICAgICAgICAmJiBnbG9iYWxPYmplY3QtPmhhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCgpLT5pc1N0
aWxsVmFsaWQoKQogICAgICAgICAgICAgICAgICYmIGFycmF5UHJvdG90eXBlVHJhbnNpdGlvbi5p
c1N0aWxsVmFsaWQoKQogICAgICAgICAgICAgICAgICYmIG9iamVjdFByb3RvdHlwZVRyYW5zaXRp
b24uaXNTdGlsbFZhbGlkKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIxMDY5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTkxLDEyICsxOTEsMTkgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRMZW5ndGgoRXhl
YwogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiB9CiAKLWlubGluZSBib29sIHNwZWNpZXNXYXRjaHBv
aW50SXNWYWxpZChKU09iamVjdCogdGhpc09iamVjdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBzcGVj
aWVzV2F0Y2hwb2ludElzVmFsaWQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVj
dCkKIHsKLSAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQXJyYXlQcm90b3R5
cGUqIGFycmF5UHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpOworCisg
ICAgaWYgKGdsb2JhbE9iamVjdC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLnN0YXRlT25KU1Ro
cmVhZCgpID09IENsZWFyV2F0Y2hwb2ludCkgeworICAgICAgICBhcnJheVByb3RvdHlwZS0+dHJ5
SW5pdGlhbGl6ZVNwZWNpZXNXYXRjaHBvaW50KGV4ZWMpOworICAgICAgICBBU1NFUlQoZ2xvYmFs
T2JqZWN0LT5hcnJheVNwZWNpZXNXYXRjaHBvaW50KCkuc3RhdGVPbkpTVGhyZWFkKCkgIT0gQ2xl
YXJXYXRjaHBvaW50KTsKKyAgICB9CisKICAgICByZXR1cm4gIXRoaXNPYmplY3QtPmhhc0N1c3Rv
bVByb3BlcnRpZXMoKQogICAgICAgICAmJiBhcnJheVByb3RvdHlwZSA9PSB0aGlzT2JqZWN0LT5n
ZXRQcm90b3R5cGVEaXJlY3QoKQotICAgICAgICAmJiBhcnJheVByb3RvdHlwZS0+Z2xvYmFsT2Jq
ZWN0KCktPmFycmF5U3BlY2llc1dhdGNocG9pbnQoKS5pc1N0aWxsVmFsaWQoKTsKKyAgICAgICAg
JiYgZ2xvYmFsT2JqZWN0LT5hcnJheVNwZWNpZXNXYXRjaHBvaW50KCkuc3RhdGVPbkpTVGhyZWFk
KCkgPT0gSXNXYXRjaGVkOwogfQogCiBlbnVtIGNsYXNzIFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQg
ewpAQCAtMjIxLDcgKzIyOCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxTcGVj
aWVzQ28KICAgICBpZiAoTElLRUxZKHRoaXNJc0FycmF5KSkgewogICAgICAgICAvLyBGYXN0IHBh
dGggaW4gdGhlIG5vcm1hbCBjYXNlIHdoZXJlIHRoZSB1c2VyIGhhcyBub3Qgc2V0IGFuIG93biBj
b25zdHJ1Y3RvciBhbmQgdGhlIEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBub3JtYWwu
CiAgICAgICAgIC8vIFdlIG5lZWQgcHJvdG90eXBlIGNoZWNrIGZvciBzdWJjbGFzc2VzIG9mIEFy
cmF5LCB3aGljaCBhcmUgQXJyYXkgb2JqZWN0cyBidXQgaGF2ZSBhIGRpZmZlcmVudCBwcm90b3R5
cGUgYnkgZGVmYXVsdC4KLSAgICAgICAgYm9vbCBpc1ZhbGlkID0gc3BlY2llc1dhdGNocG9pbnRJ
c1ZhbGlkKHRoaXNPYmplY3QpOworICAgICAgICBib29sIGlzVmFsaWQgPSBzcGVjaWVzV2F0Y2hw
b2ludElzVmFsaWQoZXhlYywgdGhpc09iamVjdCk7CiAgICAgICAgIGlmIChMSUtFTFkoaXNWYWxp
ZCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJl
c3VsdDo6RmFzdFBhdGgsIG51bGxwdHIpOwogCkBAIC0xMjM5LDcgKzEyNDYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9QCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdWxsKCkpOwogCiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0aGUgc3BlY2ll
cyBjb25zdHJ1Y3RvciBoZXJlIHNpbmNlIGNoZWNraW5nIGl0IGluIHRoZSBKUyB3cmFwcGVyIGlz
IHRvbyBleHBlbnNpdmUgZm9yIHRoZSBub24tb3B0aW1pemluZyB0aWVycy4KLSAgICBib29sIGlz
VmFsaWQgPSBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQoZmlyc3RBcnJheSk7CisgICAgYm9vbCBp
c1ZhbGlkID0gc3BlY2llc1dhdGNocG9pbnRJc1ZhbGlkKGV4ZWMsIGZpcnN0QXJyYXkpOwogICAg
IGlmIChVTkxJS0VMWSghaXNWYWxpZCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwogCkBAIC0xMzMxLDcgKzEzMzgsNyBAQCBwcml2YXRlOgogICAgIEFycmF5UHJv
dG90eXBlKiBtX2FycmF5UHJvdG90eXBlOwogfTsKIAotdm9pZCBBcnJheVByb3RvdHlwZTo6aW5p
dGlhbGl6ZVNwZWNpZXNXYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKK3ZvaWQgQXJyYXlQcm90
b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIApAQCAtMTMzOSw3ICsxMzQ2LDYgQEAgdm9pZCBB
cnJheVByb3RvdHlwZTo6aW5pdGlhbGl6ZVNwZWNpZXNXYQogICAgIFJFTEVBU0VfQVNTRVJUKCFt
X2NvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIFVOVVNFRF9QQVJBTShzY29wZSk7CiAKICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiSW5pdGlhbGl6aW5nIEFycmF5IHNwZWNpZXMgd2F0
Y2hwb2ludHMgZm9yIEFycmF5LnByb3RvdHlwZTogIiwgcG9pbnRlckR1bXAodGhpcyksICIgd2l0
aCBzdHJ1Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPnN0cnVjdHVyZSgpKSwgIlxuYW5kIEFy
cmF5OiAiLCBwb2ludGVyRHVtcCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlDb25zdHJ1Y3Rv
cigpKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xvYmFsT2JqZWN0
KCktPmFycmF5Q29uc3RydWN0b3IoKS0+c3RydWN0dXJlKCkpLCAiXG4iKTsKQEAgLTEzNTUsMTIg
KzEzNjEsMTkgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6aW5pdGlhbGl6ZVNwZWNpZXNXYQogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAg
ICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5hcnJh
eUNvbnN0cnVjdG9yKCk7CiAKKyAgICBhdXRvIGludmFsaWRhdGVXYXRjaHBvaW50ID0gWyZdIHsK
KyAgICAgICAgZ2xvYmFsT2JqZWN0LT5hcnJheVNwZWNpZXNXYXRjaHBvaW50KCkuaW52YWxpZGF0
ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiV2FzIG5vdCBhYmxlIHRvIHNldCB1cCBhcnJheSBzcGVj
aWVzIHdhdGNocG9pbnQuIikpOworICAgIH07CisKICAgICBQcm9wZXJ0eVNsb3QgY29uc3RydWN0
b3JTbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkp
OwogICAgIHRoaXMtPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3JTbG90KTsKLSAgICBBU1NFUlQoIXNjb3BlLmV4
Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoY29uc3RydWN0b3JTbG90LnNsb3RCYXNlKCkgPT0gdGhp
cyk7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdG9yU2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkpOwotICAg
IFJFTEVBU0VfQVNTRVJUKGNvbnN0cnVjdG9yU2xvdC5nZXRWYWx1ZShleGVjLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvcikgPT0gYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgQVNTRVJUX1VO
VVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICBpZiAoY29uc3RydWN0b3JTbG90
LnNsb3RCYXNlKCkgIT0gdGhpcworICAgICAgICB8fCAhY29uc3RydWN0b3JTbG90LmlzQ2FjaGVh
YmxlVmFsdWUoKQorICAgICAgICB8fCBjb25zdHJ1Y3RvclNsb3QuZ2V0VmFsdWUoZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpICE9IGFycmF5Q29uc3RydWN0b3IpIHsKKyAgICAg
ICAgaW52YWxpZGF0ZVdhdGNocG9pbnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAg
IFN0cnVjdHVyZSogY29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBhcnJheUNvbnN0cnVjdG9yLT5zdHJ1
Y3R1cmUodm0pOwogICAgIGlmIChjb25zdHJ1Y3RvclN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkp
CkBAIC0xMzY4LDEwICsxMzgxLDEzIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmluaXRpYWxpemVT
cGVjaWVzV2EKIAogICAgIFByb3BlcnR5U2xvdCBzcGVjaWVzU2xvdChhcnJheUNvbnN0cnVjdG9y
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKICAgICBhcnJh
eUNvbnN0cnVjdG9yLT5nZXRPd25Qcm9wZXJ0eVNsb3QoYXJyYXlDb25zdHJ1Y3RvciwgZXhlYywg
dm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1Nsb3QpOwotICAgIEFTU0VS
VCghc2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIEFTU0VSVChzcGVjaWVzU2xvdC5zbG90QmFzZSgp
ID09IGFycmF5Q29uc3RydWN0b3IpOwotICAgIEFTU0VSVChzcGVjaWVzU2xvdC5pc0NhY2hlYWJs
ZUdldHRlcigpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChzcGVjaWVzU2xvdC5nZXR0ZXJTZXR0ZXIo
KSA9PSBnbG9iYWxPYmplY3QtPnNwZWNpZXNHZXR0ZXJTZXR0ZXIoKSk7CisgICAgQVNTRVJUX1VO
VVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICBpZiAoc3BlY2llc1Nsb3Quc2xv
dEJhc2UoKSAhPSBhcnJheUNvbnN0cnVjdG9yCisgICAgICAgIHx8ICFzcGVjaWVzU2xvdC5pc0Nh
Y2hlYWJsZUdldHRlcigpCisgICAgICAgIHx8IHNwZWNpZXNTbG90LmdldHRlclNldHRlcigpICE9
IGdsb2JhbE9iamVjdC0+c3BlY2llc0dldHRlclNldHRlcigpKSB7CisgICAgICAgIGludmFsaWRh
dGVXYXRjaHBvaW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBOb3cgd2Ug
bmVlZCB0byBzZXR1cCB0aGUgd2F0Y2hwb2ludHMgdG8gbWFrZSBzdXJlIHRoZXNlIGNvbmRpdGlv
bnMgcmVtYWluIHZhbGlkLgogICAgIHByb3RvdHlwZVN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1By
b3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBjb25zdHJ1Y3RvclNsb3QuY2FjaGVkT2Zmc2V0KCkp
OwpAQCAtMTM4MCwxNCArMTM5NiwyMCBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjppbml0aWFsaXpl
U3BlY2llc1dhCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uc3RydWN0b3JDb25kaXRp
b24gPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2Uodm0sIHRoaXMsIHRoaXMs
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLmltcGwoKSwgYXJyYXlDb25zdHJ1Y3Rvcik7
CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gc3BlY2llc0NvbmRpdGlvbiA9IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uOjplcXVpdmFsZW5jZSh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvciwg
dm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbC5pbXBsKCksIGdsb2JhbE9iamVjdC0+c3Bl
Y2llc0dldHRlclNldHRlcigpKTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGNvbnN0cnVjdG9yQ29u
ZGl0aW9uLmlzV2F0Y2hhYmxlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKHNwZWNpZXNDb25kaXRp
b24uaXNXYXRjaGFibGUoKSk7CisgICAgaWYgKCFjb25zdHJ1Y3RvckNvbmRpdGlvbi5pc1dhdGNo
YWJsZSgpIHx8ICFzcGVjaWVzQ29uZGl0aW9uLmlzV2F0Y2hhYmxlKCkpIHsKKyAgICAgICAgaW52
YWxpZGF0ZVdhdGNocG9pbnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fY29u
c3RydWN0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVByb3RvdHlwZUFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ+KGNvbnN0cnVjdG9yQ29uZGl0aW9uLCB0aGlz
KTsKICAgICBtX2NvbnN0cnVjdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCgpOwogCiAgICAgbV9jb25z
dHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVByb3RvdHlw
ZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ+KHNwZWNpZXNDb25kaXRpb24sIHRo
aXMpOwogICAgIG1fY29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludC0+aW5zdGFsbCgpOworCisg
ICAgLy8gV2Ugb25seSB3YXRjaCB0aGlzIGZyb20gdGhlIERGRywgYW5kIHRoZSBERkcgbWFrZXMg
c3VyZSB0byBvbmx5IHN0YXJ0IHdhdGNoaW5nIGlmIHRoZSB3YXRjaHBvaW50IGlzIGluIHRoZSBJ
c1dhdGNoZWQgc3RhdGUuCisgICAgUkVMRUFTRV9BU1NFUlQoIWdsb2JhbE9iamVjdC0+YXJyYXlT
cGVjaWVzV2F0Y2hwb2ludCgpLmlzQmVpbmdXYXRjaGVkKCkpOyAKKyAgICBnbG9iYWxPYmplY3Qt
PmFycmF5U3BlY2llc1dhdGNocG9pbnQoKS50b3VjaCh2bSwgIlNldCB1cCBhcnJheSBzcGVjaWVz
IHdhdGNocG9pbnQuIik7CiB9CiAKIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5V2F0Y2hwb2ludDo6QXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRj
aHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXksIEFycmF5UHJvdG90eXBl
KiBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmgJKHJldmlzaW9uIDIxMDY5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhEZXJpdmVkQXJyYXlUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgQXJyYXlDbGFzcyk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplU3Bl
Y2llc1dhdGNocG9pbnQoRXhlY1N0YXRlKik7CisgICAgdm9pZCB0cnlJbml0aWFsaXplU3BlY2ll
c1dhdGNocG9pbnQoRXhlY1N0YXRlKik7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gZmFsc2U7CiAgICAgLy8gV2UgZG9uJ3QgbmVlZCBkZXN0cnVjdGlvbiBzaW5j
ZSB3ZSB1c2UgYSBmaW5hbGl6ZXIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMTA2OTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzMiw3ICszMzIsNyBAQCBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QoVk0mIHZt
LCBTCiAgICAgLCBtX3ZhckluamVjdGlvbldhdGNocG9pbnQoYWRvcHRSZWYobmV3IFdhdGNocG9p
bnRTZXQoSXNXYXRjaGVkKSkpCiAgICAgLCBtX3dlYWtSYW5kb20oT3B0aW9uczo6Zm9yY2VXZWFr
UmFuZG9tU2VlZCgpID8gT3B0aW9uczo6Zm9yY2VkV2Vha1JhbmRvbVNlZWQoKSA6IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkgKyAxLjApKSkKICAgICAsIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludChJc1dhdGNoZWQpCi0gICAgLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQoSXNXYXRjaGVk
KQorICAgICwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KENsZWFyV2F0Y2hwb2ludCkKICAgICAs
IG1fdGVtcGxhdGVSZWdpc3RyeSh2bSkKICAgICAsIG1fZXZhbEVuYWJsZWQodHJ1ZSkKICAgICAs
IG1fcnVudGltZUZsYWdzKCkKQEAgLTk0Nyw4ICs5NDcsNiBAQCBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVyCiAgICAgICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUl0ZXJhdG9yQWRhcHRp
dmVXYXRjaHBvaW50Pihjb25kaXRpb24sIHRoaXMpOwogICAgICAgICAgICAgbV9hcnJheVByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCgpOwogICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy0+YXJyYXlQcm90b3R5cGUoKS0+aW5pdGlhbGl6ZVNwZWNpZXNXYXRjaHBvaW50
KGV4ZWMpOwogICAgIH0KIAogICAgIHJlc2V0UHJvdG90eXBlKHZtLCBnZXRQcm90b3R5cGVEaXJl
Y3QoKSk7Cg==
</data>
<flag name="review"
          id="320892"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>