<?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>100896</bug_id>
          
          <creation_ts>2012-10-31 15:17:04 -0700</creation_ts>
          <short_desc>JSC: 64-bit llint PC offset can be negative: using an unsigned rshift is a bug.</short_desc>
          <delta_ts>2012-10-31 15:43:28 -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>
          
          <blocked>97586</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>755664</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-10-31 15:17:04 -0700</bug_when>
    <thetext>The 64-bit llint keeps the PC as an offset into the bytecode instead of an address.  When calling out to C++ slow paths, the llint converts the PC to an address before the call, and converts it back to an offset after returning from the call.  Given that the PC may be pointing to a glue trampoline outside of the current bytecode, the resultant offset can be negative.

The shift operation there is used to divide the offset by 8 so that it becomes a bytecode Opcode offset instead of a byte offset.  If the original byte offset is negative, we need to do this shift with a regular rshift instead of the unsigned urshift.  The urshift will convert the negative offset into an erroneously large positive offset.  Using an rshift will do the right thing and divide the offset by 8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755680</commentid>
    <comment_count>1</comment_count>
      <attachid>171731</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-10-31 15:36:00 -0700</bug_when>
    <thetext>Created attachment 171731
Fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755685</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-10-31 15:42:53 -0700</bug_when>
    <thetext>Landed in r133089: &lt;http://trac.webkit.org/changeset/133089&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171731</attachid>
            <date>2012-10-31 15:36:00 -0700</date>
            <delta_ts>2012-10-31 15:37:37 -0700</delta_ts>
            <desc>Fix.</desc>
            <filename>bug-100896.patch</filename>
            <type>text/plain</type>
            <size>1540</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzMDg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDEyLTEwLTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICA2
NC1iaXQgbGxpbnQgUEMgb2Zmc2V0IGNhbiBiZSBuZWdhdGl2ZTogdXNpbmcgYW4gdW5zaWduZWQg
c2hpZnQgaXMgYSBidWcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA4OTYuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4ZWQgdGhlIFBDIG9mZnNldCBkaXZpc2lvbnMgaW4gdGhlIDY0LWJpdCBsbGlu
dCBhc20gdG8gdXNlIHJzaGlmdCBpbnN0ZWFkIG9mIHVyc2hpZnQuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorCiAyMDEyLTEwLTMwICBZdXFpYW5nIFhpYW4g
IDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgogCiAgICAgICAgIGdsc2wtZnVuY3Rpb24tYXRhbi5o
dG1sIFdlYkdMIGNvbmZvcm1hbmNlIHRlc3QgZmFpbHMgYWZ0ZXIgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MTU0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTMz
MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgbWFjcm8gcmVzdG9yZVN0YXRl
QWZ0ZXJDQ2FsbCgpCiAgICAgbW92ZSB0MSwgY2ZyCiAgICAgbW92ZSB0MywgUEIKICAgICBzdWJw
IFBCLCBQQwotICAgIHVyc2hpZnRwIDMsIFBDCisgICAgcnNoaWZ0cCAzLCBQQwogZW5kCiAKIG1h
Y3JvIGNhbGxTbG93UGF0aChzbG93UGF0aCkKQEAgLTE1MjUsNyArMTUyNSw3IEBAIF9sbGludF9v
cF9jYXRjaDoKICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKICAg
ICBsb2FkcCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBD
CiAgICAgc3VicCBQQiwgUEMKLSAgICB1cnNoaWZ0cCAzLCBQQworICAgIHJzaGlmdHAgMywgUEMK
ICAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvblt0M10sIHQwCiAgICAgc3RvcmVwIDAs
IEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uW3QzXQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQy
Cg==
</data>
<flag name="review"
          id="185751"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>