Bug 111764

Summary: The DFG fixpoint is not strictly profitable, and should be straight-lined
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, ggaren, mark.lam, mhahnenberg, msaboff, oliver, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
the patch oliver: review+

Description Filip Pizlo 2013-03-07 12:12:39 PST
Patch forthcoming.
Comment 1 Filip Pizlo 2013-03-07 12:21:13 PST
Created attachment 192067 [details]
the patch

Performance using JSC command-line below.  I'll post DRT performance and in-browser performance shortly.



Benchmark report for SunSpider, V8Spider, Octane, Kraken, and JSRegress on bigmac (MacPro5,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r145110)
"NoFixpoint" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r145110)

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

                                                     TipOfTree                 NoFixpoint                                    
SunSpider:
   3d-cube                                         8.8327+-0.1182     ^      7.7590+-0.1012        ^ definitely 1.1384x faster
   3d-morph                                        7.4806+-0.0802     ?      7.5581+-0.1122        ? might be 1.0104x slower
   3d-raytrace                                     9.6519+-0.1744     ^      8.9786+-0.1300        ^ definitely 1.0750x faster
   access-binary-trees                             1.6085+-0.0101     ^      1.5593+-0.0090        ^ definitely 1.0316x faster
   access-fannkuch                                 6.8149+-0.1184     ^      6.4946+-0.0952        ^ definitely 1.0493x faster
   access-nbody                                    4.0518+-0.0148     ^      3.9010+-0.0141        ^ definitely 1.0387x faster
   access-nsieve                                   4.2910+-0.0631            4.1901+-0.0480          might be 1.0241x faster
   bitops-3bit-bits-in-byte                        1.5021+-0.0094     ?      1.5030+-0.0113        ?
   bitops-bits-in-byte                             5.7291+-0.0709     ?      5.7372+-0.0730        ?
   bitops-bitwise-and                              2.0294+-0.0767     ?      2.0808+-0.0766        ? might be 1.0253x slower
   bitops-nsieve-bits                              3.5710+-0.0206     ^      3.4308+-0.0165        ^ definitely 1.0409x faster
   controlflow-recursive                           2.5735+-0.0948            2.5550+-0.0948        
   crypto-aes                                      7.1272+-0.0961     ^      6.5409+-0.1126        ^ definitely 1.0896x faster
   crypto-md5                                      3.5391+-0.0222     ^      3.3058+-0.0293        ^ definitely 1.0705x faster
   crypto-sha1                                     2.9470+-0.0178     ^      2.7601+-0.0121        ^ definitely 1.0677x faster
   date-format-tofte                              12.8985+-0.3064     ^     12.2549+-0.2109        ^ definitely 1.0525x faster
   date-format-xparb                              13.3621+-0.3963           13.0512+-0.3012          might be 1.0238x faster
   math-cordic                                     3.8934+-0.0573            3.8644+-0.0560        
   math-partial-sums                              10.4972+-0.1311           10.3093+-0.0878          might be 1.0182x faster
   math-spectral-norm                              2.7129+-0.0102     ^      2.6145+-0.0081        ^ definitely 1.0376x faster
   regexp-dna                                      9.3777+-0.1133     ?      9.4092+-0.1126        ?
   string-base64                                   4.5557+-0.0499     ^      4.4176+-0.0541        ^ definitely 1.0313x faster
   string-fasta                                    9.0969+-0.1238     ^      8.8403+-0.1049        ^ definitely 1.0290x faster
   string-tagcloud                                11.9099+-0.2176     ?     11.9780+-0.2298        ?
   string-unpack-code                             22.7466+-0.1809           22.5389+-0.2269        
   string-validate-input                           6.5993+-0.1027     ?      6.6610+-0.1686        ?

   <arithmetic> *                                  6.9000+-0.0437     ^      6.7036+-0.0425        ^ definitely 1.0293x faster
   <geometric>                                     5.5155+-0.0214     ^      5.3567+-0.0218        ^ definitely 1.0296x faster
   <harmonic>                                      4.3662+-0.0237     ^      4.2570+-0.0220        ^ definitely 1.0256x faster

                                                     TipOfTree                 NoFixpoint                                    
V8Spider:
   crypto                                         70.4819+-0.5821           70.3529+-0.7545        
   deltablue                                     113.8182+-1.2948     ^    105.7167+-0.6954        ^ definitely 1.0766x faster
   earley-boyer                                   73.9014+-0.6032     ^     69.3147+-0.2780        ^ definitely 1.0662x faster
   raytrace                                       57.7015+-0.1647     ^     52.1691+-0.1468        ^ definitely 1.1060x faster
   regexp                                         84.0362+-0.2268     !     84.7710+-0.2979        ! definitely 1.0087x slower
   richards                                       99.7591+-0.5202     ^     97.9256+-0.5516        ^ definitely 1.0187x faster
   splay                                          47.5342+-0.3267           47.3379+-0.4087        

   <arithmetic>                                   78.1761+-0.1759     ^     75.3697+-0.1831        ^ definitely 1.0372x faster
   <geometric> *                                  75.2215+-0.1348     ^     72.5365+-0.1953        ^ definitely 1.0370x faster
   <harmonic>                                     72.3091+-0.1392     ^     69.7145+-0.2176        ^ definitely 1.0372x faster

                                                     TipOfTree                 NoFixpoint                                    
