<?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>177070</bug_id>
          
          <creation_ts>2017-09-18 07:24:57 -0700</creation_ts>
          <short_desc>[JSC] Consider dropping JSObjectSetPrototype feature for JSGlobalObject</short_desc>
          <delta_ts>2017-09-27 12:24:57 -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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1349887</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-18 07:24:57 -0700</bug_when>
    <thetext>Now, JSGlobalObject is an immutable prototype exotic object. It means that we cannot change the [[Prototype]] of JSGlobalObject.
However, our JSC API allows us to change it specially.

What do you think of dropping this feature?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349985</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-18 10:57:59 -0700</bug_when>
    <thetext>Seems OK to me, to match the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350026</commentid>
    <comment_count>2</comment_count>
      <attachid>321118</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-18 11:53:52 -0700</bug_when>
    <thetext>Created attachment 321118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350032</commentid>
    <comment_count>3</comment_count>
      <attachid>321118</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-18 11:59:01 -0700</bug_when>
    <thetext>Comment on attachment 321118
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        edge cases.

While we do not allow users to change [[Prototype]] of the global object, our JS API has the way to set custom [[Prototype]] of global object by setting &quot;prototype&quot; of JSClassRef.
So I think it&apos;s ok even in terms of the ability of JSC APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350039</commentid>
    <comment_count>4</comment_count>
      <attachid>321118</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-18 12:26:22 -0700</bug_when>
    <thetext>Comment on attachment 321118
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:15
&gt;&gt; +        edge cases.
&gt; 
&gt; While we do not allow users to change [[Prototype]] of the global object, our JS API has the way to set custom [[Prototype]] of global object by setting &quot;prototype&quot; of JSClassRef.
&gt; So I think it&apos;s ok even in terms of the ability of JSC APIs.

Can we now constant fold toThis on global object? Why doesn&apos;t this patch remove the JSGlobalObject::resetPrototype API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350041</commentid>
    <comment_count>5</comment_count>
      <attachid>321118</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-18 12:29:21 -0700</bug_when>
    <thetext>Comment on attachment 321118
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:15
&gt;&gt;&gt; +        edge cases.
&gt;&gt; 
&gt;&gt; While we do not allow users to change [[Prototype]] of the global object, our JS API has the way to set custom [[Prototype]] of global object by setting &quot;prototype&quot; of JSClassRef.
&gt;&gt; So I think it&apos;s ok even in terms of the ability of JSC APIs.
&gt; 
&gt; Can we now constant fold toThis on global object? Why doesn&apos;t this patch remove the JSGlobalObject::resetPrototype API?

Not yet. I&apos;m now removing resetPrototype things to perform constant folding GlobalThis by ensuring that prototype is not changed after instantiation.
But resetPrototype still exists in the other places. This patch is a first step to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350047</commentid>
    <comment_count>6</comment_count>
      <attachid>321118</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-18 12:37:23 -0700</bug_when>
    <thetext>Comment on attachment 321118
Patch

Thank you for your reviews!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350055</commentid>
    <comment_count>7</comment_count>
      <attachid>321118</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-18 13:06:37 -0700</bug_when>
    <thetext>Comment on attachment 321118
Patch

Clearing flags on attachment: 321118

Committed r222175: &lt;http://trac.webkit.org/changeset/222175&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350056</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-18 13:06:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353356</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:24:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693228&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321118</attachid>
            <date>2017-09-18 11:53:52 -0700</date>
            <delta_ts>2017-09-18 13:06:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177070-20170919035351.patch</filename>
            <type>text/plain</type>
            <size>4145</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZGMxMDYyYjdlMmZmNzUxMWUxNzM2NDFiYjI3NjEyZWQzNTlhODkzLi5kNzM3ODE5ODZkYmRlYWFi
