Bug 143734 - MovHint should be a strong use
Summary: MovHint should be a strong use
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on: 143833 144256 143792
Blocks: 143733 143736
  Show dependency treegraph
 
Reported: 2015-04-14 15:55 PDT by Filip Pizlo
Modified: 2015-04-27 05:02 PDT (History)
12 users (show)

See Also:


Attachments
the patch (31.96 KB, patch)
2015-04-19 15:32 PDT, Filip Pizlo
ggaren: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2015-04-14 15:55:12 PDT
Currently MovHint is a "weak" use in the sense that if nothing else uses a child of a MovHint then the MovHint turns into a ZombieHint.  We should change this.  Instead, MovHint should be a strong use.  This will fix bugs where our other mechanisms of keeping things alive for OSR (i.e. Phantoms) aren't properly preserved.

This will reduce the amount of DCE we do.  As part of this patch, we should mitigate the reduction in DCE by introducing a phase that removes MovHints if the value is dead in bytecode.
Comment 1 Filip Pizlo 2015-04-14 15:58:56 PDT
Here is the performance on x86_64 if I just make MovHint a strong use but don't introduce any mitigations:


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (r182806)
"NoOSRDCE" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r182806)

Collected 6 samples per benchmark/VM, with 6 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                  NoOSRDCE                                     
SunSpider:
   3d-cube                                            4.8970+-0.0688     !      5.0621+-0.0654        ! definitely 1.0337x slower
   3d-morph                                           5.7936+-0.0622     ?      5.8701+-0.1637        ? might be 1.0132x slower
   3d-raytrace                                        6.2652+-0.0645     ?      6.3186+-0.1366        ?
   access-binary-trees                                2.2135+-0.0646            2.1853+-0.0662          might be 1.0129x faster
   access-fannkuch                                    5.7381+-0.0905     ?      5.7992+-0.0863        ? might be 1.0107x slower
   access-nbody                                       2.9460+-0.0613     ?      2.9598+-0.0903        ?
   access-nsieve                                      3.3917+-0.1440            3.3150+-0.0651          might be 1.0231x faster
   bitops-3bit-bits-in-byte                           1.5988+-0.0542     ?      1.6005+-0.0697        ?
   bitops-bits-in-byte                                3.3753+-0.0615     ?      3.4091+-0.0383        ? might be 1.0100x slower
   bitops-bitwise-and                                 2.1683+-0.0785            2.0660+-0.0592          might be 1.0495x faster
   bitops-nsieve-bits                                 3.6375+-0.0648     ^      3.3792+-0.0707        ^ definitely 1.0765x faster
   controlflow-recursive                              2.1691+-0.0390     ?      2.2079+-0.0517        ? might be 1.0179x slower
   crypto-aes                                         4.4987+-0.6472     ?      4.5353+-0.4057        ?
   crypto-md5                                         2.4281+-0.0815     ?      2.4513+-0.1338        ?
   crypto-sha1                                        2.7152+-0.1572            2.7021+-0.1951        
   date-format-tofte                                  9.4003+-0.2199            9.2496+-0.1236          might be 1.0163x faster
   date-format-xparb                                  5.8364+-0.1643            5.8093+-0.3173        
   math-cordic                                        3.0746+-0.0481            3.0420+-0.0921          might be 1.0107x faster
   math-partial-sums                                  5.2565+-0.1236     ?      5.3582+-0.3989        ? might be 1.0193x slower
   math-spectral-norm                                 1.9328+-0.0643     ?      1.9793+-0.1651        ? might be 1.0241x slower
   regexp-dna                                         8.0500+-1.5896            7.5887+-1.2486          might be 1.0608x faster
   string-base64                                      4.4369+-0.1049     ?      4.8056+-0.7815        ? might be 1.0831x slower
   string-fasta                                       6.6282+-0.0698     ?      6.6963+-0.0985        ? might be 1.0103x slower
   string-tagcloud                                   10.1379+-0.2248            9.7635+-0.2526          might be 1.0383x faster
   string-unpack-code                                19.6618+-0.3229     ?     19.9645+-0.7952        ? might be 1.0154x slower
   string-validate-input                              4.9487+-0.1412            4.8728+-0.0770          might be 1.0156x faster

   <arithmetic>                                       5.1231+-0.0991            5.1150+-0.0698          might be 1.0016x faster

                                                        TipOfTree                  NoOSRDCE                                     
LongSpider:
   3d-cube                                         1067.5059+-5.8140     ^    897.4189+-26.3117       ^ definitely 1.1895x faster
   3d-morph                                        1530.5034+-5.1575     ?   1532.3490+-6.2662        ?
   3d-raytrace                                      733.8377+-4.3057          729.0163+-7.2074        
   access-binary-trees                             1021.8750+-5.8868         1020.7007+-9.6463        
   access-fannkuch                                  336.5179+-8.8821          336.3901+-12.7039       
   access-nbody                                     620.4231+-10.0821         617.6023+-5.3693        
   access-nsieve                                    855.5782+-6.0463          847.1084+-9.3556        
   bitops-3bit-bits-in-byte                          45.3331+-1.6364           44.9288+-0.6749        
   bitops-bits-in-byte                              104.9795+-1.5006          104.1633+-2.1275        
   bitops-nsieve-bits                               707.8824+-5.9502     ^    633.3958+-4.0748        ^ definitely 1.1176x faster
   controlflow-recursive                            480.4709+-8.5079     !    503.6184+-2.5956        ! definitely 1.0482x slower
   crypto-aes                                       718.1868+-9.5828          711.8633+-5.7931        
   crypto-md5                                       558.9170+-9.2708     ?    559.4188+-6.7474        ?
   crypto-sha1                                      604.1073+-16.9826         596.7307+-7.8045          might be 1.0124x faster
   date-format-tofte                                771.6822+-9.3199          768.6345+-16.8049       
   date-format-xparb                                794.1659+-24.5549         781.6139+-16.0455         might be 1.0161x faster
   math-cordic                                      598.2437+-10.6035         596.2216+-6.1040        
   math-partial-sums                                506.0310+-1.9356     ?    510.1378+-4.3534        ?
   math-spectral-norm                               566.6849+-2.9046          565.9801+-2.0958        
   string-base64                                    371.0673+-5.2165          369.7343+-4.8038        
   string-fasta                                     448.4598+-4.3884          448.3228+-4.4780        
   string-tagcloud                                  217.3328+-2.2594          215.1924+-2.3505        

   <geometric>                                      507.1557+-1.9180     ^    499.6948+-1.7390        ^ definitely 1.0149x faster

                                                        TipOfTree                  NoOSRDCE                                     
