<?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>108580</bug_id>
          
          <creation_ts>2013-01-31 22:01:37 -0800</creation_ts>
          <short_desc>DFG::CFGSimplificationPhase::keepOperandAlive() conflates liveness and availability</short_desc>
          <delta_ts>2013-01-31 23:43:28 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>822320</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-31 22:01:37 -0800</bug_when>
    <thetext>This is a harmless bug in that it only results in us keeping a bit too many things for OSR.  But it&apos;s worth fixing so that the code is consistent.

keepOperandAlive() is called when block A has a branch to blocks B and C, but the A-&gt;B edge is proven to never be taken and we want to optimize the code to have A unconditionally jump to C.  In that case, for the purposes of OSR, we need to preserve the knowledge that the state that B expected to be live incoming from A ought still to be live up to the point of where the A-&gt;B,C branch used to be.  The way we keep things alive is by using the variablesAtTail of A (i.e., we use the knowledge of in what manner A made state available to B and C).  The way we choose which state should be kept alive ought to be chosen by the variablesAtHead of B (i.e. the things B says it needs from its predecessors, including A), except that keepOperandAlive() was previously just using variablesAtTail of A for this purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822321</commentid>
    <comment_count>1</comment_count>
      <attachid>185943</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-31 22:04:35 -0800</bug_when>
    <thetext>Created attachment 185943
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822390</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-31 23:43:28 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/141544</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185943</attachid>
            <date>2013-01-31 22:04:35 -0800</date>
            <delta_ts>2013-01-31 23:37:19 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>5613</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxNTM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDEzLTAxLTMxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjprZWVwT3BlcmFuZEFsaXZlKCkgY29uZmxhdGVz
