Bug 65424 - DFG non-speculative JIT does not optimize PutByVal
Summary: DFG non-speculative JIT does not optimize PutByVal
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-07-30 19:39 PDT by Filip Pizlo
Modified: 2011-07-31 13:13 PDT (History)
3 users (show)

See Also:


Attachments
the patch (4.51 KB, patch)
2011-07-30 19:42 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2011-07-30 19:39:24 PDT
The DFG non-speculative JIT does not inline the fast path for PutByVal.  It should probably inline it since it's important for programs that use arrays.
Comment 1 Filip Pizlo 2011-07-30 19:42:05 PDT
Created attachment 102450 [details]
the patch

This is a win on V8 and Kraken, and is neutral on SunSpider.  I'll mark as ? when all of the tests pass.

[pizlo@minime bencher] ./bencher TipOfTree:/Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc PutByVal:/Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc --outer 8 --inner 4 --warmup 1 --sunspider
TipOfTree: /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
PutByVal: /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc
416/416
                                TipOfTree               PutByVal      
3d-cube                       7.9960+-0.1025         7.9514+-0.1193      
3d-morph                      7.4389+-0.0984   ?     7.4717+-0.0818      ?
3d-raytrace                   8.0496+-0.0791   ?     8.0799+-0.1073      ?
access-binary-trees           2.5966+-0.0429         2.5497+-0.0396        might be 1.0184x faster
access-fannkuch              11.4419+-0.0778        11.4402+-0.0949      
access-nbody                  4.2838+-0.0506         4.2521+-0.0375      
access-nsieve                 2.4487+-0.0240   ?     2.4793+-0.0265      ? might be 1.0125x slower
bitops-3bit-bits-in-byte      1.7775+-0.0383         1.7407+-0.0285        might be 1.0211x faster
bitops-bits-in-byte           4.3679+-0.1230   ?     4.3684+-0.1120      ?
bitops-bitwise-and            3.6403+-0.0455         3.6222+-0.0496      
bitops-nsieve-bits            5.4653+-0.0520   ?     5.5231+-0.0623      ? might be 1.0106x slower
controlflow-recursive         2.6069+-0.0362         2.5787+-0.0252        might be 1.0110x faster
crypto-aes                    7.1403+-0.1086         6.9869+-0.0837        might be 1.0220x faster
crypto-md5                    2.7782+-0.0432         2.7611+-0.0396      
crypto-sha1                   2.1873+-0.0306   ?     2.2137+-0.0384      ? might be 1.0120x slower
date-format-tofte            13.8207+-0.1268        13.8169+-0.1653      
date-format-xparb             9.1638+-0.1102   !     9.4332+-0.1297      ! definitely 1.0294x slower
math-cordic                   6.2502+-0.1015   ?     6.2869+-0.0803      ?
math-partial-sums             7.5674+-0.0630   ?     7.6288+-0.0988      ?
math-spectral-norm            2.4707+-0.0259   ?     2.5098+-0.0317      ? might be 1.0158x slower
regexp-dna                   10.1646+-0.0885   !    10.3734+-0.1145      ! definitely 1.0205x slower
string-base64                 6.5853+-0.0767         6.5288+-0.0879      
string-fasta                  7.8724+-0.0925         7.8144+-0.1147      
string-tagcloud              13.7407+-0.1333        13.6155+-0.1485      
string-unpack-code           21.0170+-0.1659   ?    21.3776+-0.2100      ? might be 1.0172x slower
string-validate-input         7.6710+-0.1038         7.5806+-0.1044        might be 1.0119x faster
AVERAGE                       6.9440+-0.0121   ?     6.9610+-0.0187      ?
GEOMEAN                       5.6967+-0.0118   ?     5.6981+-0.0175      ?
[pizlo@minime bencher] ./bencher TipOfTree:/Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc PutByVal:/Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc --outer 8 --inner 4 --warmup 1 --v8
TipOfTree: /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
PutByVal: /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc
112/112
                    TipOfTree               PutByVal      
crypto           97.3797+-0.2758   ^    92.0391+-0.2533      ^ definitely 1.0580x faster
deltablue       268.9680+-1.2141   ?   269.2985+-1.4905      ?
earley-boyer    124.8596+-1.0107       124.0673+-0.5397      
raytrace         79.9386+-0.5049   ^    78.5594+-0.5066      ^ definitely 1.0176x faster
regexp          106.6690+-0.4577   ?   107.5821+-0.4963      ?
richards        253.9950+-1.0977       253.4202+-1.2990      
splay           183.8398+-1.0727       183.0630+-0.5311      
AVERAGE         159.3785+-0.3636   ^   158.2900+-0.3325      ^ definitely 1.0069x faster
GEOMEAN         144.2779+-0.3709   ^   142.7031+-0.2669      ^ definitely 1.0110x faster
[pizlo@minime bencher] ./bencher TipOfTree:/Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc PutByVal:/Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc --outer 8 --inner 4 --warmup 1 --kraken
TipOfTree: /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
PutByVal: /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc
224/224
                                        TipOfTree               PutByVal      
ai-astar                           1093.1172+-4.5503   ^  1080.1295+-2.7251      ^ definitely 1.0120x faster
audio-beat-detection                452.1903+-1.4868   !   460.8981+-2.3712      ! definitely 1.0193x slower
audio-dft                           445.4518+-4.0142   ?   447.8315+-5.3821      ?
audio-fft                           359.2328+-0.7923   !   361.9505+-1.6893      ! definitely 1.0076x slower
audio-oscillator                    441.3523+-1.0646   ^   400.6011+-1.6775      ^ definitely 1.1017x faster
imaging-darkroom                    658.6015+-3.5162   ^   568.0929+-1.0142      ^ definitely 1.1593x faster
imaging-desaturate                  855.1886+-4.7568   ^   590.2016+-1.4386      ^ definitely 1.4490x faster
imaging-gaussian-blur              3074.3151+-73.2557  ^  2961.6057+-9.7733      ^ definitely 1.0381x faster
json-parse-financial                 48.4931+-0.2036   ^    47.8002+-0.1907      ^ definitely 1.0145x faster
json-stringify-tinderbox             63.1767+-0.3018   ^    62.2697+-0.1606      ^ definitely 1.0146x faster
stanford-crypto-aes                 144.8389+-0.8967       143.3318+-0.6163        might be 1.0105x faster
stanford-crypto-ccm                 114.9960+-0.8006   ?   115.4686+-1.0867      ?
stanford-crypto-pbkdf2              387.3435+-13.6259  ^   366.1053+-1.8585      ^ definitely 1.0580x faster
stanford-crypto-sha256-iterative    141.4128+-0.6867   ^   139.2711+-0.6301      ^ definitely 1.0154x faster
AVERAGE                             591.4079+-5.3777   ^   553.2541+-0.8777      ^ definitely 1.0690x faster
GEOMEAN                             328.1413+-0.9137   ^   311.3703+-0.4795      ^ definitely 1.0539x faster
[pizlo@minime bencher]
Comment 2 Filip Pizlo 2011-07-30 19:56:09 PDT
Comment on attachment 102450 [details]
the patch

Tests pass, ready for review.
Comment 3 WebKit Review Bot 2011-07-31 13:13:51 PDT
Comment on attachment 102450 [details]
the patch

Clearing flags on attachment: 102450

Committed r92085: <http://trac.webkit.org/changeset/92085>
Comment 4 WebKit Review Bot 2011-07-31 13:13:55 PDT
All reviewed patches have been landed.  Closing bug.