<?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>64387</bug_id>
          
          <creation_ts>2011-07-12 13:46:27 -0700</creation_ts>
          <short_desc>DFG JIT put_by_id transition caching does not inform the GC about the structure and prototype chain that it is referencing</short_desc>
          <delta_ts>2011-07-12 14:52:09 -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>0</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>435919</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-12 13:46:27 -0700</bug_when>
    <thetext>The DFG JIT, like the old JIT, may perform put_by_id transition caching.  In a transition cache, code is emitted that changes the structure of an object, so long as the object has a specific previous structure, and it has a specific prototype chain.  The code contains immediates referencing the old structure, the new structure, and the prototype chain.  Hence, the code is only correct if the GC keeps all of these objects (structures and prototypes) alive.  To do so, the DFG JIT must inform the GC that it has pinned those objects.  Currently, the DFG JIT does not do this, which results in spurious crashes on websites like gmail.com.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435931</commentid>
    <comment_count>1</comment_count>
      <attachid>100557</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-12 14:02:16 -0700</bug_when>
    <thetext>Created attachment 100557
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435986</commentid>
    <comment_count>2</comment_count>
      <attachid>100557</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 14:52:05 -0700</bug_when>
    <thetext>Comment on attachment 100557
the patch

Clearing flags on attachment: 100557

Committed r90854: &lt;http://trac.webkit.org/changeset/90854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435987</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 14:52:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100557</attachid>
            <date>2011-07-12 14:02:16 -0700</date>
            <delta_ts>2011-07-12 14:52:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>puttransitiongcfix_patch_1.diff</filename>
            <type>text/plain</type>
            <size>1560</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTA4NDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDctMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIHB1dF9ieV9pZCB0cmFuc2l0aW9uIGNhY2hpbmcgZG9lcyBub3QgaW5mb3JtIHRoZSBH
QyBhYm91dCB0aGUgc3RydWN0dXJlIGFuZAorICAgICAgICBwcm90b3R5cGUgY2hhaW4gdGhhdCBp
dCBpcyByZWZlcmVuY2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY0Mzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBGaXhlZCB0aGUgcmVsZXZhbnQgY29kZSBpbiBERkdSZXBhdGNoIHRv
IGNhbGwgU3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlkVHJhbnNpdGlvbigpLgorCisgICAg
ICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNhY2hlUHV0
QnlJRCk6CisKIDIwMTEtMDctMTIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEVuc3VyZSBubyBpbnRlcm1lZGlhdGUgV1RGOjpTdHJpbmdzIGFyZSBjcmVhdGVkIHdo
ZW4gY29uY2F0ZW5hdGluZyB3aXRoIHN0cmluZyBsaXRlcmFscwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lvbiA5MDg0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMyw2
ICs0MTMsOCBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAg
ICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
anVtcEF0T2Zmc2V0KHN0dWJJbmZvLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2spLCBlbnRyeUxhYmVs
KTsKICAgICAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbiwgYXBwcm9wcmlhdGVQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogICAg
ICAgICAgICAgCisgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFRyYW5zaXRpb24oKmds
b2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIG9sZFN0cnVjdHVyZSwgc3Ry
dWN0dXJlLCBwcm90b3R5cGVDaGFpbik7CisgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>