Bug 148259 - LICM should be sound even if the CFG has changed
Summary: LICM should be sound even if the CFG has changed
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: Other
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on: 145204
Blocks: 148586 148260
  Show dependency treegraph
 
Reported: 2015-08-20 16:06 PDT by Filip Pizlo
Modified: 2015-08-28 15:39 PDT (History)
11 users (show)

See Also:


Attachments
the patch (15.75 KB, patch)
2015-08-28 13:32 PDT, Filip Pizlo
benjamin: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2015-08-20 16:06:04 PDT
The main thing is knowing whether the loop pre-header is a place where exiting is OK.
Comment 1 Filip Pizlo 2015-08-28 13:32:28 PDT
Created attachment 260173 [details]
the patch
Comment 2 Benjamin Poulain 2015-08-28 14:41:34 PDT
Comment on attachment 260173 [details]
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=260173&action=review

I am not familiar with the exitOK craziness but this looks sensible.

> Source/JavaScriptCore/dfg/DFGLICMPhase.cpp:137
> +                numberOfPreHeaders++;

WebKit style would be
    ++numberOfPreHeaders;
...for some reason.

> Source/JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.cpp:60
> +    // Notice how the Upsilons are not in the predecessor of the Phi anymore. It's not clear if this
> +    // would be bad. Probably not, but it's weird anyway. We should add a validation rule, and we

That does not seem bad to me...
Comment 3 Filip Pizlo 2015-08-28 14:52:34 PDT
(In reply to comment #2)
> Comment on attachment 260173 [details]
> the patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=260173&action=review
> 
> I am not familiar with the exitOK craziness but this looks sensible.
> 
> > Source/JavaScriptCore/dfg/DFGLICMPhase.cpp:137
> > +                numberOfPreHeaders++;
> 
> WebKit style would be
>     ++numberOfPreHeaders;
> ...for some reason.

Fixed!

> 
> > Source/JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.cpp:60
> > +    // Notice how the Upsilons are not in the predecessor of the Phi anymore. It's not clear if this
> > +    // would be bad. Probably not, but it's weird anyway. We should add a validation rule, and we
> 
> That does not seem bad to me...

Yeah, it doesn't seem terrible.  We just have to make a choice to either recognize that as a possibility and document it, or we need to require that Upsilons are canonicalized to the Phi predecessors, and document that.  Right now we just leave the question open, hence the FIXME.

Also, right now we never run pre-header creation in SSA, so this issue simply doesn't come up.  So, we don't know what would happen, if it did come up.  Hence, if someone tries to convert the phase to work on SSA (or just invokes the phase in SSA), that FIXME is there to remind you that you have introduced an IR pattern that we previously didn't consider.
Comment 4 Filip Pizlo 2015-08-28 15:37:42 PDT
This does not appear to have an effect on performance:


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on shakezilla (MacBookPro11,3).

VMs tested:
"TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r189124)
"LICMExitOK" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r189124)

Collected 7 samples per benchmark/VM, with 7 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                 LICMExitOK                                    
SunSpider:
   3d-cube                                            4.6135+-0.2079     ?      4.6490+-0.3009        ?
   3d-morph                                           5.2972+-0.1792            5.2244+-0.0614          might be 1.0139x faster
   3d-raytrace                                        4.9949+-0.0340     ?      5.0840+-0.2030        ? might be 1.0178x slower
   access-binary-trees                                2.0006+-0.2203            1.9659+-0.0810          might be 1.0177x faster
   access-fannkuch                                    5.3201+-0.2356            5.2175+-0.0812          might be 1.0197x faster
   access-nbody                                       2.4142+-0.0548     ?      2.5030+-0.1500        ? might be 1.0368x slower
   access-nsieve                                      2.9895+-0.0901     ?      3.0325+-0.0937        ? might be 1.0144x slower
   bitops-3bit-bits-in-byte                           1.4827+-0.1328            1.4780+-0.0812        
   bitops-bits-in-byte                                3.2294+-0.0967            3.1950+-0.0423          might be 1.0108x faster
   bitops-bitwise-and                                 1.9811+-0.0582     ?      2.1229+-0.2219        ? might be 1.0716x slower
   bitops-nsieve-bits                                 2.9345+-0.0897     ?      3.0161+-0.1367        ? might be 1.0278x slower
   controlflow-recursive                              2.0872+-0.1407            1.9432+-0.1038          might be 1.0741x faster
   crypto-aes                                         3.8426+-0.2135            3.8257+-0.2977        
   crypto-md5                                         2.4723+-0.2635            2.3590+-0.0740          might be 1.0480x faster
   crypto-sha1                                        2.3632+-0.1968            2.2455+-0.1230          might be 1.0524x faster
   date-format-tofte                                  6.5397+-0.2211     ?      6.7213+-0.2596        ? might be 1.0278x slower
   date-format-xparb                                  4.6289+-0.3336            4.5768+-0.1821          might be 1.0114x faster
   math-cordic                                        2.8140+-0.1652     ?      3.0020+-0.7302        ? might be 1.0668x slower
   math-partial-sums                                  5.0235+-0.1207     ?      5.0451+-0.1881        ?
   math-spectral-norm                                 1.7430+-0.0416     ?      1.8081+-0.0919        ? might be 1.0373x slower
   regexp-dna                                         6.4519+-0.2489     ?      6.5976+-0.2121        ? might be 1.0226x slower
   string-base64                                      4.5059+-0.4590            4.2384+-0.1762          might be 1.0631x faster
   string-fasta                                       5.8607+-0.3035     ?      6.7460+-2.4934        ? might be 1.1511x slower
   string-tagcloud                                    7.7774+-0.0793     ?      8.2309+-0.4912        ? might be 1.0583x slower
   string-unpack-code                                18.7444+-1.0840           18.1560+-0.7461          might be 1.0324x faster
   string-validate-input                              4.4201+-0.0707     ?      4.6698+-0.4502        ? might be 1.0565x slower

   <arithmetic>                                       4.4820+-0.0723     ?      4.5251+-0.0900        ? might be 1.0096x slower

                                                        TipOfTree                 LICMExitOK                                    
