<?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>191897</bug_id>
          
          <creation_ts>2018-11-21 15:31:07 -0800</creation_ts>
          <short_desc>DFGSpeculativeJIT should not &amp;= exitOK with mayExit(node)</short_desc>
          <delta_ts>2018-11-21 19:43:40 -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 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>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>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</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>1480845</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-21 15:31:07 -0800</bug_when>
    <thetext>It&apos;s actually weird that we did this when you think about what each thing means. exitOK is a statement about it being legal to exit. However, mayExit tries to be as smart and use as much information as it can to make a statement about if an exit could happen at runtime when the code executes. It can&apos;t return false if a runtime exit *could* happen. However, there is code in the compiler where mayExit() returns false (because it uses data generated from AI about type checks being proved), but the code we emit may unconditionally generate code that emits an exit, even if that exit may never execute. For example, let&apos;s say we have this IR:

SomeNode(Boolean:@input)

And we always emit code like this:

jump L1 if input == true
jump L1 if input == false
emit an OSR exit

In such a program, when we generate the above OSR exit, in a validationEnabled() build, and if @input is proved to be a boolean, we&apos;ll end up crashing because we have the bogus assertion saying !exitOK. This is one reason why things are cleaner if we don&apos;t conflate mayExit() with exitOK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480846</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-21 15:31:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/45871998&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480847</commentid>
    <comment_count>2</comment_count>
      <attachid>355441</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-21 15:40:53 -0800</bug_when>
    <thetext>Created attachment 355441
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480851</commentid>
    <comment_count>3</comment_count>
      <attachid>355441</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-11-21 16:04:41 -0800</bug_when>
    <thetext>Comment on attachment 355441
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480895</commentid>
    <comment_count>4</comment_count>
      <attachid>355441</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-21 19:43:38 -0800</bug_when>
    <thetext>Comment on attachment 355441
patch

Clearing flags on attachment: 355441

Committed r238437: &lt;https://trac.webkit.org/changeset/238437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480896</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-21 19:43:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355441</attachid>
            <date>2018-11-21 15:40:53 -0800</date>
            <delta_ts>2018-11-21 19:43:38 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>4015</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzg0MzEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE4LTExLTIxICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIERGR1NwZWN1bGF0aXZlSklUIHNob3VsZCBub3QgJj0gZXhpdE9LIHdp
