Bug 155828 - [JSC] In some cases, the integer range optimization phase never converges
Summary: [JSC] In some cases, the integer range optimization phase never converges
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Benjamin Poulain
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2016-03-23 20:24 PDT by Benjamin Poulain
Modified: 2016-03-24 02:03 PDT (History)
6 users (show)

See Also:


Attachments
Patch (10.47 KB, patch)
2016-03-23 21:22 PDT, Benjamin Poulain
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Benjamin Poulain 2016-03-23 20:24:12 PDT
[JSC] In some cases, the integer range optimization phase never converges
Comment 1 Benjamin Poulain 2016-03-23 21:22:37 PDT
Created attachment 274815 [details]
Patch
Comment 2 Benjamin Poulain 2016-03-23 21:23:59 PDT
I intentionally do not change filter() accordingly to keep this fix simple.

I don't see any perf impact from the extra filter:
                                                  Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                    5.0348+-0.0498     ?      5.0705+-0.0465        ?
   3d-morph                                   5.1344+-0.0981     ?      5.1557+-0.0728        ?
   3d-raytrace                                5.5740+-0.0858            5.5391+-0.0596        
   access-binary-trees                        2.1304+-0.0450     ?      2.1397+-0.0692        ?
   access-fannkuch                            6.0844+-0.1923            5.9501+-0.0993          might be 1.0226x faster
   access-nbody                               2.5194+-0.0380     ?      2.5352+-0.0512        ?
   access-nsieve                              2.9987+-0.0299            2.9967+-0.0182        
   bitops-3bit-bits-in-byte                   1.1130+-0.0152     ?      1.1317+-0.0215        ? might be 1.0168x slower
   bitops-bits-in-byte                        2.7345+-0.0122     ?      2.7670+-0.0403        ? might be 1.0119x slower
   bitops-bitwise-and                         2.0148+-0.0278     ?      2.0207+-0.0272        ?
   bitops-nsieve-bits                         3.0779+-0.0118            3.0749+-0.0085        
   controlflow-recursive                      2.3003+-0.0109     ?      2.3289+-0.0408        ? might be 1.0125x slower
   crypto-aes                                 3.9760+-0.0526            3.9565+-0.0368        
   crypto-md5                                 2.4385+-0.0147     !      2.5295+-0.0718        ! definitely 1.0373x slower
   crypto-sha1                                2.3283+-0.0197            2.3244+-0.0325        
   date-format-tofte                          6.6788+-0.1469     ?      6.7074+-0.0749        ?
   date-format-xparb                          4.8527+-0.2047            4.8119+-0.0740        
   math-cordic                                2.8317+-0.0519            2.8009+-0.0218          might be 1.0110x faster
   math-partial-sums                          4.9172+-0.0915            4.7855+-0.0473          might be 1.0275x faster
   math-spectral-norm                         1.9773+-0.0262            1.9745+-0.0235        
   regexp-dna                                 6.3657+-0.2314            6.3456+-0.1636        
   string-base64                              4.4586+-0.0960     ?      4.7087+-0.2580        ? might be 1.0561x slower
   string-fasta                               5.8521+-0.0698     ?      5.9636+-0.2139        ? might be 1.0191x slower
   string-tagcloud                            8.0364+-0.0846     ?      8.0531+-0.0896        ?
   string-unpack-code                        19.0781+-0.5818           19.0359+-0.5866        
   string-validate-input                      4.2418+-0.0385     ?      4.3085+-0.0843        ? might be 1.0157x slower

   <arithmetic>                               4.5673+-0.0288     ?      4.5775+-0.0293        ? might be 1.0022x slower

                                                  Conf#1                    Conf#2                                      
