RESOLVED FIXED 109247
JSC: Lower minimum PropertyTable size.
https://bugs.webkit.org/show_bug.cgi?id=109247
Summary JSC: Lower minimum PropertyTable size.
Andreas Kling
Reported 2013-02-07 19:15:23 PST
I think we can cut some crust off of the malloc cheese here.
Attachments
Proposed patch (1.55 KB, patch)
2013-02-07 19:19 PST, Andreas Kling
no flags
Andreas Kling
Comment 1 2013-02-07 19:19:00 PST
Created attachment 187219 [details] Proposed patch 3.32 MB of delicious savings on Membuster3. Looks mostly performance-neutral. TipOfTree MyChanges SunSpider: 3d-cube 6.5232+-0.0793 6.4105+-0.0852 might be 1.0176x faster 3d-morph 5.9824+-0.0419 ? 6.0351+-0.0399 ? 3d-raytrace 7.0240+-0.0372 ? 7.0819+-0.0669 ? access-binary-trees 1.2366+-0.0203 1.2335+-0.0166 access-fannkuch 4.8975+-0.0852 ? 4.8979+-0.0784 ? access-nbody 2.8287+-0.0309 ? 2.8343+-0.0150 ? access-nsieve 3.0966+-0.0468 3.0958+-0.0553 bitops-3bit-bits-in-byte 1.3292+-0.0144 1.3240+-0.0111 bitops-bits-in-byte 1.8756+-0.0227 1.8342+-0.0465 might be 1.0226x faster bitops-bitwise-and 1.7728+-0.0199 1.7710+-0.0259 bitops-nsieve-bits 2.6623+-0.0207 ? 2.6625+-0.0185 ? controlflow-recursive 1.7381+-0.0093 ? 1.7391+-0.0123 ? crypto-aes 5.2019+-0.0806 ? 5.2510+-0.0927 ? crypto-md5 2.5237+-0.0421 ? 2.5624+-0.0566 ? might be 1.0153x slower crypto-sha1 2.2067+-0.0511 2.2048+-0.0585 date-format-tofte 10.3054+-0.1227 ? 10.3783+-0.1145 ? date-format-xparb 10.1474+-0.1754 9.9178+-0.1214 might be 1.0232x faster math-cordic 2.6842+-0.0479 2.6534+-0.0448 might be 1.0116x faster math-partial-sums 6.4298+-0.0692 6.4233+-0.0658 math-spectral-norm 1.8516+-0.0156 1.8489+-0.0202 regexp-dna 6.7324+-0.0719 6.6581+-0.0687 might be 1.0111x faster string-base64 3.4500+-0.0493 ? 3.4816+-0.0485 ? string-fasta 6.4741+-0.2022 6.4210+-0.1034 string-tagcloud 9.6362+-0.1075 9.6076+-0.1284 string-unpack-code 16.4044+-0.1022 ? 16.4703+-0.1639 ? string-validate-input 5.0306+-0.0749 5.0148+-0.0617 <arithmetic> * 5.0017+-0.0248 4.9928+-0.0248 might be 1.0018x faster <geometric> 3.9581+-0.0192 3.9510+-0.0176 might be 1.0018x faster <harmonic> 3.1640+-0.0161 3.1571+-0.0136 might be 1.0022x faster TipOfTree MyChanges V8Spider: crypto 49.9896+-0.3780 49.7222+-0.1601 deltablue 80.3864+-0.1423 ? 80.8041+-0.3026 ? earley-boyer 48.5154+-0.1355 ? 48.5615+-0.1714 ? raytrace 42.0675+-0.1009 42.0355+-0.1267 regexp 62.4943+-0.2730 ? 62.8436+-0.2902 ? richards 70.2934+-0.1234 70.2698+-0.1106 splay 35.0051+-0.1827 ? 35.0658+-0.2012 ? <arithmetic> 55.5360+-0.0744 ? 55.6146+-0.0655 ? might be 1.0014x slower <geometric> * 53.5395+-0.0812 ? 53.5931+-0.0663 ? might be 1.0010x slower <harmonic> 51.6121+-0.0926 ? 51.6473+-0.0801 ? might be 1.0007x slower TipOfTree MyChanges Octane and V8v7: encrypt 0.26286+-0.00138 0.26227+-0.00130 decrypt 4.63459+-0.02254 4.63357+-0.02237 deltablue x2 0.35285+-0.00091 ? 0.35369+-0.00116 ? earley 0.50558+-0.00180 ! 0.51759+-0.00374 ! definitely 1.0238x slower boyer 6.90467+-0.00649 ? 6.91600+-0.01284 ? raytrace x2 2.90555+-0.02197 2.90074+-0.00476 regexp x2 19.89171+-0.06903 19.87960+-0.12697 richards x2 0.17566+-0.00022 0.17565+-0.00024 splay x2 0.47916+-0.05630 0.47852+-0.05014 navier-stokes x2 7.47918+-0.01652 ? 7.48028+-0.01678 ? closure 0.35727+-0.00188 ^ 0.35400+-0.00130 ^ definitely 1.0092x faster jquery 5.02275+-0.05076 ? 5.03589+-0.05604 ? gbemu x2 151.32584+-8.74632 149.18070+-8.26565 might be 1.0144x faster box2d x2 22.28401+-0.18492 22.27841+-0.14648 V8v7: <arithmetic> 4.67974+-0.01019 4.67915+-0.01221 might be 1.0001x faster <geometric> * 1.50363+-0.02223 ? 1.50600+-0.01876 ? might be 1.0016x slower <harmonic> 0.56076+-0.00936 ? 0.56202+-0.00845 ? might be 1.0023x slower Octane including V8v7: <arithmetic> 19.43071+-0.79420 19.23521+-0.75290 might be 1.0102x faster <geometric> * 2.89043+-0.04338 2.88910+-0.03718 might be 1.0005x faster <harmonic> 0.69540+-0.01030 ? 0.69626+-0.00928 ? might be 1.0012x slower TipOfTree MyChanges Kraken: ai-astar 251.762+-1.014 251.359+-1.159 audio-beat-detection 148.991+-0.404 ? 149.028+-0.451 ? audio-dft 222.378+-1.894 ? 223.314+-2.539 ? audio-fft 86.048+-0.167 ? 86.079+-0.261 ? audio-oscillator 152.660+-2.999 ? 154.153+-4.246 ? imaging-darkroom 181.505+-0.424 ? 181.902+-0.725 ? imaging-desaturate 88.975+-0.087 88.970+-0.113 imaging-gaussian-blur 251.438+-1.088 ? 252.122+-1.318 ? json-parse-financial 46.249+-0.110 ! 46.821+-0.309 ! definitely 1.0124x slower json-stringify-tinderbox 59.131+-0.199 ? 62.720+-3.977 ? might be 1.0607x slower stanford-crypto-aes 59.006+-1.019 58.222+-0.345 might be 1.0135x faster stanford-crypto-ccm 65.323+-2.715 65.286+-2.654 stanford-crypto-pbkdf2 167.144+-0.851 ^ 164.656+-0.660 ^ definitely 1.0151x faster stanford-crypto-sha256-iterative 72.995+-0.296 ? 73.255+-0.387 ? <arithmetic> * 132.400+-0.501 ? 132.706+-0.654 ? might be 1.0023x slower <geometric> 113.248+-0.574 ? 113.729+-0.731 ? might be 1.0042x slower <harmonic> 96.806+-0.604 ? 97.437+-0.812 ? might be 1.0065x slower TipOfTree MyChanges JSRegress: adapt-to-double-divide 68.9176+-0.1338 ? 68.9732+-0.1420 ? aliased-arguments-getbyval 0.6537+-0.0052 ? 0.6548+-0.0081 ? allocate-big-object 1.5945+-0.0552 ? 1.5976+-0.0355 ? arity-mismatch-inlining 0.5013+-0.0055 0.4987+-0.0085 array-access-polymorphic-structure 37.1832+-0.1702 ? 37.2117+-0.1194 ? array-with-double-add 3.6008+-0.0548 ? 3.6127+-0.0322 ? array-with-double-increment 2.7431+-0.0560 2.7250+-0.0259 array-with-double-mul-add 4.0733+-0.0664 ? 4.1048+-0.0815 ? array-with-double-sum 3.8390+-0.0354 3.8015+-0.0415 array-with-int32-add-sub 6.0378+-0.0580 6.0088+-0.0492 array-with-int32-or-double-sum 3.8772+-0.0503 3.8672+-0.0709 big-int-mul 3.3378+-0.0315 ? 3.3563+-0.0432 ? boolean-test 2.6975+-0.0400 2.6973+-0.0257 cast-int-to-double 9.4354+-0.1045 9.3818+-0.0747 cell-argument 10.4471+-0.1032 10.3855+-0.0859 cfg-simplify 2.5333+-0.0324 2.4854+-0.0468 might be 1.0193x faster cmpeq-obj-to-obj-other 7.7456+-0.0970 ? 7.9194+-0.0815 ? might be 1.0224x slower constant-test 4.3555+-0.0521 4.3331+-0.0618 direct-arguments-getbyval 0.5908+-0.0073 0.5888+-0.0084 double-pollution-getbyval 8.3314+-0.0852 ? 8.3770+-0.0755 ? double-pollution-putbyoffset 3.3407+-0.0683 ? 3.4011+-0.0457 ? might be 1.0181x slower external-arguments-getbyval 1.3251+-0.0058 1.3192+-0.0078 external-arguments-putbyval 2.1008+-0.0346 2.0552+-0.0236 might be 1.0222x faster Float32Array-matrix-mult 8.3208+-0.0993 8.2007+-0.0888 might be 1.0147x faster fold-double-to-int 13.9545+-0.2965 13.7218+-0.0867 might be 1.0170x faster function-dot-apply 1.8851+-0.0156 1.8759+-0.0216 function-test 2.7157+-0.0439 2.7134+-0.0194 get-by-id-chain-from-try-block 4.2266+-0.0548 ? 4.2810+-0.0459 ? might be 1.0129x slower indexed-properties-in-objects 2.8105+-0.0340 2.7921+-0.0475 inline-arguments-access 0.8447+-0.0057 0.8359+-0.0066 might be 1.0106x faster inline-arguments-local-escape 12.9130+-0.1502 12.7362+-0.1594 might be 1.0139x faster inline-get-scoped-var 4.4241+-0.1311 4.3286+-0.0644 might be 1.0220x faster inlined-put-by-id-transition 9.0127+-0.1790 8.9752+-0.1222 int-or-other-abs-then-get-by-val 5.5346+-0.0455 5.5133+-0.0566 int-or-other-abs-zero-then-get-by-val 23.4853+-0.0791 23.4196+-0.1038 int-or-other-add-then-get-by-val 7.0670+-0.0506 7.0537+-0.0338 int-or-other-add 6.3711+-0.0620 6.3507+-0.0613 int-or-other-div-then-get-by-val 5.1073+-0.2867 ? 5.1193+-0.2086 ? int-or-other-max-then-get-by-val 6.0304+-0.0379 6.0174+-0.0468 int-or-other-min-then-get-by-val 6.1293+-0.0359 ? 6.2025+-0.0662 ? might be 1.0119x slower int-or-other-mod-then-get-by-val 4.6658+-0.0516 ? 4.6978+-0.0561 ? int-or-other-mul-then-get-by-val 4.8973+-0.0640 ? 4.9469+-0.0441 ? might be 1.0101x slower int-or-other-neg-then-get-by-val 4.9399+-0.0448 ? 4.9464+-0.0397 ? int-or-other-neg-zero-then-get-by-val 22.0912+-0.1036 22.0184+-0.1328 int-or-other-sub-then-get-by-val 6.7735+-0.0394 ? 6.8126+-0.0323 ? int-or-other-sub 4.6176+-0.0662 ? 4.6459+-0.0515 ? int-overflow-local 156.5646+-0.3865 156.4901+-0.4138 Int16Array-bubble-sort 20.6989+-0.1271 20.6272+-0.0961 Int16Array-load-int-mul 1.3119+-0.0054 1.3114+-0.0061 Int8Array-load 2.9765+-0.0163 2.9428+-0.0284 might be 1.0115x faster integer-divide 10.8732+-0.2363 ? 10.9194+-0.2393 ? integer-modulo 1.3272+-0.0099 ? 1.3330+-0.0075 ? make-indexed-storage 2.3990+-0.0250 2.3700+-0.0165 might be 1.0122x faster method-on-number 151.9784+-2.6162 148.7763+-3.3403 might be 1.0215x faster new-array-buffer-dead 2.6056+-0.0267 ? 2.6162+-0.0268 ? new-array-buffer-push 6.5447+-0.0684 6.5347+-0.0718 new-array-dead 21.3988+-0.0830 21.3806+-0.1001 new-array-push 4.3151+-0.0551 4.2947+-0.0892 number-test 2.6895+-0.0323 2.6875+-0.0267 object-closure-call 4.9638+-0.0659 ? 4.9763+-0.0496 ? object-test 2.9205+-0.0315 ? 2.9214+-0.0316 ? poly-stricteq 64.9531+-0.1238 64.8184+-0.0880 polymorphic-structure 13.0054+-0.1273 12.9767+-0.0874 polyvariant-monomorphic-get-by-id 7.2779+-0.0590 7.2744+-0.0871 rare-osr-exit-on-local 135.2544+-0.4847 ? 135.4444+-0.5918 ? register-pressure-from-osr 21.0604+-0.0833 21.0443+-0.1012 simple-activation-demo 24.3983+-0.1671 24.3394+-0.1087 slow-array-profile-convergence 2.7931+-0.0321 2.7647+-0.0479 might be 1.0103x faster slow-convergence 46.0576+-0.0979 ? 46.1619+-0.1617 ? sparse-conditional 0.8037+-0.0039 ? 0.8046+-0.0098 ? splice-to-remove 33.8348+-0.9904 33.2008+-0.1158 might be 1.0191x faster string-hash 1.8362+-0.0138 ? 1.8411+-0.0243 ? string-repeat-arith 28.7953+-0.3785 28.4592+-0.1016 might be 1.0118x faster string-sub 57.8441+-0.8000 ? 58.8389+-0.5789 ? might be 1.0172x slower string-test 2.6216+-0.0304 ? 2.6538+-0.0216 ? might be 1.0123x slower structure-hoist-over-transitions 2.0342+-0.0432 ^ 1.9690+-0.0199 ^ definitely 1.0331x faster tear-off-arguments-simple 1.2095+-0.0147 ? 1.2193+-0.0120 ? tear-off-arguments 2.2551+-0.0175 ? 2.2644+-0.0282 ? temporal-structure 13.6797+-0.1486 13.5966+-0.0970 to-int32-boolean 16.6076+-0.1337 16.5723+-0.1336 undefined-test 2.7545+-0.0292 2.7331+-0.0298 <arithmetic> 15.1941+-0.0400 15.1447+-0.0459 might be 1.0033x faster <geometric> * 5.9731+-0.0238 5.9607+-0.0174 might be 1.0021x faster <harmonic> 3.1804+-0.0127 3.1728+-0.0099 might be 1.0024x faster TipOfTree MyChanges All benchmarks: <arithmetic> 26.8707+-0.1753 26.8460+-0.1764 might be 1.0009x faster <geometric> 7.2894+-0.0384 7.2817+-0.0332 might be 1.0010x faster <harmonic> 2.2863+-0.0199 2.2850+-0.0177 might be 1.0006x faster TipOfTree MyChanges Geomean of preferred means: <scaled-result> 14.3666+-0.0744 14.3639+-0.0716 might be 1.0002x faster
Darin Adler
Comment 2 2013-02-07 19:53:10 PST
Comment on attachment 187219 [details] Proposed patch Looks like you did your homework. Let’s do this!
WebKit Review Bot
Comment 3 2013-02-08 04:47:20 PST
Comment on attachment 187219 [details] Proposed patch Clearing flags on attachment: 187219 Committed r142260: <http://trac.webkit.org/changeset/142260>
WebKit Review Bot
Comment 4 2013-02-08 04:47:24 PST
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 5 2013-02-08 06:27:57 PST
Gurpreet
Comment 6 2014-07-16 06:48:23 PDT
Hi Andreas and Darin. As I can see in the latest code this change has been reverted because of no more GC allocation. So incase we are using webkit 123997 version then will this change will have memory reduction for normal live sites? I was planning to take this patch.
Note You need to log in before you can comment on or make changes to this bug.