IGxpdmVuZXNzIGFuZCBhdmFpbGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwODU4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIGhhcm1sZXNzIGJ1ZyBpbiB0aGF0
IGl0IG9ubHkgcmVzdWx0cyBpbiB1cyBrZWVwaW5nIGEgYml0IHRvbyBtYW55IHRoaW5ncworICAg
ICAgICBmb3IgT1NSLiAgQnV0IGl0J3Mgd29ydGggZml4aW5nIHNvIHRoYXQgdGhlIGNvZGUgaXMg
Y29uc2lzdGVudC4KKworICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKCkgaXMgY2FsbGVkIHdoZW4g
YmxvY2sgQSBoYXMgYSBicmFuY2ggdG8gYmxvY2tzIEIgYW5kIEMsIGJ1dCB0aGUKKyAgICAgICAg
QS0+QiBlZGdlIGlzIHByb3ZlbiB0byBuZXZlciBiZSB0YWtlbiBhbmQgd2Ugd2FudCB0byBvcHRp
bWl6ZSB0aGUgY29kZSB0byBoYXZlIEEKKyAgICAgICAgdW5jb25kaXRpb25hbGx5IGp1bXAgdG8g
Qy4gIEluIHRoYXQgY2FzZSwgZm9yIHRoZSBwdXJwb3NlcyBvZiBPU1IsIHdlIG5lZWQgdG8KKyAg
ICAgICAgcHJlc2VydmUgdGhlIGtub3dsZWRnZSB0aGF0IHRoZSBzdGF0ZSB0aGF0IEIgZXhwZWN0
ZWQgdG8gYmUgbGl2ZSBpbmNvbWluZyBmcm9tIEEKKyAgICAgICAgb3VnaHQgc3RpbGwgdG8gYmUg
bGl2ZSB1cCB0byB0aGUgcG9pbnQgb2Ygd2hlcmUgdGhlIEEtPkIsQyBicmFuY2ggdXNlZCB0byBi
ZS4gIFRoZQorICAgICAgICB3YXkgd2Uga2VlcCB0aGluZ3MgYWxpdmUgaXMgYnkgdXNpbmcgdGhl
IHZhcmlhYmxlc0F0VGFpbCBvZiBBIChpLmUuLCB3ZSB1c2UgdGhlCisgICAgICAgIGtub3dsZWRn
ZSBvZiBpbiB3aGF0IG1hbm5lciBBIG1hZGUgc3RhdGUgYXZhaWxhYmxlIHRvIEIgYW5kIEMpLiAg
VGhlIHdheSB3ZSBjaG9vc2UKKyAgICAgICAgd2hpY2ggc3RhdGUgc2hvdWxkIGJlIGtlcHQgYWxp
dmUgb3VnaHQgdG8gYmUgY2hvc2VuIGJ5IHRoZSB2YXJpYWJsZXNBdEhlYWQgb2YgQgorICAgICAg
ICAoaS5lLiB0aGUgdGhpbmdzIEIgc2F5cyBpdCBuZWVkcyBmcm9tIGl0cyBwcmVkZWNlc3NvcnMs
IGluY2x1ZGluZyBBKSwgZXhjZXB0IHRoYXQKKyAgICAgICAga2VlcE9wZXJhbmRBbGl2ZSgpIHdh
cyBwcmV2aW91c2x5IGp1c3QgdXNpbmcgdmFyaWFibGVzQXRUYWlsIG9mIEEgZm9yIHRoaXMKKyAg
ICAgICAgcHVycG9zZS4KKyAgICAgICAgCisgICAgICAgIFRoZSBmaXggaXMgdG8gaGF2ZSBrZWVw
T3BlcmFuZEFsaXZlKCkgdXNlIGJvdGggbGl2ZW5lc3MgYW5kIGF2YWlsYWJpbGl0eSBpbiBpdHMK
KyAgICAgICAgbG9naWMuIEl0IHNob3VsZCB1c2UgbGl2ZW5lc3MgKGkuZS4gQi0+dmFyaWFibGVz
QXRIZWFkKSB0byBkZWNpZGUgd2hhdCB0byBrZWVwCisgICAgICAgIGFsaXZlLCBhbmQgaXQgc2hv
dWxkIHVzZSBhdmFpbGFiaWxpdHkgKGkuZS4gQS0+dmFyaWFibGVzQXRUYWlsKSB0byBkZWNpZGUg
aG93IHRvCisgICAgICAgIGtlZXAgaXQgYWxpdmUuCisgICAgICAgIAorICAgICAgICBUaGlzIG1p
Z2h0IGJlIGEgbWljcm9zY29waWMgd2luIG9uIHNvbWUgcHJvZ3JhbXMsIGJ1dCBpdCdzIG1haW5s
eSBpbnRlbmRlZCB0byBiZQorICAgICAgICBhIGNvZGUgY2xlYW4tdXAgc28gdGhhdCBJIGRvbid0
IGVuZCB1cCBzY3JhdGNoaW5nIG15IGhlYWQgaW4gY29uZnVzaW9uIHRoZSBuZXh0CisgICAgICAg
IHRpbWUgSSBsb29rIGF0IHRoaXMgY29kZS4KKworICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlm
aWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBo
YXNlOjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNh
dGlvblBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlm
aWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisKIDIwMTMtMDEtMzEgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTQxMTkyKTogQ3Jh
c2ggYmVuZWF0aCBjdGlfb3BfZ2V0X2J5X2lkX2dlbmVyaWMgQCBkaXNjdXNzaW9ucy5hcHBsZS5j
b20KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdT
aW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTQxNTE1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjU4LDIwICsyNTgsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nr
c1tibG9ja0luZGV4XS5jbGVhcigpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGtlZXBPcGVyYW5k
QWxpdmUoQmFzaWNCbG9jayogYmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgaW50IG9wZXJh
bmQpCisgICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Js
b2NrKiBqZXR0aXNvbmVkQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgaW50IG9wZXJhbmQp
CiAgICAgewotICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5vcGVy
YW5kKG9wZXJhbmQpOwotICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgIE5vZGUqIGxpdmVuZXNz
Tm9kZSA9IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCk7
CisgICAgICAgIE5vZGUqIGF2YWlsYWJpbGl0eU5vZGUgPSBibG9jay0+dmFyaWFibGVzQXRUYWls
Lm9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgIGlmICghbGl2ZW5lc3NOb2RlKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzQ2Fw
dHVyZWQoKSkKKyAgICAgICAgQVNTRVJUKGF2YWlsYWJpbGl0eU5vZGUpOworICAgICAgICBpZiAo
bGl2ZW5lc3NOb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+aXNDYXB0dXJlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCkKLSAgICAg
ICAgICAgIG5vZGUgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7Ci0gICAgICAgIGlmICghbm9kZS0+
c2hvdWxkR2VuZXJhdGUoKSkKKyAgICAgICAgaWYgKGF2YWlsYWJpbGl0eU5vZGUtPm9wKCkgPT0g
U2V0TG9jYWwpCisgICAgICAgICAgICBhdmFpbGFiaWxpdHlOb2RlID0gYXZhaWxhYmlsaXR5Tm9k
ZS0+Y2hpbGQxKCkubm9kZSgpOworICAgICAgICBpZiAoIWF2YWlsYWJpbGl0eU5vZGUtPnNob3Vs
ZEdlbmVyYXRlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChub2RlLT5v
cCgpICE9IFNldExvY2FsKTsKKyAgICAgICAgQVNTRVJUKGF2YWlsYWJpbGl0eU5vZGUtPm9wKCkg
IT0gU2V0TG9jYWwpOwogICAgICAgICBibG9jay0+YXBwZW5kTm9kZSgKLSAgICAgICAgICAgIG1f
Z3JhcGgsIFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIFBoYW50b20sIGNvZGVP
cmlnaW4sIG5vZGUpOworICAgICAgICAgICAgbV9ncmFwaCwgUmVmQ2hpbGRyZW4sIERvbnRSZWZO
b2RlLCBTcGVjTm9uZSwgUGhhbnRvbSwgY29kZU9yaWdpbiwgYXZhaWxhYmlsaXR5Tm9kZSk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgZml4UG9zc2libGVHZXRMb2NhbChCYXNpY0Jsb2NrKiBibG9j
aywgRWRnZSYgZWRnZSwgYm9vbCBjaGFuZ2VSZWYpCkBAIC0zNTQsOSArMzU2LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgQmFzaWNCbG9jayogamV0dGlzb25lZEJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nr
c1tqZXR0aXNvbmVkQmxvY2tJbmRleF0uZ2V0KCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9m
QXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGJv
dW5kYXJ5Q29kZU9yaWdpbiwgYXJndW1lbnRUb09wZXJhbmQoaSkpOworICAgICAgICAgICAga2Vl
cE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeUNvZGVPcmlnaW4s
IGFyZ3VtZW50VG9PcGVyYW5kKGkpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBq
ZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0g
ICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBib3VuZGFyeUNvZGVPcmlnaW4sIGkp
OworICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJsb2NrLCBi
b3VuZGFyeUNvZGVPcmlnaW4sIGkpOwogICAgICAgICAKICAgICAgICAgZml4SmV0dGlzb25lZFBy
ZWRlY2Vzc29ycyhibG9ja0luZGV4LCBqZXR0aXNvbmVkQmxvY2tJbmRleCk7CiAgICAgfQpAQCAt
NTczLDkgKzU3NSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBkaWZmZXJlbnQgcGF0aCB0
aGFuIHNlY29uZEJsb2NrLgogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1l
bnRzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ss
IGJvdW5kYXJ5Q29kZU9yaWdpbiwgYXJndW1lbnRUb09wZXJhbmQoaSkpOworICAgICAgICAgICAg
ICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFy
eUNvZGVPcmlnaW4sIGFyZ3VtZW50VG9PcGVyYW5kKGkpKTsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZM
b2NhbHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9j
aywgYm91bmRhcnlDb2RlT3JpZ2luLCBpKTsKKyAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFs
aXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlDb2RlT3JpZ2luLCBpKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWNv
bmRCbG9jay0+cGhpcy5zaXplKCk7ICsraSkK
</data>
<flag name="review"
          id="205204"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>