<?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>143532</bug_id>
          
          <creation_ts>2015-04-08 12:48:06 -0700</creation_ts>
          <short_desc>DFG::IntegerCheckCombiningPhase&apos;s wrap-around check shouldn&apos;t trigger C++ undef behavior on wrap-around</short_desc>
          <delta_ts>2015-04-10 09:36:33 -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="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1083702</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-08 12:48:06 -0700</bug_when>
    <thetext>Oh the irony!  We were protecting an optimization that only worked if there was no wrap-around in JavaScript.  But the C++ code had wrap-around, which is undef in C++.  So, if the compiler was smart enough, our compiler would think that there never was wrap-around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083705</commentid>
    <comment_count>1</comment_count>
      <attachid>250376</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-08 12:50:13 -0700</bug_when>
    <thetext>Created attachment 250376
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083716</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-08 13:24:02 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/182562</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084323</commentid>
    <comment_count>3</comment_count>
      <attachid>250376</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-10 09:36:33 -0700</bug_when>
    <thetext>Comment on attachment 250376
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGIntegerCheckCombiningPhase.cpp:367
&gt; +            uint32_t unsignedDifference = maxBound - minBound;
&gt; +            return !(unsignedDifference &gt;&gt; 31);

Could also have written:

   int32_t difference = maxBound - minBound;
   return difference &gt;= 0;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250376</attachid>
            <date>2015-04-08 12:50:13 -0700</date>
            <delta_ts>2015-04-08 13:10:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>2454</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyNTYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE1LTA0LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZSdzIHdyYXAtYXJvdW5kIGNoZWNrIHNob3Vs
ZG4ndCB0cmlnZ2VyIEMrKyB1bmRlZiBiZWhhdmlvciBvbiB3cmFwLWFyb3VuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNTMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBPaCB0aGUgaXJv
bnkhICBXZSB3ZXJlIHByb3RlY3RpbmcgYW4gb3B0aW1pemF0aW9uIHRoYXQgb25seSB3b3JrZWQg
aWYgdGhlcmUgd2FzIG5vIHdyYXAtYXJvdW5kIGluIEphdmFTY3JpcHQuCisgICAgICAgIEJ1dCB0
aGUgQysrIGNvZGUgaGFkIHdyYXAtYXJvdW5kLCB3aGljaCBpcyB1bmRlZiBpbiBDKysuICBTbywg
aWYgdGhlIGNvbXBpbGVyIHdhcyBzbWFydCBlbm91Z2gsIG91ciBjb21waWxlcgorICAgICAgICB3
b3VsZCB0aGluayB0aGF0IHRoZXJlIG5ldmVyIHdhcyB3cmFwLWFyb3VuZC4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgZml4ZXMgYSBmYWlsdXJlIGluIHN0cmVzcy90cmlja3ktYXJyYXktYm9pdW5k
cy1jaGVja3MuanMgd2hlbiBKU0MgaXMgY29tcGlsZWQgd2l0aCBibGVlZGluZy1lZGdlIGNsYW5n
LgorCisgICAgICAgICogZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6aXNWYWxpZCk6CisK
IDIwMTUtMDQtMDcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTGF6aWx5IGluaXRpYWxpemUgTG9nVG9TeXN0ZW1Db25zb2xlIGZsYWcgdG8gcmVkdWNlIG1l
bW9yeSB1c2FnZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hl
Y2tDb21iaW5pbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MjU1NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsOCArMzU1LDE3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKGtleS5tX2tp
bmQpIHsKLSAgICAgICAgY2FzZSBBcnJheUJvdW5kczoKLSAgICAgICAgICAgIHJldHVybiAocmFu
Z2UubV9tYXhCb3VuZCAtIHJhbmdlLm1fbWluQm91bmQpID49IDA7CisgICAgICAgIGNhc2UgQXJy
YXlCb3VuZHM6IHsKKyAgICAgICAgICAgIC8vIEhhdmUgdG8gZG8gdGhpcyBjYXJlZnVsbHkgYmVj
YXVzZSBDKysgY29tcGlsZXJzIGFyZSB0b28gc21hcnQuIEJ1dCBhbGwgd2UncmUgcmVhbGx5IGRv
aW5nIGlzIGRldGVjdGluZyBpZgorICAgICAgICAgICAgLy8gdGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biB0aGUgYm91bmRzIGlzIDJeMzEgb3IgbW9yZS4gSWYgaXQgd2FzLCB0aGVuIHdlJ2QgaGF2ZSB0
byB3b3JyeSBhYm91dCB3cmFwLWFyb3VuZC4KKyAgICAgICAgICAgIC8vIFRoZSB3YXkgd2UnZCBs
aWtlIHRvIHdyaXRlIHRoaXMgZXhwcmVzc2lvbiBpcyAocmFuZ2UubV9tYXhCb3VuZCAtIHJhbmdl
Lm1fbWluQm91bmQpID49IDAsIGJ1dCB0aGF0IGlzIGEKKyAgICAgICAgICAgIC8vIHNpZ25lZCBz
dWJ0cmFjdGlvbiBhbmQgY29tcGFyZSwgd2hpY2ggYWxsb3dzIHRoZSBDKysgY29tcGlsZXIgdG8g
ZG8gYW55dGhpbmcgaXQgd2FudHMgaW4gY2FzZSBvZgorICAgICAgICAgICAgLy8gd3JhcC1hcm91
bmQuCisgICAgICAgICAgICB1aW50MzJfdCBtYXhCb3VuZCA9IHJhbmdlLm1fbWF4Qm91bmQ7Cisg
ICAgICAgICAgICB1aW50MzJfdCBtaW5Cb3VuZCA9IHJhbmdlLm1fbWluQm91bmQ7CisgICAgICAg
ICAgICB1aW50MzJfdCB1bnNpZ25lZERpZmZlcmVuY2UgPSBtYXhCb3VuZCAtIG1pbkJvdW5kOwor
ICAgICAgICAgICAgcmV0dXJuICEodW5zaWduZWREaWZmZXJlbmNlID4+IDMxKTsKKyAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsK
</data>
<flag name="review"
          id="275162"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>