Octane:
   encrypt                                   0.16117+-0.00044    ?     0.16144+-0.00081       ?
   decrypt                                   2.79873+-0.00563    ?     2.80439+-0.01049       ?
   deltablue                        x2       0.13942+-0.00218          0.13862+-0.00219       
   earley                                    0.28200+-0.00124          0.28189+-0.00114       
   boyer                                     4.93616+-0.05738          4.88540+-0.06582         might be 1.0104x faster
   navier-stokes                    x2       4.92159+-0.01435          4.91695+-0.00767       
   raytrace                         x2       0.88911+-0.00229          0.88805+-0.00189       
   richards                         x2       0.08201+-0.00066          0.08118+-0.00050         might be 1.0102x faster
   splay                            x2       0.34694+-0.00252    ?     0.34791+-0.00189       ?
   regexp                           x2      19.54577+-0.18981    ?    19.71274+-0.12276       ?
   pdfjs                            x2      38.59829+-0.18960         38.43783+-0.17575       
   mandreel                         x2      42.22717+-0.10168    ?    42.33948+-0.07730       ?
   gbemu                            x2      24.37448+-0.17681         24.11620+-0.14455         might be 1.0107x faster
   closure                                   0.55011+-0.00131          0.54880+-0.00146       
   jquery                                    7.13691+-0.02993          7.11495+-0.02169       
   box2d                            x2       9.07796+-0.03644          9.03238+-0.03638       
   zlib                             x2     361.34559+-4.38287        360.57960+-2.40219       
   typescript                       x2     628.50105+-2.30263    ?   633.14951+-3.76226       ?

   <geometric>                               5.12001+-0.00867          5.11163+-0.00784         might be 1.0016x faster

                                                  Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                   86.674+-0.359      ?      86.729+-0.315         ?
   audio-beat-detection                       44.944+-0.325             44.797+-0.131         
   audio-dft                                  97.668+-1.186             97.245+-1.015         
   audio-fft                                  35.403+-0.038      ?      35.757+-0.472         ? might be 1.0100x slower
   audio-oscillator                           47.843+-0.059      ?      48.316+-0.604         ?
   imaging-darkroom                           60.341+-0.456             60.219+-0.179         
   imaging-desaturate                         44.254+-0.124      ?      44.647+-0.679         ?
   imaging-gaussian-blur                      63.901+-1.488             63.038+-1.316           might be 1.0137x faster
   json-parse-financial                       36.969+-0.307      ?      37.253+-0.673         ?
   json-stringify-tinderbox                   22.608+-0.594      ?      23.068+-0.850         ? might be 1.0203x slower
   stanford-crypto-aes                        39.017+-0.246      ?      39.182+-0.423         ?
   stanford-crypto-ccm                        34.571+-0.776             34.113+-0.902           might be 1.0134x faster
   stanford-crypto-pbkdf2                     99.872+-3.240             97.883+-0.112           might be 1.0203x faster
   stanford-crypto-sha256-iterative           37.688+-0.512             37.379+-0.079         

   <arithmetic>                               53.697+-0.267             53.545+-0.142           might be 1.0028x faster

                                                  Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                               437.7203+-3.0106     ?    438.3455+-3.0468        ?
   cray.c                                   360.3849+-1.2944     ?    360.5656+-1.5716        ?
   dry.c                                    432.7108+-17.3113         432.5710+-20.1896       
   FloatMM.c                                715.6900+-0.9884     ?    715.8090+-1.0900        ?
   gcc-loops.cpp                           3655.9495+-4.6668     ?   3658.3011+-5.2491        ?
   n-body.c                                 809.0068+-1.6828          808.6148+-2.3095        
   Quicksort.c                              391.0468+-1.5917          390.1796+-0.8404        
   stepanov_container.cpp                  3254.3714+-12.4799    ?   3255.9057+-7.6753        ?
   Towers.c                                 268.3456+-1.6323          267.4682+-0.5150        

   <geometric>                              715.5762+-2.7843          715.2596+-3.5572          might be 1.0004x faster

                                                  Conf#1                    Conf#2                                      
Geomean of preferred means:
   <scaled-result>                           30.7870+-0.0625           30.7667+-0.0739          might be 1.0007x faster
Comment 3 Benjamin Poulain 2016-03-23 21:24:15 PDT
rdar://problem/25155460
Comment 4 Filip Pizlo 2016-03-23 22:04:32 PDT
Comment on attachment 274815 [details]
Patch

Nice!  This feels like a robust solution.
Comment 5 WebKit Commit Bot 2016-03-24 02:02:57 PDT
Comment on attachment 274815 [details]
Patch

Clearing flags on attachment: 274815

Committed r198621: <http://trac.webkit.org/changeset/198621>
Comment 6 WebKit Commit Bot 2016-03-24 02:03:00 PDT
All reviewed patches have been landed.  Closing bug.