<?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>160733</bug_id>
          
          <creation_ts>2016-08-10 00:45:51 -0700</creation_ts>
          <short_desc>[JSC] Speed up SparseCollection &amp; related maps</short_desc>
          <delta_ts>2016-08-10 14:26:59 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1218988</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-10 00:45:51 -0700</bug_when>
    <thetext>[JSC] Speed up SparseCollection &amp; related maps</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218991</commentid>
    <comment_count>1</comment_count>
      <attachid>285721</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-10 00:51:56 -0700</bug_when>
    <thetext>Created attachment 285721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218993</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-10 00:54:28 -0700</bug_when>
    <thetext>Numbers on MBP below. I don&apos;t think this is relevant for MBP, I am more interested in the bots for dual-core configs.

                                                  Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                    4.7261+-0.0859     ?      4.7345+-0.0965        ?
   3d-morph                                   4.9893+-0.0508     ?      5.0213+-0.0738        ?
   3d-raytrace                                4.9468+-0.0370     ?      5.0262+-0.0889        ? might be 1.0161x slower
   access-binary-trees                        1.9674+-0.0196     ?      1.9767+-0.0544        ?
   access-fannkuch                            5.6886+-0.1146     !      5.9070+-0.0552        ! definitely 1.0384x slower
   access-nbody                               2.4529+-0.0628            2.3820+-0.0253          might be 1.0298x faster
   access-nsieve                              2.9535+-0.0570            2.9250+-0.0169        
   bitops-3bit-bits-in-byte                   1.0879+-0.0260     ?      1.0904+-0.0313        ?
   bitops-bits-in-byte                        2.6040+-0.0539            2.5926+-0.0471        
   bitops-bitwise-and                         1.9998+-0.0345            1.9760+-0.0147          might be 1.0121x faster
   bitops-nsieve-bits                         3.0860+-0.0283     ?      3.0919+-0.0343        ?
   controlflow-recursive                      2.2840+-0.0195            2.2771+-0.0193        
   crypto-aes                                 4.3992+-0.0604            4.3843+-0.0637        
   crypto-md5                                 2.6474+-0.0244            2.6395+-0.0191        
   crypto-sha1                                2.7947+-0.0699            2.7183+-0.0296          might be 1.0281x faster
   date-format-tofte                          6.4832+-0.1073            6.4402+-0.0280        
   date-format-xparb                          4.6997+-0.0619     ?      4.7147+-0.0674        ?
   math-cordic                                2.7077+-0.0208     ?      2.7264+-0.0184        ?
   math-partial-sums                          4.0195+-0.0813            3.9907+-0.0581        
   math-spectral-norm                         2.0682+-0.0566            2.0334+-0.0395          might be 1.0172x faster
   regexp-dna                                 6.3291+-0.1092     ?      6.4171+-0.1728        ? might be 1.0139x slower
   string-base64                              4.0062+-0.1028     ?      4.0149+-0.0945        ?
   string-fasta                               5.5715+-0.1064            5.4995+-0.0511          might be 1.0131x faster
   string-tagcloud                            8.5775+-0.2117     ^      8.2740+-0.0916        ^ definitely 1.0367x faster
   string-unpack-code                        18.2859+-0.3425     ?     18.4312+-0.4127        ?
   string-validate-input                      4.0729+-0.0477            4.0387+-0.0552        

   &lt;arithmetic&gt;                               4.4403+-0.0177            4.4355+-0.0213          might be 1.0011x faster

                                                  Conf#1                    Conf#2                                      
