RESOLVED FIXED Bug 65949
DFG JIT does not speculative integers as aggressively as it should
https://bugs.webkit.org/show_bug.cgi?id=65949
Summary DFG JIT does not speculative integers as aggressively as it should
Filip Pizlo
Reported 2011-08-09 16:35:54 PDT
The DFG JIT assumes that values are doubles unless it has reason to speculate integer. But it does not do so transitively. For example, it will successfull speculate that x is an integer here: var x = … stuff … var tmp = array[x]; But not here: var x = … stuff … var tmp = array[x * 2]; This is because the attempt to predict that "x * 2" is a no-op, since the prediction code has no way of propagating the prediction past the multiply.
Attachments
the patch (2.54 KB, patch)
2011-08-09 16:38 PDT, Filip Pizlo
barraclough: review+
the patch (merged to ToT, added perf numbers in ChangeLog) (2.87 KB, patch)
2011-08-09 17:31 PDT, Filip Pizlo
fpizlo: commit-queue-
the patch (merged to ToT, added perf numbers to ChangeLog, and added Gavin as reviewer) (2.73 KB, patch)
2011-08-09 17:33 PDT, Filip Pizlo
no flags
Filip Pizlo
Comment 1 2011-08-09 16:38:33 PDT
Created attachment 103416 [details] the patch
Filip Pizlo
Comment 2 2011-08-09 16:42:57 PDT
Note: this is a 75% speed-up on imaging-gaussian-blur. But I'm doing an svn up to make sure that this is still the case with latest commits.
Filip Pizlo
Comment 3 2011-08-09 17:17:24 PDT
Here are the complete performance numbers. TipOfTree MoreIntPrediction SunSpider: 3d-cube 7.6745+-0.1019 ? 7.6835+-0.1166 ? 3d-morph 7.4896+-0.2832 ? 7.4942+-0.0978 ? 3d-raytrace 7.7863+-0.1357 7.6264+-0.1290 might be 1.0210x faster access-binary-trees 2.2473+-0.0589 2.2113+-0.0360 might be 1.0163x faster access-fannkuch 11.7730+-0.2411 ? 11.7908+-0.2121 ? access-nbody 4.1934+-0.0454 ? 4.3190+-0.0906 ? might be 1.0299x slower access-nsieve 2.4448+-0.0406 ? 2.5105+-0.0462 ? might be 1.0269x slower bitops-3bit-bits-in-byte 1.7384+-0.0393 1.7228+-0.0528 bitops-bits-in-byte 4.2191+-0.1023 4.1484+-0.0980 might be 1.0170x faster bitops-bitwise-and 3.6774+-0.0775 ? 3.6978+-0.0712 ? bitops-nsieve-bits 5.5151+-0.0851 5.5048+-0.0794 controlflow-recursive 2.0880+-0.0292 ? 2.1112+-0.0401 ? might be 1.0111x slower crypto-aes 6.5138+-0.1300 6.4731+-0.1229 crypto-md5 2.7793+-0.0392 ? 2.8046+-0.0638 ? crypto-sha1 2.2024+-0.0386 ? 2.2396+-0.0330 ? might be 1.0169x slower date-format-tofte 10.0715+-0.1753 ? 10.0717+-0.1696 ? date-format-xparb 8.8285+-0.2281 8.7777+-0.1663 math-cordic 6.3224+-0.0819 6.2717+-0.0913 math-partial-sums 7.7275+-0.1963 7.6841+-0.0915 math-spectral-norm 2.5223+-0.0466 2.4793+-0.0546 might be 1.0174x faster regexp-dna 10.3466+-0.1322 ? 10.3785+-0.0831 ? string-base64 5.9888+-0.1269 ? 6.0098+-0.1060 ? string-fasta 7.2988+-0.1264 ? 7.3690+-0.1294 ? string-tagcloud 13.3424+-0.1679 13.2359+-0.1711 string-unpack-code 18.7737+-0.2036 ? 18.8364+-0.2646 ? string-validate-input 6.9843+-0.1404 ? 7.0288+-0.1377 ? <arithmetic> 6.5596+-0.0285 6.5570+-0.0190 <geometric> 5.4297+-0.0187 ? 5.4328+-0.0129 ? <harmonic> 4.4360+-0.0188 ? 4.4419+-0.0175 ? TipOfTree MoreIntPrediction V8: crypto 89.5519+-0.4226 89.2459+-0.4849 deltablue 267.0146+-1.9752 266.9575+-1.6417 earley-boyer 100.1948+-0.4290 ? 101.2045+-0.6564 ? might be 1.0101x slower raytrace 78.3700+-0.4048 77.7418+-0.4722 regexp 107.9905+-0.6120 ? 109.0274+-0.8690 ? richards 252.3878+-1.3620 ^ 247.8854+-1.0892 ^ definitely 1.0182x faster splay 108.9475+-0.6675 ? 109.2536+-0.5530 ? <arithmetic> 143.4939+-0.3942 143.0452+-0.4092 <geometric> 127.8141+-0.2470 127.6807+-0.3624 <harmonic> 116.5470+-0.1965 116.5441+-0.3588 TipOfTree MoreIntPrediction Kraken: ai-astar 1098.7387+-5.3837 1093.7142+-4.3138 audio-beat-detection 469.0803+-2.4284 ^ 461.5361+-2.3209 ^ definitely 1.0163x faster audio-dft 428.4697+-5.4192 ? 429.9280+-5.5726 ? audio-fft 366.5176+-2.1237 ? 368.1275+-2.9561 ? audio-oscillator 380.0753+-1.7885 378.3811+-0.9690 imaging-darkroom 586.0195+-5.1337 ? 594.1783+-17.3111 ? might be 1.0139x slower imaging-desaturate 597.5276+-2.3314 594.4309+-2.4371 imaging-gaussian-blur 2970.7402+-4.8706 ^ 1738.6283+-3.3785 ^ definitely 1.7087x faster json-parse-financial 49.2663+-0.3575 48.8788+-0.3181 json-stringify-tinderbox 61.7510+-0.2202 ? 61.9327+-0.2707 ? stanford-crypto-aes 143.6676+-0.7414 ? 145.2050+-1.0337 ? might be 1.0107x slower stanford-crypto-ccm 112.0324+-0.4927 111.4733+-0.3494 stanford-crypto-pbkdf2 373.0106+-2.9323 370.2925+-1.5627 stanford-crypto-sha256-iterative 140.1264+-0.6707 139.2418+-0.6824 <arithmetic> 555.5017+-0.7214 ^ 466.8535+-1.4057 ^ definitely 1.1899x faster <geometric> 311.7203+-0.5547 ^ 299.5131+-0.7081 ^ definitely 1.0408x faster <harmonic> 182.6274+-0.5036 ^ 181.6548+-0.4620 ^ definitely 1.0054x faster TipOfTree MoreIntPrediction All benchmarks: <arithmetic> 190.4687+-0.2287 ^ 163.9946+-0.4317 ^ definitely 1.1614x faster <geometric> 29.0427+-0.0535 ^ 28.7038+-0.0385 ^ definitely 1.0118x faster <harmonic> 7.8361+-0.0325 ? 7.8458+-0.0302 ?
Filip Pizlo
Comment 4 2011-08-09 17:31:16 PDT
Created attachment 103424 [details] the patch (merged to ToT, added perf numbers in ChangeLog)
Filip Pizlo
Comment 5 2011-08-09 17:32:03 PDT
Comment on attachment 103424 [details] the patch (merged to ToT, added perf numbers in ChangeLog) Ooops, I accidentally posted the wrong patch.
Filip Pizlo
Comment 6 2011-08-09 17:33:04 PDT
Created attachment 103425 [details] the patch (merged to ToT, added perf numbers to ChangeLog, and added Gavin as reviewer)
WebKit Review Bot
Comment 7 2011-08-09 18:12:42 PDT
Comment on attachment 103425 [details] the patch (merged to ToT, added perf numbers to ChangeLog, and added Gavin as reviewer) Clearing flags on attachment: 103425 Committed r92736: <http://trac.webkit.org/changeset/92736>
WebKit Review Bot
Comment 8 2011-08-09 18:12:47 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.