<?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>211543</bug_id>
          
          <creation_ts>2020-05-06 18:58:33 -0700</creation_ts>
          <short_desc>Fix ArrayMode nodes after r261260</short_desc>
          <delta_ts>2020-05-07 11:14:42 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211531</see_also>
          <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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1649924</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-05-06 18:58:33 -0700</bug_when>
    <thetext>Fix ArrayMode nodes after r261260</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649925</commentid>
    <comment_count>1</comment_count>
      <attachid>398695</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-05-06 19:00:47 -0700</bug_when>
    <thetext>Created attachment 398695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649938</commentid>
    <comment_count>2</comment_count>
      <attachid>398695</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-06 19:37:43 -0700</bug_when>
    <thetext>Comment on attachment 398695
Patch

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

r=me with nits

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:162
&gt; +    // all nodes with an ArrayMode can clobber top. We make an exception for CheckArray since it has no effects.
&gt; +    if (graph.m_planStage &lt; PlanStage::AfterFixup &amp;&amp; node-&gt;hasArrayMode() &amp;&amp; node-&gt;op() != CheckArray)
&gt;          return clobberTop();

Can we list up all ArrayMode nodes here not to forget adding some nodes?

Like this.

if (graph.m_planStage &lt; PlanStage::AfterFixup &amp;&amp; node-&gt;hasArrayMode()) {
    switch (node-&gt;op()) {
    case GetIndexedPropertyStorage:
    ...
        break;
    case CheckArray:
        return clobberTop();
    default:
        DFG_ASSERT(...);
    }
}

Do we need to include CheckArrayOrEmpty too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649944</commentid>
    <comment_count>3</comment_count>
      <attachid>398695</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-06 20:29:56 -0700</bug_when>
    <thetext>Comment on attachment 398695
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:162
&gt;&gt;          return clobberTop();
&gt; 
&gt; Can we list up all ArrayMode nodes here not to forget adding some nodes?
&gt; 
&gt; Like this.
&gt; 
&gt; if (graph.m_planStage &lt; PlanStage::AfterFixup &amp;&amp; node-&gt;hasArrayMode()) {
&gt;     switch (node-&gt;op()) {
&gt;     case GetIndexedPropertyStorage:
&gt;     ...
&gt;         break;
&gt;     case CheckArray:
&gt;         return clobberTop();
&gt;     default:
&gt;         DFG_ASSERT(...);
&gt;     }
&gt; }
&gt; 
&gt; Do we need to include CheckArrayOrEmpty too?

Yusuke, I think you meant the opposite:

