Bug 75743

Summary: JIT stub slow paths that would be identical to that of an interpreter should be factored out
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal Keywords: InRadar
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
the patch ggaren: review+

Description Filip Pizlo 2012-01-06 14:15:02 PST
Patch forthcoming.
Comment 1 Filip Pizlo 2012-01-06 14:15:23 PST
<rdar://problem/10657024>
Comment 2 Filip Pizlo 2012-01-06 14:20:31 PST
Created attachment 121495 [details]
the patch
Comment 3 Geoffrey Garen 2012-01-06 14:22:08 PST
Comment on attachment 121495 [details]
the patch

rs=me
Comment 4 Filip Pizlo 2012-01-06 15:17:22 PST
The performance is neutral.



[pizlo@nitroflex bencher] ./bencher TipOfTree:/Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc RefactorSlow:/Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc --remote bigmac --local
Copying TipOfTree into /Volumes/Data/pizlo/bencher/temp/benchdata...
Copying RefactorSlow into /Volumes/Data/pizlo/bencher/temp/benchdata...
All VMs are in place.
Packaging benchmarking directory for remote hosts...
Sending benchmark payload to bigmac...
Running on bigmac...
376/376                                                           
Generating benchmark report at TipOfTree_RefactorSlow_SunSpiderV8Kraken_bigmac_20120106_1447_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on bigmac (MacPro5,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r104339)
"RefactorSlow" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (r104339)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. 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              RefactorSlow                                  
SunSpider:
   3d-cube                                5.8619+-0.0178    ?     5.8664+-0.0223       ?
   3d-morph                               8.4123+-0.0553    ?     8.5088+-0.1415       ? might be 1.0115x slower
   3d-raytrace                            7.8064+-0.0701          7.7422+-0.0536       
   access-binary-trees                    1.6221+-0.0160          1.6070+-0.0161       
   access-fannkuch                        7.4755+-0.0399          7.4452+-0.0234       
   access-nbody                           3.9876+-0.0057    ^     3.9656+-0.0091       ^ definitely 1.0056x faster
   access-nsieve                          3.1346+-0.0399    ?     3.1411+-0.0502       ?
   bitops-3bit-bits-in-byte               1.2535+-0.0150    ?     1.2571+-0.0163       ?
   bitops-bits-in-byte                    4.9892+-0.0303    ?     5.0435+-0.0340       ? might be 1.0109x slower
   bitops-bitwise-and                     3.3649+-0.0854    ?     3.3756+-0.0818       ?
   bitops-nsieve-bits                     5.6695+-0.0541          5.6481+-0.0342       
   controlflow-recursive                  2.3291+-0.0069    ?     2.3376+-0.0177       ?
   crypto-aes                             7.3676+-0.0322    ?     7.3876+-0.0144       ?
   crypto-md5                             2.4999+-0.0288    ?     2.5000+-0.0192       ?
   crypto-sha1                            2.2843+-0.0102    ?     2.2919+-0.0174       ?
   date-format-tofte                     10.3816+-0.0407    !    10.5739+-0.0617       ! definitely 1.0185x slower
   date-format-xparb                     10.3716+-0.0433    ^     9.9001+-0.0896       ^ definitely 1.0476x faster
   math-cordic                            7.2725+-0.0637    ?     7.3985+-0.1159       ? might be 1.0173x slower
   math-partial-sums                     10.4211+-0.0312    ?    10.4981+-0.0588       ?
   math-spectral-norm                     2.6537+-0.0125          2.6462+-0.0060       
   regexp-dna                             8.9070+-0.0522          8.8748+-0.0144       
   string-base64                          4.3056+-0.0149    ?     4.3465+-0.0494       ?
   string-fasta                           7.2226+-0.0188    ?     7.2228+-0.0168       ?
   string-tagcloud                       12.3487+-0.0392    ?    12.4196+-0.0801       ?
   string-unpack-code                    20.6505+-0.0816         20.5170+-0.0782       
   string-validate-input                  5.6101+-0.0383    ?     5.6534+-0.0310       ?

   <arithmetic> *                         6.4694+-0.0188          6.4680+-0.0152         might be 1.0002x faster
   <geometric>                            5.2698+-0.0195    ?     5.2730+-0.0173       ? might be 1.0006x slower
   <harmonic>                             4.1889+-0.0207    ?     4.1914+-0.0208       ? might be 1.0006x slower

                                            TipOfTree              RefactorSlow                                  
V8:
   crypto                                77.8233+-0.2729         77.7624+-0.1950       
   deltablue                            170.8664+-2.3946    ?   171.5670+-4.4580       ?
   earley-boyer                          99.6983+-1.3652    ?    99.8158+-1.0016       ?
   raytrace                              51.8626+-0.1891    ^    51.1383+-0.1967       ^ definitely 1.0142x faster
   regexp                               121.6293+-0.5194    ^   119.4981+-0.4753       ^ definitely 1.0178x faster
   richards                             141.0690+-3.4148        138.6064+-2.5845         might be 1.0178x faster
   splay                                 94.2701+-2.3961         92.6186+-1.2852         might be 1.0178x faster

   <arithmetic>                         108.1742+-0.5900        107.2867+-0.7144         might be 1.0083x faster
   <geometric> *                        101.5055+-0.4739        100.6077+-0.4742         might be 1.0089x faster
   <harmonic>                            94.6430+-0.3510    ^    93.7560+-0.3039       ^ definitely 1.0095x faster

                                            TipOfTree              RefactorSlow                                  