V8Spider:
   crypto                                            55.6004+-0.5162           55.5916+-0.9692        
   deltablue                                         97.6347+-5.3479           95.3752+-2.0943          might be 1.0237x faster
   earley-boyer                                      42.3557+-1.8550           41.7365+-0.5457          might be 1.0148x faster
   raytrace                                          39.7775+-2.7812     ?     40.0792+-2.4522        ?
   regexp                                            68.3621+-2.7212     !     87.4352+-2.3372        ! definitely 1.2790x slower
   richards                                          79.1165+-1.3258           78.2292+-1.8148          might be 1.0113x faster
   splay                                             38.0673+-1.2425     ?     38.5365+-1.9379        ? might be 1.0123x slower

   <geometric>                                       56.6620+-0.8414     !     58.4507+-0.5616        ! definitely 1.0316x slower

                                                        TipOfTree                  NoOSRDCE                                     
Octane:
   encrypt                                           0.20318+-0.00145          0.20280+-0.00124       
   decrypt                                           3.63673+-0.04904          3.58847+-0.03558         might be 1.0134x faster
   deltablue                                x2       0.20873+-0.00289          0.20696+-0.00118       
   earley                                            0.58985+-0.00328    ^     0.58279+-0.00254       ^ definitely 1.0121x faster
   boyer                                             6.43795+-0.02255    !     6.52377+-0.02575       ! definitely 1.0133x slower
   navier-stokes                            x2       5.30640+-0.18366          5.20271+-0.03220         might be 1.0199x faster
   raytrace                                 x2       1.27357+-0.08940    ?     1.28555+-0.02189       ?
   richards                                 x2       0.12330+-0.00118          0.12303+-0.00090       
   splay                                    x2       0.38232+-0.00314          0.38224+-0.00553       
   regexp                                   x2      33.24388+-0.11767    ?    33.27609+-0.33954       ?
   pdfjs                                    x2      44.24863+-0.16381    ?    45.41128+-2.54610       ? might be 1.0263x slower
   mandreel                                 x2      50.23713+-0.46079         50.15673+-0.34736       
   gbemu                                    x2      38.79241+-0.18215    !    42.04436+-0.21398       ! definitely 1.0838x slower
   closure                                           0.55605+-0.00548    ?     0.55845+-0.00388       ?
   jquery                                            7.18395+-0.07158          7.11326+-0.13777       
   box2d                                    x2      12.31547+-0.28960         12.27296+-0.14332       
   zlib                                     x2     380.92706+-14.58368   ?   388.41813+-3.38749       ? might be 1.0197x slower
   typescript                               x2     824.53459+-12.52081   ?   827.03031+-19.26953      ?

   <geometric>                                       6.69997+-0.04311    ?     6.74269+-0.04480       ? might be 1.0064x slower

                                                        TipOfTree                  NoOSRDCE                                     
Kraken:
   ai-astar                                          268.446+-2.273      !     273.171+-1.978         ! definitely 1.0176x slower
   audio-beat-detection                              105.607+-0.711      ?     106.068+-1.173         ?
   audio-dft                                         151.037+-2.511            148.576+-2.351           might be 1.0166x faster
   audio-fft                                          85.230+-3.616      ?      85.241+-3.658         ?
   audio-oscillator                                  210.924+-1.903            208.206+-2.072           might be 1.0131x faster
   imaging-darkroom                                  106.016+-1.708            105.023+-1.833         
   imaging-desaturate                                 63.661+-1.425             62.795+-0.528           might be 1.0138x faster
   imaging-gaussian-blur                             115.390+-5.202            114.176+-1.556           might be 1.0106x faster
   json-parse-financial                               46.785+-2.009             45.952+-1.895           might be 1.0181x faster
   json-stringify-tinderbox                           58.300+-1.732             57.600+-1.592           might be 1.0122x faster
   stanford-crypto-aes                                63.091+-2.343      ?      65.638+-3.253         ? might be 1.0404x slower
   stanford-crypto-ccm                                51.539+-4.606             48.991+-1.078           might be 1.0520x faster
   stanford-crypto-pbkdf2                            168.484+-2.134      ?     171.559+-3.952         ? might be 1.0183x slower
   stanford-crypto-sha256-iterative                   56.685+-1.654             55.286+-1.936           might be 1.0253x faster

   <arithmetic>                                      110.800+-0.716            110.592+-0.499           might be 1.0019x faster

                                                        TipOfTree                  NoOSRDCE                                     
