<?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>174523</bug_id>
          
          <creation_ts>2017-07-14 12:42:46 -0700</creation_ts>
          <short_desc>JSC should optimize polymorphic prototypes</short_desc>
          <delta_ts>2017-09-05 15:18:38 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>176391</dup_id>
          
          <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>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1328949</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-07-14 12:42:46 -0700</bug_when>
    <thetext>This idiom is currently slow in JSC:

    function foo()
    {
        class Helper {
            ... things ...
        }
        
        let h = new Helper();
        ... things with h ...
    }
    
    ... call foo() many times ...

We should make it fast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328957</commentid>
    <comment_count>1</comment_count>
      <attachid>315476</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-07-14 12:57:09 -0700</bug_when>
    <thetext>Created attachment 315476
it begins!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345664</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-05 15:18:38 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 176391 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315476</attachid>
            <date>2017-07-14 12:57:09 -0700</date>
            <delta_ts>2017-07-14 12:57:09 -0700</delta_ts>
            <desc>it begins!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>4979</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlz
aW9uIDIxOTUxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUzMiw3IEBAIFN0cmluZyBKU09iamVjdDo6Y2Fs
Y3VsYXRlZENsYXNzTmFtZShKU08KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpLCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSksIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwogICAgIFByb3BlcnR5TmFtZSBjb25zdHJ1
Y3RvcihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IpOwogICAgIGlmIChvYmplY3Qt
PmdldFByb3BlcnR5U2xvdChleGVjLCBjb25zdHJ1Y3Rvciwgc2xvdCkpIHsKICAgICAgICAgaWYg
KHNsb3QuaXNWYWx1ZSgpKSB7CkBAIC0xNjU3LDcgKzE2NTcsNyBAQCBib29sIEpTT2JqZWN0Ojpz
ZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAKICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50
b1RoaXModGhpcywgZXhlYywgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CiAKLSAgICBpZiAodGhp
cy0+Z2V0UHJvdG90eXBlRGlyZWN0KCkgPT0gcHJvdG90eXBlKQorICAgIGlmICh0aGlzLT5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVjKTsKQEAgLTE2
NzYsNyArMTY3Niw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMK
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTUz
NAogICAgICAgICBpZiAoVU5MSUtFTFkoYXNPYmplY3QobmV4dFByb3RvdHlwZSktPnR5cGUoKSA9
PSBQcm94eU9iamVjdFR5cGUpKQogICAgICAgICAgICAgYnJlYWs7IC8vIFdlJ3JlIGRvbmUuIFNl
dCB0aGUgcHJvdG90eXBlLgotICAgICAgICBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFBy
b3RvdHlwZSktPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBuZXh0UHJvdG90eXBlID0g
YXNPYmplY3QobmV4dFByb3RvdHlwZSktPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgfQog
ICAgIHNldFByb3RvdHlwZURpcmVjdCh2bSwgcHJvdG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE2ODksNyArMTY4OSw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVj
dCogb2IKIAogSlNWYWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSopCiB7Ci0gICAgcmV0dXJuIG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7
CisgICAgcmV0dXJuIG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKIH0KIAogYm9vbCBK
U09iamVjdDo6c2V0UHJvdG90eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHBy
b3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCkKQEAgLTI1MTIsNiArMjUxMiw4IEBA
IHZvaWQgSlNPYmplY3Q6OmRlYWxsb2NhdGVTcGFyc2VJbmRleE1hcCgKIAogYm9vbCBKU09iamVj
dDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICAKICAgICBmb3IgKEpTT2JqZWN0KiBjdXJyZW50ID0gdGhpczsgOykgewogICAg
ICAgICAvLyBUaGlzIGhhcyB0aGUgc2FtZSBiZWhhdmlvciB3aXRoIHJlc3BlY3QgdG8gcHJvdG90
eXBlcyBhcyBKU09iamVjdDo6cHV0KCkuIEl0IG9ubHkKICAgICAgICAgLy8gYWxsb3dzIGEgcHJv
dG90eXBlIHRvIGludGVyY2VwdCBhIHB1dCBpZiAoYSkgdGhlIHByb3RvdHlwZSBkZWNsYXJlcyB0
aGUgcHJvcGVydHkKQEAgLTI1MzMsNyArMjUzNSw3IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRU
b0ludGVyY2VwdFB1dEJ5SW4KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJyZW50
LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMjU0Myw3ICsy
NTQ1LDkgQEAgYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbgogCiBib29s
IEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYg
cHV0UmVzdWx0KQogewotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBnZXRQcm90b3R5cGVE
aXJlY3QoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIAorICAgIEpTVmFsdWUgcHJv
dG90eXBlVmFsdWUgPSBnZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgIGlmIChwcm90b3R5cGVW
YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyMTk1MTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzAsNiArMTMwLDcgQEAgcHVibGljOgogICAgIC8vIEl0IGlzIHZhbGlkIHRvIHVzZSB0aG91
Z2ggd2hlbiB5b3Uga25vdyB0aGF0IHlvdSB3YW50IHRvIGRpcmVjdGx5IGdldCBpdAogICAgIC8v
IHdpdGhvdXQgY29uc3VsdGluZyB0aGUgbWV0aG9kIHRhYmxlLiBUaGlzIGlzIGFraW4gdG8gZ2V0
dGluZyB0aGUgW1tQcm90b3R5cGVdXQogICAgIC8vIGludGVybmFsIGZpZWxkIGRpcmVjdGx5IGFz
IGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICBKU1ZhbHVlIGdldFByb3RvdHlw
ZURpcmVjdChWTSYgdm0pIGNvbnN0OwogICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlRGlyZWN0KCkg
Y29uc3Q7CiAKICAgICAvLyBUaGlzIHNldHMgdGhlIHByb3RvdHlwZSB3aXRob3V0IGNoZWNraW5n
IGZvciBjeWNsZXMgYW5kIHdpdGhvdXQKQEAgLTEyODksOSArMTI5MCwxNCBAQCBpbmxpbmUgSlNP
YmplY3Q6OkpTT2JqZWN0KFZNJiB2bSwgU3RydWN0CiB7CiB9CiAKK2lubGluZSBKU1ZhbHVlIEpT
T2JqZWN0OjpnZXRQcm90b3R5cGVEaXJlY3QoVk0mIHZtKSBjb25zdAoreworICAgIHJldHVybiBz
dHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90b3R5cGUoKTsKK30KKwogaW5saW5lIEpTVmFsdWUgSlNP
YmplY3Q6OmdldFByb3RvdHlwZURpcmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICByZXR1cm4gZ2V0UHJvdG90eXBlRGlyZWN0KCp2
bSgpKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlwZShWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYykKQEAgLTEyOTksNyArMTMwNSw3IEBAIGlubGluZSBKU1ZhbHVlIEpT
T2JqZWN0OjpnZXRQcm90b3R5cGUoVk0KICAgICBhdXRvIGdldFByb3RvdHlwZU1ldGhvZCA9IG1l
dGhvZFRhYmxlKHZtKS0+Z2V0UHJvdG90eXBlOwogICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90b3R5
cGVGdW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3RvdHlw
ZTsKICAgICBpZiAoTElLRUxZKGdldFByb3RvdHlwZU1ldGhvZCA9PSBkZWZhdWx0R2V0UHJvdG90
eXBlKSkKLSAgICAgICAgcmV0dXJuIGdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICByZXR1
cm4gZ2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICByZXR1cm4gZ2V0UHJvdG90eXBlTWV0aG9k
KHRoaXMsIGV4ZWMpOwogfQogCkBAIC0xMzg4LDcgKzEzOTQsNyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6OmdldFByb3BlcnR5CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
c3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgaWYg
KG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVyZSwgcHJvcGVy
dHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gZ2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAgICAgaWYgKCFwcm90
b3R5cGUuaXNPYmplY3QoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBvYmplY3QgPSBh
c09iamVjdChwcm90b3R5cGUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>