<?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>154011</bug_id>
          
          <creation_ts>2016-02-08 14:49:28 -0800</creation_ts>
          <short_desc>Baseline JIT should not require its input to be constant-propagated</short_desc>
          <delta_ts>2016-02-08 15:00:42 -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>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>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1163024</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-08 14:49:28 -0800</bug_when>
    <thetext>The snippet generator code in the baseline JIT was assuming that bytecode *must* have been constant-propagated.  But you can’t guarantee that.  For example, this constraint means that almost any optimization performed after constant propagation is an invalid optimization, since it may reveal new constant propagation opportunities.

The bytecode generator runs after we have done some constant propagation in the parser, but it doesn’t guarantee that it won’t also do other things that reveal constants.

The correct thing to do - and indeed the thing that all of our other compiler code does - is to gracefully deal with unfolded operations in the backend.  There is no cost to doing so, and it ensures that the compiler doesn&apos;t crash if by some weird chance we revealed a constant in some late optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163025</commentid>
    <comment_count>1</comment_count>
      <attachid>270884</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-08 14:52:26 -0800</bug_when>
    <thetext>Created attachment 270884
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163027</commentid>
    <comment_count>2</comment_count>
      <attachid>270884</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-02-08 14:57:56 -0800</bug_when>
    <thetext>Comment on attachment 270884
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163029</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-08 15:00:42 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/196273</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270884</attachid>
            <date>2016-02-08 14:52:26 -0800</date>
            <delta_ts>2016-02-08 14:57:56 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>3269</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2MjcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE2LTAyLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QmFzZWxpbmUgSklUIHNob3VsZCBub3QgcmVxdWlyZSBpdHMgaW5wdXQgdG8gYmUgY29uc3RhbnQt
cHJvcGFnYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU0MDExCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI0MjkwOTMzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGgpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgorCiAyMDE2LTAyLTA4ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29kZUNhY2hlIHNob3VsZCBnaXZlIHVwIG9uIGV2
YWxzIGlmIHRoZXJlIGFyZSB2YXJpYWJsZXMgdW5kZXIgVERaCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHJldmlzaW9uIDE5NjI3MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIEpJVDo6ZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGgoSW5z
dHJ1CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9w
ZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7Ci0gICAgaWYg
KGlzT3BlcmFuZENvbnN0YW50SW50KG9wMikpCisgICAgZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3Rh
bnRJbnQob3AyKSkKICAgICAgICAgcmlnaHRPcGVyYW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFu
ZENvbnN0YW50SW50KG9wMikpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoIWxlZnRPcGVyYW5kLmlz
Q29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CkBAIC02MjgsNyArNjI4LDcgQEAg
dm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoSW5zdHJ1YwogCiAgICAgaWYgKGlzT3Bl
cmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0SW50MzIo
Z2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOwotICAgIGlmIChpc09wZXJhbmRDb25zdGFudElu
dChvcDIpKQorICAgIGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMikpCiAgICAgICAg
IHJpZ2h0T3BlcmFuZC5zZXRDb25zdEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDIpKTsK
IAogICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3Bl
cmFuZC5pc0NvbnN0KCkpOwpAQCAtNzAyLDEwICs3MDIsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
YWRkKEluc3RydWN0aW9uKiBjdXJyZQogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9w
MSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50
SW50KG9wMSkpOwotICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDIpKQorICAgIGVsc2Ug
aWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMikpCiAgICAgICAgIHJpZ2h0T3BlcmFuZC5zZXRD
b25zdEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDIpKTsKIAotICAgIEFTU0VSVCghbGVm
dE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25z
dCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKQogICAgICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKG9wMSwgbGVmdFJlZ3MpOwpAQCAtNzc5LDcgKzc3OSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmUKICAgICAgICAgcmlnaHRPcGVyYW5k
LnNldENvbnN0RG91YmxlKGdldE9wZXJhbmRDb25zdGFudERvdWJsZShvcDIpKTsKICNlbmRpZgog
Ci0gICAgQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0Nv
bnN0KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJp
Z2h0T3BlcmFuZC5pc0NvbnN0KCkpOwogCiAgICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkp
CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBsZWZ0UmVncyk7CkBAIC04NDIs
MTAgKzg0MiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tdWwoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAK
ICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQu
c2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7Ci0gICAgaWYgKGlzT3Bl
cmFuZENvbnN0YW50SW50KG9wMikpCisgICAgZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQo
b3AyKSkKICAgICAgICAgcmlnaHRPcGVyYW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0
YW50SW50KG9wMikpOwogCi0gICAgQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJp
Z2h0T3BlcmFuZC5pc0NvbnN0KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0T3BlcmFuZC5p
c0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwogCiAgICAgaWYgKCFsZWZ0T3Bl
cmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpKQogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKG9wMSwgbGVmdFJlZ3MpOwo=
</data>
<flag name="review"
          id="295728"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>