Octane:
   encrypt                                   0.15507+-0.00154    ?     0.15536+-0.00134       ?
   decrypt                                   2.76505+-0.03807          2.75964+-0.01474       
   deltablue                        x2       0.13048+-0.00091    ?     0.13089+-0.00078       ?
   earley                                    0.28601+-0.00106    ^     0.28399+-0.00067       ^ definitely 1.0071x faster
   boyer                                     4.94989+-0.04288          4.94168+-0.02736       
   navier-stokes                    x2       4.93369+-0.01234    ?     4.93813+-0.01067       ?
   raytrace                         x2       0.78915+-0.00300    ?     0.79218+-0.00258       ?
   richards                         x2       0.08257+-0.00082          0.08253+-0.00080       
   splay                            x2       0.33799+-0.00123    ?     0.33815+-0.00053       ?
   regexp                           x2      16.41046+-0.24608    !    16.92794+-0.21083       ! definitely 1.0315x slower
   pdfjs                            x2      38.44409+-0.16747         38.13687+-0.16331       
   mandreel                         x2      42.61708+-0.11795         42.50511+-0.12022       
   gbemu                            x2      29.45155+-0.10237         29.40763+-0.08854       
   closure                                   0.48012+-0.00120    ?     0.48228+-0.00106       ?
   jquery                                    6.43811+-0.01698          6.41802+-0.01232       
   box2d                            x2       9.23391+-0.03311    ^     9.14402+-0.01908       ^ definitely 1.0098x faster
   zlib                             x2     358.58399+-3.71226    ?   359.20175+-2.80684       ?
   typescript                       x2     598.18347+-3.63030        593.23887+-2.47101       

   &lt;geometric&gt;                               4.99866+-0.00932    ?     5.00115+-0.00708       ? might be 1.0005x slower

                                                  Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                   86.581+-0.782             86.201+-0.720         
   audio-beat-detection                       38.800+-0.074      ?      38.855+-0.119         ?
   audio-dft                                  99.401+-1.354             98.560+-1.191         
   audio-fft                                  30.193+-0.029      ?      30.355+-0.242         ?
   audio-oscillator                           48.086+-0.170      ?      48.321+-0.499         ?
   imaging-darkroom                           61.294+-0.406      ?      61.523+-0.640         ?
   imaging-desaturate                         43.871+-0.379      ?      44.398+-0.834         ? might be 1.0120x slower
   imaging-gaussian-blur                      60.382+-0.762      ?      60.957+-1.005         ?
   json-parse-financial                       34.196+-0.553      ?      34.235+-0.351         ?
   json-stringify-tinderbox                   24.080+-0.723             23.764+-0.568           might be 1.0133x faster
   stanford-crypto-aes                        36.911+-0.159      ?      37.105+-0.267         ?
   stanford-crypto-ccm                        34.079+-0.660      ?      34.460+-0.754         ? might be 1.0112x slower
   stanford-crypto-pbkdf2                     92.815+-0.551             92.679+-0.377         
   stanford-crypto-sha256-iterative           30.898+-0.830             30.547+-0.160           might be 1.0115x faster

   &lt;arithmetic&gt;                               51.542+-0.169      ?      51.569+-0.199         ? might be 1.0005x slower

                                                  Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                               423.1337+-1.1114     ?    423.5357+-1.7526        ?
   cray.c                                   385.6242+-1.6527          383.6395+-1.3958        
   dry.c                                    438.4418+-18.7959    ?    439.2329+-21.7475       ?
   FloatMM.c                                732.6120+-12.5241         725.0609+-11.3600         might be 1.0104x faster
   gcc-loops.cpp                           3596.2006+-11.3758        3593.8597+-12.0773       
   n-body.c                                 801.1809+-2.6053          798.4202+-1.0607        
   Quicksort.c                              392.8017+-1.7963     ?    395.6572+-2.4215        ?
   stepanov_container.cpp                  3268.1336+-10.3936    ?   3275.3264+-10.6962       ?
   Towers.c                                 264.9018+-0.8062          264.8246+-0.6862        

   &lt;geometric&gt;                              718.6115+-3.2411          717.9080+-3.5248          might be 1.0010x faster

                                                  Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                           30.1106+-0.0484           30.1026+-0.0697          might be 1.0003x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219030</commentid>
    <comment_count>3</comment_count>
      <attachid>285721</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-10 09:43:17 -0700</bug_when>
    <thetext>Comment on attachment 285721
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219131</commentid>
    <comment_count>4</comment_count>
      <attachid>285721</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-10 14:26:55 -0700</bug_when>
    <thetext>Comment on attachment 285721