Kraken:
   ai-astar                             798.8152+-11.0512   ?   809.5704+-12.8406      ? might be 1.0135x slower
   audio-beat-detection                 195.2150+-2.0365    ^   191.4068+-0.7731       ^ definitely 1.0199x faster
   audio-dft                            277.5079+-1.9848        274.2332+-2.4551         might be 1.0119x faster
   audio-fft                            119.8612+-1.1266        119.5361+-0.7484       
   audio-oscillator                     282.1289+-3.4373        280.4427+-1.8100       
   imaging-darkroom                     300.9565+-7.2008    ?   302.2302+-7.5689       ?
   imaging-desaturate                   230.0537+-0.1433    ?   230.1007+-0.3022       ?
   imaging-gaussian-blur                519.3801+-0.2663    ?   519.4623+-0.2520       ?
   json-parse-financial                  69.0952+-0.2983    ^    68.2661+-0.3945       ^ definitely 1.0121x faster
   json-stringify-tinderbox              85.5597+-0.4862    ^    81.8879+-0.2584       ^ definitely 1.0448x faster
   stanford-crypto-aes                  116.2097+-1.2097        114.7226+-0.5313         might be 1.0130x faster
   stanford-crypto-ccm                  108.2590+-0.8196    ?   108.3571+-0.8921       ?
   stanford-crypto-pbkdf2               219.6826+-1.5132    ^   213.5631+-0.4439       ^ definitely 1.0287x faster
   stanford-crypto-sha256-iterative      94.1376+-0.3357    ^    93.3387+-0.1380       ^ definitely 1.0086x faster

   <arithmetic> *                       244.0616+-1.0230        243.3656+-1.1971         might be 1.0029x faster
   <geometric>                          190.1558+-0.6512    ^   188.4415+-0.5670       ^ definitely 1.0091x faster
   <harmonic>                           154.4391+-0.5066    ^   152.4570+-0.3287       ^ definitely 1.0130x faster

                                            TipOfTree              RefactorSlow                                  
All benchmarks:
   <arithmetic>                          92.3890+-0.3216         92.0488+-0.3812         might be 1.0037x faster
   <geometric>                           23.8239+-0.0733         23.7360+-0.0632         might be 1.0037x faster
   <harmonic>                             7.3766+-0.0358    ?     7.3786+-0.0360       ? might be 1.0003x slower

                                            TipOfTree              RefactorSlow                                  
Geomean of preferred means:
   <scaled-result>                       54.3183+-0.1487         54.1022+-0.1378         might be 1.0040x faster

Running locally...
376/376                                                           
Generating benchmark report at TipOfTree_RefactorSlow_SunSpiderV8Kraken_nitroflex_20120106_1449_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on nitroflex (MacBookPro8,2).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r104339)
"RefactorSlow" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (r104339)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. 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              RefactorSlow                                  
SunSpider:
   3d-cube                                5.1257+-0.1729    ?     5.1343+-0.1661       ?
   3d-morph                               7.9799+-0.1251          7.8809+-0.1328         might be 1.0126x faster
   3d-raytrace                            7.2027+-0.1536    ?     7.3087+-0.1811       ? might be 1.0147x slower
   access-binary-trees                    1.4642+-0.0386    ?     1.4692+-0.0607       ?
   access-fannkuch                        5.9084+-0.1461          5.8439+-0.0658         might be 1.0110x faster
   access-nbody                           3.2489+-0.0731    ?     3.3341+-0.0935       ? might be 1.0262x slower
   access-nsieve                          2.5019+-0.0657    ?     2.5991+-0.0768       ? might be 1.0389x slower
   bitops-3bit-bits-in-byte               1.2405+-0.0210    ?     1.2442+-0.0347       ?
   bitops-bits-in-byte                    2.2901+-0.0461    ?     2.3759+-0.0670       ? might be 1.0375x slower
   bitops-bitwise-and                     3.1599+-0.0842    ?     3.2446+-0.0859       ? might be 1.0268x slower
   bitops-nsieve-bits                     5.3941+-0.1019    ?     5.5444+-0.1485       ? might be 1.0279x slower
   controlflow-recursive                  1.9828+-0.0420    ?     2.0195+-0.0441       ? might be 1.0185x slower
   crypto-aes                             7.1185+-0.1815    ?     7.1785+-0.1972       ?
   crypto-md5                             2.3137+-0.0298    ?     2.3575+-0.0979       ? might be 1.0189x slower
   crypto-sha1                            2.0928+-0.0222    ?     2.0973+-0.0590       ?
   date-format-tofte                      9.7970+-0.1966    ?     9.9325+-0.2019       ? might be 1.0138x slower
   date-format-xparb                      8.9783+-0.2359    ?     9.2142+-0.2212       ? might be 1.0263x slower
   math-cordic                            6.2663+-0.0740    ?     6.3519+-0.1116       ? might be 1.0137x slower
   math-partial-sums                      7.3063+-0.0900    ?     7.3593+-0.1571       ?
   math-spectral-norm                     2.3877+-0.0508          2.3721+-0.0720       
   regexp-dna                             7.7287+-0.1121    ?     7.9375+-0.1571       ? might be 1.0270x slower
   string-base64                          4.1259+-0.1051    ?     4.3029+-0.1743       ? might be 1.0429x slower
   string-fasta                           6.7389+-0.1852    ?     6.7413+-0.1487       ?
   string-tagcloud                       11.2039+-0.2510    ?    11.2372+-0.2963       ?
   string-unpack-code                    18.8036+-0.3916         18.6886+-0.3871       
   string-validate-input                  5.2554+-0.1911          5.1007+-0.0870         might be 1.0303x faster

   <arithmetic> *                         5.6775+-0.0268    ?     5.7258+-0.0375       ? might be 1.0085x slower
   <geometric>                            4.5828+-0.0243    ?     4.6335+-0.0316       ? might be 1.0111x slower
   <harmonic>                             3.6583+-0.0223    ?     3.7010+-0.0294       ? might be 1.0117x slower

                                            TipOfTree              RefactorSlow                                  