Octane and V8v7:
   encrypt                                        0.36590+-0.00037    !     0.36915+-0.00033       ! definitely 1.0089x slower
   decrypt                                        6.68693+-0.00786    !     6.81595+-0.03705       ! definitely 1.0193x slower
   deltablue                             x2       0.47530+-0.00152    ?     0.47659+-0.00153       ?
   earley                                         0.71517+-0.00512    !     0.72471+-0.00238       ! definitely 1.0133x slower
   boyer                                         10.62808+-0.03402    !    10.77278+-0.08791       ! definitely 1.0136x slower
   raytrace                              x2       3.75125+-0.01650          3.72890+-0.01428       
   regexp                                x2      25.56794+-0.05782    ?    25.57102+-0.05368       ?
   richards                              x2       0.25611+-0.00044    !     0.25794+-0.00069       ! definitely 1.0071x slower
   splay                                 x2       0.63203+-0.03122          0.62887+-0.03088       
   navier-stokes                         x2       9.62681+-0.02557          9.62501+-0.03703       
   closure                                        0.37826+-0.06464    ?     0.37935+-0.06561       ?
   jquery                                         5.32640+-0.92731    ?     5.40527+-0.88845       ? might be 1.0148x slower
   gbemu                                 x2     212.90828+-12.03713   ?   214.17616+-12.83930      ?
   box2d                                 x2      26.36230+-0.23339    ?    26.36620+-0.14271       ?

V8v7:
   <arithmetic>                                   6.18844+-0.01122    ?     6.20370+-0.01106       ? might be 1.0025x slower
   <geometric> *                                  2.04479+-0.01322    ?     2.05145+-0.01206       ? might be 1.0033x slower
   <harmonic>                                     0.78472+-0.00612    ?     0.78834+-0.00580       ? might be 1.0046x slower

Octane including V8v7:
   <arithmetic>                                  26.51185+-1.13041    ?    26.64221+-1.19691       ? might be 1.0049x slower
   <geometric> *                                  3.79605+-0.06778    ?     3.81085+-0.07232       ? might be 1.0039x slower
   <harmonic>                                     0.93772+-0.01740    ?     0.94205+-0.01981       ? might be 1.0046x slower

                                                     TipOfTree                 NoFixpoint                                    
Kraken:
   ai-astar                                       439.544+-0.478            439.412+-0.507         
   audio-beat-detection                           206.759+-1.615            206.181+-2.366         
   audio-dft                                      254.183+-1.550      ?     256.735+-3.085         ? might be 1.0100x slower
   audio-fft                                      118.054+-0.120            118.046+-0.149         
   audio-oscillator                               195.828+-0.780            195.469+-0.797         
   imaging-darkroom                               260.720+-0.885      ?     261.555+-1.079         ?
   imaging-desaturate                             130.853+-0.736      ?     131.164+-0.757         ?
   imaging-gaussian-blur                          328.998+-0.597      ?     329.391+-0.866         ?
   json-parse-financial                            66.491+-0.165      !      67.933+-0.303         ! definitely 1.0217x slower
   json-stringify-tinderbox                        87.337+-0.261      ^      83.978+-0.317         ^ definitely 1.0400x faster
   stanford-crypto-aes                             81.937+-0.237             81.760+-0.393         
   stanford-crypto-ccm                             88.904+-3.933             88.106+-3.536         
   stanford-crypto-pbkdf2                         224.663+-1.049            223.720+-1.036         
   stanford-crypto-sha256-iterative                96.653+-0.387      !      98.389+-0.911         ! definitely 1.0180x slower

   <arithmetic> *                                 184.352+-0.397      ?     184.417+-0.448         ? might be 1.0004x slower
   <geometric>                                    156.929+-0.591            156.889+-0.556           might be 1.0003x faster
   <harmonic>                                     134.709+-0.735            134.643+-0.674           might be 1.0005x faster

                                                     TipOfTree                 NoFixpoint                                    