Patch

Clearing flags on attachment: 285721

Committed r204355: &lt;http://trac.webkit.org/changeset/204355&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219132</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-10 14:26:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285721</attachid>
            <date>2016-08-10 00:51:56 -0700</date>
            <delta_ts>2016-08-10 14:26:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160733-20160810005021.patch</filename>
            <type>text/plain</type>
            <size>4078</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NzcxNGM0YjVjNmE4NTg2MzVjMTQ0ZmIyNDIxOGQ4NDU0ZWU3MTA1Li5kMGQ3NDc0OTVjYWMzZTk1
YzFhM2QyZGE0MzhjN2U2ODhmMzQ1NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNi0wOC0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBTcGVlZCB1cCBTcGFyc2VDb2xsZWN0aW9uICYgcmVsYXRl
ZCBtYXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjA3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBP
biBNQkEsIEdyYXBoOjphZGROb2RlKCkgc2hvd3MgdXAgaW4gcHJvZmlsZXMgZHVlIHRvIFNwYXJz
ZUNvbGxlY3Rpb246OmFkZCgpLgorICAgICAgICBUaGlzIGlzIHVuZm9ydHVuYXRlLgorCisgICAg
ICAgIFRoZSBmaXJzdCBpbXByb3ZlbWVudCBpcyB0byBidWlsZCB0aGUgbmV3IHVuaXF1ZV9wdHIg
aW4gdGhlIGVtcHR5IHNsb3QKKyAgICAgICAgaW5zdGVhZCBvZiBtb3ZpbmcgYSBuZXcgdmFsdWUg
aW50byBpdC4KKworICAgICAgICBQcmV2aW91c2x5LCB0aGUgY29kZSB3b3VsZCBsb2FkIHRoZSBw
cmV2aW91cyB2YWx1ZSwgdGVzdCBpZiBpdCBpcyBudWxsCisgICAgICAgIHRoZW4gaW52b2tlIHRo
ZSBkZXN0cnVjdG9yIGFuZCBmaW5hbGx5IGZhc3RGcmVlKCkuIFRoZSBpbml0aWFsIHRlc3QKKyAg
ICAgICAgb2J2aW91c2x5IGZhaWxzIHNvIHRoYXQncyBhIHdob2xlIGJ1bmNoIG9mIGNvZGUgdGhh
dCBpcyBuZXZlciBleGVjdXRlZC4KKworICAgICAgICBXaXRoIHRoZSBuZXcgY29kZSwgd2UganVz
dCBoYXZlIGEgc3RvcmUuCisKKyAgICAgICAgSSBhbHNvIHJlbW92ZWQgdGhlIGJvdW5kcyBjaGVj
a2luZyBvbiBvdXIgbWFwcyBiYXNlZCBvbiBub2RlIGluZGV4LgorICAgICAgICBUaG9zZSBib3Vu
ZHMgY2hlY2tzIGFyZSBuZXZlciBlbGltaW5hdGVkIGJ5IGNsYW5nIGJlY2F1c2UgdGhlIGluZGV4
CisgICAgICAgIGlzIGFsd2F5cyBsb2FkZWQgZnJvbSBtZW1vcnkgaW5zdGVhZCBvZiBiZWluZyBj
b21wdXRlZC4KKyAgICAgICAgVGhlcmUgYXJlIHVuZm9ydHVuYXRlbHkgdG9vIG1hbnkgbm9kZXMg
cHJvY2Vzc2VkIGFuZCB0aGUgYm91bmRzIGNoZWNrcworICAgICAgICBnZXQgY29zdGx5LgorCisg
ICAgICAgICogYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmg6CisgICAgICAgIChKU0M6OkIzOjpTcGFy
c2VDb2xsZWN0aW9uOjphZGQpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAo
SlNDOjpERkc6OkdyYXBoOjphYnN0cmFjdFZhbHVlc0NhY2hlKToKKyAgICAgICAgKiBkZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuaDoKKwogMjAxNi0wOC0wOCAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogaGFzSW5saW5lU3RvcmFn
ZSgpIGluIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oKS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAppbmRleCA5YmMyM2IyMWFmMDMwODYwZjZj
MTExMGYxYmYyZTU4NDM4NDNlMTE4Li4zNGU2MWRhMTMzZjRmYjkzZTk3OGM5MTBjMTdjYjkxYzE1
OWJlYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xs
ZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlv
bi5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluZGV4ID0gbV9pbmRl
eEZyZWVMaXN0LnRha2VMYXN0KCk7CiAKICAgICAgICAgdmFsdWUtPm1faW5kZXggPSBpbmRleDsK
LQotICAgICAgICBtX3ZlY3RvcltpbmRleF0gPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgQVNT
RVJUKCFtX3ZlY3RvcltpbmRleF0pOworICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZlY3Rvcltp
bmRleF0pIHN0ZDo6dW5pcXVlX3B0cjxUPihXVEZNb3ZlKHZhbHVlKSk7CiAKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xNjgsOCArMTY4LDggQEAgcHVibGljOgogICAgIGl0ZXJh
dG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBzaXplKCkpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUPj4gbV92ZWN0b3I7Ci0gICAgVmVj
dG9yPHNpemVfdD4gbV9pbmRleEZyZWVMaXN0OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
VD4sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3ZlY3RvcjsKKyAgICBWZWN0b3I8c2l6ZV90
LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9pbmRleEZyZWVMaXN0OwogfTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXgg
YzEzN2U3ZjJmMzI1YTJjZDU5OTZhNTk4NDY1ZjU3MmUxODVkNjVlNC4uNTJiNGZmYTZmNGYxZDA0
MDZiNmI1NTY0MzlmNmQyZTJhN2QwMTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaApAQCAtMTk5LDcgKzE5OSw3IEBAIHB1YmxpYzoKICAgICBOb2RlKiBub2RlQXQodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXNbaW5kZXhdOyB9CiAgICAgdm9pZCBwYWNr
Tm9kZUluZGljZXMoKTsKIAotICAgIFZlY3RvcjxBYnN0cmFjdFZhbHVlPiYgYWJzdHJhY3RWYWx1
ZXNDYWNoZSgpIHsgcmV0dXJuIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsgfQorICAgIFZlY3RvcjxB
YnN0cmFjdFZhbHVlLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGFic3RyYWN0VmFsdWVzQ2Fj
aGUoKSB7IHJldHVybiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7IH0KIAogICAgIHZvaWQgZGV0aHJl
YWQoKTsKICAgICAKQEAgLTk1Nyw3ICs5NTcsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIEIz
OjpTcGFyc2VDb2xsZWN0aW9uPE5vZGU+IG1fbm9kZXM7Ci0gICAgVmVjdG9yPEFic3RyYWN0VmFs
dWU+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsKKyAgICBWZWN0b3I8QWJzdHJhY3RWYWx1ZSwgMCwg
VW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsKIH07CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAppbmRleCA5NDU5YzdkYTJmYzI3NzVjZWFhMGRmZTNm
ZTQ0NTY5Mzg4ZWNkOWI1Li42MmQ4YzNmNTBmMmYzZmU2ODlhNGZhNzg3OGZkNWU5NzhmZjBhMDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBHcmFwaCYg
bV9ncmFwaDsKIAotICAgIFZlY3RvcjxBYnN0cmFjdFZhbHVlPiYgbV9hYnN0cmFjdFZhbHVlczsK
KyAgICBWZWN0b3I8QWJzdHJhY3RWYWx1ZSwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBtX2Fi
c3RyYWN0VmFsdWVzOwogICAgIE9wZXJhbmRzPEFic3RyYWN0VmFsdWU+IG1fdmFyaWFibGVzOwog
ICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>