Bug 148663 - [ES6] Implement tail calls in the DFG
Summary: [ES6] Implement tail calls in the DFG
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Michael Saboff
URL:
Keywords:
: 148396 (view as bug list)
Depends on: 148662
Blocks: 148664
  Show dependency treegraph
 
Reported: 2015-08-31 17:53 PDT by Basile Clement
Modified: 2015-09-24 14:43 PDT (History)
1 user (show)

See Also:


Attachments
Patch (92.68 KB, patch)
2015-09-04 15:04 PDT, Basile Clement
no flags Details | Formatted Diff | Diff
Rebased patch (97.52 KB, patch)
2015-09-22 21:41 PDT, Michael Saboff
no flags Details | Formatted Diff | Diff
Patch with build fixes (97.55 KB, patch)
2015-09-23 07:50 PDT, Michael Saboff
no flags Details | Formatted Diff | Diff
Patch with Tail Calls turned off (90.10 KB, patch)
2015-09-23 14:17 PDT, Michael Saboff
fpizlo: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Basile Clement 2015-08-31 17:53:33 PDT
...
Comment 1 Basile Clement 2015-08-31 18:10:24 PDT
*** Bug 148396 has been marked as a duplicate of this bug. ***
Comment 2 Basile Clement 2015-09-04 15:04:37 PDT
Created attachment 260629 [details]
Patch
Comment 3 Michael Saboff 2015-09-22 21:41:08 PDT
Created attachment 261795 [details]
Rebased patch
Comment 4 Michael Saboff 2015-09-22 21:44:45 PDT
Performance looks neutral.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on msaboff-pro (MacPro5,1).

VMs tested:
"Baseline" at /Volumes/Data/src/webkit.baseline/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc
"DFGTailCall" at /Volumes/Data/src/webkit/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc

Collected 4 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.

                                                         Baseline                DFGTailCall                                    
SunSpider:
   3d-cube                                            7.7888+-0.3978     ?      8.2094+-0.5329        ? might be 1.0540x slower
   3d-morph                                           8.0474+-0.2568     ?      8.1255+-0.2713        ?
   3d-raytrace                                        8.7263+-0.3312     ?      8.8106+-0.3233        ?
   access-binary-trees                                3.1325+-0.2051     ?      3.2696+-0.3624        ? might be 1.0438x slower
   access-fannkuch                                    8.5892+-0.2342            8.4156+-0.1804          might be 1.0206x faster
   access-nbody                                       4.1957+-0.1718     ?      4.2846+-0.0695        ? might be 1.0212x slower
   access-nsieve                                      4.5762+-0.1689            4.5161+-0.1670          might be 1.0133x faster
   bitops-3bit-bits-in-byte                           1.7435+-0.1100     ?      1.7438+-0.2322        ?
   bitops-bits-in-byte                                5.6418+-0.1019            5.5717+-0.0673          might be 1.0126x faster
   bitops-bitwise-and                                 2.8099+-0.1876     ?      2.8205+-0.1363        ?
   bitops-nsieve-bits                                 4.3158+-0.1175     ?      4.3914+-0.2366        ? might be 1.0175x slower
   controlflow-recursive                              3.4345+-0.1858     ?      3.4379+-0.1225        ?
   crypto-aes                                         6.3780+-0.2457     ?      6.3954+-0.1843        ?
   crypto-md5                                         3.8901+-0.1705     ?      3.9142+-0.1973        ?
   crypto-sha1                                        3.3477+-0.2048     ?      3.3715+-0.1143        ?
   date-format-tofte                                 12.3043+-0.1870     ?     13.1113+-1.0023        ? might be 1.0656x slower
   date-format-xparb                                  7.3878+-0.2446     ?      7.5095+-0.2658        ? might be 1.0165x slower
   math-cordic                                        4.3063+-0.1574     ?      4.3132+-0.0501        ?
   math-partial-sums                                  9.8937+-0.1065     ^      9.5465+-0.1925        ^ definitely 1.0364x faster
   math-spectral-norm                                 2.9990+-0.1181     ?      3.1037+-0.1738        ? might be 1.0349x slower
   regexp-dna                                         9.9925+-0.5481            9.9820+-0.4612        
   string-base64                                      6.5573+-0.1596     ?      6.8555+-0.6031        ? might be 1.0455x slower
   string-fasta                                       9.2047+-0.3852     ?      9.2399+-0.1782        ?
   string-tagcloud                                   12.7942+-0.3663           12.7661+-0.3584        
   string-unpack-code                                26.5804+-0.7743     ?     26.8784+-0.7939        ? might be 1.0112x slower
   string-validate-input                              6.7125+-0.0339     ?      6.7983+-0.2925        ? might be 1.0128x slower

   <arithmetic>                                       7.1289+-0.0762     ?      7.2070+-0.0679        ? might be 1.0110x slower

                                                         Baseline                DFGTailCall                                    
LongSpider:
   3d-cube                                         1179.5365+-19.7070    ?   1180.4827+-17.3837       ?
   3d-morph                                        1885.6129+-4.3127     ?   1887.4265+-1.9385        ?
   3d-raytrace                                     1026.8480+-5.0015         1025.7185+-4.2906        
   access-binary-trees                             1413.7698+-19.7762        1411.8890+-9.7762        
   access-fannkuch                                  452.7803+-5.3857          444.5068+-20.1574         might be 1.0186x faster
   access-nbody                                    1024.5708+-23.7799        1016.6013+-2.8586        
   access-nsieve                                    671.8754+-6.9141     ?    681.2875+-6.8282        ? might be 1.0140x slower
   bitops-3bit-bits-in-byte                          44.8389+-1.4670           44.2724+-0.3127          might be 1.0128x faster
   bitops-bits-in-byte                              344.1475+-5.8110          338.9313+-11.5732         might be 1.0154x faster
   bitops-nsieve-bits                               619.5832+-4.5638     ?    624.4348+-9.4335        ?
   controlflow-recursive                            754.0759+-16.9099         749.0163+-0.4765        
   crypto-aes                                       897.7081+-17.1670         897.2540+-7.6019        
   crypto-md5                                       782.5632+-8.9274     ?    786.7239+-10.4105       ?
   crypto-sha1                                     1061.7086+-22.0916        1057.2622+-30.2118       
   date-format-tofte                                978.7759+-26.1332    ?   1033.5573+-100.7544      ? might be 1.0560x slower
   date-format-xparb                               1071.0712+-56.2105    ?   1241.3810+-273.4755      ? might be 1.1590x slower
   hash-map                                         232.0809+-2.1058     ?    234.3266+-4.9796        ?
   math-cordic                                      751.7740+-116.6195        637.5632+-3.3749          might be 1.1791x faster
   math-partial-sums                               1143.8297+-30.8765        1131.2697+-4.4174          might be 1.0111x faster
   math-spectral-norm                              1068.0338+-2.5707     ?   1068.0542+-2.9279        ?
   string-base64                                    535.1267+-5.2008     ?    539.9913+-6.6800        ?
   string-fasta                                     581.4053+-7.3173     ?    582.7686+-2.1562        ?
   string-tagcloud                                  289.2969+-9.1040     ?    292.4290+-9.0782        ? might be 1.0108x slower

   <geometric>                                      672.3446+-5.2878     ?    672.7918+-8.6708        ? might be 1.0007x slower

                                                         Baseline                DFGTailCall                                    