JSRegress:
   adapt-to-double-divide                         18.5731+-0.0863     ?     18.6959+-0.1406        ?
   aliased-arguments-getbyval                      0.8839+-0.0088     ^      0.7483+-0.0085        ^ definitely 1.1812x faster
   allocate-big-object                             1.7928+-0.0319     ?      1.8472+-0.0462        ? might be 1.0303x slower
   arity-mismatch-inlining                         0.6481+-0.0111     ^      0.6259+-0.0104        ^ definitely 1.0355x faster
   array-access-polymorphic-structure              5.8977+-0.1270            5.6662+-0.1312          might be 1.0409x faster
   array-with-double-add                           4.8546+-0.0366            4.8034+-0.0456          might be 1.0107x faster
   array-with-double-increment                     3.3160+-0.0551            3.3125+-0.0540        
   array-with-double-mul-add                       6.1489+-0.2053            6.0602+-0.2151          might be 1.0146x faster
   array-with-double-sum                           6.5632+-0.0818     ?      6.5699+-0.0757        ?
   array-with-int32-add-sub                        8.7395+-0.0880            8.6224+-0.0725          might be 1.0136x faster
   array-with-int32-or-double-sum                  6.6308+-0.0820     ?      6.6353+-0.0639        ?
   big-int-mul                                     4.1405+-0.0501            4.0534+-0.0569          might be 1.0215x faster
   boolean-test                                    3.6275+-0.0094     ^      3.5631+-0.0313        ^ definitely 1.0181x faster
   cast-int-to-double                             11.8953+-0.1523     ^     11.5809+-0.0933        ^ definitely 1.0271x faster
   cell-argument                                  11.9804+-0.0729     ?     12.1852+-0.1443        ? might be 1.0171x slower
   cfg-simplify                                    3.1676+-0.0132     ?      3.2024+-0.0637        ? might be 1.0110x slower
   cmpeq-obj-to-obj-other                          9.3278+-0.0960     !      9.6359+-0.1242        ! definitely 1.0330x slower
   constant-test                                   7.1641+-0.0987            7.0938+-0.1150        
   direct-arguments-getbyval                       0.8042+-0.0104     ^      0.6907+-0.0109        ^ definitely 1.1644x faster
   double-pollution-getbyval                       8.8919+-0.1046     ?      8.9390+-0.0914        ?
   double-pollution-putbyoffset                    4.1612+-0.0237            4.1211+-0.0280        
   external-arguments-getbyval                     1.9370+-0.0253     ^      1.8216+-0.0332        ^ definitely 1.0634x faster
   external-arguments-putbyval                     2.7417+-0.0145            2.7229+-0.0122        
   Float32Array-matrix-mult                       11.3811+-0.2497     ?     11.5451+-0.2782        ? might be 1.0144x slower
   fold-double-to-int                             18.6925+-0.4485           18.4006+-0.2292          might be 1.0159x faster
   function-dot-apply                              2.5980+-0.0071     ?      2.6008+-0.0077        ?
   function-test                                   4.0924+-0.0369     !      4.2252+-0.0743        ! definitely 1.0325x slower
   get-by-id-chain-from-try-block                  6.0887+-0.0782     ?      6.1736+-0.0781        ? might be 1.0140x slower
   HashMap-put-get-iterate-keys                   74.2011+-0.6867     ^     72.8602+-0.6343        ^ definitely 1.0184x faster
   HashMap-put-get-iterate                        75.1286+-0.5368           74.9888+-0.2794        
   HashMap-string-put-get-iterate                 60.7783+-0.5776           60.0549+-0.3607          might be 1.0120x faster
   indexed-properties-in-objects                   3.7870+-0.0125     ^      3.6857+-0.0403        ^ definitely 1.0275x faster
   inline-arguments-access                         1.1350+-0.0076     ^      1.0224+-0.0079        ^ definitely 1.1101x faster
   inline-arguments-local-escape                  20.0991+-0.2939     ^     19.2522+-0.1558        ^ definitely 1.0440x faster
   inline-get-scoped-var                           5.5165+-0.1977     ?      5.8158+-0.2597        ? might be 1.0543x slower
   inlined-put-by-id-transition                   12.7260+-0.1254     !     13.7767+-0.2341        ! definitely 1.0826x slower
   int-or-other-abs-then-get-by-val                7.3165+-0.0690     ?      7.3283+-0.0830        ?
   int-or-other-abs-zero-then-get-by-val          30.8500+-0.2127           30.8268+-0.3005        
   int-or-other-add-then-get-by-val                8.4947+-0.1094            8.4550+-0.0725        
   int-or-other-add                                8.8449+-0.1193            8.8414+-0.0945        
   int-or-other-div-then-get-by-val                6.6342+-0.0760            6.5938+-0.0782        
   int-or-other-max-then-get-by-val                8.4673+-0.1731            8.2561+-0.2413          might be 1.0256x faster
   int-or-other-min-then-get-by-val                6.8287+-0.1037            6.7547+-0.0767          might be 1.0109x faster
   int-or-other-mod-then-get-by-val                6.6691+-0.0783            6.5903+-0.0759          might be 1.0120x faster
   int-or-other-mul-then-get-by-val                5.9498+-0.0779     ?      5.9608+-0.0630        ?
   int-or-other-neg-then-get-by-val                6.6548+-0.0851     ?      6.6985+-0.0756        ?
   int-or-other-neg-zero-then-get-by-val          30.5983+-0.4148           30.2695+-0.2421          might be 1.0109x faster
   int-or-other-sub-then-get-by-val                8.5620+-0.0696            8.5483+-0.0946        
   int-or-other-sub                                6.9059+-0.0545            6.7894+-0.0814          might be 1.0172x faster
   int-overflow-local                             13.3293+-0.1064           13.2497+-0.0780        
   Int16Array-bubble-sort                         40.8569+-0.1286           40.7727+-0.1242        
   Int16Array-load-int-mul                         1.5543+-0.0091     ^      1.5340+-0.0081        ^ definitely 1.0132x faster
   Int8Array-load                                  4.0031+-0.0088            3.9715+-0.0339        
   integer-divide                                 12.7197+-0.1236           12.6938+-0.1371        
   integer-modulo                                  1.7067+-0.0091            1.7031+-0.0053        
   make-indexed-storage                            3.2606+-0.0203     ?      3.2645+-0.0982        ?
   method-on-number                               20.6334+-0.1970           20.2611+-0.5226          might be 1.0184x faster
   nested-function-parsing                       102.6255+-50.2590         100.9185+-50.8878         might be 1.0169x faster
   new-array-buffer-dead                           2.9812+-0.0089            2.9657+-0.0093        
   new-array-buffer-push                           8.7672+-0.0775     ?      8.8250+-0.1757        ?
   new-array-dead                                 23.3715+-0.1042     ?     23.4011+-0.1013        ?
   new-array-push                                  5.2331+-0.1423            5.0701+-0.0679          might be 1.0321x faster
   number-test                                     3.5092+-0.0360     ?      3.5218+-0.0306        ?
   object-closure-call                             7.0338+-0.0641            6.9199+-0.1007          might be 1.0165x faster
   object-test                                     4.0918+-0.0213            4.0643+-0.0139        
   poly-stricteq                                  74.9355+-0.1492     ?     75.6841+-0.9578        ?
   polymorphic-structure                          16.7200+-0.1268           16.5714+-0.0733        
   polyvariant-monomorphic-get-by-id              10.3610+-0.0819           10.3280+-0.0979        
   rare-osr-exit-on-local                         17.1197+-0.0905     ?     17.1198+-0.1369        ?
   register-pressure-from-osr                     26.1270+-0.0850     ?     26.2416+-0.2249        ?
   simple-activation-demo                         28.7006+-0.1613           28.6174+-0.2495        
   slow-array-profile-convergence                  3.7512+-0.0361     ^      3.5890+-0.0085        ^ definitely 1.0452x faster
   slow-convergence                                3.3141+-0.0099     ^      3.1770+-0.0132        ^ definitely 1.0431x faster
   sparse-conditional                              1.1064+-0.0076     ^      1.0780+-0.0128        ^ definitely 1.0263x faster
   splice-to-remove                               41.1210+-0.1691     !     42.6192+-0.1647        ! definitely 1.0364x slower
   string-hash                                     2.2316+-0.0121     ^      2.1840+-0.0112        ^ definitely 1.0218x faster
   string-repeat-arith                            39.5165+-0.8297           38.4655+-0.9937          might be 1.0273x faster
   string-sub                                     72.5497+-0.4402     ?     73.1768+-1.8532        ?
   string-test                                     3.5706+-0.0086     ^      3.5101+-0.0405        ^ definitely 1.0172x faster
   structure-hoist-over-transitions                2.7025+-0.0178     ^      2.6653+-0.0189        ^ definitely 1.0140x faster
   tear-off-arguments-simple                       1.7401+-0.0101     ^      1.4825+-0.0101        ^ definitely 1.1737x faster
   tear-off-arguments                              3.0607+-0.0295     ^      2.7885+-0.0083        ^ definitely 1.0976x faster
   temporal-structure                             17.4272+-0.1356     !     18.4564+-0.5660        ! definitely 1.0591x slower
   to-int32-boolean                               22.4223+-0.0998     ?     22.5212+-0.1055        ?
   undefined-test                                  3.7088+-0.0234            3.6754+-0.0444        

   <arithmetic>                                   14.3618+-0.6078           14.3129+-0.6309          might be 1.0034x faster
   <geometric> *                                   7.4586+-0.0489            7.3649+-0.0539          might be 1.0127x faster
   <harmonic>                                      4.2769+-0.0174     ^      4.1074+-0.0153        ^ definitely 1.0413x faster

                                                     TipOfTree                 NoFixpoint                                    