LongSpider:
   3d-cube                                          817.2873+-5.8588     ?    819.1008+-16.8328       ?
   3d-morph                                        1496.4801+-9.1777         1489.6412+-5.3951        
   3d-raytrace                                      594.5786+-5.3124     ?    595.1396+-3.6693        ?
   access-binary-trees                              793.5456+-6.5995          792.2739+-8.0686        
   access-fannkuch                                  273.2230+-3.6663     ?    278.4969+-7.7329        ? might be 1.0193x slower
   access-nbody                                     507.8719+-5.0187          507.1450+-3.3244        
   access-nsieve                                    367.1509+-21.3282    ?    371.8929+-22.3046       ? might be 1.0129x slower
   bitops-3bit-bits-in-byte                          38.4224+-0.6304     ?     38.5778+-0.9694        ?
   bitops-bits-in-byte                               74.6547+-0.6576     ?     75.1801+-0.9336        ?
   bitops-nsieve-bits                               402.7707+-4.2918          400.6693+-4.7972        
   controlflow-recursive                            422.6918+-3.3199          420.6275+-1.4491        
   crypto-aes                                       571.0076+-7.0723          565.9223+-11.7351       
   crypto-md5                                       482.9322+-21.3286    ?    489.4794+-2.8709        ? might be 1.0136x slower
   crypto-sha1                                      635.9345+-10.5679         626.8860+-9.3523          might be 1.0144x faster
   date-format-tofte                                504.1233+-14.4630         493.1081+-5.2262          might be 1.0223x faster
   date-format-xparb                                670.1132+-34.2201         659.0229+-6.5789          might be 1.0168x faster
   hash-map                                         149.6915+-2.0505          148.9519+-1.8104        
   math-cordic                                      479.2579+-2.8663     ?    481.5912+-3.4856        ?
   math-partial-sums                                465.1179+-1.6769     ?    465.4683+-1.4835        ?
   math-spectral-norm                               546.7384+-2.3776     ?    548.5211+-5.5796        ?
   string-base64                                    347.9546+-8.7616          347.5533+-6.8530        
   string-fasta                                     363.0392+-2.0283          361.6469+-1.0921        
   string-tagcloud                                  175.8611+-1.1943          174.6818+-0.9035        

   <geometric>                                      387.6895+-1.3242          387.2465+-0.9195          might be 1.0011x faster

                                                        TipOfTree                 LICMExitOK                                    
V8Spider:
   crypto                                            48.6100+-1.8379           48.1591+-1.5449        
   deltablue                                         85.3010+-2.5016           84.6094+-5.1212        
   earley-boyer                                      39.0124+-1.2078     ?     39.8956+-1.1136        ? might be 1.0226x slower
   raytrace                                          32.4173+-1.3303           31.0273+-1.7322          might be 1.0448x faster
   regexp                                            62.5481+-2.0326           61.3258+-1.0199          might be 1.0199x faster
   richards                                          64.7092+-1.1558           64.4942+-1.3885        
   splay                                             35.1023+-1.3400     ?     36.7514+-2.2579        ? might be 1.0470x slower

   <geometric>                                       49.6363+-0.4128           49.5118+-0.9781          might be 1.0025x faster

                                                        TipOfTree                 LICMExitOK                                    
Octane:
   encrypt                                           0.17462+-0.02330          0.16667+-0.00447         might be 1.0477x faster
   decrypt                                           3.22520+-0.09999          3.21980+-0.10886       
   deltablue                                x2       0.15651+-0.00293          0.15630+-0.00163       
   earley                                            0.27469+-0.00271          0.27421+-0.00257       
   boyer                                             4.16832+-0.10629          4.15096+-0.08099       
   navier-stokes                            x2       4.83595+-0.01786    ?     4.84091+-0.02600       ?
   raytrace                                 x2       1.01556+-0.04134          0.98533+-0.03932         might be 1.0307x faster
   richards                                 x2       0.10779+-0.00120    ?     0.10933+-0.00116       ? might be 1.0142x slower
   splay                                    x2       0.32510+-0.00276    ?     0.32955+-0.00682       ? might be 1.0137x slower
   regexp                                   x2      24.65094+-0.21848    ?    24.73347+-0.30344       ?
   pdfjs                                    x2      36.66072+-0.24184    ?    36.94987+-0.29325       ?
   mandreel                                 x2      43.81576+-0.47353         43.71492+-0.57164       
   gbemu                                    x2      33.81141+-0.14912    ?    34.00492+-0.62430       ?
   closure                                           0.56116+-0.00540          0.55976+-0.00213       
   jquery                                            7.06230+-0.04560    ?     7.10008+-0.05436       ?
   box2d                                    x2       9.96297+-0.11543          9.95132+-0.08017       
   zlib                                     x2     384.48141+-4.45184        382.37587+-6.07859       
   typescript                               x2     642.12873+-8.72855        634.67358+-6.66395         might be 1.0117x faster

   <geometric>                                       5.53719+-0.03981          5.52645+-0.01230         might be 1.0019x faster

                                                        TipOfTree                 LICMExitOK                                    
Kraken:
   ai-astar                                          223.636+-8.906      ?     225.723+-8.827         ?
   audio-beat-detection                               50.126+-0.806      ?      50.219+-0.431         ?
   audio-dft                                          95.134+-0.817      ?      95.481+-1.611         ?
   audio-fft                                          34.944+-0.486      ?      35.132+-0.735         ?
   audio-oscillator                                   59.916+-0.829             59.171+-0.619           might be 1.0126x faster
   imaging-darkroom                                   63.018+-4.183             61.481+-1.779           might be 1.0250x faster
   imaging-desaturate                                 49.641+-1.198      ?      50.600+-2.285         ? might be 1.0193x slower
   imaging-gaussian-blur                              84.834+-1.207      ?      84.972+-1.032         ?
   json-parse-financial                               39.280+-0.912             38.289+-0.530           might be 1.0259x faster
   json-stringify-tinderbox                           22.557+-0.738      ?      23.005+-0.866         ? might be 1.0199x slower
   stanford-crypto-aes                                40.468+-0.650      ?      43.801+-6.068         ? might be 1.0824x slower
   stanford-crypto-ccm                                35.209+-1.383      ?      35.899+-0.856         ? might be 1.0196x slower
   stanford-crypto-pbkdf2                             93.644+-0.598      ?      94.478+-1.310         ?
   stanford-crypto-sha256-iterative                   36.179+-0.623      ?      36.202+-0.757         ?

   <arithmetic>                                       66.328+-0.695      ?      66.747+-0.846         ? might be 1.0063x slower

                                                        TipOfTree                 LICMExitOK                                    