V8Spider:
   crypto                                            70.9175+-1.1216     ?     71.3063+-2.5127        ?
   deltablue                                         92.8710+-7.1900     ?     93.6901+-3.0011        ?
   earley-boyer                                      64.7821+-2.7145           63.8411+-1.2598          might be 1.0147x faster
   raytrace                                          39.4613+-0.4889           39.4335+-0.9815        
   regexp                                           103.6878+-0.8621     ?    104.6589+-0.7060        ?
   richards                                          82.6918+-1.4820     ?     82.9915+-0.7769        ?
   splay                                             51.0956+-1.1482           50.2823+-1.1103          might be 1.0162x faster

   <geometric>                                       68.8949+-0.7162           68.8612+-0.7976          might be 1.0005x faster

                                                         Baseline                DFGTailCall                                    
Octane:
   encrypt                                           0.30902+-0.00256          0.30648+-0.00525       
   decrypt                                           5.73096+-0.05170    ?     5.75263+-0.05052       ?
   deltablue                                x2       0.27214+-0.02245          0.27027+-0.02358       
   earley                                            0.52070+-0.00446    ?     0.52751+-0.00866       ? might be 1.0131x slower
   boyer                                             8.77211+-0.08966    ?     8.96322+-0.23356       ? might be 1.0218x slower
   navier-stokes                            x2       6.38042+-0.02555    ?     6.38544+-0.04132       ?
   raytrace                                 x2       1.60174+-0.02221          1.58881+-0.00719       
   richards                                 x2       0.17346+-0.00512          0.17185+-0.00193       
   splay                                    x2       0.51924+-0.00160          0.51605+-0.00295       
   regexp                                   x2      38.52270+-1.97708    ?    38.69635+-0.37219       ?
   pdfjs                                    x2      59.69286+-0.48333    ?    59.90907+-0.52232       ?
   mandreel                                 x2      67.70280+-1.00525         67.32283+-0.48922       
   gbemu                                    x2      59.11966+-1.51125         57.86253+-1.32638         might be 1.0217x faster
   closure                                           0.92742+-0.00497    ?     0.93870+-0.00683       ? might be 1.0122x slower
   jquery                                           11.79645+-0.05561    ?    11.81784+-0.05196       ?
   box2d                                    x2      17.56778+-0.27145    ?    17.73687+-0.56692       ?
   zlib                                     x2     565.33777+-43.96923   ?   578.10109+-9.20658       ? might be 1.0226x slower
   typescript                               x2    1065.97498+-22.57863   ?  1078.02136+-28.01936      ? might be 1.0113x slower

   <geometric>                                       9.06409+-0.05747    ?     9.07471+-0.06644       ? might be 1.0012x slower

                                                         Baseline                DFGTailCall                                    
Kraken:
   ai-astar                                          347.704+-14.200           332.847+-9.157           might be 1.0446x faster
   audio-beat-detection                               80.502+-0.649      ?      81.819+-2.181         ? might be 1.0164x slower
   audio-dft                                         128.389+-0.882            128.307+-2.787         
   audio-fft                                          58.479+-0.236      ?      58.932+-0.949         ?
   audio-oscillator                                  102.686+-1.380            102.256+-0.960         
   imaging-darkroom                                   96.129+-0.949      ?      97.856+-0.793         ? might be 1.0180x slower
   imaging-desaturate                                 89.575+-0.306             89.368+-1.482         
   imaging-gaussian-blur                             144.259+-4.262            143.533+-2.267         
   json-parse-financial                               66.805+-1.734             66.434+-0.965         
   json-stringify-tinderbox                           41.045+-1.238      ?      41.607+-1.888         ? might be 1.0137x slower
   stanford-crypto-aes                                64.130+-3.170      ?      67.014+-4.718         ? might be 1.0450x slower
   stanford-crypto-ccm                                58.172+-0.715      ?      59.839+-2.825         ? might be 1.0286x slower
   stanford-crypto-pbkdf2                            140.830+-1.367      ?     142.955+-2.704         ? might be 1.0151x slower
   stanford-crypto-sha256-iterative                   58.572+-2.557             57.417+-0.902           might be 1.0201x faster

   <arithmetic>                                      105.520+-1.411            105.013+-1.130           might be 1.0048x faster

                                                         Baseline                DFGTailCall                                    