All benchmarks:
   <arithmetic>                                   33.1920+-0.4991           33.0289+-0.5229          might be 1.0049x faster
   <geometric>                                     9.4300+-0.0651            9.3079+-0.0693          might be 1.0131x faster
   <harmonic>                                      3.1111+-0.0291            3.0573+-0.0310          might be 1.0176x faster

                                                     TipOfTree                 NoFixpoint                                    
Geomean of preferred means:
   <scaled-result>                                19.3440+-0.1249     ^     19.0612+-0.1318        ^ definitely 1.0148x faster
Comment 2 Geoffrey Garen 2013-03-07 12:27:53 PST
Comment on attachment 192067 [details]
the patch

r=me too
Comment 3 Filip Pizlo 2013-03-07 15:13:56 PST
Landed in http://trac.webkit.org/changeset/145143
Comment 4 Filip Pizlo 2013-03-07 15:46:18 PST
Performance in DRT:



Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on bigmac (MacPro5,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/DumpRenderTree (r145110)
"NoFixpoint" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r145110)

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

                                                     TipOfTree                 NoFixpoint                                    
SunSpider:
   3d-cube                                        10.2300+-0.2513     ^      9.0948+-0.2692        ^ definitely 1.1248x faster
   3d-morph                                        7.4771+-0.0591            7.4407+-0.0731        
   3d-raytrace                                    10.3445+-0.2479     ^      9.7596+-0.2381        ^ definitely 1.0599x faster
   access-binary-trees                             2.2049+-0.3185     ?      2.3219+-0.2819        ? might be 1.0531x slower
   access-fannkuch                                 6.6940+-0.0254     ^      6.5406+-0.0305        ^ definitely 1.0235x faster
   access-nbody                                    4.1159+-0.0357     ^      3.9643+-0.0139        ^ definitely 1.0383x faster
   access-nsieve                                   4.2892+-0.0567            4.2692+-0.0347        
   bitops-3bit-bits-in-byte                        1.5445+-0.0211            1.5278+-0.0118          might be 1.0109x faster
   bitops-bits-in-byte                             5.6088+-0.0333     ?      5.6460+-0.0502        ?
   bitops-bitwise-and                              2.1369+-0.0834     ?      2.1494+-0.0564        ?
   bitops-nsieve-bits                              3.5785+-0.0372     ^      3.4484+-0.0565        ^ definitely 1.0377x faster
   controlflow-recursive                           2.5093+-0.0156     ?      2.5285+-0.0341        ?
   crypto-aes                                      8.2175+-0.2763     ^      7.4066+-0.2624        ^ definitely 1.1095x faster
   crypto-md5                                      3.7604+-0.0387     ^      3.4729+-0.0667        ^ definitely 1.0828x faster
   crypto-sha1                                     3.1124+-0.0264     ^      2.9524+-0.0276        ^ definitely 1.0542x faster
   date-format-tofte                              14.0647+-0.9816           13.9829+-0.9173        
   date-format-xparb                              14.6378+-0.5630     ?     14.7727+-0.7289        ?
   math-cordic                                     3.8331+-0.0770     ?      3.8930+-0.0697        ? might be 1.0156x slower
   math-partial-sums                              10.4241+-0.0308     ^     10.2987+-0.0330        ^ definitely 1.0122x faster
   math-spectral-norm                              2.8415+-0.0431     ^      2.7123+-0.0184        ^ definitely 1.0476x faster
   regexp-dna                                     10.0667+-0.4561            9.9768+-0.4867        
   string-base64                                   5.4798+-0.4958            5.3765+-0.4957          might be 1.0192x faster
   string-fasta                                    9.7576+-0.1773     ?      9.9201+-0.2676        ? might be 1.0167x slower
   string-tagcloud                                12.5549+-0.1983     ?     12.7351+-0.3243        ? might be 1.0144x slower
   string-unpack-code                             24.9048+-0.3435     ?     25.0098+-0.4390        ?
   string-validate-input                           8.7357+-0.2391            8.5816+-0.3410          might be 1.0180x faster

   <arithmetic> *                                  7.4279+-0.1155            7.2993+-0.1385          might be 1.0176x faster
   <geometric>                                     5.8958+-0.0701            5.7828+-0.0906          might be 1.0195x faster
   <harmonic>                                      4.6571+-0.0662            4.5877+-0.0683          might be 1.0151x faster

                                                     TipOfTree                 NoFixpoint                                    
