<?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>137827</bug_id>
          
          <creation_ts>2014-10-17 12:15:35 -0700</creation_ts>
          <short_desc>Math.abs() returns negative</short_desc>
          <delta_ts>2015-05-01 15:36:58 -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>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.9</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>mail</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dpino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1042422</commentid>
    <comment_count>0</comment_count>
    <who name="">mail</who>
    <bug_when>2014-10-17 12:15:35 -0700</bug_when>
    <thetext>Calls to Math.abs() can return a negative in certain scenarios. Can be triggered pretty easily by calling it within requestAnimationFrame. Demo: http://jsbin.com/netev/edit?js,output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042561</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-17 21:48:58 -0700</bug_when>
    <thetext>function test() {
  var abs = Math.abs(-0.75);

  if (abs &lt; 0) {
    alert(&apos;Math.abs(-0.75) is negative?&apos;);
    return;
  }

  requestAnimationFrame(test);
}

test();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044714</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-10-28 23:51:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/18807804&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044715</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-10-28 23:51:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/18807806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052173</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-12-03 09:22:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/18694698&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053797</commentid>
    <comment_count>5</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-12-09 08:34:12 -0800</bug_when>
    <thetext>It seems this issue is happening when Matb.abs gets jitted, apparently when the DFG kicks in.

function test(times) {
    for (var i = 0; i &lt; times; i++) {
       result = Math.abs(-0.75);
    }
    print(times + &quot; times: &quot; + result);
}

test(1);
test(10);
test(100);
test(1000);
test(10000);
test(100000);
test(1000000);

Prints out:

1 times: 0.75
10 times: 0.75
100 times: 0.75
1000 times: 0.75
10000 times: -0.75
100000 times: -0.75
1000000 times: -0.75

If disabling DFG compilation, the issue doesn&apos;t happen.

Source/JavaScriptCore/runtime/Options.h
v(bool, useDFGJIT, false) \

I also noticed this issue is only happening with floats, it works OK for integers (regardless DFGJIT is on or off).

So everything points to be an issue in dfg/DFGSpeculativeJIT64.cpp, when emitting the jitted code for ArithAbs.

My environment is Ubuntu 14.04 x86_64, WebKitGTK+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090871</commentid>
    <comment_count>6</comment_count>
      <attachid>252169</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-05-01 13:38:20 -0700</bug_when>
    <thetext>Created attachment 252169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090872</commentid>
    <comment_count>7</comment_count>
      <attachid>252169</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-01 13:45:24 -0700</bug_when>
    <thetext>Comment on attachment 252169
Patch

Ooops.  Can you add a test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090873</commentid>
    <comment_count>8</comment_count>
      <attachid>252169</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-05-01 13:55:36 -0700</bug_when>
    <thetext>Comment on attachment 252169
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090883</commentid>
    <comment_count>9</comment_count>
      <attachid>252171</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-05-01 14:34:19 -0700</bug_when>
    <thetext>Created attachment 252171
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090918</commentid>
    <comment_count>10</comment_count>
      <attachid>252171</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-01 15:36:53 -0700</bug_when>
    <thetext>Comment on attachment 252171
Patch for landing

Clearing flags on attachment: 252171

Committed r183692: &lt;http://trac.webkit.org/changeset/183692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090919</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-01 15:36:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252169</attachid>
            <date>2015-05-01 13:38:20 -0700</date>
            <delta_ts>2015-05-01 14:34:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137827-20150501133708.patch</filename>
            <type>text/plain</type>
            <size>1666</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MDhiNzJhNWI5ZTFhZGQ4NjU2ODQ0NjYyNjdmNDUzYzA4ZDdlNzc3Li5lOWRkNmYzZWY5OTUyMjY2
