RESOLVED FIXED 75743
JIT stub slow paths that would be identical to that of an interpreter should be factored out
https://bugs.webkit.org/show_bug.cgi?id=75743
Summary JIT stub slow paths that would be identical to that of an interpreter should ...
Filip Pizlo
Reported 2012-01-06 14:15:02 PST
Patch forthcoming.
Attachments
the patch (19.92 KB, patch)
2012-01-06 14:20 PST, Filip Pizlo
ggaren: review+
Filip Pizlo
Comment 1 2012-01-06 14:15:23 PST
Filip Pizlo
Comment 2 2012-01-06 14:20:31 PST
Created attachment 121495 [details] the patch
Geoffrey Garen
Comment 3 2012-01-06 14:22:08 PST
Comment on attachment 121495 [details] the patch rs=me
Filip Pizlo
Comment 4 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]
Filip Pizlo
Comment 5 2012-01-06 15:22:35 PST
Note You need to log in before you can comment on or make changes to this bug.