dGggbWF5RXhpdChub2RlKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkxODk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTg3MTk5OD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9leGl0
b2staXMtbm90LXRoZS1zYW1lLWFzLW1heUV4aXQuanM6IEFkZGVkLgorICAgICAgICAoYmFyKToK
KyAgICAgICAgKGZvbyk6CisKIDIwMTgtMTEtMjEgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtCaWdJbnRdIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoIHNo
b3VsZCB0aHJvdyB3aGVuIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gSlNCaWdJbnQ6Om1heExlbmd0
aApJbmRleDogSlNUZXN0cy9zdHJlc3MvZXhpdG9rLWlzLW5vdC10aGUtc2FtZS1hcy1tYXlFeGl0
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2V4aXRvay1pcy1ub3QtdGhlLXNhbWUt
YXMtbWF5RXhpdC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9leGl0b2staXMt
bm90LXRoZS1zYW1lLWFzLW1heUV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBA
QAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlQWNjZXNzSW5saW5pbmc9MCIpCisKK2Z1bmN0aW9uIGJh
cihyYW5nZXMpIHsKKyAgICBmb3IgKGNvbnN0IFt6XSBvZiByYW5nZXMpIHsKKyAgICAgICAgbGV0
IHlzID0gW107CisgICAgICAgIGZvciAoeSA9IDA7IHkgPD0gMTAwMDAwOyB5KyspIHsKKyAgICAg
ICAgICAgIHlzW3ldID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZv
bygpIHsKKyAgICBsZXQgaXRlcmF0b3IgPSBbXVtTeW1ib2wuaXRlcmF0b3JdKCk7CisgICAgaXRl
cmF0b3IueCA9IDE7Cit9CisKK2JhcihbIFtdLCBbXSwgW10sIFtdLCBbXSwgW10sIFtdLCBbXSwg
W10sIFtdLCBbXSBdKTsKK2ZvbygpOworYmFyKFsgW10sIFtdIF0pOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzg0MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMTEtMjEgIFNh
YW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgREZHU3BlY3VsYXRpdmVK
SVQgc2hvdWxkIG5vdCAmPSBleGl0T0sgd2l0aCBtYXlFeGl0KG5vZGUpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE4OTcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ1ODcxOTk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGV4aXRPSyBpcyBhIHN0YXRlbWVudCBhYm91dCBpdCBiZWluZyBsZWdhbCB0
byBleGl0LiBtYXlFeGl0KCkgaXMgYWJvdXQgYmVpbmcKKyAgICAgICAgY29uc2VydmF0aXZlIGFu
ZCByZXR1cm5pbmcgZmFsc2Ugb25seSBpZiBhbiBPU1IgZXhpdCAqY291bGQgbmV2ZXIqIGhhcHBl
bi4KKyAgICAgICAgbWF5RXhpdCgpIHRyaWVzIHRvIGJlIGFzIHNtYXJ0IGFzIHBvc3NpYmxlIHRv
IHNlZSBpZiBpdCBjYW4gcmV0dXJuIGZhbHNlLgorICAgICAgICBJdCBjYW4ndCByZXR1cm4gZmFs
c2UgaWYgYSBydW50aW1lIGV4aXQgKmNvdWxkKiBoYXBwZW4uIEhvd2V2ZXIsIHRoZXJlIGlzCisg
ICAgICAgIGNvZGUgaW4gdGhlIGNvbXBpbGVyIHdoZXJlIG1heUV4aXQoKSByZXR1cm5zIGZhbHNl
IChiZWNhdXNlIGl0IHVzZXMgZGF0YQorICAgICAgICBnZW5lcmF0ZWQgZnJvbSBBSSBhYm91dCB0
eXBlIGNoZWNrcyBiZWluZyBwcm92ZWQpLCBidXQgdGhlIGNvZGUgd2UgZW1pdCBpbiB0aGUKKyAg
ICAgICAgY29tcGlsZXIgYmFja2VuZCB1bmNvbmRpdGlvbmFsbHkgZ2VuZXJhdGVzIGFuIE9TUiBl
eGl0LCBldmVuIGlmIHRoYXQgZXhpdCBtYXkKKyAgICAgICAgbmV2ZXIgZXhlY3V0ZS4gRm9yIGV4
YW1wbGUsIGxldCdzIHNheSB3ZSBoYXZlIHRoaXMgSVI6CisgICAgICAgIAorICAgICAgICBTb21l
Tm9kZShCb29sZWFuOkBpbnB1dCkKKyAgICAgICAgCisgICAgICAgIEFuZCB3ZSBhbHdheXMgZW1p
dCBjb2RlIGxpa2UgdGhpcyBhcyBhIHdheSBvZiBlbWl0dGluZyBhIGJvb2xlYW4gdHlwZSBjaGVj
azoKKyAgICAgICAgCisgICAgICAgIGp1bXAgTDEgaWYgaW5wdXQgPT0gdHJ1ZQorICAgICAgICBq
dW1wIEwxIGlmIGlucHV0ID09IGZhbHNlCisgICAgICAgIGVtaXQgYW4gT1NSIGV4aXQKKyAgICAg
ICAgCisgICAgICAgIEluIHN1Y2ggYSBwcm9ncmFtLCB3aGVuIHdlIGdlbmVyYXRlIHRoZSBhYm92
ZSBPU1IgZXhpdCwgaW4gYSB2YWxpZGF0aW9uRW5hYmxlZCgpCisgICAgICAgIGJ1aWxkLCBhbmQg
aWYgQGlucHV0IGlzIHByb3ZlZCB0byBiZSBhIGJvb2xlYW4sIHdlJ2xsIGVuZCB1cCBjcmFzaGlu
ZyBiZWNhdXNlIHdlCisgICAgICAgIGhhdmUgdGhlIGJvZ3VzIGFzc2VydGlvbiBzYXlpbmcgIWV4
aXRPSy4gVGhpcyBpcyBvbmUgcmVhc29uIHdoeSB0aGluZ3MgYXJlIGNsZWFuZXIKKyAgICAgICAg
aWYgd2UgZG9uJ3QgY29uZmxhdGUgbWF5RXhpdCgpIHdpdGggZXhpdE9LLgorCisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jayk6CisKIDIwMTgtMTEtMjEgIENhaW8gTGltYSAgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtCaWdJbnRdIEpTQmlnSW50OjpjcmVhdGVX
aXRoTGVuZ3RoIHNob3VsZCB0aHJvdyB3aGVuIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gSlNCaWdJ
bnQ6Om1heExlbmd0aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIzODQyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQwLDgg
KzE4NDAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAg
ICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZUtub3duRWRnZVR5cGVzKG1fY3VycmVudE5vZGUpOwog
ICAgICAgICBtX2ppdC5zZXRGb3JOb2RlKG1fY3VycmVudE5vZGUpOwogICAgICAgICBtX29yaWdp
biA9IG1fY3VycmVudE5vZGUtPm9yaWdpbjsKLSAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVk
KCkpCi0gICAgICAgICAgICBtX29yaWdpbi5leGl0T0sgJj0gbWF5RXhpdChtX2ppdC5ncmFwaCgp
LCBtX2N1cnJlbnROb2RlKSA9PSBFeGl0czsKICAgICAgICAgbV9sYXN0R2VuZXJhdGVkTm9kZSA9
IG1fY3VycmVudE5vZGUtPm9wKCk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQobV9jdXJyZW50
Tm9kZS0+c2hvdWxkR2VuZXJhdGUoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>