<?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>195898</bug_id>
          
          <creation_ts>2019-03-18 11:18:14 -0700</creation_ts>
          <short_desc>Remove the inline capacity of Operands</short_desc>
          <delta_ts>2019-03-18 12:04:16 -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="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1517800</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-03-18 11:18:14 -0700</bug_when>
    <thetext>Operands currently has a vector with an inline capacity of 24.
I tested on JetStream2, and only 4776 functions out of 12035 (that reach the DFG tier) have 24 or fewer elements in it.
This is a major problem, because we have 5 Operands in every DFG::BasicBlock, resulting in 2688 bytes of inline capacity per basic block.
Still on JetStream 2, functions have an average of 18 BB, but those functions whose operands overflow have an average of 27 BB (so we are wasting 72kB on average when compiling them), and the largest function has 1241 BB (!), for a total of 3.3MB being wasted while it is compiled.

So I removed the inline capacity of the vector in Operands, and here are the results:
Baseline Jetstream2:
159.741
159.746
159.989
Baseline RAMification on grouped and jit tests: (end/peak/score)
89.288/89.763/89.526
90.166/90.761/90.418
89.560/90.014/89.787
After optimization Jetstream2:
159.342
161.812
162.037
After optimization RAMification:
89.147/89.644/89.395
89.102.89.585/89.343
88.953/89.536/89.2444

So it looks like a roughly 1% improvement on RAMification (at least the tests where the JIT is enabled), and more surprisingly also a 1% progression on Jetstream2 (although I have more doubts about this one considering the variability in my numbers).
I hope to land this, and get more accurate results from the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517803</commentid>
    <comment_count>1</comment_count>
      <attachid>365035</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-03-18 11:21:29 -0700</bug_when>
    <thetext>Created attachment 365035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517807</commentid>
    <comment_count>2</comment_count>
      <attachid>365035</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-18 11:25:15 -0700</bug_when>
    <thetext>Comment on attachment 365035
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        Still on JetStream 2, functions have an average of 18 BB, but those functions whose operands overflow have an average of 27 BB (so we are wasting 72kB on average when compiling them), and the largest function has 1241 BB (!), for a total of 3.3MB being wasted while it is compiled.

I think FTL::OSRExitDescriptor also includes Operands, and it is kept alive during the code is live :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517830</commentid>
    <comment_count>3</comment_count>
      <attachid>365035</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-18 12:03:38 -0700</bug_when>
    <thetext>Comment on attachment 365035
Patch

Clearing flags on attachment: 365035

Committed r243088: &lt;https://trac.webkit.org/changeset/243088&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517831</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-18 12:03:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517833</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-18 12:04:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/48987979&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365035</attachid>
            <date>2019-03-18 11:21:29 -0700</date>
            <delta_ts>2019-03-18 12:03:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195898-20190318112129.patch</filename>
            <type>text/plain</type>
            <size>2658</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzMDg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDE5LTAzLTE4ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIHRoZSBpbmxpbmUgY2FwYWNpdHkgb2YgT3BlcmFuZHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg5OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9wZXJhbmRzIGN1cnJlbnRseSBo