V8Spider:
   crypto                                         71.8761+-0.4584     ^     70.8982+-0.3609        ^ definitely 1.0138x faster
   deltablue                                     115.4062+-0.5086     ^    108.2740+-0.5851        ^ definitely 1.0659x faster
   earley-boyer                                   74.9353+-0.5907     ^     71.5782+-0.5572        ^ definitely 1.0469x faster
   raytrace                                       58.4036+-0.2669     ^     53.0441+-0.0985        ^ definitely 1.1010x faster
   regexp                                         84.8803+-0.2919     ?     85.0342+-0.2925        ?
   richards                                      102.7334+-0.5147     ^    101.0941+-0.9138        ^ definitely 1.0162x faster
   splay                                          58.8965+-2.9282           58.7385+-3.0570        

   <arithmetic>                                   81.0188+-0.5121     ^     78.3802+-0.6241        ^ definitely 1.0337x faster
   <geometric> *                                  78.6402+-0.6463     ^     76.0259+-0.7222        ^ definitely 1.0344x faster
   <harmonic>                                     76.4076+-0.7773     ^     73.7464+-0.8115        ^ definitely 1.0361x faster

                                                     TipOfTree                 NoFixpoint                                    
Octane and V8v7:
   encrypt                                        0.38187+-0.00096    !     0.38457+-0.00157       ! definitely 1.0071x slower
   decrypt                                        6.85345+-0.01521    !     6.92832+-0.03037       ! definitely 1.0109x slower
   deltablue                             x2       0.49870+-0.00598    ?     0.49870+-0.00259       ?
   earley                                         0.74770+-0.00597    ?     0.75031+-0.00365       ?
   boyer                                         10.88922+-0.06371         10.82235+-0.02869       
   raytrace                              x2       3.88665+-0.02689    ?     3.89495+-0.05992       ?
   regexp                                x2      26.42077+-0.05897         26.35327+-0.07992       
   richards                              x2       0.26319+-0.00593          0.26061+-0.00418       
   splay                                 x2       0.60617+-0.01190    ?     0.61525+-0.02938       ? might be 1.0150x slower
   navier-stokes                         x2       9.97541+-0.00884          9.97306+-0.01873       
   closure                                        0.38660+-0.06734          0.38417+-0.06740       
   jquery                                         5.64141+-0.87045    ?     5.69520+-0.85603       ?
   gbemu                                 x2     224.36589+-1.37429        223.29967+-2.64297       
   mandreel                              x2     155.11779+-0.53357        154.79289+-0.63796       
   pdfjs                                 x2     111.45200+-0.45101        111.06488+-0.44187       
   box2d                                 x2      31.24992+-0.70103         30.88728+-0.65443         might be 1.0117x faster