JSRegress:
   abs-boolean                                        2.6613+-0.0431            2.6287+-0.0397          might be 1.0124x faster
   adapt-to-double-divide                            17.1914+-0.4228           16.7621+-0.4132          might be 1.0256x faster
   aliased-arguments-getbyval                         1.1907+-0.0552            1.1901+-0.0426        
   allocate-big-object                                2.7295+-0.1244     ?      2.7731+-0.1574        ? might be 1.0160x slower
   arguments-named-and-reflective                    13.7318+-1.4432           13.1806+-0.6998          might be 1.0418x faster
   arguments-out-of-bounds                           14.8790+-0.3209     ?     15.1908+-0.6892        ? might be 1.0210x slower
   arguments-strict-mode                             12.8287+-1.1978           12.5224+-1.1669          might be 1.0245x faster
   arguments                                         10.6535+-0.7665           10.5916+-0.1391        
   arity-mismatch-inlining                            0.8822+-0.0701            0.8615+-0.0266          might be 1.0239x faster
   array-access-polymorphic-structure                 7.5048+-1.2619     ?      8.0755+-1.2100        ? might be 1.0760x slower
   array-nonarray-polymorhpic-access                 34.8757+-1.5215     ?     36.1423+-1.9855        ? might be 1.0363x slower
   array-prototype-every                             87.5752+-1.2691     ?     89.8526+-2.2565        ? might be 1.0260x slower
   array-prototype-forEach                           85.8967+-3.0507     ?     86.1534+-3.1761        ?
   array-prototype-map                               94.8941+-2.1584     ?     95.6781+-1.6368        ?
   array-prototype-some                              87.6936+-2.2933     ?     88.5341+-0.6680        ?
   array-splice-contiguous                           43.1302+-3.4558           41.5018+-1.9971          might be 1.0392x faster
   array-with-double-add                              4.2082+-0.1177            4.1512+-0.0778          might be 1.0137x faster
   array-with-double-increment                        3.1740+-0.0380     ?      3.2146+-0.0434        ? might be 1.0128x slower
   array-with-double-mul-add                          5.0220+-0.0799     ?      5.0535+-0.0755        ?
   array-with-double-sum                              3.2501+-0.0406     ?      3.3006+-0.0434        ? might be 1.0155x slower
   array-with-int32-add-sub                           6.8524+-0.0978            6.7568+-0.0880          might be 1.0142x faster
   array-with-int32-or-double-sum                     3.3357+-0.0503     ?      3.3665+-0.0750        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     35.3763+-3.0609           33.7734+-2.0705          might be 1.0475x faster
   ArrayBuffer-DataView-alloc-long-lived             16.1352+-2.1938           15.6933+-1.9149          might be 1.0282x faster
   ArrayBuffer-Int32Array-byteOffset                  4.0250+-0.6754            3.7765+-0.0944          might be 1.0658x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     33.0465+-1.0693     ?     33.5916+-2.6171        ? might be 1.0165x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     22.9254+-0.5165     ?     25.1132+-1.8805        ? might be 1.0954x slower
   ArrayBuffer-Int8Array-alloc-long-lived            14.2803+-1.4275     ?     15.7355+-1.3985        ? might be 1.1019x slower
   ArrayBuffer-Int8Array-alloc                       11.3022+-0.7266           11.1919+-0.7937        
   asmjs_bool_bug                                     7.7214+-0.1895            7.6310+-0.0497          might be 1.0118x faster
   assign-custom-setter-polymorphic                   3.1956+-0.1111            3.0618+-0.0562          might be 1.0437x faster
   assign-custom-setter                               4.4565+-0.1082     ^      4.1613+-0.0678        ^ definitely 1.0709x faster
   basic-set                                          8.9456+-0.5908            8.7931+-0.3397          might be 1.0173x faster
   big-int-mul                                        4.0915+-0.0432     ?      4.1055+-0.0747        ?
   boolean-test                                       3.0573+-0.0593            3.0271+-0.0254        
   branch-fold                                        3.7320+-0.0889            3.7244+-0.0214        
   by-val-generic                                     8.6464+-0.5170            8.5404+-0.4354          might be 1.0124x faster
   call-spread-apply                                 31.1073+-1.6314     ?     31.8700+-1.8562        ? might be 1.0245x slower
   call-spread-call                                  25.6043+-2.0334     ?     26.1313+-1.8767        ? might be 1.0206x slower
   captured-assignments                               0.4483+-0.0149     ?      0.4640+-0.0187        ? might be 1.0349x slower
   cast-int-to-double                                 5.2533+-0.0109     ?      5.3031+-0.0947        ?
   cell-argument                                      8.6961+-0.3164            8.4875+-0.2054          might be 1.0246x faster
   cfg-simplify                                       2.8624+-0.0689     ?      3.0010+-0.1365        ? might be 1.0484x slower
   chain-getter-access                               10.1454+-0.1688           10.0223+-0.0964          might be 1.0123x faster
   cmpeq-obj-to-obj-other                            10.8257+-0.5203     ?     11.2446+-0.6541        ? might be 1.0387x slower
   constant-test                                      4.9603+-0.0576            4.9332+-0.0243        
   create-lots-of-functions                          23.5172+-1.7969     ?     24.5695+-1.4864        ? might be 1.0447x slower
   DataView-custom-properties                        39.2245+-1.9690     ?     44.5149+-12.8387       ? might be 1.1349x slower
   deconstructing-parameters-overridden-by-function   
                                                      0.5081+-0.0390            0.4738+-0.0155          might be 1.0724x faster
   delay-tear-off-arguments-strictmode               13.9295+-0.2926     ?     14.3748+-1.1572        ? might be 1.0320x slower
   deltablue-varargs                                199.2939+-2.4432     ?    201.5839+-2.3195        ? might be 1.0115x slower
   destructuring-arguments                           16.6486+-0.9119     ?     17.5288+-1.1554        ? might be 1.0529x slower
   destructuring-swap                                 5.1011+-0.1876            5.0343+-0.0486          might be 1.0133x faster
   direct-arguments-getbyval                          1.2177+-0.0446     ?      1.2338+-0.1232        ? might be 1.0133x slower
   div-boolean-double                                 5.2057+-0.0205     ?      5.2688+-0.0989        ? might be 1.0121x slower
   div-boolean                                        7.7955+-0.0726     ?      7.9528+-0.2894        ? might be 1.0202x slower
   double-get-by-val-out-of-bounds                    4.5051+-0.0410            4.5000+-0.0336        
   double-pollution-getbyval                          8.8608+-0.0584     ?      9.0785+-0.3673        ? might be 1.0246x slower
   double-pollution-putbyoffset                       4.2858+-0.0827     ?      4.3335+-0.1657        ? might be 1.0111x slower
   double-to-int32-typed-array-no-inline              2.3186+-0.0694            2.2487+-0.0458          might be 1.0311x faster
   double-to-int32-typed-array                        1.9260+-0.0535     ?      1.9499+-0.0944        ? might be 1.0124x slower
   double-to-uint32-typed-array-no-inline             2.3184+-0.0390     ?      2.3514+-0.0549        ? might be 1.0143x slower
   double-to-uint32-typed-array                       1.9632+-0.0341            1.9347+-0.0453          might be 1.0147x faster
   elidable-new-object-dag                           44.5415+-2.8450           42.8042+-1.8685          might be 1.0406x faster
   elidable-new-object-roflcopter                    46.3348+-1.1740     ?     46.6653+-1.6405        ?
   elidable-new-object-then-call                     38.2910+-0.7143     ?     39.7568+-1.3841        ? might be 1.0383x slower
   elidable-new-object-tree                          45.3957+-1.1246     ?     45.4967+-2.3644        ?
   empty-string-plus-int                              5.3662+-0.0993            5.3510+-0.0732        
   emscripten-cube2hash                              39.1989+-1.1232     ?     39.4736+-1.0736        ?
   exit-length-on-plain-object                       15.0979+-2.1341     ?     15.2716+-1.6884        ? might be 1.0115x slower
   external-arguments-getbyval                        1.1871+-0.0262     ?      1.2115+-0.0532        ? might be 1.0206x slower
   external-arguments-putbyval                        2.3017+-0.0862     ?      2.3415+-0.0963        ? might be 1.0173x slower
   fixed-typed-array-storage-var-index                1.2411+-0.0362            1.2270+-0.0146          might be 1.0115x faster
   fixed-typed-array-storage                          0.9250+-0.0546            0.9209+-0.0540        
   Float32Array-matrix-mult                           4.5177+-0.4356            4.3447+-0.0985          might be 1.0398x faster
   Float32Array-to-Float64Array-set                  53.7063+-2.3900     !     58.6246+-2.2263        ! definitely 1.0916x slower
   Float64Array-alloc-long-lived                     73.2679+-1.3301     ?     74.6581+-2.0964        ? might be 1.0190x slower
   Float64Array-to-Int16Array-set                    71.0888+-1.4861     ?     71.9082+-3.6463        ? might be 1.0115x slower
   fold-double-to-int                                13.6420+-0.1634     ?     13.6997+-0.2073        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                      9.7786+-0.7109     ?     10.6461+-1.2013        ? might be 1.0887x slower
   fold-get-by-id-to-multi-get-by-offset             10.3299+-1.3725     ?     10.7474+-0.9842        ? might be 1.0404x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.0185+-0.9183     ?      9.0253+-1.0213        ?
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.5566+-0.3838     ?      9.0320+-0.8652        ? might be 1.0556x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.3947+-0.5871            8.2530+-1.5747          might be 1.0172x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.7961+-0.7545     ?      5.4729+-1.1986        ? might be 1.1411x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.5172+-0.2950            9.4537+-0.1602        
   fold-put-by-id-to-multi-put-by-offset              9.7146+-0.8440            9.4176+-0.7776          might be 1.0315x faster
   fold-put-structure                                 6.4893+-1.2507     ^      4.2612+-0.6658        ^ definitely 1.5229x faster
   for-of-iterate-array-entries                       4.7381+-0.1075     ?      4.8727+-0.2248        ? might be 1.0284x slower
   for-of-iterate-array-keys                          3.9344+-0.0972            3.8389+-0.0452          might be 1.0249x faster
   for-of-iterate-array-values                        3.9410+-0.2119            3.8560+-0.0728          might be 1.0220x faster
   fround                                            19.6753+-0.5373     ?     20.1328+-0.6463        ? might be 1.0233x slower
   ftl-library-inlining-dataview                     82.9753+-3.6728     ?     83.9054+-2.0755        ? might be 1.0112x slower
   ftl-library-inlining                              73.6185+-15.6872          67.7896+-0.4844          might be 1.0860x faster
   function-dot-apply                                 2.3213+-0.0769            2.2841+-0.1536          might be 1.0163x faster
   function-test                                      3.4548+-0.0387            3.4384+-0.0437        
   function-with-eval                               102.7368+-4.2082     ?    109.3287+-6.8411        ? might be 1.0642x slower
   gcse-poly-get-less-obvious                        19.2189+-0.5118     ?     19.3571+-1.8349        ?
   gcse-poly-get                                     22.3671+-1.8464           21.0413+-1.0849          might be 1.0630x faster
   gcse                                               4.3295+-0.0631     ?      4.3997+-0.1152        ? might be 1.0162x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7799+-0.0428     ?      2.7862+-0.0492        ?
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.0672+-0.0802            6.0299+-0.0257        
   get-by-id-chain-from-try-block                     7.0346+-1.1584     ?      7.1876+-1.2515        ? might be 1.0217x slower
   get-by-id-check-structure-elimination              5.1025+-0.0597     ?      5.1767+-0.1047        ? might be 1.0145x slower
   get-by-id-proto-or-self                           16.8044+-0.4984     ?     17.0758+-0.9206        ? might be 1.0162x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.9735+-0.0330     ?      2.9875+-0.0942        ?
   get-by-id-self-or-proto                           17.4693+-0.3841     ?     17.5945+-0.8000        ?
   get-by-val-out-of-bounds                           4.3525+-0.0396            4.3216+-0.0269        
   get_callee_monomorphic                             3.8104+-0.0914            3.7404+-0.1070          might be 1.0187x faster
   get_callee_polymorphic                             3.3983+-0.0409     ?      3.4240+-0.0449        ?
   getter-no-activation                               5.0280+-0.2043            4.9996+-0.2071        
   getter-richards                                  126.5514+-5.0754          125.3142+-8.3532        
   getter                                             6.1037+-0.7522            5.8583+-0.7657          might be 1.0419x faster
   global-var-const-infer-fire-from-opt               0.8864+-0.0766     ?      0.9025+-0.1010        ? might be 1.0182x slower
   global-var-const-infer                             0.9327+-0.1663            0.8776+-0.1262          might be 1.0628x faster
   HashMap-put-get-iterate-keys                      26.7270+-0.2394           26.3845+-0.3441          might be 1.0130x faster
   HashMap-put-get-iterate                           26.6857+-0.8649           26.2269+-0.2393          might be 1.0175x faster
   HashMap-string-put-get-iterate                    27.6351+-1.1639     ?     28.3949+-1.4772        ? might be 1.0275x slower
   hoist-make-rope                                   11.7032+-0.4957           11.4322+-0.7077          might be 1.0237x faster
   hoist-poly-check-structure-effectful-loop   
                                                      4.9434+-0.0244     ?      5.1082+-0.1913        ? might be 1.0333x slower
   hoist-poly-check-structure                         3.7525+-0.1205            3.7063+-0.0605          might be 1.0125x faster
   imul-double-only                                   8.0524+-0.6308     ?      8.6914+-0.7298        ? might be 1.0794x slower
   imul-int-only                                     10.0866+-0.6877            9.7439+-0.1015          might be 1.0352x faster
   imul-mixed                                         8.4558+-0.3558            8.3062+-0.3160          might be 1.0180x faster
   in-four-cases                                     18.8477+-0.1706           18.8097+-0.1639        
   in-one-case-false                                 10.3478+-0.5822           10.2462+-0.4444        
   in-one-case-true                                  10.3149+-0.5971            9.9530+-0.3789          might be 1.0364x faster
   in-two-cases                                      10.3026+-0.2076     ?     10.3893+-0.3899        ?
   indexed-properties-in-objects                      2.8722+-0.0200     ?      2.9012+-0.0296        ? might be 1.0101x slower
   infer-closure-const-then-mov-no-inline             3.7030+-0.0582     ?      3.7203+-0.0220        ?
   infer-closure-const-then-mov                      19.0613+-0.4527     !     19.9965+-0.3049        ! definitely 1.0491x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     13.9381+-1.5319     ?     14.6198+-1.6865        ? might be 1.0489x slower
   infer-closure-const-then-put-to-scope             23.1684+-1.0714           22.5965+-0.7065          might be 1.0253x faster
   infer-closure-const-then-reenter-no-inline   
                                                     64.8354+-2.6703     ?     68.7110+-2.0056        ? might be 1.0598x slower
   infer-closure-const-then-reenter                  22.7627+-1.3098           22.0184+-0.4474          might be 1.0338x faster
   infer-constant-global-property                    30.2413+-0.6219     ?     31.3655+-1.9600        ? might be 1.0372x slower
   infer-constant-property                            2.7338+-0.0338            2.7005+-0.0410          might be 1.0123x faster
   infer-one-time-closure-ten-vars                   13.9823+-1.5857           12.8832+-0.3508          might be 1.0853x faster
   infer-one-time-closure-two-vars                   12.7184+-0.8030     ?     12.9483+-1.5113        ? might be 1.0181x slower
   infer-one-time-closure                            12.7546+-0.8612           12.3940+-0.8597          might be 1.0291x faster
   infer-one-time-deep-closure                       22.5677+-1.0921     ?     22.6368+-1.0461        ?
   inline-arguments-access                            4.3881+-0.1181     ?      4.4320+-0.1947        ? might be 1.0100x slower
   inline-arguments-aliased-access                    4.4124+-0.1914     ?      4.4358+-0.1676        ?
   inline-arguments-local-escape                      4.5333+-0.1658     ?      4.6482+-0.1954        ? might be 1.0253x slower
   inline-get-scoped-var                              4.9157+-0.2304     ?      4.9491+-0.2022        ?
   inlined-put-by-id-transition                      10.5290+-0.3718     ?     10.6319+-0.2753        ?
   int-or-other-abs-then-get-by-val                   5.1048+-0.0653     ?      5.4281+-1.5671        ? might be 1.0633x slower
   int-or-other-abs-zero-then-get-by-val             17.6322+-0.9783     ?     18.0579+-0.9528        ? might be 1.0241x slower
   int-or-other-add-then-get-by-val                   4.2520+-0.0180     ?      4.3147+-0.1075        ? might be 1.0148x slower
   int-or-other-add                                   5.2796+-0.0407     ?      5.3128+-0.0436        ?
   int-or-other-div-then-get-by-val                   4.3512+-0.0477     ^      4.1003+-0.0694        ^ definitely 1.0612x faster
   int-or-other-max-then-get-by-val                   4.4143+-0.1078            4.2909+-0.1795          might be 1.0288x faster
   int-or-other-min-then-get-by-val                   4.4820+-0.0334     ?      4.5788+-0.2324        ? might be 1.0216x slower
   int-or-other-mod-then-get-by-val                   3.9096+-0.1232            3.8387+-0.0481          might be 1.0185x faster
   int-or-other-mul-then-get-by-val                   3.9926+-0.0343     !      4.0730+-0.0401        ! definitely 1.0201x slower
   int-or-other-neg-then-get-by-val                   4.6049+-0.0295     ^      4.4800+-0.0412        ^ definitely 1.0279x faster
   int-or-other-neg-zero-then-get-by-val             17.6616+-1.1421     ?     19.7504+-5.2604        ? might be 1.1183x slower
   int-or-other-sub-then-get-by-val                   4.3586+-0.1477            4.3472+-0.1371        
   int-or-other-sub                                   3.5364+-0.0825            3.4786+-0.0373          might be 1.0166x faster
   int-overflow-local                                 4.3724+-0.0390     ^      4.2587+-0.0516        ^ definitely 1.0267x faster
   Int16Array-alloc-long-lived                       49.9170+-1.0861     ?     51.1594+-1.7642        ? might be 1.0249x slower
   Int16Array-bubble-sort-with-byteLength            21.0540+-1.6300           20.4076+-0.8934          might be 1.0317x faster
   Int16Array-bubble-sort                            20.3346+-0.5616           20.0439+-0.2505          might be 1.0145x faster
   Int16Array-load-int-mul                            1.5027+-0.0336            1.4935+-0.0127        
   Int16Array-to-Int32Array-set                      58.2192+-2.7235           54.1738+-2.0750          might be 1.0747x faster
   Int32Array-alloc-large                            25.3748+-1.1682           24.3156+-0.4395          might be 1.0436x faster
   Int32Array-alloc-long-lived                       57.8029+-0.6679           56.7143+-1.7973          might be 1.0192x faster
   Int32Array-alloc                                   3.7260+-0.4853            3.3666+-0.1520          might be 1.1067x faster
   Int32Array-Int8Array-view-alloc                    7.3708+-0.7278     ?      8.2517+-1.0361        ? might be 1.1195x slower
   int52-spill                                        6.4272+-0.0653            6.4232+-0.1793        
   Int8Array-alloc-long-lived                        49.2013+-1.1154           47.6876+-1.5764          might be 1.0317x faster
   Int8Array-load-with-byteLength                     3.3510+-0.0402     ?      3.3988+-0.0980        ? might be 1.0143x slower
   Int8Array-load                                     3.4145+-0.0762     ?      3.4273+-0.1278        ?
   integer-divide                                    11.5982+-0.1105     ?     11.8169+-0.1322        ? might be 1.0189x slower
   integer-modulo                                     2.0350+-0.0634            1.9843+-0.1078          might be 1.0256x faster
   large-int-captured                                 5.6318+-0.0637     ?      5.6321+-0.1087        ?
   large-int-neg                                     16.6255+-0.6645     ?     16.9100+-1.5711        ? might be 1.0171x slower
   large-int                                         15.1376+-0.7961     ?     15.4848+-0.9153        ? might be 1.0229x slower
   logical-not                                        4.5947+-0.0784            4.5662+-0.0229        
   lots-of-fields                                    13.2408+-0.3255           12.9112+-0.2952          might be 1.0255x faster
   make-indexed-storage                               3.1700+-0.0332            3.0996+-0.1068          might be 1.0227x faster
   make-rope-cse                                      4.5473+-0.1045     ?      4.7963+-0.3416        ? might be 1.0548x slower
   marsaglia-larger-ints                             37.4924+-1.7759           35.9100+-0.6103          might be 1.0441x faster
   marsaglia-osr-entry                               23.8927+-1.3555           23.5030+-0.9250          might be 1.0166x faster
   max-boolean                                        2.4938+-0.0196     ^      2.4474+-0.0187        ^ definitely 1.0189x faster
   method-on-number                                  19.3274+-0.8310           18.8128+-0.1808          might be 1.0274x faster
   min-boolean                                        2.5236+-0.0389     ^      2.4587+-0.0251        ^ definitely 1.0264x faster
   minus-boolean-double                               3.1440+-0.0196     ?      3.1600+-0.0480        ?
   minus-boolean                                      2.3555+-0.0444     ?      2.3575+-0.0500        ?
   misc-strict-eq                                    38.5859+-2.9162           37.9749+-0.4353          might be 1.0161x faster
   mod-boolean-double                                10.9126+-0.1800     ?     11.0961+-0.2847        ? might be 1.0168x slower
   mod-boolean                                        7.8021+-0.0171     ?      7.8497+-0.1042        ?
   mul-boolean-double                                 3.7734+-0.1584     ?      3.7745+-0.1118        ?
   mul-boolean                                        2.9662+-0.1602            2.8886+-0.0412          might be 1.0269x faster
   neg-boolean                                        3.1723+-0.0678     ?      3.2105+-0.0458        ? might be 1.0120x slower
   negative-zero-divide                               0.3573+-0.0134            0.3425+-0.0132          might be 1.0431x faster
   negative-zero-modulo                               0.3560+-0.0245     ?      0.3605+-0.0270        ? might be 1.0126x slower
   negative-zero-negate                               0.3189+-0.0107     ?      0.3482+-0.0562        ? might be 1.0917x slower
   nested-function-parsing                           41.1888+-3.1395           39.7135+-1.0447          might be 1.0371x faster
   new-array-buffer-dead                              2.8392+-0.0270     !    121.7337+-3.3111        ! definitely 42.8768x slower
   new-array-buffer-push                              7.1953+-0.9157            6.9271+-0.7169          might be 1.0387x faster
   new-array-dead                                    12.5582+-0.3092     !    127.8342+-1.5779        ! definitely 10.1794x slower
   new-array-push                                     3.9990+-0.2541            3.9109+-0.1159          might be 1.0225x faster
   no-inline-constructor                            121.4169+-2.6498          120.9824+-2.7014        
   number-test                                        2.9949+-0.0257     ?      3.0103+-0.0375        ?
   object-closure-call                                5.6076+-0.2554            5.5565+-0.0332        
   object-test                                        3.1088+-0.0471     ?      3.1448+-0.0537        ? might be 1.0116x slower
   obvious-sink-pathology-taken                     146.7847+-2.7151     ?    147.9983+-1.8675        ?
   obvious-sink-pathology                           143.2619+-1.3271          140.9951+-3.9735          might be 1.0161x faster
   obviously-elidable-new-object                     35.7540+-1.5111     ?     36.2912+-2.0035        ? might be 1.0150x slower
   plus-boolean-arith                                 2.5621+-0.0551     ?      2.5654+-0.1839        ?
   plus-boolean-double                                3.1932+-0.0544     ?      3.2041+-0.0673        ?
   plus-boolean                                       2.4267+-0.0572            2.3871+-0.0322          might be 1.0166x faster
   poly-chain-access-different-prototypes-simple   
                                                      3.3051+-0.0760            3.2828+-0.0726        
   poly-chain-access-different-prototypes             2.5964+-0.0174     ?      2.6277+-0.0252        ? might be 1.0121x slower
   poly-chain-access-simpler                          3.2758+-0.0335     ?      3.2818+-0.0394        ?
   poly-chain-access                                  2.5938+-0.0205     ?      2.6382+-0.1102        ? might be 1.0171x slower
   poly-stricteq                                     59.0343+-1.4007     !     65.3023+-3.0280        ! definitely 1.1062x slower
   polymorphic-array-call                             1.3825+-0.1781            1.2440+-0.1637          might be 1.1113x faster
   polymorphic-get-by-id                              3.1106+-0.0607     ?      3.4022+-0.7802        ? might be 1.0937x slower
   polymorphic-put-by-id                             29.3193+-1.8780           28.9190+-2.0671          might be 1.0138x faster
   polymorphic-structure                             15.3243+-1.3245     ?     15.4026+-1.0424        ?
   polyvariant-monomorphic-get-by-id                  9.2184+-1.0416            8.6405+-0.2385          might be 1.0669x faster
   proto-getter-access                               10.3285+-0.3673           10.1118+-0.1309          might be 1.0214x faster
   put-by-id-replace-and-transition                   8.7289+-0.2068            8.6681+-0.1453        
   put-by-id-slightly-polymorphic                     2.8683+-0.0522            2.8530+-0.0593        
   put-by-id                                         13.4035+-0.4483           13.3521+-0.4366        
   put-by-val-direct                                  0.5937+-0.0178     ?      0.6093+-0.0297        ? might be 1.0263x slower
   put-by-val-large-index-blank-indexing-type   
                                                      6.6741+-1.1944            6.0630+-0.7942          might be 1.1008x faster
   put-by-val-machine-int                             2.6305+-0.0894            2.6146+-0.0619        
   rare-osr-exit-on-local                            15.3990+-0.5260     ?     15.6399+-1.1191        ? might be 1.0156x slower
   register-pressure-from-osr                        22.7585+-1.5018           22.3313+-1.1095          might be 1.0191x faster
   setter                                             5.4877+-0.3434     ?      5.6445+-0.5879        ? might be 1.0286x slower
   simple-activation-demo                            25.2721+-0.8327           25.0826+-0.5371        
   simple-getter-access                              12.8327+-0.4529           12.7647+-0.2435        
   simple-poly-call-nested                            8.1982+-0.4903     ?      8.3055+-0.3390        ? might be 1.0131x slower
   simple-poly-call                                   1.3516+-0.0522            1.3103+-0.1023          might be 1.0315x faster
   sin-boolean                                       22.4128+-0.5318     ?     23.0806+-0.6513        ? might be 1.0298x slower
   singleton-scope                                   70.8450+-2.7607     ?     71.6053+-2.2988        ? might be 1.0107x slower
   sinkable-new-object-dag                           69.7823+-1.1565     ?     71.8888+-1.9130        ? might be 1.0302x slower
   sinkable-new-object-taken                         52.0329+-3.3793     ?     54.7684+-1.0352        ? might be 1.0526x slower
   sinkable-new-object                               39.9580+-2.1338           39.7411+-1.3710        
   slow-array-profile-convergence                     2.8483+-0.1049     ?      2.8709+-0.2152        ?
   slow-convergence                                   2.6794+-0.0497            2.6329+-0.0384          might be 1.0177x faster
   sorting-benchmark                                 23.4305+-1.2208     ?     25.1613+-1.3439        ? might be 1.0739x slower
   sparse-conditional                                 1.1304+-0.0344     ?      1.1391+-0.0184        ?
   splice-to-remove                                  16.9602+-0.1700     ?     17.1242+-0.8019        ?
   string-char-code-at                               17.0796+-1.1324           16.4781+-0.4985          might be 1.0365x faster
   string-concat-object                               2.4502+-0.2056            2.4108+-0.1022          might be 1.0163x faster
   string-concat-pair-object                          2.3395+-0.0796     ?      2.4056+-0.1733        ? might be 1.0283x slower
   string-concat-pair-simple                         11.1772+-0.3719     ?     12.3527+-2.4086        ? might be 1.1052x slower
   string-concat-simple                              12.3447+-1.3512           11.8796+-0.8426          might be 1.0392x faster
   string-cons-repeat                                 8.8935+-1.1760            8.2851+-1.2359          might be 1.0734x faster
   string-cons-tower                                  8.2625+-0.7777            7.6678+-0.2026          might be 1.0776x faster
   string-equality                                   17.7817+-0.3611     ?     18.2411+-1.4297        ? might be 1.0258x slower
   string-get-by-val-big-char                         7.0943+-0.0454            7.0897+-0.1184        
   string-get-by-val-out-of-bounds-insane             3.9092+-0.0767     ?      4.0006+-0.1226        ? might be 1.0234x slower
   string-get-by-val-out-of-bounds                    5.2295+-0.0572     ?      5.2490+-0.1080        ?
   string-get-by-val                                  3.2746+-0.1207     ?      3.3588+-0.0322        ? might be 1.0257x slower
   string-hash                                        2.0667+-0.0275     ?      2.0959+-0.0581        ? might be 1.0141x slower
   string-long-ident-equality                        15.0609+-0.8679           14.9898+-1.3349        
   string-out-of-bounds                              15.0720+-0.2245           14.9559+-0.2636        
   string-repeat-arith                               33.5910+-2.7638     ?     34.6403+-3.1525        ? might be 1.0312x slower
   string-sub                                        69.1126+-1.5594     ^     64.1733+-1.8003        ^ definitely 1.0770x faster
   string-test                                        2.9108+-0.0524     ?      2.9711+-0.0319        ? might be 1.0207x slower
   string-var-equality                               36.4413+-0.5895     ^     31.3715+-1.4722        ^ definitely 1.1616x faster
   structure-hoist-over-transitions                   2.5676+-0.0537            2.5213+-0.0310          might be 1.0183x faster
   substring-concat-weird                            38.2127+-0.4311     ?     39.0038+-1.6110        ? might be 1.0207x slower
   substring-concat                                  40.0088+-1.2149           39.9718+-0.8165        
   substring                                         46.2504+-1.5609           45.2668+-1.2940          might be 1.0217x faster
   switch-char-constant                               2.7387+-0.0455     ?      2.7822+-0.0349        ? might be 1.0159x slower
   switch-char                                        6.8620+-0.6755     ?      7.1594+-1.1016        ? might be 1.0433x slower
   switch-constant                                    8.0050+-0.1673            8.0016+-0.1512        
   switch-string-basic-big-var                       15.1333+-0.9805     ?     16.0505+-1.5391        ? might be 1.0606x slower
   switch-string-basic-big                           14.7081+-1.8213           14.7017+-1.6080        
   switch-string-basic-var                           14.1947+-0.1343     ?     15.6564+-2.3704        ? might be 1.1030x slower
   switch-string-basic                               13.7054+-1.6030           13.5348+-1.3468          might be 1.0126x faster
   switch-string-big-length-tower-var                20.8852+-2.0583           19.7520+-0.1739          might be 1.0574x faster
   switch-string-length-tower-var                    15.3053+-1.4212     ?     16.1348+-2.2584        ? might be 1.0542x slower
   switch-string-length-tower                        13.1481+-1.4378     ?     13.9646+-1.6948        ? might be 1.0621x slower
   switch-string-short                               13.3698+-1.6145     ?     13.4918+-1.6807        ?
   switch                                            11.9846+-0.1995     ?     12.0808+-0.2981        ?
   tear-off-arguments-simple                          3.4627+-0.2407            3.2891+-0.0445          might be 1.0528x faster
   tear-off-arguments                                 4.6152+-0.1830            4.5060+-0.0324          might be 1.0242x faster
   temporal-structure                                12.4388+-0.5578           12.3279+-0.2875        
   to-int32-boolean                                  13.7925+-0.2309           13.6628+-0.0844        
   try-catch-get-by-val-cloned-arguments             14.5413+-1.2881           14.4927+-1.0002        
   try-catch-get-by-val-direct-arguments              6.7329+-0.9435            6.6956+-0.8093        
   try-catch-get-by-val-scoped-arguments              7.5734+-0.3318     ?      7.9068+-0.8726        ? might be 1.0440x slower
   undefined-property-access                        356.8364+-4.8139          355.8890+-2.8337        
   undefined-test                                     3.0423+-0.0367     ?      3.0800+-0.0311        ? might be 1.0124x slower
   unprofiled-licm                                   23.1819+-0.8874           23.0412+-0.7322        
   varargs-call                                      15.8305+-0.2380     ?     16.1331+-0.9722        ? might be 1.0191x slower
   varargs-construct-inline                          23.5999+-1.5507           21.3925+-0.9935          might be 1.1032x faster
   varargs-construct                                 31.2273+-0.7111           30.8835+-0.2977          might be 1.0111x faster
   varargs-inline                                     9.7754+-0.6419     ?      9.8318+-0.3185        ?
   varargs-strict-mode                               10.5522+-1.2148     ?     10.8592+-0.4916        ? might be 1.0291x slower
   varargs                                           10.0625+-0.1239     !     10.8036+-0.4644        ! definitely 1.0737x slower
   weird-inlining-const-prop                          2.4537+-0.2576            2.3320+-0.1592          might be 1.0522x faster

   <geometric>                                        8.7334+-0.0144     !      8.9125+-0.0219        ! definitely 1.0205x slower

                                                        TipOfTree                  NoOSRDCE                                     