YXMgYSB2ZWN0b3Igd2l0aCBhbiBpbmxpbmUgY2FwYWNpdHkgb2YgMjQuCisgICAgICAgIEkgdGVz
dGVkIG9uIEpldFN0cmVhbTIsIGFuZCBvbmx5IDQ3NzYgZnVuY3Rpb25zIG91dCBvZiAxMjAzNSAo
dGhhdCByZWFjaCB0aGUgREZHIHRpZXIpIGhhdmUgMjQgb3IgZmV3ZXIgZWxlbWVudHMgaW4gaXQu
CisgICAgICAgIFRoaXMgaXMgYSBtYWpvciBwcm9ibGVtLCBiZWNhdXNlIHdlIGhhdmUgNSBPcGVy
YW5kcyBpbiBldmVyeSBERkc6OkJhc2ljQmxvY2ssIHJlc3VsdGluZyBpbiAyNjg4IGJ5dGVzIG9m
IGlubGluZSBjYXBhY2l0eSBwZXIgYmFzaWMgYmxvY2suCisgICAgICAgIFN0aWxsIG9uIEpldFN0
cmVhbSAyLCBmdW5jdGlvbnMgaGF2ZSBhbiBhdmVyYWdlIG9mIDE4IEJCLCBidXQgdGhvc2UgZnVu
Y3Rpb25zIHdob3NlIG9wZXJhbmRzIG92ZXJmbG93IGhhdmUgYW4gYXZlcmFnZSBvZiAyNyBCQiAo
c28gd2UgYXJlIHdhc3RpbmcgNzJrQiBvbiBhdmVyYWdlIHdoZW4gY29tcGlsaW5nIHRoZW0pLCBh
bmQgdGhlIGxhcmdlc3QgZnVuY3Rpb24gaGFzIDEyNDEgQkIgKCEpLCBmb3IgYSB0b3RhbCBvZiAz
LjNNQiBiZWluZyB3YXN0ZWQgd2hpbGUgaXQgaXMgY29tcGlsZWQuCisgICAgICAgIAorICAgICAg
ICBTbyBJIHJlbW92ZWQgdGhlIGlubGluZSBjYXBhY2l0eSBvZiB0aGUgdmVjdG9yIGluIE9wZXJh
bmRzLCBhbmQgaGVyZSBhcmUgdGhlIHJlc3VsdHM6CisgICAgICAgIEJhc2VsaW5lIEpldHN0cmVh
bTI6CisgICAgICAgIDE1OS43NDEKKyAgICAgICAgMTU5Ljc0NgorICAgICAgICAxNTkuOTg5Cisg
ICAgICAgIEJhc2VsaW5lIFJBTWlmaWNhdGlvbiBvbiBncm91cGVkIGFuZCBqaXQgdGVzdHM6IChl
bmQvcGVhay9zY29yZSkKKyAgICAgICAgODkuMjg4Lzg5Ljc2My84OS41MjYKKyAgICAgICAgOTAu
MTY2LzkwLjc2MS85MC40MTgKKyAgICAgICAgODkuNTYwLzkwLjAxNC84OS43ODcKKyAgICAgICAg
QWZ0ZXIgb3B0aW1pemF0aW9uIEpldHN0cmVhbTI6CisgICAgICAgIDE1OS4zNDIKKyAgICAgICAg
MTYxLjgxMgorICAgICAgICAxNjIuMDM3CisgICAgICAgIEFmdGVyIG9wdGltaXphdGlvbiBSQU1p
ZmljYXRpb246CisgICAgICAgIDg5LjE0Ny84OS42NDQvODkuMzk1CisgICAgICAgIDg5LjEwMi44
OS41ODUvODkuMzQzCisgICAgICAgIDg4Ljk1My84OS41MzYvODkuMjQ0NAorICAgICAgICAKKyAg
ICAgICAgU28gaXQgbG9va3MgbGlrZSBhIHJvdWdobHkgMSUgaW1wcm92ZW1lbnQgb24gUkFNaWZp
Y2F0aW9uIChhdCBsZWFzdCB0aGUgdGVzdHMgd2hlcmUgdGhlIEpJVCBpcyBlbmFibGVkKSwgYW5k
IG1vcmUgc3VycHJpc2luZ2x5IGFsc28gYSAxJSBwcm9ncmVzc2lvbiBvbiBKZXRzdHJlYW0yIChh
bHRob3VnaCBJIGhhdmUgbW9yZSBkb3VidHMgYWJvdXQgdGhpcyBvbmUgY29uc2lkZXJpbmcgdGhl
IHZhcmlhYmlsaXR5IGluIG15IG51bWJlcnMpLgorICAgICAgICBJIGhvcGUgdG8gbGFuZCB0aGlz
LCBhbmQgZ2V0IG1vcmUgYWNjdXJhdGUgcmVzdWx0cyBmcm9tIHRoZSBib3RzLgorCisgICAgICAg
ICogYnl0ZWNvZGUvT3BlcmFuZHMuaDoKKwogMjAxOS0wMy0xOCAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIGpzU3Vic3RyaW5nIHNob3VsZCByZXNv
bHZlIHJvcGUgYmVmb3JlIGNhbGxpbmcgSlNSb3BlU3RyaW5nOjpjcmVhdGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCShyZXZpc2lvbiAyNDI3NjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjY2LDcgKzI2Niw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gVGhl
IGZpcnN0IG1fbnVtQXJndW1lbnRzIG9mIG1fdmFsdWVzIGFyZSBhcmd1bWVudHMsIHRoZSByZXN0
IGFyZSBsb2NhbHMuCi0gICAgVmVjdG9yPFQsIDI0LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV92
YWx1ZXM7CisgICAgVmVjdG9yPFQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3ZhbHVlczsK
ICAgICB1bnNpZ25lZCBtX251bUFyZ3VtZW50czsKIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>