JSRegress:
   abc-forward-loop-equal                            29.5175+-0.8621           29.4101+-0.6952        
   abc-postfix-backward-loop                         29.6942+-0.7907     ?     30.3485+-1.0470        ? might be 1.0220x slower
   abc-simple-backward-loop                          30.0272+-1.2573           28.9308+-0.6845          might be 1.0379x faster
   abc-simple-forward-loop                           29.9419+-1.5790           29.8170+-1.0331        
   abc-skippy-loop                                   21.7100+-1.1871     ?     21.7554+-0.6365        ?
   abs-boolean                                        2.4262+-0.0605            2.3901+-0.0404          might be 1.0151x faster
   adapt-to-double-divide                            16.4942+-0.4602           16.2450+-0.3637          might be 1.0153x faster
   aliased-arguments-getbyval                         1.2791+-0.2121            1.1541+-0.0302          might be 1.1082x faster
   allocate-big-object                                2.5086+-0.2494            2.4869+-0.1909        
   arguments-named-and-reflective                    10.7385+-0.0851           10.6838+-0.2741        
   arguments-out-of-bounds                            9.3638+-0.4357            9.3438+-0.2625        
   arguments-strict-mode                              9.9324+-0.2747            9.6711+-0.2517          might be 1.0270x faster
   arguments                                          8.3913+-0.1546            8.2510+-0.1747          might be 1.0170x faster
   arity-mismatch-inlining                            0.8427+-0.0366            0.7983+-0.0447          might be 1.0556x faster
   array-access-polymorphic-structure                 6.6855+-2.0134            5.9712+-0.3197          might be 1.1196x faster
   array-nonarray-polymorhpic-access                 24.9423+-0.7870     ?     25.2947+-1.0339        ? might be 1.0141x slower
   array-prototype-every                             75.4042+-1.3253     ?     75.4136+-1.3079        ?
   array-prototype-forEach                           74.9834+-1.8205           74.0259+-1.1225          might be 1.0129x faster
   array-prototype-map                               81.2676+-1.6357     ?     87.1975+-15.6061       ? might be 1.0730x slower
   array-prototype-reduce                            70.6018+-1.2518     ?     71.7140+-1.7095        ? might be 1.0158x slower
   array-prototype-reduceRight                       71.3504+-4.7705           70.2523+-1.7525          might be 1.0156x faster
   array-prototype-some                              74.8663+-0.7619           74.8016+-0.7815        
   array-splice-contiguous                           21.7904+-0.9244           21.6932+-0.6567        
   array-with-double-add                              3.4154+-0.0700            3.4133+-0.0436        
   array-with-double-increment                        3.0532+-0.0231            3.0378+-0.0881        
   array-with-double-mul-add                          4.1226+-0.0340     ?      4.1725+-0.1066        ? might be 1.0121x slower
   array-with-double-sum                              3.1765+-0.0856            3.1684+-0.1312        
   array-with-int32-add-sub                           6.5220+-1.7559            5.9125+-0.1885          might be 1.1031x faster
   array-with-int32-or-double-sum                     3.2302+-0.0880            3.1942+-0.0560          might be 1.0113x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     25.8017+-0.9343           25.3866+-0.2244          might be 1.0163x faster
   ArrayBuffer-DataView-alloc-long-lived             11.8805+-0.4274           11.8619+-0.4143        
   ArrayBuffer-Int32Array-byteOffset                  3.5884+-0.1157            3.5769+-0.1233        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     30.2916+-0.5414           30.2114+-0.9717        
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     20.4425+-0.5574           20.3508+-0.4955        
   ArrayBuffer-Int8Array-alloc-long-lived            12.6024+-0.7838     ?     12.6149+-1.0070        ?
   ArrayBuffer-Int8Array-alloc                        9.6583+-0.4465            9.5658+-0.2113        
   arrowfunction-call                                 9.7712+-0.1813     ?     10.0557+-0.2492        ? might be 1.0291x slower
   asmjs_bool_bug                                     6.8917+-0.2190     ?      6.8959+-0.2907        ?
   assign-custom-setter-polymorphic                   2.3459+-0.1022     ?      2.3526+-0.1106        ?
   assign-custom-setter                               3.6049+-1.1671            3.1712+-0.1023          might be 1.1368x faster
   basic-set                                          8.5003+-0.2666     ^      8.0233+-0.1316        ^ definitely 1.0595x faster
   big-int-mul                                        3.3943+-0.0936     ?      3.4283+-0.0771        ? might be 1.0100x slower
   boolean-test                                       2.8333+-0.0504     ?      2.8664+-0.0415        ? might be 1.0117x slower
   branch-fold                                        3.6155+-0.1241            3.5856+-0.1000        
   branch-on-string-as-boolean                       17.0466+-0.5110           16.9670+-0.4689        
   by-val-generic                                     2.3455+-0.0917            2.3133+-0.1160          might be 1.0139x faster
   call-spread-apply                                 25.8419+-0.6560     ?     26.7903+-1.0252        ? might be 1.0367x slower
   call-spread-call                                  21.5093+-0.4188     ?     21.7802+-0.9386        ? might be 1.0126x slower
   captured-assignments                               0.4386+-0.0171            0.4316+-0.0213          might be 1.0162x faster
   cast-int-to-double                                 5.0402+-0.0992     ?      5.0811+-0.2225        ?
   cell-argument                                      6.7322+-0.7328            6.3256+-0.4295          might be 1.0643x faster
   cfg-simplify                                       2.6676+-0.0875            2.6374+-0.0735          might be 1.0115x faster
   chain-getter-access                                8.1107+-0.1077     ?      8.5507+-0.4119        ? might be 1.0542x slower
   cmpeq-obj-to-obj-other                            12.4426+-1.2013           11.6990+-1.2543          might be 1.0636x faster
   constant-test                                      4.6877+-0.0161     ?      4.7442+-0.0559        ? might be 1.0120x slower
   create-lots-of-functions                           9.4415+-0.2154     ?      9.5153+-0.4838        ?
   cse-new-array-buffer                               2.1651+-0.1058     ?      2.1832+-0.1435        ?
   cse-new-array                                      2.1596+-0.1458     ?      2.2908+-0.2847        ? might be 1.0608x slower
   DataView-custom-properties                        30.3315+-0.3671     ?     31.1466+-1.1116        ? might be 1.0269x slower
   delay-tear-off-arguments-strictmode               12.0271+-0.4302     ?     12.1507+-0.4118        ? might be 1.0103x slower
   deltablue-varargs                                164.9954+-5.5853          159.6237+-2.7667          might be 1.0337x faster
   destructuring-arguments                          159.6517+-2.4741     ?    160.3069+-4.0923        ?
   destructuring-parameters-overridden-by-function   
                                                      0.4566+-0.0471            0.4418+-0.0235          might be 1.0336x faster
   destructuring-swap                                 4.6392+-0.0469            4.5624+-0.0586          might be 1.0168x faster
   direct-arguments-getbyval                          1.1537+-0.0665     ?      1.1953+-0.0647        ? might be 1.0361x slower
   div-boolean-double                                 5.2832+-0.0961            5.2674+-0.1132        
   div-boolean                                        8.1505+-0.1010     ?      8.2236+-0.1398        ?
   double-get-by-val-out-of-bounds                    3.9084+-0.0728     ?      3.9195+-0.0885        ?
   double-pollution-getbyval                          8.6263+-0.0835     ?      8.6447+-0.1480        ?
   double-pollution-putbyoffset                       3.9277+-0.2385            3.8730+-0.3768          might be 1.0141x faster
   double-real-use                                   24.1664+-0.7766           23.9327+-0.5499        
   double-to-int32-typed-array-no-inline              1.9308+-0.0463     ?      1.9703+-0.0947        ? might be 1.0205x slower
   double-to-int32-typed-array                        1.8419+-0.1686            1.8303+-0.2938        
   double-to-uint32-typed-array-no-inline             2.0206+-0.1143            2.0133+-0.0582        
   double-to-uint32-typed-array                       1.8500+-0.0845     ?      1.8943+-0.1886        ? might be 1.0239x slower
   elidable-new-object-dag                           34.0213+-0.8017     ?     34.2637+-1.0266        ?
   elidable-new-object-roflcopter                    32.0517+-1.1738     ?     33.5673+-0.7182        ? might be 1.0473x slower
   elidable-new-object-then-call                     31.9938+-1.0695           31.7497+-0.6907        
   elidable-new-object-tree                          37.6705+-0.6869           37.4911+-1.2941        
   empty-string-plus-int                              4.6455+-0.1478     ?      4.7754+-0.1049        ? might be 1.0280x slower
   emscripten-cube2hash                              27.8104+-1.8167           26.6670+-1.6255          might be 1.0429x faster
   exit-length-on-plain-object                       12.3520+-0.7251           12.3291+-0.5501        
   external-arguments-getbyval                        1.1356+-0.0998            1.0933+-0.0457          might be 1.0388x faster
   external-arguments-putbyval                        2.2512+-0.1595            2.1414+-0.1100          might be 1.0513x faster
   fixed-typed-array-storage-var-index                1.1523+-0.1093     ?      1.1613+-0.0543        ?
   fixed-typed-array-storage                          0.8274+-0.0419     ?      0.8402+-0.0265        ? might be 1.0156x slower
   Float32Array-matrix-mult                           4.0272+-0.2988     ?      4.0864+-0.2570        ? might be 1.0147x slower
   Float32Array-to-Float64Array-set                  46.3691+-0.6442     ?     46.5468+-1.0655        ?
   Float64Array-alloc-long-lived                     70.4576+-1.6128           68.8197+-0.6633          might be 1.0238x faster
   Float64Array-to-Int16Array-set                    56.9480+-1.5679           55.5815+-1.1724          might be 1.0246x faster
   fold-double-to-int                                11.8413+-0.0772     ?     12.0963+-0.5279        ? might be 1.0215x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     12.4526+-0.7246           11.5824+-0.9692          might be 1.0751x faster
   fold-get-by-id-to-multi-get-by-offset             10.5914+-0.5181           10.1617+-0.4858          might be 1.0423x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.6175+-1.7564            8.5519+-1.3209        
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.3917+-0.9666            7.6446+-1.6292          might be 1.0977x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.4630+-0.9722     ?      8.4720+-0.6046        ?
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.4289+-0.8980     ?      4.6031+-0.7638        ? might be 1.0393x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      8.1907+-0.3080            7.9540+-0.1440          might be 1.0298x faster
   fold-put-by-id-to-multi-put-by-offset              9.5437+-0.7510            9.5026+-0.6232        
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                      9.6858+-0.5886            9.4978+-0.7071          might be 1.0198x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                      9.7069+-0.5434     ?     10.9170+-0.7204        ? might be 1.1247x slower
   fold-put-structure                                 4.1457+-0.2107     ?      4.3701+-0.5157        ? might be 1.0541x slower
   for-of-iterate-array-entries                      10.9382+-0.3974     ?     11.1300+-0.3811        ? might be 1.0175x slower
   for-of-iterate-array-keys                          3.5165+-0.3331            3.2524+-0.0794          might be 1.0812x faster
   for-of-iterate-array-values                        3.5993+-0.2608            3.4470+-0.1781          might be 1.0442x faster
   fround                                            17.8258+-0.7931           17.4134+-0.5186          might be 1.0237x faster
   ftl-library-inlining-dataview                     55.1900+-0.9440     ?     55.6848+-1.3042        ?
   ftl-library-inlining                             105.6682+-1.6950     ?    106.5223+-2.6172        ?
   function-call                                     10.3997+-0.3597     ^      9.9195+-0.0998        ^ definitely 1.0484x faster
   function-dot-apply                                 1.9369+-0.0563     ?      2.0305+-0.1789        ? might be 1.0483x slower
   function-test                                      2.6520+-0.0503     ?      2.7296+-0.1620        ? might be 1.0293x slower
   function-with-eval                                98.3277+-1.3376           98.2923+-2.7265        
   gcse-poly-get-less-obvious                        14.0142+-0.1749     ?     14.0884+-0.2808        ?
   gcse-poly-get                                     15.8262+-0.2335           15.7509+-0.3054        
   gcse                                               3.7910+-0.0624            3.7671+-0.0290        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.5134+-0.0337     ?      2.6195+-0.0826        ? might be 1.0422x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.7549+-0.1652     ?      5.7942+-0.3225        ?
   get-by-id-chain-from-try-block                     5.3395+-0.0300     ?      5.3963+-0.0630        ? might be 1.0106x slower
   get-by-id-check-structure-elimination              4.3831+-0.0778     ?      4.6278+-0.4040        ? might be 1.0558x slower
   get-by-id-proto-or-self                           15.2765+-0.8520           15.2336+-0.8001        
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8683+-0.0531            2.8546+-0.0300        
   get-by-id-self-or-proto                           15.0682+-0.5153     ?     15.1449+-0.4603        ?
   get-by-val-out-of-bounds                           3.6793+-0.0941     ?      3.7404+-0.1612        ? might be 1.0166x slower
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.7465+-0.0283     ?      2.9764+-0.3085        ? might be 1.0837x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      6.0915+-0.3227            5.9638+-0.1524          might be 1.0214x faster
   get-by-val-with-string-chain-from-try-block   
                                                      5.5624+-0.1686            5.4622+-0.0986          might be 1.0183x faster
   get-by-val-with-string-check-structure-elimination   
                                                      5.1132+-0.0962     ?      5.4623+-0.5847        ? might be 1.0683x slower
   get-by-val-with-string-proto-or-self              15.1074+-0.7093           15.0043+-0.5173        
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.0948+-0.0345            3.0823+-0.0310        
   get-by-val-with-string-self-or-proto              15.3129+-0.9603     ?     15.7849+-0.9049        ? might be 1.0308x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      3.0725+-0.1271            3.0272+-0.0813          might be 1.0150x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.2550+-0.1535     ?     12.3188+-0.2220        ?
   get-by-val-with-symbol-chain-from-try-block   
                                                      5.6815+-0.2265            5.5197+-0.1484          might be 1.0293x faster
   get-by-val-with-symbol-check-structure-elimination   
                                                     10.9734+-0.2017     ?     11.2516+-0.5007        ? might be 1.0254x slower
   get-by-val-with-symbol-proto-or-self              14.8302+-0.4174     ?     15.6371+-0.6673        ? might be 1.0544x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.8747+-0.0389     ?      4.0485+-0.2988        ? might be 1.0449x slower
   get-by-val-with-symbol-self-or-proto              15.4757+-0.9449           15.0801+-0.3491          might be 1.0262x faster
   get_callee_monomorphic                             2.3200+-0.1907            2.2174+-0.1696          might be 1.0462x faster
   get_callee_polymorphic                             3.1641+-0.1724            3.1521+-0.1506        
   getter-no-activation                               4.7930+-0.1928     ?      4.8105+-0.1286        ?
   getter-prototype                                   9.0179+-0.3338     ?      9.0264+-0.2969        ?
   getter-richards                                  122.0512+-4.6675          121.2683+-9.5448        
   getter                                             5.7700+-0.7140            5.3366+-0.6699          might be 1.0812x faster
   global-object-access-with-mutating-structure   
                                                      5.7161+-0.2605            5.5367+-0.1102          might be 1.0324x faster
   global-var-const-infer-fire-from-opt               0.8254+-0.0757            0.7891+-0.0153          might be 1.0460x faster
   global-var-const-infer                             0.5908+-0.0418     ?      0.6712+-0.1901        ? might be 1.1361x slower
   hard-overflow-check-equal                         33.0853+-0.8199     ?     33.1447+-1.1128        ?
   hard-overflow-check                               33.6119+-1.7451           32.6675+-0.7311          might be 1.0289x faster
   HashMap-put-get-iterate-keys                      25.7609+-1.2272           25.2037+-1.6522          might be 1.0221x faster
   HashMap-put-get-iterate                           27.9213+-0.5221     ?     28.5785+-2.2362        ? might be 1.0235x slower
   HashMap-string-put-get-iterate                    24.2794+-1.2133     ?     24.4171+-0.8625        ?
   hoist-make-rope                                    8.7563+-0.8257     ?      8.9577+-1.0238        ? might be 1.0230x slower
   hoist-poly-check-structure-effectful-loop   
                                                      4.1163+-0.1154     ?      4.1247+-0.3190        ?
   hoist-poly-check-structure                         3.2777+-0.0553     ?      3.2819+-0.0962        ?
   imul-double-only                                   7.6510+-0.8069            7.3434+-0.1208          might be 1.0419x faster
   imul-int-only                                      8.9763+-0.9013     ?      9.0650+-0.7608        ?
   imul-mixed                                         7.2353+-0.7933            7.0649+-0.4256          might be 1.0241x faster
   in-four-cases                                     17.1875+-0.5086           17.0578+-0.5418        
   in-one-case-false                                  9.7841+-0.6456            9.1927+-0.1219          might be 1.0643x faster
   in-one-case-true                                   9.6036+-0.6528            9.3881+-0.2017          might be 1.0230x faster
   in-two-cases                                       9.9654+-0.3562     ?     10.3823+-1.1363        ? might be 1.0418x slower
   indexed-properties-in-objects                      2.7505+-0.0379            2.7432+-0.0967        
   infer-closure-const-then-mov-no-inline             3.1067+-0.4805            2.8864+-0.0651          might be 1.0763x faster
   infer-closure-const-then-mov                      18.5082+-0.6986           18.5042+-0.3744        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     10.1254+-0.4620            9.8410+-0.0698          might be 1.0289x faster
   infer-closure-const-then-put-to-scope             20.9185+-0.3271     ?     20.9832+-0.2458        ?
   infer-closure-const-then-reenter-no-inline   
                                                     47.3631+-0.7661     ?     47.9479+-0.8392        ? might be 1.0123x slower
   infer-closure-const-then-reenter                  22.3255+-0.7312           21.7529+-0.5157          might be 1.0263x faster
   infer-constant-global-property                     3.3959+-0.0415     ?      3.4406+-0.0904        ? might be 1.0132x slower
   infer-constant-property                            2.6423+-0.1112     ?      2.6665+-0.1550        ?
   infer-one-time-closure-ten-vars                    7.8376+-0.2717            7.7673+-0.3146        
   infer-one-time-closure-two-vars                    7.3827+-0.3347            7.1743+-0.1321          might be 1.0291x faster
   infer-one-time-closure                             7.0792+-0.2367     ?      7.2826+-0.5510        ? might be 1.0287x slower
   infer-one-time-deep-closure                       10.6174+-0.3989     ?     10.9776+-0.5361        ? might be 1.0339x slower
   inline-arguments-access                            3.6861+-0.1703            3.6768+-0.1641        
   inline-arguments-aliased-access                    3.4863+-0.0513     ?      3.5021+-0.2201        ?
   inline-arguments-local-escape                      3.8448+-0.3242            3.6015+-0.1502          might be 1.0676x faster
   inline-get-scoped-var                              4.5904+-0.2324            4.4530+-0.1173          might be 1.0309x faster
   inlined-put-by-id-transition                      10.0122+-0.5367     ?     10.0469+-0.7973        ?
   inlined-put-by-val-with-string-transition   
                                                     71.8271+-1.2201     ?     72.1265+-1.7221        ?
   inlined-put-by-val-with-symbol-transition   
                                                     69.9735+-1.5154     ?     70.5578+-1.8619        ?
   int-or-other-abs-then-get-by-val                   4.7890+-0.1485            4.7300+-0.1243          might be 1.0125x faster
   int-or-other-abs-zero-then-get-by-val             16.2141+-0.9677           15.5608+-0.2318          might be 1.0420x faster
   int-or-other-add-then-get-by-val                   3.9042+-0.0673     ?      3.9404+-0.0398        ?
   int-or-other-add                                   4.8016+-0.1333     ?      4.8146+-0.0578        ?
   int-or-other-div-then-get-by-val                   3.8585+-0.2279            3.8056+-0.1176          might be 1.0139x faster
   int-or-other-max-then-get-by-val                   3.8301+-0.1012            3.8142+-0.0825        
   int-or-other-min-then-get-by-val                   4.0322+-0.2561            4.0141+-0.3290        
   int-or-other-mod-then-get-by-val                   3.6180+-0.3149            3.4836+-0.0815          might be 1.0386x faster
   int-or-other-mul-then-get-by-val                   3.5076+-0.0262     ?      3.6019+-0.1789        ? might be 1.0269x slower
   int-or-other-neg-then-get-by-val                   4.7598+-0.5108            4.3935+-0.1090          might be 1.0834x faster
   int-or-other-neg-zero-then-get-by-val             16.4661+-1.1981           15.5850+-0.2588          might be 1.0565x faster
   int-or-other-sub-then-get-by-val                   4.0187+-0.0943            3.9911+-0.0827        
   int-or-other-sub                                   3.3810+-0.1347     ?      3.4768+-0.3297        ? might be 1.0284x slower
   int-overflow-local                                 4.0669+-0.0740     ?      4.2283+-0.2303        ? might be 1.0397x slower
   Int16Array-alloc-long-lived                       46.2867+-0.7621           45.9717+-1.2126        
   Int16Array-bubble-sort-with-byteLength            17.2784+-0.3886     ?     17.4439+-0.4326        ?
   Int16Array-bubble-sort                            16.9859+-0.3294     ?     17.3100+-0.3045        ? might be 1.0191x slower
   Int16Array-load-int-mul                            1.4574+-0.0881            1.3900+-0.0398          might be 1.0485x faster
   Int16Array-to-Int32Array-set                      44.7440+-0.8916           43.1135+-0.8098          might be 1.0378x faster
   Int32Array-alloc-large                            12.1153+-0.4958           12.0597+-0.4991        
   Int32Array-alloc-long-lived                       55.6282+-1.1858           54.7035+-1.3218          might be 1.0169x faster
   Int32Array-alloc                                   2.8247+-0.1779            2.7525+-0.2069          might be 1.0262x faster
   Int32Array-Int8Array-view-alloc                    6.0163+-0.1785            5.9177+-0.1418          might be 1.0167x faster
   int52-spill                                        4.5398+-0.1575     ?      4.5813+-0.2545        ?
   Int8Array-alloc-long-lived                        41.2830+-1.9921           40.1334+-1.5956          might be 1.0286x faster
   Int8Array-load-with-byteLength                     3.3589+-0.0773     ?      3.3738+-0.0352        ?
   Int8Array-load                                     3.3305+-0.0542     ?      3.3669+-0.0951        ? might be 1.0109x slower
   integer-divide                                    10.1305+-0.2842     ?     10.1472+-0.2045        ?
   integer-modulo                                     1.4994+-0.0534            1.4975+-0.0479        
   is-boolean-fold-tricky                             3.8071+-0.1754     ?      3.8239+-0.2266        ?
   is-boolean-fold                                    2.6128+-0.0741            2.5707+-0.0288          might be 1.0164x faster
   is-function-fold-tricky-internal-function   
                                                      9.4815+-0.0651     !     10.0978+-0.3271        ! definitely 1.0650x slower
   is-function-fold-tricky                            4.0620+-0.0889     ?      4.0776+-0.0558        ?
   is-function-fold                                   2.6505+-0.1013     ?      2.6584+-0.0823        ?
   is-number-fold-tricky                              3.9924+-0.0546     ?      4.0246+-0.0583        ?
   is-number-fold                                     2.6765+-0.2145            2.6051+-0.0409          might be 1.0274x faster
   is-object-or-null-fold-functions                   2.6647+-0.1296            2.6185+-0.0182          might be 1.0176x faster
   is-object-or-null-fold-less-tricky                 4.0927+-0.1346     ?      4.1804+-0.0754        ? might be 1.0214x slower
   is-object-or-null-fold-tricky                      5.1700+-0.2069            5.1018+-0.1203          might be 1.0134x faster
   is-object-or-null-fold                             2.6797+-0.1223            2.6120+-0.0345          might be 1.0259x faster
   is-object-or-null-trickier-function                4.1699+-0.1331            4.1117+-0.0684          might be 1.0141x faster
   is-object-or-null-trickier-internal-function   
                                                     10.6138+-0.3444           10.5292+-0.2888        
   is-object-or-null-tricky-function                  4.2307+-0.2966            4.1019+-0.0637          might be 1.0314x faster
   is-object-or-null-tricky-internal-function   
                                                      7.8174+-0.2581     ?      8.5906+-2.1359        ? might be 1.0989x slower
   is-string-fold-tricky                              4.2686+-0.7137            4.1299+-0.1187          might be 1.0336x faster
   is-string-fold                                     2.5854+-0.0694     ?      2.6381+-0.1634        ? might be 1.0204x slower
   is-undefined-fold-tricky                           3.4951+-0.3749            3.3587+-0.0905          might be 1.0406x faster
   is-undefined-fold                                  2.6018+-0.0862     ?      2.6250+-0.0955        ?
   JSONP-negative-0                                   0.2514+-0.0090     ?      0.2579+-0.0235        ? might be 1.0257x slower
   large-int-captured                                 3.8084+-0.2222     ?      3.8542+-0.1353        ? might be 1.0120x slower
   large-int-neg                                     14.0278+-0.5693           13.5895+-0.3829          might be 1.0323x faster
   large-int                                         12.4813+-0.2336     ?     12.7831+-0.3524        ? might be 1.0242x slower
   load-varargs-elimination                          20.7061+-0.8469     ?     21.0043+-0.8834        ? might be 1.0144x slower
   logical-not-weird-types                            2.6637+-0.0192     ?      2.6911+-0.0351        ? might be 1.0103x slower
   logical-not                                        4.1590+-0.2461            4.0916+-0.1364          might be 1.0165x faster
   lots-of-fields                                    10.2944+-1.6454            9.5566+-0.2359          might be 1.0772x faster
   make-indexed-storage                               2.6433+-0.1729     ?      2.7324+-0.1178        ? might be 1.0337x slower
   make-rope-cse                                      3.6859+-0.0899            3.6395+-0.2302          might be 1.0127x faster
   marsaglia-larger-ints                             31.7635+-0.4725     ?     32.2146+-0.7850        ? might be 1.0142x slower
   marsaglia-osr-entry                               22.2211+-2.9282           21.2218+-0.7153          might be 1.0471x faster
   math-with-out-of-bounds-array-values              21.3253+-0.4844     ?     21.5705+-0.4415        ? might be 1.0115x slower
   max-boolean                                        2.6597+-0.0864            2.6149+-0.0679          might be 1.0171x faster
   method-on-number                                  16.0787+-1.0485           15.9700+-0.5457        
   min-boolean                                        2.5874+-0.1172            2.5415+-0.0532          might be 1.0181x faster
   minus-boolean-double                               3.0461+-0.0457     ?      3.0533+-0.0379        ?
   minus-boolean                                      2.2804+-0.0467     ?      2.2917+-0.0247        ?
   misc-strict-eq                                    28.4180+-1.0310           28.3671+-0.7922        
   mod-boolean-double                                11.2073+-0.3742           10.9893+-0.1543          might be 1.0198x faster
   mod-boolean                                        8.6429+-0.5867            8.3026+-0.2220          might be 1.0410x faster
   mul-boolean-double                                 3.6175+-0.1209     ?      3.9560+-0.5388        ? might be 1.0936x slower
   mul-boolean                                        2.7936+-0.0589            2.7797+-0.0382        
   neg-boolean                                        3.0441+-0.0328     ?      3.0559+-0.0425        ?
   negative-zero-divide                               0.3371+-0.0095     ?      0.3380+-0.0234        ?
   negative-zero-modulo                               0.3420+-0.0242     ?      0.3542+-0.0327        ? might be 1.0356x slower
   negative-zero-negate                               0.3214+-0.0144     ?      0.3223+-0.0140        ?
   nested-function-parsing                           44.4359+-1.6588     ?     46.4963+-2.9116        ? might be 1.0464x slower
   new-array-buffer-dead                             87.7211+-1.0492           87.5596+-0.7507        
   new-array-buffer-push                              5.9014+-0.3002     ?      6.0647+-0.4405        ? might be 1.0277x slower
   new-array-dead                                    14.5205+-0.9419     ?     14.9744+-1.1649        ? might be 1.0313x slower
   new-array-push                                     3.5582+-0.2737            3.4735+-0.1560          might be 1.0244x faster
   no-inline-constructor                             31.2822+-1.2011     ?     33.3830+-4.7277        ? might be 1.0672x slower
   number-test                                        2.8906+-0.0941     ?      2.9337+-0.1981        ? might be 1.0149x slower
   object-closure-call                                5.0316+-0.4912            4.8190+-0.3081          might be 1.0441x faster
   object-get-own-property-symbols-on-large-array   
                                                      4.0723+-0.1436     ?      4.2056+-0.3687        ? might be 1.0327x slower
   object-test                                        2.6448+-0.0757     ?      2.6869+-0.1066        ? might be 1.0159x slower
   obvious-sink-pathology-taken                      99.1552+-1.3639     ?     99.3629+-0.9643        ?
   obvious-sink-pathology                            93.4071+-1.0734           93.3363+-0.6060        
   obviously-elidable-new-object                     29.7225+-2.2985           28.4797+-0.6799          might be 1.0436x faster
   plus-boolean-arith                                 2.4332+-0.1265            2.3634+-0.0409          might be 1.0296x faster
   plus-boolean-double                                3.1152+-0.0503            3.0675+-0.0580          might be 1.0156x faster
   plus-boolean                                       2.4961+-0.0558     ?      2.5063+-0.1030        ?
   poly-chain-access-different-prototypes-simple   
                                                      3.5113+-0.7206            3.2413+-0.0626          might be 1.0833x faster
   poly-chain-access-different-prototypes             2.9697+-0.3438            2.8993+-0.1080          might be 1.0243x faster
   poly-chain-access-simpler                          3.2007+-0.0680     ?      3.2452+-0.1180        ? might be 1.0139x slower
   poly-chain-access                                  3.2317+-0.0489     ?      3.2959+-0.0997        ? might be 1.0199x slower
   poly-stricteq                                     47.2912+-0.5565     ?     47.8602+-0.4147        ? might be 1.0120x slower
   polymorphic-array-call                             1.2480+-0.1061            1.1735+-0.0396          might be 1.0635x faster
   polymorphic-get-by-id                              2.7797+-0.0430            2.7731+-0.0371        
   polymorphic-put-by-id                             24.4276+-0.6284           24.3406+-0.4597        
   polymorphic-put-by-val-with-string                25.6792+-1.0533           25.4634+-1.0017        
   polymorphic-put-by-val-with-symbol                24.8617+-0.4845     ?     25.3644+-0.6049        ? might be 1.0202x slower
   polymorphic-structure                             13.0024+-0.1861     ?     13.0531+-0.4380        ?
   polyvariant-monomorphic-get-by-id                  6.6196+-1.1573            6.4138+-0.6075          might be 1.0321x faster
   proto-getter-access                                8.2302+-0.1421     ?      8.9672+-1.5771        ? might be 1.0896x slower
   prototype-access-with-mutating-prototype           5.4181+-0.1497            5.3712+-0.1115        
   put-by-id-replace-and-transition                   7.6561+-0.4245     ?      7.9854+-0.9715        ? might be 1.0430x slower
   put-by-id-slightly-polymorphic                     2.7837+-0.2146            2.6364+-0.1422          might be 1.0559x faster
   put-by-id                                         10.1840+-1.2940            9.7111+-0.4632          might be 1.0487x faster
   put-by-val-direct                                  0.3206+-0.0069     ?      0.3333+-0.0302        ? might be 1.0395x slower
   put-by-val-large-index-blank-indexing-type   
                                                      5.2819+-0.2088            5.2507+-0.2071        
   put-by-val-machine-int                             2.3023+-0.1521     ?      2.3490+-0.0862        ? might be 1.0203x slower
   put-by-val-with-string-replace-and-transition   
                                                     10.1496+-0.4282            9.9844+-0.1575          might be 1.0165x faster
   put-by-val-with-string-slightly-polymorphic   
                                                      2.8447+-0.1062            2.7952+-0.0211          might be 1.0177x faster
   put-by-val-with-string                            10.5474+-0.6587           10.3524+-0.4086          might be 1.0188x faster
   put-by-val-with-symbol-replace-and-transition   
                                                     11.6381+-0.4671           11.5355+-0.2443        
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.1172+-0.0912     ?      3.1483+-0.0972        ?
   put-by-val-with-symbol                            10.0580+-0.2832     ?     10.1701+-0.4410        ? might be 1.0111x slower
   rare-osr-exit-on-local                            14.1603+-0.3410     ?     14.1604+-0.4242        ?
   register-pressure-from-osr                        16.6443+-0.4946           16.5781+-0.4884        
   repeat-multi-get-by-offset                        20.8521+-0.5735     ?     21.6330+-1.9230        ? might be 1.0375x slower
   setter-prototype                                   7.5528+-0.1029     ?      7.7215+-0.2001        ? might be 1.0223x slower
   setter                                             5.2326+-0.3558     ?      5.9583+-0.5629        ? might be 1.1387x slower
   simple-activation-demo                            24.3528+-0.6553     ?     24.4504+-0.4435        ?
   simple-getter-access                              10.8753+-0.4281           10.4796+-0.2014          might be 1.0378x faster
   simple-poly-call-nested                            8.6765+-1.0412     ?      9.3631+-0.5090        ? might be 1.0791x slower
   simple-poly-call                                   1.1212+-0.0196     ?      1.2576+-0.2744        ? might be 1.1216x slower
   sin-boolean                                       20.4859+-1.7820     ?     20.9945+-1.8863        ? might be 1.0248x slower
   singleton-scope                                   53.0163+-1.2516           52.6427+-0.8878        
   sink-function                                     10.3003+-1.0532     ?     10.5070+-0.5461        ? might be 1.0201x slower
   sink-huge-activation                              16.9080+-0.8660           16.3768+-0.7963          might be 1.0324x faster
   sinkable-new-object-dag                           54.4442+-0.9059     ?     55.0298+-0.6485        ? might be 1.0108x slower
   sinkable-new-object-taken                         43.4094+-1.3782           42.0123+-1.6915          might be 1.0333x faster
   sinkable-new-object                               29.6484+-0.5720     ?     30.5427+-1.3083        ? might be 1.0302x slower
   slow-array-profile-convergence                     2.3650+-0.1024     ?      2.3929+-0.1355        ? might be 1.0118x slower
   slow-convergence                                   2.2214+-0.0246     ?      2.2359+-0.0529        ?
   slow-ternaries                                    18.1325+-1.1397           17.2702+-0.3713          might be 1.0499x faster
   sorting-benchmark                                 16.4768+-0.4082     ?     16.8337+-0.3921        ? might be 1.0217x slower
   sparse-conditional                                 1.1369+-0.1518            1.1297+-0.0887        
   splice-to-remove                                  12.3974+-0.8007           12.3383+-0.2998        
   string-char-code-at                               13.9924+-0.4839     ?     14.2751+-0.5147        ? might be 1.0202x slower
   string-concat-object                               2.1864+-0.1560            2.1141+-0.1343          might be 1.0342x faster
   string-concat-pair-object                          2.1471+-0.1849            2.0631+-0.0908          might be 1.0407x faster
   string-concat-pair-simple                          9.2409+-0.4300     ?      9.2973+-0.3792        ?
   string-concat-simple                               9.4381+-0.6049     ?      9.6341+-0.5335        ? might be 1.0208x slower
   string-cons-repeat                                 6.2470+-0.0454     ?      6.4131+-0.2541        ? might be 1.0266x slower
   string-cons-tower                                  6.5632+-0.2500     ?      6.6432+-0.4472        ? might be 1.0122x slower
   string-equality                                   16.3187+-0.8874     ?     16.5627+-1.4339        ? might be 1.0150x slower
   string-get-by-val-big-char                         6.9669+-1.3179            6.5519+-0.2688          might be 1.0633x faster
   string-get-by-val-out-of-bounds-insane             3.0183+-0.0977     ?      3.0423+-0.0775        ?
   string-get-by-val-out-of-bounds                    4.0043+-0.0682     ?      4.2415+-0.4490        ? might be 1.0592x slower
   string-get-by-val                                  2.7704+-0.0273     ?      2.8263+-0.1131        ? might be 1.0202x slower
   string-hash                                        1.7859+-0.0329     ?      1.8269+-0.1059        ? might be 1.0230x slower
   string-long-ident-equality                        14.7103+-0.3051     ?     15.4852+-1.3370        ? might be 1.0527x slower
   string-out-of-bounds                              10.1689+-0.2418     ?     10.1823+-0.3285        ?
   string-repeat-arith                               26.7397+-0.5402     ?     28.1629+-0.9851        ? might be 1.0532x slower
   string-sub                                        52.4234+-1.5852           51.8136+-0.4588          might be 1.0118x faster
   string-test                                        2.7551+-0.0440     ?      2.7774+-0.0677        ?
   string-var-equality                               29.1540+-1.0039     ?     29.3730+-0.8973        ?
   structure-hoist-over-transitions                   2.4268+-0.1505            2.4218+-0.2639        
   substring-concat-weird                            35.7671+-0.7403     ?     37.9317+-4.7502        ? might be 1.0605x slower
   substring-concat                                  39.5142+-0.5607           39.1267+-0.7982        
   substring                                         44.8852+-1.1373     ?     48.7071+-7.0841        ? might be 1.0851x slower
   switch-char-constant                               2.5930+-0.0289     ?      2.5971+-0.0556        ?
   switch-char                                        5.9956+-0.7377            5.8699+-1.1085          might be 1.0214x faster
   switch-constant                                    7.7576+-1.0428     ?      7.9975+-0.8895        ? might be 1.0309x slower
   switch-string-basic-big-var                       13.9574+-0.4158           13.9044+-0.4535        
   switch-string-basic-big                           13.6468+-0.2031     ?     13.8070+-0.3169        ? might be 1.0117x slower
   switch-string-basic-var                           12.8400+-0.2184     ?     13.0650+-0.3643        ? might be 1.0175x slower
   switch-string-basic                               12.7203+-0.5427           12.4953+-0.2987          might be 1.0180x faster
   switch-string-big-length-tower-var                17.6189+-0.4625     ?     17.9969+-0.4089        ? might be 1.0215x slower
   switch-string-length-tower-var                    13.4920+-0.9118           13.0518+-0.2765          might be 1.0337x faster
   switch-string-length-tower                        12.1217+-0.7474           12.0416+-0.5625        
   switch-string-short                               11.7675+-0.3676     ?     12.1809+-0.5546        ? might be 1.0351x slower
   switch                                            11.6787+-0.6207           11.1982+-0.5296          might be 1.0429x faster
   tear-off-arguments-simple                          3.0134+-0.2680            2.9439+-0.0793          might be 1.0236x faster
   tear-off-arguments                                 3.9279+-0.2221     ?      4.0106+-0.1033        ? might be 1.0210x slower
   temporal-structure                                12.2393+-0.5064           11.7839+-0.1506          might be 1.0386x faster
   to-int32-boolean                                  13.0091+-0.5810           12.9203+-0.4864        
   try-catch-get-by-val-cloned-arguments             13.6583+-0.3942     ?     14.0560+-0.5566        ? might be 1.0291x slower
   try-catch-get-by-val-direct-arguments              6.1541+-0.3272     ?      6.3564+-0.1561        ? might be 1.0329x slower
   try-catch-get-by-val-scoped-arguments              7.5325+-0.4896            7.4619+-0.5662        
   typed-array-get-set-by-val-profiling              27.1625+-0.7645     ?     27.2411+-1.0885        ?
   undefined-property-access                        224.1822+-1.5829          223.0044+-1.0630        
   undefined-test                                     3.0242+-0.1764            2.8562+-0.0686          might be 1.0588x faster
   unprofiled-licm                                   14.1274+-0.6141           13.7770+-0.3394          might be 1.0254x faster
   varargs-call                                      12.5791+-0.2870           12.4433+-0.1516          might be 1.0109x faster
   varargs-construct-inline                          22.2394+-1.0877     ?     22.6574+-2.5270        ? might be 1.0188x slower
   varargs-construct                                 19.6937+-0.6464           19.0763+-0.9386          might be 1.0324x faster
   varargs-inline                                     8.0486+-0.1095            8.0170+-0.1735        
   varargs-strict-mode                                8.7612+-0.3523     ?      8.8880+-0.5059        ? might be 1.0145x slower
   varargs                                            8.6319+-0.2419     ?      9.1898+-1.0937        ? might be 1.0646x slower
   weird-inlining-const-prop                          2.4478+-0.1730     ?      2.5799+-0.4097        ? might be 1.0540x slower

   <geometric>                                        7.7777+-0.0272            7.7699+-0.0118          might be 1.0010x faster

                                                        TipOfTree                 LICMExitOK                                    
