<?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>112141</bug_id>
          
          <creation_ts>2013-03-12 06:01:27 -0700</creation_ts>
          <short_desc>LLInt CLoop backend misses Double2Ints() on 32bit architectures</short_desc>
          <delta_ts>2013-03-12 09:03:04 -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="Gabor Rapcsanyi">rgabor</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>853396</commentid>
    <comment_count>0</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2013-03-12 06:01:27 -0700</bug_when>
    <thetext>LLInt cloop backend misses Double2Ints() on 32bit architectures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853405</commentid>
    <comment_count>1</comment_count>
      <attachid>192723</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2013-03-12 06:19:16 -0700</bug_when>
    <thetext>Created attachment 192723
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853494</commentid>
    <comment_count>2</comment_count>
      <attachid>192723</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-12 08:26:05 -0700</bug_when>
    <thetext>Comment on attachment 192723
proposed fix

View in context: https://bugs.webkit.org/attachment.cgi?id=192723&amp;action=review

R=me, but it looks like both Ints2Double and Double2Ints are not endianness-friendly.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:130
&gt; +static void Double2Ints(double val, uint32_t&amp; lo, uint32_t&amp; hi)
&gt; +{
&gt; +    union {
&gt; +        double dval;
&gt; +        uint64_t ival64;
&gt; +    } u;
&gt; +    u.dval = val;
&gt; +    hi = static_cast&lt;uint32_t&gt;(u.ival64 &gt;&gt; 32);
&gt; +    lo = static_cast&lt;uint32_t&gt;(u.ival64);
&gt; +}

Is this right?  Does Double2Ints mandate &apos;hi&apos; and &apos;lo&apos; being the low-order bits and the high-order bits, or are they supposed to be the first bits and the last bits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853498</commentid>
    <comment_count>3</comment_count>
      <attachid>192723</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 08:30:24 -0700</bug_when>
    <thetext>Comment on attachment 192723
proposed fix

Clearing flags on attachment: 192723

Committed r145551: &lt;http://trac.webkit.org/changeset/145551&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853499</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 08:30:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853521</commentid>
    <comment_count>5</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2013-03-12 09:03:04 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 192723 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192723&amp;action=review
&gt; 
&gt; R=me, but it looks like both Ints2Double and Double2Ints are not endianness-friendly.
&gt; 

Nope they don&apos;t, should we make it endianness-friendly?

&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:130
&gt; &gt; +static void Double2Ints(double val, uint32_t&amp; lo, uint32_t&amp; hi)
&gt; &gt; +{
&gt; &gt; +    union {
&gt; &gt; +        double dval;
&gt; &gt; +        uint64_t ival64;
&gt; &gt; +    } u;
&gt; &gt; +    u.dval = val;
&gt; &gt; +    hi = static_cast&lt;uint32_t&gt;(u.ival64 &gt;&gt; 32);
&gt; &gt; +    lo = static_cast&lt;uint32_t&gt;(u.ival64);
&gt; &gt; +}
&gt; 
&gt; Is this right?  Does Double2Ints mandate &apos;hi&apos; and &apos;lo&apos; being the low-order bits and the high-order bits, or are they supposed to be the first bits and the last bits?

I&apos;ve just made it as the Ints2Double. We tried it on JSC tests and everything went fine. So I think its ok for the little-endian architecture at least.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192723</attachid>
            <date>2013-03-12 06:19:16 -0700</date>
            <delta_ts>2013-03-12 08:30:24 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>cloop.patch</filename>
            <type>text/plain</type>
            <size>2353</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEzZjdlNjQuLmQ3YTAwMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTAzLTEyICBHYWJvciBSYXBjc2Fu
eWkgIDxyZ2Fib3JAd2Via2l0Lm9yZz4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMTQxCisgICAgICAgIExMSW50IENMb29wIGJhY2tlbmQgbWlz
c2VzIERvdWJsZTJJbnRzKCkgb24gMzJiaXQgYXJjaGl0ZWN0dXJlcworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBEb3VibGUySW50cygp
IGluIENMb29wIGJhY2tlbmQgb2YgTExJbnQgb24gMzJiaXQgYXJjaGl0ZWN0dXJlcy4KKworICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoTExJbnQpOgor
ICAgICAgICAoSlNDOjpMTEludDo6RG91YmxlMkludHMpOgorICAgICAgICAqIG9mZmxpbmVhc20v
Y2xvb3AucmI6CisKIDIwMTMtMDMtMTIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNDU0ODIpOiBJdCBicm9rZSAzMyBqc2MgdGVz
dHMgYW5kIHppbGxpb24gbGF5b3V0IHRlc3RzIG9uIGFsbCBwbGF0Zm9ybQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGQz
YzczYjAuLjE4NmM2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAKQEAgLTExNyw2ICsxMTcsMTcgQEAgc3RhdGljIGRvdWJs
ZSBJbnRzMkRvdWJsZSh1aW50MzJfdCBsbywgdWludDMyX3QgaGkpCiAgICAgdS5pdmFsNjQgPSAo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGhpKSA8PCAzMikgfCBsbzsKICAgICByZXR1cm4gdS5kdmFs
OwogfQorCitzdGF0aWMgdm9pZCBEb3VibGUySW50cyhkb3VibGUgdmFsLCB1aW50MzJfdCYgbG8s
IHVpbnQzMl90JiBoaSkKK3sKKyAgICB1bmlvbiB7CisgICAgICAgIGRvdWJsZSBkdmFsOworICAg
ICAgICB1aW50NjRfdCBpdmFsNjQ7CisgICAgfSB1OworICAgIHUuZHZhbCA9IHZhbDsKKyAgICBo
aSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih1Lml2YWw2NCA+PiAzMik7CisgICAgbG8gPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4odS5pdmFsNjQpOworfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJf
NjQpCiAKIH0gLy8gbmFtZXNwYWNlIExMaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2Nsb29wLnJiCmluZGV4IDE0Y2FjYjkuLmY2YmQ1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBjbGFzcyBJbnN0
cnVjdGlvbgogICAgICAgICAjIDMyLWJpdCBpbnN0cnVjdGlvbjogZjJkaWkgZGJsT3AgaW50MzJM
b09wIGludDMySGlPcCAoYmFzZWQgb24gQVJNdjcpCiAgICAgICAgICMgRW5jb2RlIGEgNjQtYml0
IGRvdWJsZSBpbnRvIDIgMzItYml0IGludHMgKGxvdyBhbmQgaGlnaCkuCiAgICAgICAgIHdoZW4g
ImZkMmlpIgotICAgICAgICAgICAgJGFzbS5wdXRjICJEb3VibGUySW50cygje29wZXJhbmRzWzBd
LmNsVmFsdWUoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLmNsVmFsdWV9LCAje29wZXJhbmRzWzJd
LmNsVmFsdWV9KTsiCisgICAgICAgICAgICAkYXNtLnB1dGMgIkRvdWJsZTJJbnRzKCN7b3BlcmFu
ZHNbMF0uY2xWYWx1ZSg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6dWludDMyKX0s
ICN7b3BlcmFuZHNbMl0uY2xWYWx1ZSg6dWludDMyKX0pOyIKIAogICAgICAgICAjIDY0LWJpdCBp
bnN0cnVjdGlvbjogZnEyZCBpbnQ2NE9wIGRibE9wIChiYXNlZCBvbiBYNjQpCiAgICAgICAgICMg
Q29weSBhIGJpdC1lbmNvZGVkIGRvdWJsZSBpbiBhIDY0LWJpdCBpbnQgcmVnaXN0ZXIgdG8gYSBk
b3VibGUgcmVnaXN0ZXIuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>