MzM4NTk0NGQ1NGNiOGIzMzc2ZGRlYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxNy0wOS0xOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBDb25zaWRlciBkcm9wcGluZyBKU09iamVjdFNldFByb3Rv
dHlwZSBmZWF0dXJlIGZvciBKU0dsb2JhbE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRHVlIHRvIHRoZSBzZWN1cml0eSByZWFzb24sIG91ciBn
bG9iYWwgb2JqZWN0IGlzIGltbXV0YWJsZSBwcm90b3R5cGUgZXhvdGljIG9iamVjdC4KKyAgICAg
ICAgSXQgcHJldmVudHMgdXNlcnMgZnJvbSBpbmplY3RpbmcgcHJveGllcyBpbnRvIHRoZSBwcm90
b3R5cGUgY2hhaW4gb2YgdGhlIGdsb2JhbCBvYmplY3RbMV0uCisgICAgICAgIEJ1dCBvdXIgSlND
IEFQSSBkb2VzIG5vdCByZXNwZWN0IHRoaXMgYXR0cmlidXRlLCBhbmQgYWxsb3dzIHVzZXJzIHRv
IGNoYW5nZSBbW1Byb3RvdHlwZV1dCisgICAgICAgIG9mIHRoZSBnbG9iYWwgb2JqZWN0IGFmdGVy
IGluc3RhbnRpYXRpbmcgaXQuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoaXMgZmVh
dHVyZS4gT25jZSBnbG9iYWwgb2JqZWN0IGlzIGluc3RhbnRpYXRlZCwgd2UgY2Fubm90IGNoYW5n
ZSBbW1Byb3RvdHlwZV1dCisgICAgICAgIG9mIHRoZSBnbG9iYWwgb2JqZWN0LiBJdCBkcm9wcyBK
U0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUgdXNlLCB3aGljaCBpbnZvbHZlcyBHbG9iYWxU
aGlzCisgICAgICAgIGVkZ2UgY2FzZXMuCisKKyAgICAgICAgWzFdOiBodHRwczovL2dpdGh1Yi5j
b20vdGMzOS9lY21hMjYyL2NvbW1pdC85MzVkYWQ0MjgzZDA0NWJjMDljNjdhMjU5Mjc5NzcyZDAx
YjNkMzNkCisKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmpl
Y3RTZXRQcm90b3R5cGUpOgorICAgICAgICAqIEFQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RD
bGFzc1Rlc3QuYzoKKyAgICAgICAgKGdsb2JhbE9iamVjdFNldFByb3RvdHlwZVRlc3QpOgorCiAy
MDE3LTA5LTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIFtERkddIFJlbW92ZSBUb1RoaXMgbW9yZSBhZ2dyZXNzaXZlbHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggMjQ5YjU1NGQzYjBiZjQ5ZmQxY2IzOWMy
OWZkZDUxMjI3OWNmYWZhZS4uNzkwZjhhYmQyOWUxYjJjYWJlYzZiZTZkODQyOWY5ZWIzNjk0MTdl
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTI2Nywx
NiArMjY3LDggQEAgdm9pZCBKU09iamVjdFNldFByb3RvdHlwZShKU0NvbnRleHRSZWYgY3R4LCBK
U09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgdmFsdWUKIAogICAgIEpTT2JqZWN0KiBqc09i
amVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZh
bHVlKTsKLQotICAgIGlmIChKU1Byb3h5KiBwcm94eSA9IGpzRHluYW1pY0Nhc3Q8SlNQcm94eSo+
KHZtLCBqc09iamVjdCkpIHsKLSAgICAgICAgaWYgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odm0sIHByb3h5LT50YXJnZXQoKSkp
IHsKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVzZXRQcm90b3R5cGUodm0sIGpzVmFsdWUu
aXNPYmplY3QoKSA/IGpzVmFsdWUgOiBqc051bGwoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgLy8gU29tZWRheSB3ZSBtaWdodCB1c2UgcHJveGllcyBmb3Igc29t
ZXRoaW5nIG90aGVyIHRoYW4gSlNHbG9iYWxPYmplY3RzLCBidXQgdG9kYXkgaXMgbm90IHRoYXQg
ZGF5LgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KICAgICBq
c09iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBqc1ZhbHVlLmlzT2JqZWN0KCkgPyBqc1Zh
bHVlIDoganNOdWxsKCkpOworICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIG51bGxw
dHIpOwogfQogCiBib29sIEpTT2JqZWN0SGFzUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXN0b21HbG9iYWxPYmplY3RD
bGFzc1Rlc3QuYwppbmRleCA5NzZhODgxYjNiYmI4N2RkNjFlNTM5ZDAwMWM2M2U1YmEzZDAzNmUy
Li5hYzU0NzFhNjc0MWJmZjkzYzcwMGJmM2IzYWFjNmVkMzg3NDlmMGJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVz
dC5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2Jq
ZWN0Q2xhc3NUZXN0LmMKQEAgLTExMCwxOSArMTEwLDExIEBAIHZvaWQgZ2xvYmFsT2JqZWN0U2V0
UHJvdG90eXBlVGVzdCgpCiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBKU0dsb2Jh
bENvbnRleHRDcmVhdGUoZ2xvYmFsKTsKICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU0NvbnRl
eHRHZXRHbG9iYWxPYmplY3QoY29udGV4dCk7CiAKKyAgICBKU1ZhbHVlUmVmIG9yaWdpbmFsUHJv
dG90eXBlID0gSlNPYmplY3RHZXRQcm90b3R5cGUoY29udGV4dCwgb2JqZWN0KTsKICAgICBKU09i
amVjdFJlZiBhYm92ZSA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCAwLCAwKTsKLSAgICBKU1N0cmlu
Z1JlZiB0ZXN0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInRlc3QiKTsKLSAgICBK
U1ZhbHVlUmVmIHZhbHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgdGVzdCk7Ci0gICAg
SlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBhYm92ZSwgdGVzdCwgdmFsdWUsIGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udEVudW0sIDApOwotCiAgICAgSlNPYmplY3RTZXRQcm90b3R5cGUoY29u
dGV4dCwgb2JqZWN0LCBhYm92ZSk7Ci0gICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoInRlc3QgPT09IFwidGVzdFwiIik7Ci0gICAgSlNWYWx1ZVJl
ZiByZXN1bHQgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwgMCwgMCwgMCwgMCk7
Ci0KLSAgICBhc3NlcnRUcnVlKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgcmVzdWx0KSwgInRl
c3QgPT09IFwidGVzdFwiIik7Ci0KLSAgICBKU1N0cmluZ1JlbGVhc2UodGVzdCk7Ci0gICAgSlNT
dHJpbmdSZWxlYXNlKHNjcmlwdCk7CisgICAgSlNWYWx1ZVJlZiBwcm90b3R5cGVBZnRlckNoYW5n
aW5nQXR0ZW1wdCA9IEpTT2JqZWN0R2V0UHJvdG90eXBlKGNvbnRleHQsIG9iamVjdCk7CisgICAg
YXNzZXJ0VHJ1ZShKU1ZhbHVlSXNTdHJpY3RFcXVhbChjb250ZXh0LCBwcm90b3R5cGVBZnRlckNo
YW5naW5nQXR0ZW1wdCwgb3JpZ2luYWxQcm90b3R5cGUpLCAiR2xvYmFsIG9iamVjdCdzIFtbUHJv
dG90eXBlXV0gY2Fubm90IGJlIGNoYW5nZWQgYWZ0ZXIgaW5zdGFudGlhdGluZyBpdCIpOwogfQog
CiB2b2lkIGdsb2JhbE9iamVjdFByaXZhdGVQcm9wZXJ0eVRlc3QoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>