NmY5NTU3MWYzM2U2YmU5YmU2NjQxN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNS0wNS0wMSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CisKKyAgICAgICAgTWF0aC5hYnMoKSByZXR1cm5zIG5lZ2F0aXZlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc4MjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRoLmFicygpIG9uIGRv
dWJsZXMgd2FzIG1pc3Rha2VubHkgYXNzdW1lZCBieSB0aGUgREZHIEFJIHRvIGJlIHRoZQorICAg
ICAgICBpZGVudGl0eSBmdW5jdGlvbi4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisKIDIwMTUtMDQtMzAgIEpvbiBE
YXZpcyAgPGpvbmRAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGUg
c2hvdWxkIHNob3cgYW4gaWNvbiBmb3IgY29uc29sZS5pbmZvKCkgbWVzc2FnZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAppbmRleCA2OTBiMjhmY2U5MWVhYWI3ZjIyMzQ0YzIzYTJiNTk5YTk2ZDQ4MzIwLi45
MzQyMDkzNWIzOGJlZjQ0NzhlZGEwYzk1ZjlkODU1MjYzYmZkNzAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC03MzIsNyArNzMyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChj
aGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNEb3VibGVOdW1iZXIoY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGZhYnMoY2hpbGQuYXNOdW1iZXIoKSkp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZSh0eXBlT2ZEb3VibGVBYnMoZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV90eXBlKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252171</attachid>
            <date>2015-05-01 14:34:19 -0700</date>
            <delta_ts>2015-05-01 15:36:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-137827-20150501143308.patch</filename>
            <type>text/plain</type>
            <size>2338</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MDhiNzJhNWI5ZTFhZGQ4NjU2ODQ0NjYyNjdmNDUzYzA4ZDdlNzc3Li5hMjVmZDIzZDNjYzljMTBk
N2M4M2YyOGRkNTA3MDgyZDg0YTA4OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wNS0wMSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CisKKyAgICAgICAgTWF0aC5hYnMoKSByZXR1cm5zIG5lZ2F0aXZlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc4MjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBNaWNoYWVsIFNhYm9mZi4KKworICAgICAgICBNYXRoLmFicygpIG9uIGRv
dWJsZXMgd2FzIG1pc3Rha2VubHkgYXNzdW1lZCBieSB0aGUgREZHIEFJIHRvIGJlIHRoZQorICAg
ICAgICBpZGVudGl0eSBmdW5jdGlvbi4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL21hdGgtYWJzLXBvc2l0aXZlLmpzOiBBZGRlZCwgd2FzIHByZXZpb3VzbHkgZmFpbGluZy4K
KyAgICAgICAgKGZvbyk6CisKIDIwMTUtMDQtMzAgIEpvbiBEYXZpcyAgPGpvbmRAYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGUgc2hvdWxkIHNob3cgYW4gaWNvbiBm
b3IgY29uc29sZS5pbmZvKCkgbWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA2OTBiMjhm
Y2U5MWVhYWI3ZjIyMzQ0YzIzYTJiNTk5YTk2ZDQ4MzIwLi45MzQyMDkzNWIzOGJlZjQ0NzhlZGEw
Yzk1ZjlkODU1MjYzYmZkNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC03MzIsNyArNzMyLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJl
cigpKSB7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIo
Y2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
RG91YmxlTnVtYmVyKGZhYnMoY2hpbGQuYXNOdW1iZXIoKSkpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSh0
eXBlT2ZEb3VibGVBYnMoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtYWJzLXBvc2l0aXZl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLWFicy1wb3NpdGl2
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYzRlMTY0NjA1NmIxMzUyZDM1NjhiNjE4MjJlM2FmYjQ3NWNlYjVi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9t
YXRoLWFicy1wb3NpdGl2ZS5qcwpAQCAtMCwwICsxLDExIEBACit2YXIgbWludXNfdGhyZWVfcXVh
cnRlcnMgPSAtMC43NTsKKworZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiBNYXRoLmFicyht
aW51c190aHJlZV9xdWFydGVycyk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBNYXRoLmFicyByZXR1cm5lZCBhIG5lZ2F0aXZlIHZhbHVlLiI7Cit9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>