<?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>67486</bug_id>
          
          <creation_ts>2011-09-02 07:20:58 -0700</creation_ts>
          <short_desc>MacroAssemberARM branchTruncateDoubleToInt32() doesn&apos;t work?</short_desc>
          <delta_ts>2011-09-06 19:00:27 -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>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>loki</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>461213</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2011-09-02 07:20:58 -0700</bug_when>
    <thetext>Right shift operators (&gt;&gt; and &gt;&gt;&gt;) fail when the left operand is a large negative number and the right operand is an immediate number.

var largeNeg=-2715228072;
alert(largeNeg &gt;&gt;&gt; 5); // wrong when using ARM assembler.

It seems branchTruncateDoubleToInt32() doesn&apos;t work as expected by the caller (JIT::emitRightShiftSlowCase).

Turning off supportsFloatingPointTruncate() for MacroAssemberARM can simply solve the problem.

I noticed this comment in MacroAssemberARMv7.h:

    // On x86(_64) the MacroAssembler provides an interface to truncate a double to an integer.
    // If a value is not representable as an integer, and possibly for some values that are,
    // (on x86 INT_MIN, since this is indistinguishable from results for out-of-range/NaN input)
    // a branch will  be taken.  It is not clear whether this interface will be well suited to
    // other platforms.  On ARMv7 the hardware truncation operation produces multiple possible
    // failure values (saturates to INT_MIN &amp; INT_MAX, NaN reulsts in a value of 0).  This is a
    // temporary solution while we work out what this interface should be.  Either we need to
    // decide to make this interface work on all platforms, rework the interface to make it more
    // generic, or decide that the MacroAssembler cannot practically be used to abstracted these
    // operations, and make clients go directly to the m_assembler to plant truncation instructions.
    // In short, FIXME:.
    bool supportsFloatingPointTruncate() const { return false; }

Should we also turn off supportsFloatingPointTruncate() for ARM?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462715</commentid>
    <comment_count>1</comment_count>
      <attachid>106457</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2011-09-06 12:01:12 -0700</bug_when>
    <thetext>Created attachment 106457
the patch that turns off this optimization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463068</commentid>
    <comment_count>2</comment_count>
      <attachid>106457</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 19:00:22 -0700</bug_when>
    <thetext>Comment on attachment 106457
the patch that turns off this optimization

Clearing flags on attachment: 106457

Committed r94622: &lt;http://trac.webkit.org/changeset/94622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463069</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 19:00:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106457</attachid>
            <date>2011-09-06 12:01:12 -0700</date>
            <delta_ts>2011-09-06 19:00:22 -0700</delta_ts>
            <desc>the patch that turns off this optimization</desc>
            <filename>67486.patch</filename>
            <type>text/plain</type>
            <size>5055</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmOWE4NzcxLi4xYzYwMmY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDkt
MDYgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NDg2CisgICAgICAgIEFkZCBhIHRlc3QgY2FzZSBmb3Ig
YnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKCkgd2hpY2ggaXMKKyAgICAgICAgdXNlZCBpbiBy
aWdodCBzaGlmdCBvcHRpbWl6YXRpb24gd2hlbiB0aGUgYXNzZW1ibGVyCisgICAgICAgICJzdXBw
b3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2pzL2Zsb2F0aW5nLXBvaW50LXRydW5jYXRlLXJz
aGlmdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvZmxvYXRpbmctcG9p
bnQtdHJ1bmNhdGUtcnNoaWZ0Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA4LTI0ICBZb25nIExpICA8
eW9saUByaW0uY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NTM3NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9mbG9hdGluZy1w
b2ludC10cnVuY2F0ZS1yc2hpZnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9m
bG9hdGluZy1wb2ludC10cnVuY2F0ZS1yc2hpZnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZjIyZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL2Zsb2F0aW5nLXBvaW50LXRydW5jYXRlLXJzaGlmdC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9mbG9h
dGluZy1wb2ludC10cnVuY2F0ZS1yc2hpZnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvZmxv
YXRpbmctcG9pbnQtdHJ1bmNhdGUtcnNoaWZ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDJkMDYyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
anMvZmxvYXRpbmctcG9pbnQtdHJ1bmNhdGUtcnNoaWZ0Lmh0bWwKQEAgLTAsMCArMSwxMSBAQAor
PGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit2YXIgbGFyZ2VOZWcgPSAtMjcxNTIy
ODA3MjsKK2lmICgobGFyZ2VOZWcgPj4+IDUpID09IDQ5MzY2ODUwKQorICAgIGRvY3VtZW50Lndy
aXRlKCJQQVNTIik7CitlbHNlCisgICAgZG9jdW1lbnQud3JpdGUobGFyZ2VOZWcgPj4+IDUpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiYmE0ODcyLi5i
YTFjYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0w
OS0wNiAgWW9uZyBMaSAgPHlvbGlAcmltLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc0ODYKKyAgICAgICAgVGhpcyByZXZlcnRzIHI2NTk5
MyB3aGljaCBnaXZlcyB3cm9uZyByZXN1bHRzIGZvciByc2hpZnQKKyAgICAgICAgaW4gc29tZSBj
b3JuZXIgY2FzZXMgKHNlZSB0aGUgdGVzdCkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3Q6IGZhc3QvanMvZmxvYXRpbmctcG9pbnQtdHJ1
bmNhdGUtcnNoaWZ0Lmh0bWwKKworICAgICAgICAqIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06OnN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMik6
CisKIDIwMTEtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBFcnJvckluc3RhbmNlOjpjcmVhdGUgc29tZXRpbWVzIGhhcyB0d28gaGVhcCBvYmplY3QgY29u
c3RydWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
Uk1Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1i
bGVyLmgKaW5kZXggNTliZmIxMi4uYWIyNzMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCkBAIC0xNjEsNyArMTYxLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBWTU9WX0FSTSA9IDB4MGUxMDBhMTAsCiAgICAgICAgICAgICBW
Q1ZUX0Y2NF9TMzIgPSAweDBlYjgwYmMwLAogICAgICAgICAgICAgVkNWVF9TMzJfRjY0ID0gMHgw
ZWJkMGI0MCwKLSAgICAgICAgICAgIFZDVlRSX1MzMl9GNjQgPSAweDBlYmQwYmMwLAogICAgICAg
ICAgICAgVk1SU19BUFNSID0gMHgwZWYxZmExMCwKICNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1Qo
NSkKICAgICAgICAgICAgIENMWiA9IDB4MDE2ZjBmMTAsCkBAIC01NDUsMTIgKzU0NCw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Qoc3RhdGlj
X2Nhc3Q8QVJNV29yZD4oY2MpIHwgVkNWVF9TMzJfRjY0LCAoc2QgPj4gMSksIDAsIGRtKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgdmN2dHJfczMyX2Y2NF9yKGludCBzZCwgaW50IGRtLCBD
b25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCEoc2QgJiAw
eDEpKTsgLy8gc2QgbXVzdCBiZSBkaXZpc2libGUgYnkgMgotICAgICAgICAgICAgZW1pdERvdWJs
ZVByZWNpc2lvbkluc3Qoc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpIHwgVkNWVFJfUzMyX0Y2NCwg
KHNkID4+IDEpLCAwLCBkbSk7Ci0gICAgICAgIH0KLQogICAgICAgICB2b2lkIHZtcnNfYXBzcihD
b25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50
KHN0YXRpY19jYXN0PEFSTVdvcmQ+KGNjKSB8IFZNUlNfQVBTUik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKaW5kZXggNzIxMGFj
Mi4uOGNmMzgwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtNzg3LDcgKzc4Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIHNfaXNWRlBQcmVzZW50OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkgY29uc3QKQEAgLTkwMiwxNyArOTAy
LDEzIEBAIHB1YmxpYzoKICAgICAvLyBUcnVuY2F0ZXMgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5k
IHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5v
dCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFs
c28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJp
dHMKLSAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NSU4gYW5kIElOVF9N
QVgpLgorICAgIC8vIChzcGVjaWZpY2FsbHksIGluIHRoaXMgY2FzZSwgSU5UX01JTikuCiAgICAg
SnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmN2dHJfczMyX2Y2NF9yKEFS
TVJlZ2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7Ci0gICAgICAgIC8vIElmIFZDVlRSLlMzMi5GNjQg
Y2FuJ3QgZml0IHRoZSByZXN1bHQgaW50byBhIDMyLWJpdAotICAgICAgICAvLyBpbnRlZ2VyLCBp
dCBzYXR1cmF0ZXMgYXQgSU5UX01BWCBvciBJTlRfTUlOLiBUZXN0aW5nIHRoaXMgaXMKLSAgICAg
ICAgLy8gcHJvYmFibHkgcXVpY2tlciB0aGFuIHRlc3RpbmcgRlBTQ1IgZm9yIGV4Y2VwdGlvbi4K
LSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm1fcihkZXN0LCBBUk1SZWdpc3RlcnM6OlNEMCA8
PCAxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3ViX3IoQVJNUmVnaXN0ZXJzOjpTMCwgZGVzdCwg
QVJNQXNzZW1ibGVyOjpnZXRPcDIoMHg4MDAwMDAwMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5j
bW5fcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMigxKSwgQVJNQ29uZGl0
aW9uKE5vdEVxdWFsKSk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1D
b25kaXRpb24oRXF1YWwpKSk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzcmMpOworICAgICAgICBV
TlVTRURfUEFSQU0oZGVzdCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4ganVtcCgpOwogICAgIH0KIAogICAgIC8vIENvbnZlcnQgJ3NyYycgdG8gYW4gaW50
ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>