Bug 65949 - DFG JIT does not speculative integers as aggressively as it should
Summary: DFG JIT does not speculative integers as aggressively as it should
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-08-09 16:35 PDT by Filip Pizlo
Modified: 2011-08-09 18:12 PDT (History)
3 users (show)

See Also:


Attachments
the patch (2.54 KB, patch)
2011-08-09 16:38 PDT, Filip Pizlo
barraclough: review+
Details | Formatted Diff | Diff
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-
Details | Formatted Diff | Diff
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 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-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.
Comment 1 Filip Pizlo 2011-08-09 16:38:33 PDT
Created attachment 103416 [details]
the patch
Comment 2 Filip Pizlo 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.
Comment 3 Filip Pizlo 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      ?
Comment 4 Filip Pizlo 2011-08-09 17:31:16 PDT
Created attachment 103424 [details]
the patch (merged to ToT, added perf numbers in ChangeLog)
Comment 5 Filip Pizlo 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.
Comment 6 Filip Pizlo 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)
Comment 7 WebKit Review Bot 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>
Comment 8 WebKit Review Bot 2011-08-09 18:12:47 PDT
All reviewed patches have been landed.  Closing bug.