<?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>199291</bug_id>
          
          <creation_ts>2019-06-27 15:13:20 -0700</creation_ts>
          <short_desc>FTL keepAlive()&apos;s patchpoint should also declare that it reads HeapRange::top().</short_desc>
          <delta_ts>2019-06-27 17:31:35 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>justin_michaud</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1548632</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-06-27 15:13:20 -0700</bug_when>
    <thetext>The main purpose of keepAlive() is to communicate to B3 that an LValue needs to be kept alive pass the last opportunity for a GC.  The only way we can get a GC is via a function call.  Hence, what keepAlive() really needs to communicate is that the LValue needs to be kept alive pass the last function call.  Function calls read and write HeapRange::top().  Currently, B3 does not shuffle writes.  Hence, simply inserting the keepAlive() after the calls that can GC is sufficient.  But to be strictly correct, keepAlive() should also declare that it reads HeapRange::top().  This will guarantee that the keepAlive patchpoint won&apos;t ever be moved before the function call should B3 gain the ability to shuffle writes in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548633</commentid>
    <comment_count>1</comment_count>
      <attachid>373057</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-06-27 15:19:04 -0700</bug_when>
    <thetext>Created attachment 373057
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548634</commentid>
    <comment_count>2</comment_count>
      <attachid>373057</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-27 15:23:42 -0700</bug_when>
    <thetext>Comment on attachment 373057
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548647</commentid>
    <comment_count>3</comment_count>
      <attachid>373057</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2019-06-27 16:00:05 -0700</bug_when>
    <thetext>Comment on attachment 373057
proposed patch.

R=me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548674</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-06-27 17:27:23 -0700</bug_when>
    <thetext>Thanks for the reviews.  Landed in r246910: &lt;http://trac.webkit.org/r246910&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548677</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-27 17:31:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/52296737&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373057</attachid>
            <date>2019-06-27 15:19:04 -0700</date>
            <delta_ts>2019-06-27 15:23:42 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-199291.patch</filename>
            <type>text/plain</type>
            <size>2127</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ2OTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE5LTA2LTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
VEwga2VlcEFsaXZlKCkncyBwYXRjaHBvaW50IHNob3VsZCBhbHNvIGRlY2xhcmUgdGhhdCBpdCBy
ZWFkcyBIZWFwUmFuZ2U6OnRvcCgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk5MjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIHNvbGUgcHVycG9zZSBvZiBrZWVwQWxpdmUoKSBpcyB0byBjb21t
dW5pY2F0ZSB0byBCMyB0aGF0IGFuIExWYWx1ZQorICAgICAgICBuZWVkcyB0byBiZSBrZXB0IGFs
aXZlIHBhc3MgdGhlIGxhc3Qgb3Bwb3J0dW5pdHkgZm9yIGEgR0MuICBUaGUgb25seSB3YXkKKyAg
ICAgICAgd2UgY2FuIGdldCBhIEdDIGlzIHZpYSBhIGZ1bmN0aW9uIGNhbGwuICBIZW5jZSwgd2hh
dCBrZWVwQWxpdmUoKSByZWFsbHkKKyAgICAgICAgbmVlZHMgdG8gY29tbXVuaWNhdGUgaXMgdGhh
dCB0aGUgTFZhbHVlIG5lZWRzIHRvIGJlIGtlcHQgYWxpdmUgcGFzcyB0aGUKKyAgICAgICAgbGFz
dCBmdW5jdGlvbiBjYWxsLiAgRnVuY3Rpb24gY2FsbHMgcmVhZCBhbmQgd3JpdGUgSGVhcFJhbmdl
Ojp0b3AoKS4KKyAgICAgICAgQ3VycmVudGx5LCBCMyBkb2VzIG5vdCBzaHVmZmxlIHdyaXRlcy4g
IEhlbmNlLCBzaW1wbHkgaW5zZXJ0aW5nIHRoZQorICAgICAgICBrZWVwQWxpdmUoKSBhZnRlciB0
aGUgY2FsbHMgdGhhdCBjYW4gR0MgaXMgc3VmZmljaWVudC4KKworICAgICAgICBCdXQgdG8gYmUg
c3RyaWN0bHkgY29ycmVjdCwga2VlcEFsaXZlKCkgc2hvdWxkIGFsc28gZGVjbGFyZSB0aGF0IGl0
IHJlYWRzCisgICAgICAgIEhlYXBSYW5nZTo6dG9wKCkuICBUaGlzIHdpbGwgZ3VhcmFudGVlIHRo
YXQgdGhlIGtlZXBBbGl2ZSBwYXRjaHBvaW50IHdvbid0CisgICAgICAgIGV2ZXIgYmUgbW92ZWQg
YmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsIHNob3VsZCBCMyBnYWluIHRoZSBhYmlsaXR5IHRvIHNo
dWZmbGUKKyAgICAgICAgd3JpdGVzIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
a2VlcEFsaXZlKToKKwogMjAxOS0wNi0yNyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgVXBzdHJlYW0gdXNlIG9mIE1BQ0NBVEFMWVNUCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNDY5MDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3Mjg0LDYgKzE3Mjg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKICAgICAgICAg
cGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0cy53cml0ZXNMb2NhbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
ZWZmZWN0cy5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZCh2YWx1ZSwgVmFsdWVSZXA6OkNvbGRBbnkpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7IH0pOwogICAgIH0K
</data>
<flag name="review"
          id="388837"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>