Bug 68143

Summary: Value profiles collect no information for global variables
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, fpizlo, ggaren, oliver
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
the patch ggaren: review+

Description Filip Pizlo 2011-09-14 23:46:57 PDT
Value profiles used by tiered compilation collect no information for global variable loads, even though they probably should do so just like other property accesses.
Comment 1 Filip Pizlo 2011-09-14 23:47:44 PDT
Doing this appears to produce a 17% speed-up on string-fasta.


Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
"GlobalVarProfile" at /Volumes/Data/pizlo/septenary/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Used 1 benchmark iteration per VM
invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting
benchmark execution times with 95% confidence intervals in milliseconds.

                                            TipOfTree            GlobalVarProfile                                
SunSpider:
   3d-cube                                7.8082+-0.1079    ?     7.8471+-0.1885       ?
   3d-morph                               7.4736+-0.1019          7.3982+-0.1500         might be 1.0102x faster
   3d-raytrace                            7.5719+-0.0925    ?     7.7841+-0.1691       ? might be 1.0280x slower
   access-binary-trees                    2.3421+-0.1033    ?     2.4316+-0.1598       ? might be 1.0382x slower
   access-fannkuch                       11.6264+-0.2108         11.6090+-0.2593       
   access-nbody                           4.2754+-0.1636          4.2182+-0.0761         might be 1.0136x faster
   access-nsieve                          2.6933+-0.1160          2.6595+-0.0790         might be 1.0127x faster
   bitops-3bit-bits-in-byte               1.7263+-0.0730          1.6892+-0.0361         might be 1.0219x faster
   bitops-bits-in-byte                    2.7137+-0.0399    ?     2.7880+-0.0571       ? might be 1.0274x slower
   bitops-bitwise-and                     3.5911+-0.0934          3.5841+-0.0896       
   bitops-nsieve-bits                     5.3006+-0.0913    ?     5.4109+-0.2121       ? might be 1.0208x slower
   controlflow-recursive                  1.9564+-0.0463    ?     2.0176+-0.0574       ? might be 1.0313x slower
   crypto-aes                             6.9636+-0.2600          6.9293+-0.2545       
   crypto-md5                             2.6808+-0.0224    ?     2.7667+-0.0955       ? might be 1.0321x slower
   crypto-sha1                            2.1628+-0.0512          2.1432+-0.0254       
   date-format-tofte                     10.4746+-0.2961         10.2954+-0.3917         might be 1.0174x faster
   date-format-xparb                      8.7510+-0.2551    ?     8.9827+-0.2189       ? might be 1.0265x slower
   math-cordic                            6.2209+-0.1250    ?     6.2881+-0.1458       ? might be 1.0108x slower
   math-partial-sums                      7.4749+-0.1750          7.3382+-0.1338         might be 1.0186x faster
   math-spectral-norm                     2.6076+-0.0877    ?     2.6086+-0.0426       ?
   regexp-dna                            10.9258+-0.1886    ?    10.9681+-0.2181       ?
   string-base64                          5.9446+-0.2683          5.7639+-0.2387         might be 1.0314x faster
   string-fasta                           8.3444+-0.2235    ^     7.1399+-0.1846       ^ definitely 1.1687x faster
   string-tagcloud                       11.9497+-0.3133    ?    12.0223+-0.3088       ?
   string-unpack-code                    18.8324+-0.3925         18.7539+-0.4277       
   string-validate-input                  6.7391+-0.2165          6.7018+-0.1905       

   <arithmetic>                           6.5058+-0.0207          6.4669+-0.0384       
   <geometric>                            5.3515+-0.0207          5.3347+-0.0266       
   <harmonic>                             4.3471+-0.0316    ?     4.3528+-0.0230       ?

                                            TipOfTree            GlobalVarProfile                                
V8:
   crypto                                83.6288+-0.9219         83.4868+-0.7196       
   deltablue                            247.5050+-2.4194        244.5040+-1.6395         might be 1.0123x faster
   earley-boyer                          94.9656+-0.4355    ?    95.2173+-1.1138       ?
   raytrace                              72.1248+-0.7492    ?    73.4037+-0.6232       ? might be 1.0177x slower
   regexp                               106.7957+-0.3336    ?   107.2530+-0.6605       ?
   richards                             217.2272+-1.3942    ?   218.5755+-0.6407       ?
   splay                                 98.7647+-0.4745    ?    98.8252+-0.4361       ?

   <arithmetic>                         131.5731+-0.3473    ?   131.6094+-0.3043       ?
   <geometric>                          118.3221+-0.1812    ?   118.6175+-0.2684       ?
   <harmonic>                           108.5373+-0.1645    ?   109.0019+-0.3074       ?

                                            TipOfTree            GlobalVarProfile                                
Kraken:
   ai-astar                             633.1555+-5.7432        630.8679+-4.6809       
   audio-beat-detection                 471.2182+-1.7112    !   477.0400+-2.6966       ! definitely 1.0124x slower
   audio-dft                            421.4834+-3.5459        419.5688+-2.7914       
   audio-fft                            367.7237+-1.1684    ?   369.3817+-1.6521       ?
   audio-oscillator                     319.0198+-0.8527    ^   315.8485+-1.0662       ^ definitely 1.0100x faster
   imaging-darkroom                     414.5780+-0.8529    !   418.2511+-1.9829       ! definitely 1.0089x slower
   imaging-desaturate                   208.9592+-1.0865        208.1463+-0.3312       
   imaging-gaussian-blur               1730.6572+-4.2407       1729.9792+-2.8306       
   json-parse-financial                  48.1279+-0.2019    ?    48.5082+-0.3040       ?
   json-stringify-tinderbox              69.0969+-0.5589         68.8286+-0.5030       
   stanford-crypto-aes                  145.7341+-0.7048    ?   145.9337+-0.8582       ?
   stanford-crypto-ccm                  111.9191+-0.9876    ?   112.3584+-0.6948       ?
   stanford-crypto-pbkdf2               401.2080+-3.4416        397.3857+-2.1064       
   stanford-crypto-sha256-iterative     149.8334+-0.5571        149.6679+-0.6379       

   <arithmetic>                         392.3367+-0.7224        392.2690+-0.6121       
   <geometric>                          262.0689+-0.5519    ?   262.1030+-0.4722       ?
   <harmonic>                           175.1691+-0.4898    ?   175.4169+-0.5955       ?

                                            TipOfTree            GlobalVarProfile                                
All benchmarks:
   <arithmetic>                         140.0612+-0.2171        140.0249+-0.1915       
   <geometric>                           27.0469+-0.0586         27.0109+-0.0684       
   <harmonic>                             7.6729+-0.0544    ?     7.6833+-0.0396       ?
Comment 2 Filip Pizlo 2011-09-14 23:50:14 PDT
Created attachment 107466 [details]
the patch
Comment 3 Geoffrey Garen 2011-09-15 11:41:28 PDT
Comment on attachment 107466 [details]
the patch

r=me
Comment 4 Filip Pizlo 2011-09-15 12:55:49 PDT
Landed in r95219.