JSRegress:
   abc-forward-loop-equal                            55.3311+-0.7160           55.2350+-0.5722        
   abc-postfix-backward-loop                         54.5864+-0.4585     ?     54.6446+-0.4678        ?
   abc-simple-backward-loop                          54.4604+-1.0095     ?     56.0410+-0.8554        ? might be 1.0290x slower
   abc-simple-forward-loop                           54.5222+-0.4587           54.4584+-0.4181        
   abc-skippy-loop                                   38.2791+-1.5219           38.0302+-1.4265        
   abs-boolean                                        3.8292+-0.1438     ?      3.8370+-0.1724        ?
   adapt-to-double-divide                            16.9408+-0.7455           16.8444+-0.4975        
   aliased-arguments-getbyval                         1.7945+-0.3095            1.6440+-0.1958          might be 1.0916x faster
   allocate-big-object                                3.8622+-0.2168     ?      3.9012+-0.1266        ? might be 1.0101x slower
   arguments-named-and-reflective                    14.3739+-0.3705           14.3485+-0.5512        
   arguments-out-of-bounds                           14.2553+-0.1664     ?     14.4144+-0.5341        ? might be 1.0112x slower
   arguments-strict-mode                             12.3326+-0.5127           12.3292+-0.9000        
   arguments                                         10.9042+-0.3589     ?     11.1893+-0.1446        ? might be 1.0261x slower
   arity-mismatch-inlining                            1.3828+-0.0668            1.3232+-0.0846          might be 1.0451x faster
   array-access-polymorphic-structure                 9.2903+-0.1527            9.2654+-0.2084        
   array-nonarray-polymorhpic-access                 39.2097+-1.2938           39.0497+-1.7026        
   array-prototype-every                            119.6423+-2.4877     ?    120.5378+-5.1342        ?
   array-prototype-forEach                          119.5713+-2.5932          116.6915+-2.1569          might be 1.0247x faster
   array-prototype-map                              129.5639+-1.2711     ?    131.2197+-4.9119        ? might be 1.0128x slower
   array-prototype-reduce                           111.5253+-2.6502          110.9019+-0.3327        
   array-prototype-reduceRight                      110.5060+-0.8547     ?    111.6653+-2.1224        ? might be 1.0105x slower
   array-prototype-some                             122.1015+-5.7647          120.9609+-4.4705        
   array-splice-contiguous                           33.3472+-0.9739           33.0060+-0.4786          might be 1.0103x faster
   array-with-double-add                              5.6218+-0.1554     ?      5.7079+-0.0752        ? might be 1.0153x slower
   array-with-double-increment                        4.1847+-0.0859     ?      4.1980+-0.2142        ?
   array-with-double-mul-add                          7.2412+-0.1799            7.2336+-0.1551        
   array-with-double-sum                              4.3486+-0.0993     ?      4.4576+-0.1398        ? might be 1.0251x slower
   array-with-int32-add-sub                           9.5880+-0.1370            9.3790+-0.2166          might be 1.0223x faster
   array-with-int32-or-double-sum                     4.5386+-0.1175     ?      4.5667+-0.0827        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     45.9347+-0.2573           45.5042+-0.9624        
   ArrayBuffer-DataView-alloc-long-lived             18.0393+-0.1821     ?     18.2972+-0.4053        ? might be 1.0143x slower
   ArrayBuffer-Int32Array-byteOffset                  5.4985+-0.3491     ?      5.5275+-0.1112        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     45.8167+-0.7418     ?     45.8613+-1.4964        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     29.7310+-0.2157     ?     30.2057+-1.1100        ? might be 1.0160x slower
   ArrayBuffer-Int8Array-alloc-long-lived            16.8595+-0.2139     ?     17.1170+-0.4591        ? might be 1.0153x slower
   ArrayBuffer-Int8Array-alloc                       15.0150+-1.3360           14.8759+-0.6938        
   arrowfunction-call                                14.8674+-0.1697     ?     14.9205+-0.1570        ?
   asmjs_bool_bug                                     9.8812+-0.1152     ^      9.4711+-0.1381        ^ definitely 1.0433x faster
   assign-custom-setter-polymorphic                   4.2610+-0.1103     ?      4.3608+-0.1292        ? might be 1.0234x slower
   assign-custom-setter                               6.0833+-0.5655            5.9625+-0.1434          might be 1.0203x faster
   basic-set                                         11.0873+-0.2897           11.0016+-0.3812        
   big-int-mul                                        5.8458+-0.0890            5.8340+-0.1729        
   boolean-test                                       4.5223+-0.1206            4.5165+-0.1103        
   branch-fold                                        4.7630+-0.1098     ?      4.8396+-0.1962        ? might be 1.0161x slower
   branch-on-string-as-boolean                       22.2302+-1.1751     ?     22.3675+-0.6960        ?
   by-val-generic                                     3.7742+-0.1753            3.7442+-0.1865        
   call-spread-apply                                 39.6058+-1.9722     ?     42.1378+-1.0384        ? might be 1.0639x slower
   call-spread-call                                  31.0830+-0.9158     ?     33.2073+-2.8239        ? might be 1.0683x slower
   captured-assignments                               0.6443+-0.0197     ?      0.6763+-0.0757        ? might be 1.0496x slower
   cast-int-to-double                                 8.5660+-0.1428     ?      8.6931+-0.2015        ? might be 1.0148x slower
   cell-argument                                      8.5723+-0.2849            8.5608+-0.6001        
   cfg-simplify                                       3.8461+-0.1771            3.7891+-0.1315          might be 1.0150x faster
   chain-getter-access                               10.3351+-0.2094     ?     10.3544+-0.2782        ?
   cmpeq-obj-to-obj-other                            14.6263+-0.3317     ?     15.0491+-0.1156        ? might be 1.0289x slower
   constant-test                                      8.0894+-0.1512     ?      8.1897+-0.2027        ? might be 1.0124x slower
   create-lots-of-functions                          17.0063+-0.8647           16.6900+-0.4750          might be 1.0190x faster
   cse-new-array-buffer                               3.2469+-0.2403     ?      3.3925+-0.2495        ? might be 1.0448x slower
   cse-new-array                                      3.5253+-0.2984            3.5229+-0.3579        
   DataView-custom-properties                        54.5881+-2.9577           54.3990+-4.4880        
   delay-tear-off-arguments-strictmode               19.1149+-0.8998     !     22.9505+-0.2580        ! definitely 1.2007x slower
   deltablue-varargs                                286.2195+-20.5402         282.6075+-23.1642         might be 1.0128x faster
   destructuring-arguments                          242.1696+-8.8550     ?    244.6104+-2.4336        ? might be 1.0101x slower
   destructuring-parameters-overridden-by-function   
                                                      0.7216+-0.1050     ?      0.7905+-0.2391        ? might be 1.0955x slower
   destructuring-swap                                 7.9072+-0.0856            7.8936+-0.1092        
   direct-arguments-getbyval                          1.6138+-0.2423     ?      1.6245+-0.2321        ?
   div-boolean-double                                 5.6387+-0.0889            5.5267+-0.0824          might be 1.0203x faster
   div-boolean                                       10.0410+-0.1872     ?     10.1172+-0.1221        ?
   double-get-by-val-out-of-bounds                    6.1592+-0.1974     ?      6.1702+-0.0321        ?
   double-pollution-getbyval                          9.8017+-0.0746     ?      9.8402+-0.2331        ?
   double-pollution-putbyoffset                       5.6603+-0.0865     ?      5.6922+-0.1155        ?
   double-real-use                                   39.3621+-0.2082     ?     39.6688+-1.1997        ?
   double-to-int32-typed-array-no-inline              3.0776+-0.2332     ?      3.1323+-0.1732        ? might be 1.0178x slower
   double-to-int32-typed-array                        2.9897+-0.1429            2.9708+-0.1274        
   double-to-uint32-typed-array-no-inline             3.2231+-0.0832     ?      3.2385+-0.1502        ?
   double-to-uint32-typed-array                       2.8542+-0.0452     ?      2.9752+-0.1217        ? might be 1.0424x slower
   elidable-new-object-dag                           55.5906+-1.9936           54.9734+-1.5579          might be 1.0112x faster
   elidable-new-object-roflcopter                    53.5666+-0.6806     ?     53.7802+-1.4664        ?
   elidable-new-object-then-call                     50.3943+-1.3090           49.8466+-1.5436          might be 1.0110x faster
   elidable-new-object-tree                          64.3982+-1.1935     ?     65.5256+-0.8401        ? might be 1.0175x slower
   empty-string-plus-int                              7.6281+-0.1934            7.6116+-0.1635        
   emscripten-cube2hash                              46.2209+-3.3901           45.0978+-0.8445          might be 1.0249x faster
   exit-length-on-plain-object                       18.4730+-0.2264     ?     18.8950+-0.4024        ? might be 1.0228x slower
   external-arguments-getbyval                        1.9639+-0.4106            1.7302+-0.1515          might be 1.1351x faster
   external-arguments-putbyval                        3.2880+-0.0644            3.1769+-0.2403          might be 1.0350x faster
   fixed-typed-array-storage-var-index                1.6885+-0.0983     ?      1.7040+-0.0888        ?
   fixed-typed-array-storage                          1.2508+-0.0230     ?      1.3069+-0.1487        ? might be 1.0449x slower
   Float32Array-matrix-mult                           6.1191+-0.1136     ?      6.1326+-0.3574        ?
   Float32Array-to-Float64Array-set                  77.8887+-2.4455           74.8903+-0.7232          might be 1.0400x faster
   Float64Array-alloc-long-lived                     95.3076+-2.5815     ?     96.0162+-2.7563        ?
   Float64Array-to-Int16Array-set                    94.4171+-2.8071     ?     94.4580+-0.6487        ?
   fold-double-to-int                                18.8237+-0.3176     ?     19.1255+-0.4789        ? might be 1.0160x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     12.4022+-0.4526     ?     12.4150+-0.4748        ?
   fold-get-by-id-to-multi-get-by-offset             10.3164+-0.5596     ?     10.6585+-0.7682        ? might be 1.0332x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.8873+-0.6471     ?      9.0765+-0.9486        ? might be 1.0213x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.8825+-0.0661            9.5205+-0.9849          might be 1.0380x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.9700+-0.5951           10.8301+-0.4545          might be 1.0129x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      8.1747+-0.5973     ?      8.1831+-0.7922        ?
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     15.4023+-1.1939           15.3929+-0.5734        
   fold-put-by-id-to-multi-put-by-offset             11.7297+-0.9880           11.7217+-0.5884        
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     12.6503+-0.6396     ?     12.6620+-1.0933        ?
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     12.4619+-0.8654     ?     12.5367+-0.8806        ?
   fold-put-structure                                 7.8521+-0.8788            7.7603+-0.0468          might be 1.0118x faster
   for-of-iterate-array-entries                      15.7335+-0.4452     ?     16.1095+-0.1728        ? might be 1.0239x slower
   for-of-iterate-array-keys                          4.6548+-0.1678            4.4893+-0.3201          might be 1.0369x faster
   for-of-iterate-array-values                        4.3502+-0.2964     ?      4.4396+-0.1711        ? might be 1.0206x slower
   fround                                            19.2032+-1.1800           18.9995+-1.1553          might be 1.0107x faster
   ftl-library-inlining-dataview                     95.7421+-4.4737     ?     99.3726+-5.0023        ? might be 1.0379x slower
   ftl-library-inlining                             135.9210+-20.4549    ?    136.3967+-21.9537       ?
   function-call                                     14.9718+-0.2811           14.6810+-0.4211          might be 1.0198x faster
   function-dot-apply                                 3.2668+-0.1158            3.1328+-0.1170          might be 1.0428x faster
   function-test                                      4.4569+-0.1912            4.4095+-0.1185          might be 1.0108x faster
   function-with-eval                               147.0847+-6.2672          144.5777+-0.6269          might be 1.0173x faster
   gcse-poly-get-less-obvious                        27.9525+-4.2565     ?     30.8727+-0.6242        ? might be 1.1045x slower
   gcse-poly-get                                     31.5898+-6.1060     ?     34.1845+-0.9260        ? might be 1.0821x slower
   gcse                                               6.3725+-0.0239     ?      6.3876+-0.0703        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.2191+-0.1013     ?      3.3238+-0.0478        ? might be 1.0325x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      8.4140+-0.2181     ?      8.4174+-0.1042        ?
   get-by-id-chain-from-try-block                     3.4435+-0.1078     ?      3.5331+-0.3209        ? might be 1.0260x slower
   get-by-id-check-structure-elimination              7.9521+-0.1357     ?      8.0190+-0.1201        ?
   get-by-id-proto-or-self                           21.5109+-2.7697           21.2623+-2.7087          might be 1.0117x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.9139+-0.1307            3.8876+-0.1337        
   get-by-id-self-or-proto                           20.3011+-0.5647     ?     23.4559+-3.9708        ? might be 1.1554x slower
   get-by-val-out-of-bounds                           5.8170+-0.3137     ?      5.8719+-0.2341        ?
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      4.2888+-0.1658     ?      4.3130+-0.0837        ?
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                     10.2550+-0.2955           10.2402+-0.1130        
   get-by-val-with-string-chain-from-try-block   
                                                      3.4482+-0.1826     ?      3.5675+-0.1706        ? might be 1.0346x slower
   get-by-val-with-string-check-structure-elimination   
                                                      9.2450+-0.2220            9.1584+-0.2659        
   get-by-val-with-string-proto-or-self              21.2010+-3.0854     ?     21.4015+-2.2477        ?
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      4.7819+-0.1609     !      5.1091+-0.0749        ! definitely 1.0684x slower
   get-by-val-with-string-self-or-proto              21.6230+-5.3376     ?     22.6007+-4.6402        ? might be 1.0452x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      4.8340+-0.1028            4.7760+-0.1180          might be 1.0121x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     19.4860+-0.6114     ?     19.5811+-0.3196        ?
   get-by-val-with-symbol-chain-from-try-block   
                                                      3.5037+-0.1327     ?      3.7463+-0.1214        ? might be 1.0692x slower
   get-by-val-with-symbol-check-structure-elimination   
                                                     18.2292+-0.4831     ?     18.4967+-0.5844        ? might be 1.0147x slower
   get-by-val-with-symbol-proto-or-self              21.9639+-3.2792     ?     23.0912+-4.5837        ? might be 1.0513x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      5.7471+-0.1102     !      6.2165+-0.0358        ! definitely 1.0817x slower
   get-by-val-with-symbol-self-or-proto              21.0655+-0.6345           20.5322+-0.5720          might be 1.0260x faster
   get_callee_monomorphic                             3.6478+-0.2417     ?      3.6890+-0.0435        ? might be 1.0113x slower
   get_callee_polymorphic                             4.7430+-0.2521     ?      4.7590+-0.1327        ?
   getter-no-activation                               5.9073+-0.1095     ?      5.9442+-0.0873        ?
   getter-prototype                                  14.2040+-0.3659           14.0000+-0.3442          might be 1.0146x faster
   getter-richards                                  132.1426+-2.6470     ?    135.8157+-2.8346        ? might be 1.0278x slower
   getter                                             7.3760+-0.1092     ?      7.6945+-0.2498        ? might be 1.0432x slower
   global-object-access-with-mutating-structure   
                                                      7.7170+-0.2401            7.5082+-0.2668          might be 1.0278x faster
   global-var-const-infer-fire-from-opt               1.3108+-0.2748     ?      1.3379+-0.3203        ? might be 1.0207x slower
   global-var-const-infer                             1.0718+-0.1524     ?      1.2140+-0.2171        ? might be 1.1327x slower
   hard-overflow-check-equal                         60.2768+-0.7572     ?     61.0984+-1.8250        ? might be 1.0136x slower
   hard-overflow-check                               59.6483+-0.3569     ?     59.9224+-0.4754        ?
   HashMap-put-get-iterate-keys                      34.1113+-0.4437           33.9995+-0.5943        
   HashMap-put-get-iterate                           34.1355+-0.9340           33.3905+-0.4868          might be 1.0223x faster
   HashMap-string-put-get-iterate                    37.0669+-1.2773           36.3701+-0.5949          might be 1.0192x faster
   hoist-make-rope                                   12.2126+-1.5165           11.8792+-0.5715          might be 1.0281x faster
   hoist-poly-check-structure-effectful-loop   
                                                      6.6980+-0.1821            6.6664+-0.1327        
   hoist-poly-check-structure                         5.1210+-0.1760            5.0850+-0.1320        
   imul-double-only                                   8.6913+-1.3197     ?      8.8845+-0.4415        ? might be 1.0222x slower
   imul-int-only                                     10.5109+-0.3401     ?     10.5781+-0.1897        ?
   imul-mixed                                         8.6102+-0.6747            8.4028+-0.8407          might be 1.0247x faster
   in-four-cases                                     25.2070+-0.1720     ?     25.8465+-0.8936        ? might be 1.0254x slower
   in-one-case-false                                 14.8081+-0.1992     ?     14.8638+-0.0296        ?
   in-one-case-true                                  14.6401+-0.3317     ?     14.7158+-0.1886        ?
   in-two-cases                                      15.1991+-0.2348     ?     15.4390+-0.0711        ? might be 1.0158x slower
   indexed-properties-in-objects                      3.8678+-0.1367     ?      3.8885+-0.1405        ?
   infer-closure-const-then-mov-no-inline             4.9021+-0.0678     ?      4.9280+-0.0483        ?
   infer-closure-const-then-mov                      21.5128+-1.0947           20.7963+-0.7218          might be 1.0345x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     15.6231+-0.2940     !     17.0295+-0.6267        ! definitely 1.0900x slower
   infer-closure-const-then-put-to-scope             28.2352+-0.8263     !     32.1329+-0.4922        ! definitely 1.1380x slower
   infer-closure-const-then-reenter-no-inline   
                                                     70.8542+-0.2554     !     75.1354+-2.2366        ! definitely 1.0604x slower
   infer-closure-const-then-reenter                  32.9135+-0.4086           32.9135+-0.5212        
   infer-constant-global-property                     4.8287+-0.0840            4.7628+-0.1317          might be 1.0138x faster
   infer-constant-property                            3.4333+-0.2909            3.3195+-0.1353          might be 1.0343x faster
   infer-one-time-closure-ten-vars                   11.2028+-0.3012     ?     11.3585+-0.5621        ? might be 1.0139x slower
   infer-one-time-closure-two-vars                   10.7540+-0.3383           10.6120+-0.8115          might be 1.0134x faster
   infer-one-time-closure                            10.4895+-0.4907     ?     10.8303+-0.4115        ? might be 1.0325x slower
   infer-one-time-deep-closure                       17.9077+-0.6900     ?     18.0877+-0.5364        ? might be 1.0101x slower
   inline-arguments-access                            5.9421+-0.2075     ?      6.1542+-0.1497        ? might be 1.0357x slower
   inline-arguments-aliased-access                    6.1534+-0.1523            6.1302+-0.2643        
   inline-arguments-local-escape                      6.0735+-0.1746            6.0570+-0.3213        
   inline-get-scoped-var                              5.7407+-0.1030     ?      5.9384+-0.3851        ? might be 1.0344x slower
   inlined-put-by-id-transition                      15.9532+-0.7791           15.3768+-0.2710          might be 1.0375x faster
   inlined-put-by-val-with-string-transition   
                                                     67.4059+-2.4243           66.5160+-0.7777          might be 1.0134x faster
   inlined-put-by-val-with-symbol-transition   
                                                     67.4373+-2.0196           66.9291+-0.9971        
   int-or-other-abs-then-get-by-val                   6.5318+-0.0909     ?      6.5790+-0.1331        ?
   int-or-other-abs-zero-then-get-by-val             27.0789+-0.5508     ?     27.6973+-1.1670        ? might be 1.0228x slower
   int-or-other-add-then-get-by-val                   6.1646+-0.1351            6.0771+-0.1093          might be 1.0144x faster
   int-or-other-add                                   8.1415+-0.0814            8.1281+-0.1349        
   int-or-other-div-then-get-by-val                   5.0495+-0.0629            5.0345+-0.1278        
   int-or-other-max-then-get-by-val                   6.1035+-0.5376     ?      6.2316+-0.2590        ? might be 1.0210x slower
   int-or-other-min-then-get-by-val                   5.1052+-0.0599     ?      5.1372+-0.1979        ?
   int-or-other-mod-then-get-by-val                   4.9699+-0.1625            4.9383+-0.1477        
   int-or-other-mul-then-get-by-val                   5.0447+-0.0115     ?      5.1116+-0.0877        ? might be 1.0132x slower
   int-or-other-neg-then-get-by-val                   5.6839+-0.2306     ?      5.7122+-0.1107        ?
   int-or-other-neg-zero-then-get-by-val             27.7164+-0.6025           27.6932+-0.7313        
   int-or-other-sub-then-get-by-val                   6.0214+-0.1799     ?      6.0771+-0.2058        ?
   int-or-other-sub                                   5.2634+-0.1966     ?      5.3150+-0.1358        ?
   int-overflow-local                                 6.1353+-0.1491            6.1006+-0.1755        
   Int16Array-alloc-long-lived                       66.2073+-1.3049     ?     66.5265+-1.2735        ?
   Int16Array-bubble-sort-with-byteLength            35.9858+-1.0533           35.7953+-0.4857        
   Int16Array-bubble-sort                            35.3242+-1.2012     ?     35.9808+-1.0445        ? might be 1.0186x slower
   Int16Array-load-int-mul                            1.9994+-0.1733     ?      2.1000+-0.1491        ? might be 1.0503x slower
   Int16Array-to-Int32Array-set                      73.6180+-0.9164           72.5906+-1.1069          might be 1.0142x faster
   Int32Array-alloc-large                            33.3827+-0.7128           33.3157+-2.5257        
   Int32Array-alloc-long-lived                       76.1688+-3.7978     ?     76.5027+-1.7783        ?
   Int32Array-alloc                                   4.6697+-0.0848            4.5880+-0.1143          might be 1.0178x faster
   Int32Array-Int8Array-view-alloc                    9.4282+-0.5009            9.1642+-0.3507          might be 1.0288x faster
   int52-spill                                        7.2183+-0.1218            7.1758+-0.1807        
   Int8Array-alloc-long-lived                        58.7581+-1.8508     ?     58.9814+-0.8686        ?
   Int8Array-load-with-byteLength                     4.8325+-0.0806     ?      4.8399+-0.1501        ?
   Int8Array-load                                     4.7968+-0.1721     ?      4.9178+-0.0981        ? might be 1.0252x slower
   integer-divide                                    13.6631+-0.1257     ?     13.9529+-0.1645        ? might be 1.0212x slower
   integer-modulo                                     2.8162+-0.2071            2.7487+-0.1480          might be 1.0246x faster
   is-boolean-fold-tricky                             5.7344+-0.2289            5.6863+-0.1970        
   is-boolean-fold                                    3.9841+-0.1264     ?      4.0070+-0.1569        ?
   is-function-fold-tricky-internal-function   
                                                     14.7742+-0.5831     ?     14.8207+-0.4168        ?
   is-function-fold-tricky                            5.8057+-0.1451            5.7957+-0.1327        
   is-function-fold                                   4.0941+-0.0721            4.0938+-0.0530        
   is-number-fold-tricky                              5.6331+-0.1598     ?      5.6734+-0.0653        ?
   is-number-fold                                     4.0234+-0.1640            4.0053+-0.1157        
   is-object-or-null-fold-functions                   4.2267+-0.1374            4.1337+-0.1396          might be 1.0225x faster
   is-object-or-null-fold-less-tricky                 5.8228+-0.1565            5.7097+-0.0864          might be 1.0198x faster
   is-object-or-null-fold-tricky                      7.4877+-0.1497     ?      7.5042+-0.0867        ?
   is-object-or-null-fold                             4.0568+-0.0696     ?      4.0997+-0.0730        ? might be 1.0106x slower
   is-object-or-null-trickier-function                5.8865+-0.1021     ?      5.9835+-0.1680        ? might be 1.0165x slower
   is-object-or-null-trickier-internal-function   
                                                     15.6406+-0.8316           15.5267+-0.5724        
   is-object-or-null-tricky-function                  5.9039+-0.0531            5.8745+-0.0728        
   is-object-or-null-tricky-internal-function   
                                                     11.5463+-0.1787     ?     11.6710+-0.7717        ? might be 1.0108x slower
   is-string-fold-tricky                              5.6631+-0.1479            5.6315+-0.1098        
   is-string-fold                                     4.0468+-0.1499            3.9515+-0.0553          might be 1.0241x faster
   is-undefined-fold-tricky                           4.7289+-0.0662     ?      4.7996+-0.1264        ? might be 1.0150x slower
   is-undefined-fold                                  4.0548+-0.1225            3.9915+-0.0972          might be 1.0159x faster
   JSONP-negative-0                                   0.4425+-0.0713            0.4332+-0.0664          might be 1.0214x faster
   large-int-captured                                 6.9828+-0.2342            6.7319+-0.1183          might be 1.0373x faster
   large-int-neg                                     20.1047+-0.5772           20.0015+-0.6694        
   large-int                                         17.6391+-0.4768           17.5262+-0.4263        
   load-varargs-elimination                          29.5137+-1.5591           29.2297+-0.4781        
   logical-not-weird-types                            5.0599+-0.1729            5.0198+-0.0754        
   logical-not                                        6.5868+-0.0861            6.4501+-0.5672          might be 1.0212x faster
   lots-of-fields                                    16.4277+-0.2450     ?     16.6249+-0.5422        ? might be 1.0120x slower
   make-indexed-storage                               4.1078+-0.7618     ?      4.1291+-0.4051        ?
   make-rope-cse                                      6.4398+-0.2770     ?      6.5569+-0.1630        ? might be 1.0182x slower
   marsaglia-larger-ints                             53.4167+-0.1690           53.2972+-0.4304        
   marsaglia-osr-entry                               26.2850+-0.6016     ?     26.7410+-0.6385        ? might be 1.0173x slower
   math-with-out-of-bounds-array-values              32.3813+-0.8365     ?     34.0828+-5.3131        ? might be 1.0525x slower
   max-boolean                                        3.3012+-0.1008     ?      3.3303+-0.1056        ?
   method-on-number                                  23.3975+-0.0929     ?     23.5590+-0.6341        ?
   min-boolean                                        3.4427+-0.1099            3.3433+-0.1257          might be 1.0297x faster
   minus-boolean-double                               4.3688+-0.0881            4.2940+-0.0931          might be 1.0174x faster
   minus-boolean                                      3.3772+-0.0741            3.3699+-0.1824        
   misc-strict-eq                                    44.6631+-2.8392     ?     47.1971+-1.5311        ? might be 1.0567x slower
   mod-boolean-double                                11.9190+-0.2063     ?     11.9370+-0.3105        ?
   mod-boolean                                        9.2039+-0.0843     ?      9.2172+-0.2094        ?
   mul-boolean-double                                 4.8439+-0.0902     ?      4.8993+-0.0573        ? might be 1.0114x slower
   mul-boolean                                        3.5550+-0.1844     ?      3.5851+-0.0918        ?
   neg-boolean                                        4.2474+-0.1149     ?      4.2654+-0.1531        ?
   negative-zero-divide                               0.6118+-0.1136            0.5510+-0.1062          might be 1.1103x faster
   negative-zero-modulo                               0.5475+-0.1181     ?      0.6185+-0.1174        ? might be 1.1297x slower
   negative-zero-negate                               0.6255+-0.1115            0.5689+-0.1256          might be 1.0996x faster
   nested-function-parsing                           74.6467+-2.0601           73.7341+-1.4711          might be 1.0124x faster
   new-array-buffer-dead                            144.8440+-3.8024          144.7908+-3.4345        
   new-array-buffer-push                             10.2363+-0.2722            9.9948+-0.3310          might be 1.0242x faster
   new-array-dead                                    18.6015+-1.2916           18.4682+-1.7416        
   new-array-push                                     5.5914+-0.2377     ?      5.6494+-0.5091        ? might be 1.0104x slower
   no-inline-constructor                             50.4978+-0.9453     ?     51.7305+-0.6338        ? might be 1.0244x slower
   number-test                                        4.4879+-0.2070     ?      4.5061+-0.1541        ?
   object-closure-call                                7.8605+-0.2116     ?      7.9490+-0.3339        ? might be 1.0113x slower
   object-get-own-property-symbols-on-large-array   
                                                      5.4386+-0.3351            5.3590+-0.6780          might be 1.0149x faster
   object-test                                        4.3301+-0.2079     ?      4.3385+-0.0813        ?
   obvious-sink-pathology-taken                     175.9863+-8.7999          173.3778+-2.1452          might be 1.0150x faster
   obvious-sink-pathology                           157.4793+-5.4554          157.4117+-3.9609        
   obviously-elidable-new-object                     43.2812+-1.4690           42.8738+-0.6965        
   plus-boolean-arith                                 3.3644+-0.0961     ?      3.3932+-0.1049        ?
   plus-boolean-double                                4.2550+-0.1617     ?      4.3124+-0.1581        ? might be 1.0135x slower
   plus-boolean                                       3.2725+-0.0632     ?      3.2793+-0.1605        ?
   poly-chain-access-different-prototypes-simple   
                                                      5.2083+-0.0962            5.2073+-0.1339        
   poly-chain-access-different-prototypes             5.3184+-0.1268            5.2488+-0.0928          might be 1.0133x faster
   poly-chain-access-simpler                          5.1708+-0.0887     ?      5.2316+-0.1331        ? might be 1.0118x slower
   poly-chain-access                                  5.0928+-0.1316     ?      5.1196+-0.0086        ?
   poly-stricteq                                     81.4213+-3.1971           79.1108+-1.1568          might be 1.0292x faster
   polymorphic-array-call                             2.0444+-0.2422            1.9955+-0.2138          might be 1.0245x faster
   polymorphic-get-by-id                              4.9067+-0.2040     ?      4.9097+-0.0941        ?
   polymorphic-put-by-id                             41.6035+-1.2528           41.5458+-0.5121        
   polymorphic-put-by-val-with-string                42.4899+-0.6129     ?     42.5343+-0.2404        ?
   polymorphic-put-by-val-with-symbol                42.3147+-0.2594     ?     46.5060+-11.3465       ? might be 1.0991x slower
   polymorphic-structure                             23.5127+-0.2157     ?     23.5537+-0.1876        ?
   polyvariant-monomorphic-get-by-id                 11.5355+-0.4018           11.3075+-0.3300          might be 1.0202x faster
   proto-getter-access                               10.2637+-0.2251     ?     10.3750+-0.2268        ? might be 1.0108x slower
   prototype-access-with-mutating-prototype           7.3411+-0.3848            7.2590+-0.0990          might be 1.0113x faster
   put-by-id-replace-and-transition                  12.5023+-0.1212           12.4937+-0.2213        
   put-by-id-slightly-polymorphic                     3.5905+-0.1121     ?      3.6587+-0.2151        ? might be 1.0190x slower
   put-by-id                                         18.4805+-0.7760           18.4344+-0.8780        
   put-by-val-direct                                  0.5693+-0.0873     ?      0.6091+-0.1054        ? might be 1.0700x slower
   put-by-val-large-index-blank-indexing-type   
                                                      8.5427+-0.4697            8.1695+-0.1381          might be 1.0457x faster
   put-by-val-machine-int                             3.7180+-0.0983            3.5805+-0.2588          might be 1.0384x faster
   put-by-val-with-string-replace-and-transition   
                                                     19.0206+-0.5815     ?     19.0710+-0.1259        ?
   put-by-val-with-string-slightly-polymorphic   
                                                      4.6475+-0.1167     ?      4.7345+-0.0882        ? might be 1.0187x slower
   put-by-val-with-string                            19.6821+-0.9161     ?     19.9146+-0.9508        ? might be 1.0118x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     21.4284+-0.2696           21.1508+-0.7331          might be 1.0131x faster
   put-by-val-with-symbol-slightly-polymorphic   
                                                      4.6458+-0.1078     ?      4.7195+-0.0588        ? might be 1.0159x slower
   put-by-val-with-symbol                            19.4153+-0.1338     ?     19.4875+-0.8700        ?
   rare-osr-exit-on-local                            16.5329+-0.3339     ?     16.5817+-0.2448        ?
   raytrace-with-empty-try-catch                      8.7294+-0.4361     ?      8.9993+-0.3829        ? might be 1.0309x slower
   raytrace-with-try-catch                           15.8220+-0.4933           15.6906+-0.4315        
   register-pressure-from-osr                        27.1371+-0.1783     ?     27.2601+-0.5510        ?
   repeat-multi-get-by-offset                        29.5069+-0.7213     ?     29.9561+-0.4714        ? might be 1.0152x slower
   richards-empty-try-catch                         135.2493+-1.8993     ^    131.4328+-1.5808        ^ definitely 1.0290x faster
   richards-try-catch                               398.3760+-5.2827     ?    399.9555+-6.0613        ?
   setter-prototype                                  11.2853+-0.1493           11.2393+-0.4252        
   setter                                             6.8647+-0.1371     !      7.1657+-0.1012        ! definitely 1.0438x slower
   simple-activation-demo                            33.8738+-0.3021           33.6100+-0.9054        
   simple-getter-access                              14.1514+-0.5392           13.8968+-0.1861          might be 1.0183x faster
   simple-poly-call-nested                            9.2468+-0.1215     ?      9.4760+-0.2060        ? might be 1.0248x slower
   simple-poly-call                                   1.8317+-0.0773     ?      1.9190+-0.0466        ? might be 1.0476x slower
   sin-boolean                                       20.4214+-0.9569           20.3898+-1.0620        
   singleton-scope                                   83.7467+-0.2295     !     87.6097+-0.6702        ! definitely 1.0461x slower
   sink-function                                     13.7983+-1.5190           13.5153+-0.3390          might be 1.0209x faster
   sink-huge-activation                              19.6956+-0.7550     ?     20.3403+-0.4318        ? might be 1.0327x slower
   sinkable-new-object-dag                           87.2641+-7.0362           84.0300+-1.8946          might be 1.0385x faster
   sinkable-new-object-taken                         69.7563+-1.6904     ^     67.4288+-0.5819        ^ definitely 1.0345x faster
   sinkable-new-object                               46.8794+-2.1180     ?     47.1642+-0.4903        ?
   slow-array-profile-convergence                     3.9322+-0.4017            3.8824+-0.3288          might be 1.0128x faster
   slow-convergence                                   3.8404+-0.1443     ?      3.8452+-0.2879        ?
   slow-ternaries                                    33.2897+-1.7131           32.8353+-0.6207          might be 1.0138x faster
   sorting-benchmark                                 25.4269+-0.5424     ?     26.1058+-0.9021        ? might be 1.0267x slower
   sparse-conditional                                 1.7377+-0.1982            1.6875+-0.1693          might be 1.0298x faster
   splice-to-remove                                  19.1738+-0.4681     ?     19.3600+-0.5372        ?
   string-char-code-at                               20.7411+-0.6499           20.7320+-0.0720        
   string-concat-object                               3.2491+-0.0961            3.2232+-0.1227        
   string-concat-pair-object                          3.1933+-0.2504     ?      3.2966+-0.2580        ? might be 1.0324x slower
   string-concat-pair-simple                         17.0602+-0.5551     ?     17.1470+-0.4772        ?
   string-concat-simple                              17.6267+-0.6251           17.5656+-0.6169        
   string-cons-repeat                                11.7784+-0.8071           11.3310+-0.1732          might be 1.0395x faster
   string-cons-tower                                 10.7148+-0.2154     ?     10.8149+-0.1848        ?
   string-equality                                   22.8705+-0.7421     ?     22.9037+-0.6779        ?
   string-get-by-val-big-char                        10.9009+-0.4933           10.8651+-0.1824        
   string-get-by-val-out-of-bounds-insane             5.0627+-0.1763     ?      5.1525+-0.1534        ? might be 1.0177x slower
   string-get-by-val-out-of-bounds                    6.9869+-0.2672            6.9207+-0.2309        
   string-get-by-val                                  4.8042+-0.1301     ?      4.8594+-0.0467        ? might be 1.0115x slower
   string-hash                                        2.8319+-0.0942     ?      2.8533+-0.0763        ?
   string-long-ident-equality                        18.5268+-0.4442     ?     18.5740+-0.3289        ?
   string-out-of-bounds                              14.7247+-0.3043     ?     14.9757+-0.3358        ? might be 1.0170x slower
   string-repeat-arith                               43.6411+-1.7096           43.0590+-0.8481          might be 1.0135x faster
   string-sub                                        86.4532+-2.6000     ?     86.7214+-0.9246        ?
   string-test                                        4.4455+-0.1901     ?      4.6250+-0.2083        ? might be 1.0404x slower
   string-var-equality                               58.4955+-2.6866     ?     58.8772+-1.6097        ?
   structure-hoist-over-transitions                   3.6075+-0.1288            3.5405+-0.1553          might be 1.0189x faster
   substring-concat-weird                            57.7360+-0.5074           57.4568+-0.5176        
   substring-concat                                  62.4897+-0.2323     ?     63.1217+-1.8261        ? might be 1.0101x slower
   substring                                         69.1993+-0.4395     ?     69.5025+-1.0216        ?
   switch-char-constant                               3.3950+-0.1479     ?      3.4104+-0.1469        ?
   switch-char                                        7.9372+-0.1402     ?      8.0222+-0.0723        ? might be 1.0107x slower
   switch-constant                                   12.6862+-1.8744     ?     13.7786+-1.7150        ? might be 1.0861x slower
   switch-string-basic-big-var                       31.5855+-0.5137           31.2365+-0.6899          might be 1.0112x faster
   switch-string-basic-big                           30.0753+-0.6577           29.4207+-1.7144          might be 1.0222x faster
   switch-string-basic-var                           31.4505+-2.1584     ?     31.4893+-0.2692        ?
   switch-string-basic                               20.2057+-1.1552     ?     20.3121+-1.1022        ?
   switch-string-big-length-tower-var                27.9063+-0.9241     ?     28.2067+-0.7041        ? might be 1.0108x slower
   switch-string-length-tower-var                    20.7842+-0.1133     ?     21.0868+-0.4899        ? might be 1.0146x slower
   switch-string-length-tower                        14.8210+-0.3757     ?     15.4916+-0.5764        ? might be 1.0452x slower
   switch-string-short                               14.9973+-0.1606     ?     15.2503+-0.2991        ? might be 1.0169x slower
   switch                                            16.6416+-1.9651           16.0685+-1.4995          might be 1.0357x faster
   tear-off-arguments-simple                          4.6444+-0.2176            4.5443+-0.1119          might be 1.0220x faster
   tear-off-arguments                                 6.3484+-0.3580     ?      6.3619+-0.2894        ?
   temporal-structure                                16.5682+-0.1402           16.4520+-0.1736        
   to-int32-boolean                                  21.0151+-0.2202     ?     21.2387+-0.1276        ? might be 1.0106x slower
   try-catch-get-by-val-cloned-arguments             14.9413+-0.4189     ?     14.9724+-0.6329        ?
   try-catch-get-by-val-direct-arguments              3.1475+-0.3211            2.9012+-0.0703          might be 1.0849x faster
   try-catch-get-by-val-scoped-arguments              7.2106+-0.2139     ?      7.2950+-0.0669        ? might be 1.0117x slower
   typed-array-get-set-by-val-profiling              32.1276+-0.6007     ?     32.3626+-0.7705        ?
   undefined-property-access                        475.2025+-23.5852    ?    476.5773+-18.0517       ?
   undefined-test                                     4.6574+-0.0579            4.6288+-0.2748        
   unprofiled-licm                                   23.0513+-0.5322     ?     23.2170+-0.5387        ?
   v8-raytrace-with-empty-try-catch                  84.2730+-2.8798           83.3123+-1.1732          might be 1.0115x faster
   v8-raytrace-with-try-catch                       108.3260+-2.6904     ?    110.3037+-6.7058        ? might be 1.0183x slower
   varargs-call                                      18.2652+-0.2078           17.7675+-0.3492          might be 1.0280x faster
   varargs-construct-inline                          36.2510+-1.3477           36.1662+-1.2083        
   varargs-construct                                 29.9048+-0.7633     ?     30.0914+-0.3973        ?
   varargs-inline                                    12.1700+-0.4060     ?     12.6205+-0.4830        ? might be 1.0370x slower
   varargs-strict-mode                               14.5832+-0.4213     ?     15.0507+-0.2475        ? might be 1.0321x slower
   varargs                                           14.5818+-0.0998     ?     15.0001+-0.3397        ? might be 1.0287x slower
   weird-inlining-const-prop                          3.2238+-0.1019            3.2028+-0.1487        

   <geometric>                                       11.9658+-0.0449     ?     12.0230+-0.0315        ? might be 1.0048x slower

                                                         Baseline                DFGTailCall                                    