V8:
   crypto                                70.3535+-0.5300         69.9264+-0.5055       
   deltablue                            150.0233+-0.6909    ^   148.5428+-0.4876       ^ definitely 1.0100x faster
   earley-boyer                          80.1572+-1.0388         80.1216+-0.9901       
   raytrace                              46.8037+-0.2848         46.3367+-0.4707         might be 1.0101x faster
   regexp                               101.7672+-0.2735        100.9166+-1.4234       
   richards                             116.2949+-0.6372    ?   117.0661+-0.6229       ?
   splay                                 77.2040+-1.1225         75.9552+-1.2413         might be 1.0164x faster

   <arithmetic>                          91.8006+-0.1986         91.2665+-0.4255         might be 1.0059x faster
   <geometric> *                         86.4750+-0.1927         85.9245+-0.4592         might be 1.0064x faster
   <harmonic>                            81.2885+-0.1920         80.7112+-0.4848         might be 1.0072x faster

                                            TipOfTree              RefactorSlow                                  
Kraken:
   ai-astar                             476.1634+-3.4611    ?   482.6787+-4.4208       ? might be 1.0137x slower
   audio-beat-detection                 170.4392+-0.8619    !   172.5479+-0.7078       ! definitely 1.0124x slower
   audio-dft                            274.1898+-4.2115    ?   277.1584+-3.1662       ? might be 1.0108x slower
   audio-fft                            105.6598+-0.6479        105.4016+-0.3721       
   audio-oscillator                     247.5320+-1.1655    ?   248.5717+-2.6602       ?
   imaging-darkroom                     264.8397+-5.9701    ?   266.6395+-7.4122       ?
   imaging-desaturate                   205.3789+-1.3223        204.8988+-0.4245       
   imaging-gaussian-blur                478.4543+-1.2024    ?   479.9527+-3.4023       ?
   json-parse-financial                  54.5162+-0.3954         54.4483+-0.4916       
   json-stringify-tinderbox              72.5002+-0.3808    ?    72.8039+-1.1618       ?
   stanford-crypto-aes                   95.3747+-0.6665    ?    95.5523+-0.5005       ?
   stanford-crypto-ccm                   95.2659+-1.4845         94.8853+-1.2295       
   stanford-crypto-pbkdf2               177.6325+-0.7361        176.2819+-1.1772       
   stanford-crypto-sha256-iterative      80.9540+-0.3292    ?    81.4564+-0.3422       ?

   <arithmetic> *                       199.9215+-0.5246    ?   200.9484+-0.5365       ? might be 1.0051x slower
   <geometric>                          160.9231+-0.3161    ?   161.4399+-0.4632       ? might be 1.0032x slower
   <harmonic>                           130.8758+-0.3203    ?   131.1104+-0.3830       ? might be 1.0018x slower

                                            TipOfTree              RefactorSlow                                  
All benchmarks:
   <arithmetic>                          76.3643+-0.1714    ?    76.6173+-0.1991       ? might be 1.0033x slower
   <geometric>                           20.4876+-0.0643    ?    20.6126+-0.0921       ? might be 1.0061x slower
   <harmonic>                             6.4382+-0.0382    ?     6.5108+-0.0505       ? might be 1.0113x slower

                                            TipOfTree              RefactorSlow                                  
Geomean of preferred means:
   <scaled-result>                       46.1283+-0.1107    ?    46.2387+-0.1662       ? might be 1.0024x slower

[pizlo@nitroflex bencher]
Comment 5 Filip Pizlo 2012-01-06 15:22:35 PST
Landed in http://trac.webkit.org/changeset/104349