V8v7:
   <arithmetic>                                   6.38588+-0.00618          6.37983+-0.01297         might be 1.0009x faster
   <geometric> *                                  2.09831+-0.00976    ?     2.10106+-0.01279       ? might be 1.0013x slower
   <harmonic>                                     0.80395+-0.00846          0.80366+-0.00874         might be 1.0004x faster

Octane including V8v7:
   <arithmetic>                                  44.32974+-0.12843         44.16331+-0.18895         might be 1.0038x faster
   <geometric> *                                  6.79205+-0.08427          6.78670+-0.07494         might be 1.0008x faster
   <harmonic>                                     1.13424+-0.02237          1.13287+-0.02140         might be 1.0012x faster

                                                     TipOfTree                 NoFixpoint                                    
Kraken:
   ai-astar                                       438.533+-4.517      ?     438.984+-0.765         ?
   audio-beat-detection                           214.451+-3.408            214.161+-2.183         
   audio-dft                                      259.419+-3.202            257.146+-1.677         
   audio-fft                                      121.836+-0.836            121.198+-0.320         
   audio-oscillator                               210.404+-0.448      ?     211.018+-0.878         ?
   imaging-darkroom                               265.723+-1.988            263.963+-0.674         
   imaging-desaturate                             131.485+-0.134      ?     131.518+-0.279         ?
   imaging-gaussian-blur                          356.660+-0.425      !     415.392+-0.986         ! definitely 1.1647x slower
   json-parse-financial                            66.584+-0.299      !      68.201+-0.141         ! definitely 1.0243x slower
   json-stringify-tinderbox                        87.875+-0.228      ^      84.232+-0.288         ^ definitely 1.0433x faster
   stanford-crypto-aes                            107.060+-0.593            106.560+-1.136         
   stanford-crypto-ccm                            122.416+-0.378      ^     120.128+-0.430         ^ definitely 1.0191x faster
   stanford-crypto-pbkdf2                         232.712+-1.291      ?     232.824+-1.801         ?
   stanford-crypto-sha256-iterative               107.770+-0.407            106.819+-0.644         

   <arithmetic> *                                 194.495+-0.539      !     198.010+-0.251         ! definitely 1.0181x slower
   <geometric>                                    168.584+-0.397      !     169.605+-0.251         ! definitely 1.0061x slower
   <harmonic>                                     146.716+-0.324            146.549+-0.248           might be 1.0011x faster

                                                     TipOfTree                 NoFixpoint                                    
JSBench:
   amazon                                         16.2500+-3.8038           16.0000+-3.6650          might be 1.0156x faster
   facebook                                       84.5000+-2.5487     ?     84.9167+-2.6746        ?
   google                                         70.5000+-1.9442           68.6667+-2.5318          might be 1.0267x faster
   twitter                                        58.5000+-0.6907           58.1667+-0.4560        
   yahoo                                          24.9167+-0.3272     ?     25.0833+-0.3272        ?

   <arithmetic> *                                 50.9333+-1.4350           50.5667+-1.4936          might be 1.0073x faster
   <geometric>                                    42.1357+-2.5842           41.8594+-2.5809          might be 1.0066x faster
   <harmonic>                                     33.2755+-4.2117           33.0916+-4.1509          might be 1.0056x faster

                                                     TipOfTree                 NoFixpoint                                    