if (graph.m_planStage &lt; PlanStage::AfterFixup &amp;&amp; node-&gt;hasArrayMode()) {
    switch (node-&gt;op()) {
    case GetIndexedPropertyStorage:
    ...
        return clobberTop(); 
     case CheckArray:
        break;
    default:
        DFG_ASSERT(...);
    }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649964</commentid>
    <comment_count>4</comment_count>
      <attachid>398695</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-06 22:18:52 -0700</bug_when>
    <thetext>Comment on attachment 398695
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:162
&gt;&gt;&gt;          return clobberTop();
&gt;&gt; 
&gt;&gt; Can we list up all ArrayMode nodes here not to forget adding some nodes?
&gt;&gt; 
&gt;&gt; Like this.
&gt;&gt; 
&gt;&gt; if (graph.m_planStage &lt; PlanStage::AfterFixup &amp;&amp; node-&gt;hasArrayMode()) {
&gt;&gt;     switch (node-&gt;op()) {
&gt;&gt;     case GetIndexedPropertyStorage:
&gt;&gt;     ...
&gt;&gt;         break;
&gt;&gt;     case CheckArray:
&gt;&gt;         return clobberTop();
&gt;&gt;     default:
&gt;&gt;         DFG_ASSERT(...);
&gt;&gt;     }
&gt;&gt; }
&gt;&gt; 
&gt;&gt; Do we need to include CheckArrayOrEmpty too?
&gt; 
&gt; Yusuke, I think you meant the opposite:
&gt; 
&gt; if (graph.m_planStage &lt; PlanStage::AfterFixup &amp;&amp; node-&gt;hasArrayMode()) {
&gt;     switch (node-&gt;op()) {
&gt;     case GetIndexedPropertyStorage:
&gt;     ...
&gt;         return clobberTop(); 
&gt;      case CheckArray:
&gt;         break;
&gt;     default:
&gt;         DFG_ASSERT(...);
&gt;     }
&gt; }

Oops, right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650138</commentid>
    <comment_count>5</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-05-07 09:20:42 -0700</bug_when>
    <thetext>I reverted r261260 in https://trac.webkit.org/changeset/261293 to address test failures. This should be combined with the original patch and landed at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650218</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-05-07 11:00:25 -0700</bug_when>
    <thetext>Committed r261313: &lt;https://trac.webkit.org/changeset/261313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650221</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-07 11:01:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/62983681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650233</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-07 11:14:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/62838095&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398695</attachid>
            <date>2020-05-06 19:00:47 -0700</date>
            <delta_ts>2020-05-06 19:37:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211543-20200506190046.patch</filename>
            <type>text/plain</type>
            <size>2791</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ODEwYWU4NmMzYTFlYTYwNjQxZDQ5YjNkZTE4ODUxZDI5MGQ2MmVlLi40MTNkMGNmOTkxNjgxYmI2
ZmUzN2JmMGFkMjE1OTI5NzliMTI1YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMC0wNS0wNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBGaXggQXJyYXlNb2RlIG5vZGVzIGFmdGVyIHIyNjEyNjAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTU0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgYWNjaWRlbnRhbGx5
IHJhbiB0ZXN0cyB3aXRoIGEgcmVsZWFzZSBidWlsZCByYXRoZXIgdGhhbgorICAgICAgICByZWxl
YXNlK2Fzc2VydCB3aGVuIHVwbG9hZGluZyByMjYxMjYwLiBUaGlzIHBhdGNoIHNraXBzIHRoZQor
ICAgICAgICBDaGVja0FycmF5IG5vZGUgaW4gdGhlIEFycmF5TW9kZSBjbG9iYmVyc1RvcCgpIGxv
Z2ljIGJlZm9yZQorICAgICAgICBGaXh1cC4gQW5kIGFsc28gbWFya3MgYSBHZXRBcnJheUxlbmd0
aCBpbiB0aGUgVHlwZWRBcnJheQorICAgICAgICBpbnRyc2luaWNzIGFzIEV4aXRPSy4KKworICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAgICogZGZnL0RGR0Ns
b2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKwogMjAyMC0wNS0w
NiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcg
QnlWYWwgbm9kZXMgd2l0aCBBcnJheU1vZGVzIHNob3VsZCBjbG9iYmVyVG9wIHVudGlsIEZpeHVw
IHBoYXNlIHJ1bnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IDhhZDRiYzA3OWNmODEyNjdhYjVlMTdkMWIyNDhjNDdjMWFlOGNkNmUu
LmExZDQzMGY5NTM0NDhkOGU3ZDdlODk5YTE5N2QxNjViYmUxYWY5ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNzUwLDYgKzM3
NTAsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJh
bmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWMKICAgICAgICAgfSk7CiAKICAgICAgICAg
Tm9kZSogbGVuZ3RoTm9kZSA9IGFkZFRvR3JhcGgoR2V0QXJyYXlMZW5ndGgsIE9wSW5mbyhBcnJh
eU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkpLCB0aGlzTm9kZSk7CisgICAg
ICAgIC8vIE91ciBBcnJheU1vZGUgc2hvdWxkbid0IGNhdXNlIHVzIHRvIGV4aXQgaGVyZSBzbyB3
ZSBzaG91bGQgYmUgb2sgdG8gZXhpdCB3aXRob3V0IGVmZmVjdHMuCisgICAgICAgIG1fZXhpdE9L
ID0gdHJ1ZTsKKyAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCiAKICAgICAgICAgaWYgKCFs
b2dTaXplKSB7CiAgICAgICAgICAgICBzZXQocmVzdWx0LCBsZW5ndGhOb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZWRkNDMxZDE5ZWUxYmFiNjkx
ZjYzOTQ4NzhiNGQxZDczMTQ3MWZjNi4uM2EzMmVjZjYzMzQyMjJlMjJhNWZiYzVlYmEyYzBhYWZl
YTk2N2MzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAg
LTE1Nyw4ICsxNTcsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIH07CiAKICAgICAv
LyBTaW5jZSBGaXh1cCBjYW4gd2lkZW4gb3VyIEFycmF5TW9kZXMgYmFzZWQgb24gcHJvZmlsaW5n
IGZyb20gb3RoZXIgbm9kZXMgd2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZQotICAgIC8vIGFsbCBu
b2RlcyB3aXRoIGFuIEFycmF5TW9kZSBjYW4gY2xvYmJlciB0b3AuCi0gICAgaWYgKGdyYXBoLm1f
cGxhblN0YWdlIDwgUGxhblN0YWdlOjpBZnRlckZpeHVwICYmIG5vZGUtPmhhc0FycmF5TW9kZSgp
KQorICAgIC8vIGFsbCBub2RlcyB3aXRoIGFuIEFycmF5TW9kZSBjYW4gY2xvYmJlciB0b3AuIFdl
IG1ha2UgYW4gZXhjZXB0aW9uIGZvciBDaGVja0FycmF5IHNpbmNlIGl0IGhhcyBubyBlZmZlY3Rz
LgorICAgIGlmIChncmFwaC5tX3BsYW5TdGFnZSA8IFBsYW5TdGFnZTo6QWZ0ZXJGaXh1cCAmJiBu
b2RlLT5oYXNBcnJheU1vZGUoKSAmJiBub2RlLT5vcCgpICE9IENoZWNrQXJyYXkpCiAgICAgICAg
IHJldHVybiBjbG9iYmVyVG9wKCk7CiAgICAgCiAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Cg==
</data>
<flag name="review"
          id="414101"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>