AsmBench:
   bigfib.cpp                                       490.0135+-2.2505     ?    492.9130+-2.1931        ?
   cray.c                                           429.0747+-1.7310          427.8221+-1.6274        
   dry.c                                            485.0880+-7.8442     ?    492.9141+-4.2137        ? might be 1.0161x slower
   FloatMM.c                                        728.0387+-2.6530          727.5149+-3.4194        
   gcc-loops.cpp                                   4283.1709+-19.8608    ?   4286.9799+-24.7956       ?
   n-body.c                                         982.3097+-4.3523     ?    985.6561+-4.5484        ?
   Quicksort.c                                      437.0391+-2.0391     ^    419.0662+-8.3587        ^ definitely 1.0429x faster
   stepanov_container.cpp                          3585.7257+-54.7078    ?   3595.7284+-14.5040       ?
   Towers.c                                         259.6992+-1.3211     ?    259.8148+-0.7186        ?

   <geometric>                                      795.1833+-2.2224          793.7521+-1.5852          might be 1.0018x faster

                                                        TipOfTree                  NoOSRDCE                                     
CompressionBench:
   huffman                                          361.3750+-2.9912     ?    400.8914+-101.3090      ? might be 1.1094x slower
   arithmetic-simple                                397.9807+-4.3965          397.1354+-2.6821        
   arithmetic-precise                               299.4740+-4.4754     ?    301.6952+-3.8244        ?
   arithmetic-complex-precise                       300.7039+-6.6830     ?    303.5737+-4.1738        ?
   arithmetic-precise-order-0                       452.9108+-83.7323         424.8458+-6.7030          might be 1.0661x faster
   arithmetic-precise-order-1                       331.4609+-9.4909          329.5554+-2.4654        
   arithmetic-precise-order-2                       364.2116+-4.8249          362.5679+-4.3831        
   arithmetic-simple-order-1                        423.8401+-5.4444          421.5473+-5.8142        
   arithmetic-simple-order-2                        471.0127+-2.7611          469.9637+-5.7358        
   lz-string                                        337.8441+-14.5046         329.3901+-9.8520          might be 1.0257x faster

   <geometric>                                      369.3337+-6.7885     ?    369.4656+-7.2690        ? might be 1.0004x slower

                                                        TipOfTree                  NoOSRDCE                                     
Geomean of preferred means:
   <scaled-result>                                   63.9643+-0.2782     ?     64.2699+-0.2850        ? might be 1.0048x slower
Comment 2 Filip Pizlo 2015-04-19 15:32:07 PDT
Created attachment 251132 [details]
the patch
Comment 3 WebKit Commit Bot 2015-04-19 15:34:10 PDT
Attachment 251132 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGMovHintRemovalPhase.cpp:118:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 4 Geoffrey Garen 2015-04-20 17:13:39 PDT
Comment on attachment 251132 [details]
the patch

r=me
Comment 5 Filip Pizlo 2015-04-21 13:17:40 PDT
Landed in http://trac.webkit.org/changeset/183072