JSRegress:
   adapt-to-double-divide                         18.5517+-0.0159           18.5511+-0.0145        
   aliased-arguments-getbyval                      0.9498+-0.0137     ^      0.8261+-0.0194        ^ definitely 1.1498x faster
   allocate-big-object                             3.5073+-1.1639            3.4623+-1.1316          might be 1.0130x faster
   arity-mismatch-inlining                         0.6986+-0.0081            0.6828+-0.0132          might be 1.0231x faster
   array-access-polymorphic-structure              6.9461+-1.3965     ?      7.3593+-1.6224        ? might be 1.0595x slower
   array-with-double-add                           4.6671+-0.1169            4.6609+-0.1247        
   array-with-double-increment                     3.3219+-0.0607            3.3207+-0.0771        
   array-with-double-mul-add                       6.3481+-0.2316            6.2887+-0.2335        
   array-with-double-sum                           6.5244+-0.0948            6.4267+-0.0316          might be 1.0152x faster
   array-with-int32-add-sub                        8.3746+-0.3059            8.3221+-0.2884        
   array-with-int32-or-double-sum                  6.5079+-0.0118     ^      6.4736+-0.0066        ^ definitely 1.0053x faster
   big-int-mul                                     4.1446+-0.0388            4.0996+-0.0676          might be 1.0110x faster
   boolean-test                                    3.5624+-0.0177            3.5161+-0.0312          might be 1.0132x faster
   cast-int-to-double                             11.6696+-0.0855     ^     11.4990+-0.0660        ^ definitely 1.0148x faster
   cell-argument                                  11.8745+-0.0220           11.8703+-0.0206        
   cfg-simplify                                    3.1018+-0.0073     !      3.2014+-0.0551        ! definitely 1.0321x slower
   cmpeq-obj-to-obj-other                          9.7509+-0.2271            9.6154+-0.3187          might be 1.0141x faster
   constant-test                                   7.0776+-0.1161            7.0407+-0.0450        
   direct-arguments-getbyval                       0.8739+-0.0141     ^      0.7539+-0.0085        ^ definitely 1.1591x faster
   double-pollution-getbyval                       8.8497+-0.0118            8.8363+-0.0152        
   double-pollution-putbyoffset                    5.0346+-0.6048            4.7243+-0.5720          might be 1.0657x faster
   external-arguments-getbyval                     2.2523+-0.1523            2.1467+-0.1636          might be 1.0492x faster
   external-arguments-putbyval                     3.5388+-0.2816            3.2649+-0.2841          might be 1.0839x faster
   Float32Array-matrix-mult                       13.0328+-0.5443     ?     13.4050+-0.7836        ? might be 1.0286x slower
   fold-double-to-int                             18.0097+-0.0577     ?     18.3481+-0.3819        ? might be 1.0188x slower
   function-dot-apply                              2.5945+-0.0158     ?      2.6180+-0.0211        ?
   function-test                                   4.0927+-0.0659     ?      4.0941+-0.0466        ?
   get-by-id-chain-from-try-block                  6.1650+-0.0582     ?      6.2355+-0.1025        ? might be 1.0114x slower
   HashMap-put-get-iterate-keys                   75.6427+-0.8580     ^     73.6776+-0.8314        ^ definitely 1.0267x faster
   HashMap-put-get-iterate                        76.7981+-0.6485           75.9420+-0.8434          might be 1.0113x faster
   HashMap-string-put-get-iterate                 70.5947+-1.8167           69.7093+-1.1407          might be 1.0127x faster
   indexed-properties-in-objects                   3.7268+-0.0318            3.7125+-0.0343        
   inline-arguments-access                         1.1820+-0.0052     ^      1.0820+-0.0210        ^ definitely 1.0924x faster
   inline-arguments-local-escape                  22.7251+-1.7601           22.1781+-1.7659          might be 1.0247x faster
   inline-get-scoped-var                           5.3183+-0.0085     ?      5.3189+-0.0294        ?
   inlined-put-by-id-transition                   12.8040+-0.2083     !     13.9536+-0.1914        ! definitely 1.0898x slower
   int-or-other-abs-then-get-by-val                7.3381+-0.0420     ?      7.3939+-0.1090        ?
   int-or-other-abs-zero-then-get-by-val          30.6829+-0.0447           30.6654+-0.0582        
   int-or-other-add-then-get-by-val                8.4682+-0.0190            8.4454+-0.0174        
   int-or-other-add                                8.7720+-0.0522     ?      8.7793+-0.1250        ?
   int-or-other-div-then-get-by-val                6.6108+-0.0184     ?      6.6192+-0.0488        ?
   int-or-other-max-then-get-by-val                8.1737+-0.2051            8.1416+-0.1908        
   int-or-other-min-then-get-by-val                6.7730+-0.0531            6.7712+-0.0399        
   int-or-other-mod-then-get-by-val                6.6099+-0.0166     ^      6.5435+-0.0114        ^ definitely 1.0101x faster
   int-or-other-mul-then-get-by-val                6.0343+-0.0902     ^      5.9143+-0.0223        ^ definitely 1.0203x faster
   int-or-other-neg-then-get-by-val                6.7063+-0.1472            6.5730+-0.0254          might be 1.0203x faster
   int-or-other-neg-zero-then-get-by-val          30.0860+-0.1096     ?     30.4699+-0.4831        ? might be 1.0128x slower
   int-or-other-sub-then-get-by-val                8.5006+-0.0702            8.4540+-0.0431        
   int-or-other-sub                                6.8482+-0.0997            6.7450+-0.0090          might be 1.0153x faster
   int-overflow-local                             13.2896+-0.0294           13.2669+-0.0548        
   Int16Array-bubble-sort                         63.6094+-1.4436     ?     63.7324+-1.4373        ?
   Int16Array-load-int-mul                         1.5763+-0.0100     ?      1.5963+-0.0346        ? might be 1.0127x slower
   Int8Array-load                                  4.4798+-0.0083     ?      4.5588+-0.0960        ? might be 1.0177x slower
   integer-divide                                 12.6805+-0.0598           12.6703+-0.0528        
   integer-modulo                                  1.8697+-0.0357            1.8476+-0.0267          might be 1.0119x faster
   make-indexed-storage                            4.0585+-0.5741            3.8311+-0.5548          might be 1.0594x faster
   method-on-number                               20.4267+-0.5391           19.7449+-0.2862          might be 1.0345x faster
   nested-function-parsing                       111.0588+-51.1653    ?    112.5057+-51.4150       ? might be 1.0130x slower
   new-array-buffer-dead                           3.1426+-0.1321            3.0609+-0.1019          might be 1.0267x faster
   new-array-buffer-push                          12.9534+-2.1070           12.7075+-2.0989          might be 1.0194x faster
   new-array-dead                                 23.4425+-0.1281           23.3977+-0.0507        
   new-array-push                                 10.2997+-1.6385           10.0711+-1.6639          might be 1.0227x faster
   number-test                                     3.5032+-0.0317            3.4971+-0.0501        
   object-closure-call                             7.3419+-0.1807            7.3124+-0.1555        
   object-test                                     4.0589+-0.0644            4.0055+-0.0468          might be 1.0133x faster
   poly-stricteq                                  76.7605+-1.4943           75.4170+-0.2200          might be 1.0178x faster
   polymorphic-structure                          16.6424+-0.0286     ^     16.5581+-0.0140        ^ definitely 1.0051x faster
   polyvariant-monomorphic-get-by-id              10.3280+-0.0163     ?     10.4578+-0.1602        ? might be 1.0126x slower
   rare-osr-exit-on-local                         17.0682+-0.0331     ?     17.0933+-0.1257        ?
   register-pressure-from-osr                     26.2401+-0.0586     ^     26.1208+-0.0463        ^ definitely 1.0046x faster
   simple-activation-demo                         28.7313+-0.2205           28.7024+-0.2574        
   slow-array-profile-convergence                  4.1694+-0.2493            3.8809+-0.2215          might be 1.0743x faster
   slow-convergence                                3.3831+-0.0263     ^      3.2590+-0.0177        ^ definitely 1.0381x faster
   sparse-conditional                              1.1283+-0.0180            1.1264+-0.0134        
   splice-to-remove                               41.4843+-0.2887     ?     41.6198+-0.1382        ?
   string-hash                                     2.2250+-0.0042     !      2.2850+-0.0552        ! definitely 1.0269x slower
   string-repeat-arith                            38.5740+-0.7180           37.9650+-0.8773          might be 1.0160x faster
   string-sub                                     72.3778+-0.9777     ^     70.6510+-0.6207        ^ definitely 1.0244x faster
   string-test                                     3.4757+-0.0153            3.4459+-0.0188        
   structure-hoist-over-transitions                3.5101+-0.5735            3.3440+-0.5470          might be 1.0497x faster
   tear-off-arguments-simple                       1.7993+-0.0365     ^      1.5642+-0.0537        ^ definitely 1.1503x faster
   tear-off-arguments                              3.0349+-0.0269     ^      2.7868+-0.0229        ^ definitely 1.0890x faster
   temporal-structure                             17.3182+-0.0249           17.3132+-0.1040        
   to-int32-boolean                               22.4605+-0.0734           22.3934+-0.0436        
   undefined-test                                  3.6519+-0.0234            3.6294+-0.0090        

   <arithmetic>                                   15.1126+-0.5630           15.0136+-0.5571          might be 1.0066x faster
   <geometric> *                                   7.8277+-0.0593            7.7201+-0.0772          might be 1.0139x faster
   <harmonic>                                      4.5311+-0.0462     ^      4.3699+-0.0553        ^ definitely 1.0369x faster

                                                     TipOfTree                 NoFixpoint                                    
