<?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>68977</bug_id>
          
          <creation_ts>2011-09-28 00:04:29 -0700</creation_ts>
          <short_desc>DFG JIT falls back on numerical comparisons when it does not recognize a prediction</short_desc>
          <delta_ts>2011-09-28 17:47:56 -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>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="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>474550</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-28 00:04:29 -0700</bug_when>
    <thetext>The DFG will emit numerical comparison code (with numerical speculation) when the operands to the comparison are something that it does not have optimized code generation for.  This means that any code that tries to compare strings, for example, will fall out of the speculative path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475032</commentid>
    <comment_count>1</comment_count>
      <attachid>109080</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-28 14:58:35 -0700</bug_when>
    <thetext>Created attachment 109080
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475036</commentid>
    <comment_count>2</comment_count>
      <attachid>109080</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-28 15:01:26 -0700</bug_when>
    <thetext>Comment on attachment 109080
the patch

r=me

Can double comparisons peephole fuse with branches?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475037</commentid>
    <comment_count>3</comment_count>
      <attachid>109080</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-28 15:03:06 -0700</bug_when>
    <thetext>Comment on attachment 109080
the patch

Add test cases that hit the object equality instead of correct operation case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475127</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-28 17:47:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 109080 [details])
&gt; r=me
&gt; 
&gt; Can double comparisons peephole fuse with branches?

Yup.  We drop through the shouldSpeculateInteger() check, and then trigger on the shouldSpeculateNumber() check (which means are these things either double or integer, plus still some cruft from static speculation days, which I&apos;ll get rid of eventually in another patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475129</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-28 17:47:56 -0700</bug_when>
    <thetext>Landed in r96280.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109080</attachid>
            <date>2011-09-28 14:58:35 -0700</date>
            <delta_ts>2011-09-28 15:03:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bettercompare_patch_1.diff</filename>
            <type>text/plain</type>
            <size>3999</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTYyNjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDktMjggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGZhbGxzIGJhY2sgb24gbnVtZXJpY2FsIGNvbXBhcmlzb25zIHdoZW4gaXQgZG9lcyBu
b3QKKyAgICAgICAgcmVjb2duaXplIGEgcHJlZGljdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5NzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZml4ZXMgYm90aCB0aGUgd2F5
IGNvbXBhcmlzb24gaW1wbGVtZW50YXRpb25zIGFyZSBzZWxlY3RlZC4gSXQKKyAgICAgICAgYWxz
byBmaXhlcyBhIGJ1ZyB3aGVyZSBjb21wYXJpc29ucyBvdGhlciB0aGFuIGVxdWFsaXR5IChsaWtl
IDwgb3IgPikKKyAgICAgICAgb24gb2JqZWN0cyBhcmUgY29tcGlsZWQgYXMgaWYgdGhlIGNvbXBh
cmlzb24gd2FzIGVxdWFsaXR5LgorCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisKIDIwMTEt
MDktMjggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIEltcGxlbWVudCBjYWxsT3BlcmF0aW9uKERfREZHT3BlcmF0aW9uX0REKSBmb3IgREZHIEpJ
VCAzMl82NApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHJldmlzaW9uIDk2MjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1MCwyNyArNjUwLDgg
QEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlJiBub2RlLAogICAgICAgICBtX2Nv
bXBpbGVJbmRleCA9IGJyYW5jaE5vZGVJbmRleDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotICAgIAotICAgIGlmIChzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChub2RlLmNoaWxkMSgp
LCBub2RlLmNoaWxkMigpKSkKLSAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsIG1f
aml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIpOwotICAgIGVsc2UgaWYgKHNob3Vs
ZFNwZWN1bGF0ZUFycmF5KG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCkpKQotICAgICAgICBj
b21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0
cik7Ci0gICAgZWxzZSBpZiAoIXNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLmNoaWxkMSgpKSAm
JiAhc2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUuY2hpbGQyKCkpKQotICAgICAgICBub25TcGVj
dWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZShub2RlLCBjb25kaXRpb24sIG9wZXJhdGlvbik7Ci0g
ICAgZWxzZSBpZiAoKHNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLmNoaWxkMSgpKSB8fCBzaG91
bGRTcGVjdWxhdGVOdW1iZXIobm9kZS5jaGlsZDIoKSkpICYmICFzaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCkpKSB7Ci0gICAgICAgIC8vIE5vcm1hbCBj
YXNlLCBub3QgZnVzZWQgdG8gYnJhbmNoLgotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7Ci0gICAgICAgIAotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZVRy
dWUpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0cnVlQ2Fz
ZSA9IG1faml0LmJyYW5jaERvdWJsZShkb3VibGVDb25kaXRpb24sIG9wMS5mcHIoKSwgb3AyLmZw
cigpKTsKLSAgICAgICAgbV9qaXQueG9yUHRyKEltbTMyKHRydWUpLCByZXN1bHQuZ3ByKCkpOwot
ICAgICAgICB0cnVlQ2FzZS5saW5rKCZtX2ppdCk7CiAKLSAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4LCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyBOb3JtYWwgY2FzZSwgbm90IGZ1c2VkIHRvIGJyYW5jaC4KKyAg
ICBpZiAoc2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLmNoaWxkMSgpLCBub2RlLmNoaWxkMigp
KSkgewogICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGls
ZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNo
aWxkMigpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7CkBA
IC02ODAsNyArNjYxLDIzIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9k
ZSwKICAgICAgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2Ug
aXQgaGVyZS4KICAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJl
c3VsdC5ncHIoKSk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBp
bGVJbmRleCwgRGF0YUZvcm1hdEpTQm9vbGVhbik7Ci0gICAgfQorICAgIH0gZWxzZSBpZiAoc2hv
dWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCkpKSB7CisgICAg
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAg
ICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKFZhbHVlVHJ1ZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHRydWVDYXNlID0gbV9qaXQuYnJhbmNoRG91YmxlKGRvdWJsZUNv
bmRpdGlvbiwgb3AxLmZwcigpLCBvcDIuZnByKCkpOworICAgICAgICBtX2ppdC54b3JQdHIoSW1t
MzIodHJ1ZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIHRydWVDYXNlLmxpbmsoJm1faml0KTsK
KworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgsIERh
dGFGb3JtYXRKU0Jvb2xlYW4pOworICAgIH0gZWxzZSBpZiAobm9kZS5vcCA9PSBDb21wYXJlRXEg
JiYgc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3Qobm9kZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIo
KSkpCisgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCBtX2ppdC5nbG9iYWxEYXRh
KCktPmpzRmluYWxPYmplY3RWUHRyKTsKKyAgICBlbHNlIGlmIChub2RlLm9wID09IENvbXBhcmVF
cSAmJiBzaG91bGRTcGVjdWxhdGVBcnJheShub2RlLmNoaWxkMSgpLCBub2RlLmNoaWxkMigpKSkK
KyAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsIG1faml0Lmdsb2JhbERhdGEoKS0+
anNBcnJheVZQdHIpOworICAgIGVsc2UKKyAgICAgICAgbm9uU3BlY3VsYXRpdmVOb25QZWVwaG9s
ZUNvbXBhcmUobm9kZSwgY29uZGl0aW9uLCBvcGVyYXRpb24pOwogICAgIAogICAgIHJldHVybiBm
YWxzZTsKIH0K
</data>
<flag name="review"
          id="106214"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>