Bug 109247 - JSC: Lower minimum PropertyTable size.
Summary: JSC: Lower minimum PropertyTable size.
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Andreas Kling
URL:
Keywords: InRadar, Performance
Depends on:
Blocks:
 
Reported: 2013-02-07 19:15 PST by Andreas Kling
Modified: 2014-07-16 06:48 PDT (History)
6 users (show)

See Also:


Attachments
Proposed patch (1.55 KB, patch)
2013-02-07 19:19 PST, Andreas Kling
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Kling 2013-02-07 19:15:23 PST
I think we can cut some crust off of the malloc cheese here.
Comment 1 Andreas Kling 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
Comment 2 Darin Adler 2013-02-07 19:53:10 PST
Comment on attachment 187219 [details]
Proposed patch

Looks like you did your homework. Let’s do this!
Comment 3 WebKit Review Bot 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>
Comment 4 WebKit Review Bot 2013-02-08 04:47:24 PST
All reviewed patches have been landed.  Closing bug.
Comment 5 Radar WebKit Bug Importer 2013-02-08 06:27:57 PST
<rdar://problem/13180103>
Comment 6 Gurpreet 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.