AsmBench:
   bigfib.cpp                                       452.6681+-4.6724          450.1464+-6.6048        
   cray.c                                           399.4457+-1.9967     ?    400.7615+-3.9915        ?
   dry.c                                            426.5624+-1.3225          425.9247+-7.4582        
   FloatMM.c                                        683.0990+-2.6670     ?    684.0347+-3.1727        ?
   gcc-loops.cpp                                   3420.1719+-14.3309        3419.7673+-14.4622       
   n-body.c                                         824.4468+-3.5530     ?    824.5863+-3.6038        ?
   Quicksort.c                                      404.7892+-4.0571     ?    405.8982+-2.9495        ?
   stepanov_container.cpp                          3562.1890+-42.5796    ?   3580.2854+-40.1212       ?
   Towers.c                                         232.7564+-2.5568     ?    232.8002+-2.8131        ?

   <geometric>                                      716.6302+-1.9917     ?    717.0625+-2.8266        ? might be 1.0006x slower

                                                        TipOfTree                 LICMExitOK                                    
CompressionBench:
   huffman                                           59.0444+-1.4586           58.6606+-0.9136        
   arithmetic-simple                                271.4443+-3.0042          269.1619+-1.4463        
   arithmetic-precise                               240.9840+-1.3747          240.4169+-1.2418        
   arithmetic-complex-precise                       246.0667+-4.5384          242.2635+-2.1866          might be 1.0157x faster
   arithmetic-precise-order-0                       282.0708+-2.9592          281.4317+-3.0668        
   arithmetic-precise-order-1                       304.4036+-3.2295          302.8774+-3.5922        
   arithmetic-precise-order-2                       352.5170+-2.9943          351.8609+-2.5276        
   arithmetic-simple-order-1                        326.2668+-2.1264          324.0742+-1.9934        
   arithmetic-simple-order-2                        383.0863+-5.8955     ?    384.6590+-8.1707        ?
   lz-string                                        310.6290+-2.8507          309.3830+-6.2463        

   <geometric>                                      253.9619+-1.4053          252.7262+-0.3865          might be 1.0049x faster

                                                        TipOfTree                 LICMExitOK                                    
Geomean of preferred means:
   <scaled-result>                                   50.8679+-0.1490     ?     50.8985+-0.1924        ? might be 1.0006x slower
Comment 5 Filip Pizlo 2015-08-28 15:39:22 PDT
Landed in http://trac.webkit.org/changeset/189126