AsmBench:
   bigfib.cpp                                       682.4690+-9.5306          671.5111+-26.5979         might be 1.0163x faster
   cray.c                                           620.7996+-5.1751     ?    623.1867+-6.0961        ?
   dry.c                                            689.9198+-5.3247          661.5596+-77.0830         might be 1.0429x faster
   FloatMM.c                                        920.5358+-2.2218     ?    920.7222+-9.3457        ?
   gcc-loops.cpp                                   5990.1125+-53.0084    ?   5991.0970+-73.5732       ?
   n-body.c                                        1682.6436+-34.7892        1677.5442+-23.4432       
   Quicksort.c                                      573.6185+-3.9063     ?    576.9441+-3.5180        ?
   stepanov_container.cpp                          4882.4313+-79.7461        4848.6896+-62.3039       
   Towers.c                                         400.4172+-10.2000    ?    401.3375+-5.2101        ?

   <geometric>                                     1131.5195+-1.5155         1124.3119+-23.0663         might be 1.0064x faster

                                                         Baseline                DFGTailCall                                    
CompressionBench:
   huffman                                           81.7848+-1.2789     ?     82.2493+-1.3025        ?
   arithmetic-simple                                431.9166+-1.6176          431.8624+-1.0594        
   arithmetic-precise                               363.1099+-4.1976     ?    366.9726+-6.4481        ? might be 1.0106x slower
   arithmetic-complex-precise                       361.1843+-3.2740     ?    363.4945+-3.1693        ?
   arithmetic-precise-order-0                       439.0563+-2.2351     ?    444.6048+-5.6452        ? might be 1.0126x slower
   arithmetic-precise-order-1                       418.4902+-3.7651     ?    424.4897+-6.7766        ? might be 1.0143x slower
   arithmetic-precise-order-2                       484.6338+-12.0828    ?    485.5557+-3.6517        ?
   arithmetic-simple-order-1                        495.1097+-2.8377     ?    496.5613+-0.8212        ?
   arithmetic-simple-order-2                        555.9335+-9.0049     ?    561.0212+-4.4004        ?
   lz-string                                        423.5854+-21.1522         420.1024+-9.9009        

   <geometric>                                      369.9901+-2.6416     ?    372.0395+-1.0220        ? might be 1.0055x slower

                                                         Baseline                DFGTailCall                                    
Geomean of preferred means:
   <scaled-result>                                   79.4149+-0.1425     ?     79.5270+-0.2639        ? might be 1.0014x slower
Comment 5 Michael Saboff 2015-09-23 07:50:16 PDT
Created attachment 261822 [details]
Patch with build fixes
Comment 6 Geoffrey Garen 2015-09-23 10:27:39 PDT
Comment on attachment 261822 [details]
Patch with build fixes

We can't enable this by default until it's implemented in FTL -- that would be a performance regression.
Comment 7 Michael Saboff 2015-09-23 14:17:38 PDT
Created attachment 261840 [details]
Patch with Tail Calls turned off
Comment 8 Michael Saboff 2015-09-24 14:43:17 PDT
Committed r190220: <http://trac.webkit.org/changeset/190220>