DSP:
   filtrr-posterize-tint                          45.4244+-0.9877     ?     45.4246+-1.0487        ?
   filtrr-tint-contrast-sat-bright                64.6310+-1.7484           64.2758+-1.4082        
   filtrr-tint-sat-adj-contr-mult                 75.6420+-2.4444     ?     75.7703+-2.5271        ?
   filtrr-blur-overlay-sat-contr                 210.7056+-10.4350         210.3893+-10.8834       
   filtrr-sat-blur-mult-sharpen-contr            234.5961+-4.4155          233.0747+-4.2726        
   filtrr-sepia-bias                              32.9340+-1.9003           32.5698+-1.6703          might be 1.0112x faster
   route9-vp8                            x5     1013.6084+-18.5262         994.3142+-16.0721         might be 1.0194x faster
   starfield                             x5     1119.4346+-4.8175     ?   1125.7585+-7.4295        ?
   zynaps-quake3                         x5     1214.0689+-12.4639        1201.7355+-7.0613          might be 1.0103x faster
   zynaps-mandelbrot                     x5      938.0974+-4.5321     ?    938.6116+-3.9427        ?

   <arithmetic>                                  849.6146+-5.4258          844.7540+-4.6916          might be 1.0058x faster
   <geometric> *                                 593.5594+-3.2084          590.4102+-2.0314          might be 1.0053x faster
   <harmonic>                                    238.3090+-6.2386          237.1832+-5.8576          might be 1.0047x faster

                                                     TipOfTree                 NoFixpoint                                    
All benchmarks:
   <arithmetic>                                  149.5501+-1.0064          148.9493+-0.9267          might be 1.0040x faster
   <geometric>                                    19.1401+-0.0503     ^     18.9358+-0.0717        ^ definitely 1.0108x faster
   <harmonic>                                      3.9590+-0.0278     ^      3.8928+-0.0231        ^ definitely 1.0170x faster

                                                     TipOfTree                 NoFixpoint                                    
Geomean of preferred means:
   <scaled-result>                                40.6163+-0.1610     ^     40.2650+-0.1342        ^ definitely 1.0087x faster