Bug 145721 - Sink real number type checks below the first arithmetic operation
Summary: Sink real number type checks below the first arithmetic operation
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-06-05 20:09 PDT by Filip Pizlo
Modified: 2015-09-14 11:09 PDT (History)
13 users (show)

See Also:


Attachments
work in progress (12.17 KB, patch)
2015-06-05 20:10 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
might be done (15.33 KB, patch)
2015-06-05 21:02 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
better (18.41 KB, patch)
2015-06-05 22:02 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
patch for landing (18.13 KB, patch)
2015-06-30 15:04 PDT, Filip Pizlo
no flags 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-06-05 20:09:16 PDT
In cases like:

o.x + o.y

Where the two operands are likely real doubles, we currently do NaN checks for both operands before doing the addition.  Instead, we could do the NaN check after speculatively doing the addition.
Comment 1 Filip Pizlo 2015-06-05 20:10:00 PDT
Created attachment 254403 [details]
work in progress
Comment 2 Filip Pizlo 2015-06-05 21:02:23 PDT
Created attachment 254404 [details]
might be done

Still benchmarking
Comment 3 WebKit Commit Bot 2015-06-05 21:04:49 PDT
Attachment 254404 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:297:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1449:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1538:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 4 Filip Pizlo 2015-06-05 21:35:56 PDT
Maybe this isn't such a good idea.  box2d, the benchmark that should have benefited from this, is actually suffering.  I'll try to investigate why.


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

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r185277)
"DoubleRealUse" at /Volumes/Data/pizlo/primary/OpenSource/WebKitBuild/Release/jsc (r185277)

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                        TipOfTree               DoubleRealUse                                   
SunSpider:
   3d-cube                                            5.1608+-0.0434     ?      5.4252+-0.3844        ? might be 1.0512x slower
   3d-morph                                           6.2298+-0.5615            5.9676+-0.2967          might be 1.0439x faster
   3d-raytrace                                        6.6622+-0.1147            6.5508+-0.1568          might be 1.0170x faster
   access-binary-trees                                2.4546+-0.2021            2.4021+-0.0643          might be 1.0219x faster
   access-fannkuch                                    6.2485+-0.0529            6.2050+-0.0558        
   access-nbody                                       2.9231+-0.0504     ?      2.9850+-0.0735        ? might be 1.0212x slower
   access-nsieve                                      3.5333+-0.0652            3.5019+-0.1308        
   bitops-3bit-bits-in-byte                           1.6429+-0.0616     ?      1.6495+-0.0705        ?
   bitops-bits-in-byte                                3.9222+-0.3337     ?      3.9572+-0.2793        ?
   bitops-bitwise-and                                 2.2649+-0.2649            2.2419+-0.2797          might be 1.0103x faster
   bitops-nsieve-bits                                 3.4191+-0.2026     ?      3.4365+-0.2572        ?
   controlflow-recursive                              3.2246+-0.2735            3.1154+-0.3846          might be 1.0351x faster
   crypto-aes                                         4.7313+-0.2135     ?      4.9056+-0.5659        ? might be 1.0368x slower
   crypto-md5                                         2.7327+-0.1181     ?      2.7391+-0.0419        ?
   crypto-sha1                                        3.9390+-0.3229            3.8605+-0.4292          might be 1.0203x faster
   date-format-tofte                                  9.2758+-0.1038     ?      9.4127+-0.3645        ? might be 1.0148x slower
   date-format-xparb                                  6.1372+-0.4733            5.8803+-0.2261          might be 1.0437x faster
   math-cordic                                        3.1557+-0.0985     ?      3.2679+-0.4099        ? might be 1.0356x slower
   math-partial-sums                                  5.6852+-0.4265            5.6765+-0.5863        
   math-spectral-norm                                 2.1281+-0.1922     ?      2.1494+-0.2350        ? might be 1.0100x slower
   regexp-dna                                         8.5785+-1.7263            7.4858+-0.1044          might be 1.1460x faster
   string-base64                                      5.0573+-0.1838     ?      5.0575+-0.1720        ?
   string-fasta                                       6.8582+-0.0820            6.7749+-0.0909          might be 1.0123x faster
   string-tagcloud                                    9.6671+-0.6289     ?      9.7732+-0.6238        ? might be 1.0110x slower
   string-unpack-code                                20.8331+-1.2336     ?     21.4014+-1.9397        ? might be 1.0273x slower
   string-validate-input                              6.0933+-0.1728            6.0275+-0.1514          might be 1.0109x faster

   <arithmetic>                                       5.4830+-0.0818            5.4558+-0.1193          might be 1.0050x faster

                                                        TipOfTree               DoubleRealUse                                   
LongSpider:
   3d-cube                                          904.8590+-11.3189    ?    911.5098+-36.6801       ?
   3d-morph                                        1527.2159+-3.3210         1526.0107+-2.7848        
   3d-raytrace                                      744.5743+-93.5410         705.4590+-7.0631          might be 1.0554x faster
   access-binary-trees                             1007.6110+-11.4286        1002.2077+-10.3281       
   access-fannkuch                                  345.1088+-7.0188     ?    346.4229+-13.0193       ?
   access-nbody                                     589.0284+-0.8089     ^    575.8524+-4.2512        ^ definitely 1.0229x faster
   access-nsieve                                    490.0885+-24.2256    ?    492.7859+-28.1751       ?
   bitops-3bit-bits-in-byte                          44.8100+-0.6487           44.1103+-0.5069          might be 1.0159x faster
   bitops-bits-in-byte                               99.3084+-0.7910           99.2161+-1.4317        
   bitops-nsieve-bits                               419.9189+-2.5585     ?    421.4469+-2.8904        ?
   controlflow-recursive                            506.8518+-18.1385         491.2904+-12.7051         might be 1.0317x faster
   crypto-aes                                       708.8814+-8.1663     ?    716.9584+-27.5910       ? might be 1.0114x slower
   crypto-md5                                       538.8437+-6.3228     ^    526.6714+-2.8118        ^ definitely 1.0231x faster
   crypto-sha1                                      681.9068+-30.7470    ?    687.1373+-14.7245       ?
   date-format-tofte                                731.4278+-14.4995         728.5741+-12.6458       
   date-format-xparb                                820.7187+-17.2954         805.2424+-16.4964         might be 1.0192x faster
   hash-map                                         182.8060+-5.0375     ?    185.5539+-4.4685        ? might be 1.0150x slower
   math-cordic                                      605.6199+-69.2781         586.3061+-28.5357         might be 1.0329x faster
   math-partial-sums                                506.1805+-3.4945     ?    513.8389+-21.8052       ? might be 1.0151x slower
   math-spectral-norm                               564.9269+-0.8218     ?    565.7150+-2.3582        ?
   string-base64                                    410.1970+-7.1679     ?    415.0805+-11.4785       ? might be 1.0119x slower
   string-fasta                                     433.1283+-5.1775          430.8855+-15.3424       
   string-tagcloud                                  195.0800+-4.1782     ?    195.6558+-3.1224        ?

   <geometric>                                      458.8901+-3.2612          456.4614+-1.6626          might be 1.0053x faster

                                                        TipOfTree               DoubleRealUse                                   
V8Spider:
   crypto                                            58.3114+-1.4157           56.6046+-2.5831          might be 1.0302x faster
   deltablue                                        109.0718+-11.5390         104.5914+-2.1321          might be 1.0428x faster
   earley-boyer                                      49.5396+-2.3602     ?     50.2601+-0.7182        ? might be 1.0145x slower
   raytrace                                          43.4325+-5.0697           41.9586+-2.8903          might be 1.0351x faster
   regexp                                            84.9896+-5.1557           82.3738+-2.4833          might be 1.0318x faster
   richards                                          77.8365+-2.0710     ?     82.5630+-7.5645        ? might be 1.0607x slower
   splay                                             41.0068+-1.0436           40.3124+-1.6370          might be 1.0172x faster

   <geometric>                                       62.3777+-1.5371           61.6904+-0.5210          might be 1.0111x faster

                                                        TipOfTree               DoubleRealUse                                   
Octane:
   encrypt                                           0.20910+-0.01056          0.20364+-0.00132         might be 1.0268x faster
   decrypt                                           3.62930+-0.16952          3.59206+-0.08528         might be 1.0104x faster
   deltablue                                x2       0.19563+-0.00219          0.19477+-0.00156       
   earley                                            0.39365+-0.00344          0.39321+-0.00393       
   boyer                                             5.21272+-0.04803    ^     5.13831+-0.02557       ^ definitely 1.0145x faster
   navier-stokes                            x2       5.17602+-0.00959    ?     5.25855+-0.20652       ? might be 1.0159x slower
   raytrace                                 x2       1.32085+-0.04138          1.30504+-0.05753         might be 1.0121x faster
   richards                                 x2       0.12672+-0.00080    ?     0.12746+-0.00162       ?
   splay                                    x2       0.40215+-0.00325    ?     0.40575+-0.00217       ?
   regexp                                   x2      31.62671+-0.55746    ?    32.16578+-0.97972       ? might be 1.0170x slower
   pdfjs                                    x2      42.46533+-0.21581    ?    42.92166+-0.91888       ? might be 1.0107x slower
   mandreel                                 x2      51.09701+-0.37534    ?    51.55372+-1.44598       ?
   gbemu                                    x2      46.54798+-6.74593         46.17776+-4.91357       
   closure                                           0.56444+-0.00170    ^     0.55986+-0.00246       ^ definitely 1.0082x faster
   jquery                                            7.37959+-0.02282          7.35187+-0.03633       
   box2d                                    x2      11.86116+-0.06912    !    13.19819+-0.18691       ! definitely 1.1127x slower
   zlib                                     x2     394.70802+-31.98257       391.72782+-15.39353      
   typescript                               x2     823.31380+-13.21436   ?   826.30518+-15.25333      ?

   <geometric>                                       6.63243+-0.05634    ?     6.68481+-0.08657       ? might be 1.0079x slower

                                                        TipOfTree               DoubleRealUse                                   
Kraken:
   ai-astar                                          235.024+-1.372      ?     236.800+-3.052         ?
   audio-beat-detection                               81.927+-0.325             81.861+-0.405         
   audio-dft                                         120.524+-3.549            119.075+-2.021           might be 1.0122x faster
   audio-fft                                          71.167+-2.056             69.738+-1.017           might be 1.0205x faster
   audio-oscillator                                   78.513+-3.242             77.620+-1.882           might be 1.0115x faster
   imaging-darkroom                                  105.376+-1.631            105.016+-1.789         
   imaging-desaturate                                 64.462+-2.333             63.288+-0.316           might be 1.0185x faster
   imaging-gaussian-blur                             110.727+-1.978      ?     111.612+-4.275         ?
   json-parse-financial                               48.536+-1.408      ?      49.151+-3.674         ? might be 1.0127x slower
   json-stringify-tinderbox                           28.869+-1.475      ?      29.109+-1.460         ?
   stanford-crypto-aes                                58.679+-1.241      ?      59.180+-1.180         ?
   stanford-crypto-ccm                                48.056+-1.736      ?      48.484+-2.073         ?
   stanford-crypto-pbkdf2                            110.311+-1.564      ?     112.305+-1.801         ? might be 1.0181x slower
   stanford-crypto-sha256-iterative                   43.048+-0.640             43.017+-0.662         

   <arithmetic>                                       86.087+-0.462      ?      86.161+-0.638         ? might be 1.0009x slower

                                                        TipOfTree               DoubleRealUse                                   
JSRegress:
   abs-boolean                                        2.6982+-0.0282     ?      2.7275+-0.0512        ? might be 1.0109x slower
   adapt-to-double-divide                            16.6434+-0.1326     ?     16.9337+-0.3696        ? might be 1.0174x slower
   aliased-arguments-getbyval                         1.3326+-0.0951     ?      1.3451+-0.0942        ?
   allocate-big-object                                3.0814+-0.2963            3.0813+-0.2644        
   arguments-named-and-reflective                    12.6823+-0.4448     ?     13.0494+-1.5097        ? might be 1.0289x slower
   arguments-out-of-bounds                           14.9174+-0.7423           14.7099+-0.2277          might be 1.0141x faster
   arguments-strict-mode                             11.6017+-1.3461           11.1768+-0.9433          might be 1.0380x faster
   arguments                                          9.6723+-0.2546            9.6353+-0.3352        
   arity-mismatch-inlining                            0.9183+-0.1005            0.8856+-0.0187          might be 1.0369x faster
   array-access-polymorphic-structure                 7.4720+-1.0016            6.9528+-0.2283          might be 1.0747x faster
   array-nonarray-polymorhpic-access                 33.7808+-1.1821           33.3112+-1.1283          might be 1.0141x faster
   array-prototype-every                             87.0541+-2.1359     ?     87.5568+-6.9420        ?
   array-prototype-forEach                           85.3459+-0.5231           84.1084+-3.4083          might be 1.0147x faster
   array-prototype-map                               96.1195+-8.9814           91.2474+-1.7461          might be 1.0534x faster
   array-prototype-reduce                            83.0638+-4.2161           80.8770+-2.4130          might be 1.0270x faster
   array-prototype-reduceRight                       82.0041+-2.0958           81.8353+-1.4521        
   array-prototype-some                              87.5992+-2.7840           84.4624+-2.5658          might be 1.0371x faster
   array-splice-contiguous                           42.1250+-1.5861     !     45.0010+-0.6043        ! definitely 1.0683x slower
   array-with-double-add                              4.2764+-0.0973     ?      4.3199+-0.1314        ? might be 1.0102x slower
   array-with-double-increment                        3.3328+-0.0393            3.2946+-0.0294          might be 1.0116x faster
   array-with-double-mul-add                          5.3485+-0.2751            5.3474+-0.3345        
   array-with-double-sum                              3.4500+-0.1160            3.3871+-0.0683          might be 1.0185x faster
   array-with-int32-add-sub                           6.8465+-0.1894     ?      6.9323+-0.1414        ? might be 1.0125x slower
   array-with-int32-or-double-sum                     3.5509+-0.3349            3.4984+-0.1587          might be 1.0150x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     37.7726+-2.0070           37.0742+-1.8484          might be 1.0188x faster
   ArrayBuffer-DataView-alloc-long-lived             16.5807+-1.5151           15.9539+-2.1059          might be 1.0393x faster
   ArrayBuffer-Int32Array-byteOffset                  3.8612+-0.0631     ?      4.2719+-0.5612        ? might be 1.1063x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     39.1002+-1.3192           38.6167+-1.2834          might be 1.0125x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     23.1466+-1.6934           22.5643+-0.7932          might be 1.0258x faster
   ArrayBuffer-Int8Array-alloc-long-lived            14.4735+-1.4342           14.2890+-1.8740          might be 1.0129x faster
   ArrayBuffer-Int8Array-alloc                       10.6046+-0.2619     ?     10.7165+-0.3170        ? might be 1.0106x slower
   asmjs_bool_bug                                     7.7869+-0.0611     ?      7.8068+-0.2259        ?
   assign-custom-setter-polymorphic                   3.3576+-0.1672            3.2590+-0.0646          might be 1.0303x faster
   assign-custom-setter                               5.0450+-0.6807            4.6423+-0.1584          might be 1.0867x faster
   basic-set                                          9.5396+-0.2073     ?      9.8708+-0.7738        ? might be 1.0347x slower
   big-int-mul                                        4.1005+-0.0333     !      4.2583+-0.0249        ! definitely 1.0385x slower
   boolean-test                                       3.4491+-0.3571            3.3581+-0.3608          might be 1.0271x faster
   branch-fold                                        4.0415+-0.1477            4.0101+-0.1478        
   branch-on-string-as-boolean                       21.1610+-1.8662     ?     21.6707+-1.6459        ? might be 1.0241x slower
   by-val-generic                                     8.3562+-0.4762     ?      8.4019+-0.5822        ?
   call-spread-apply                                 30.8014+-2.1592     ?     31.8298+-4.9953        ? might be 1.0334x slower
   call-spread-call                                  26.2705+-1.5552           25.7950+-1.2096          might be 1.0184x faster
   captured-assignments                               0.5142+-0.0080     ?      0.5809+-0.1183        ? might be 1.1296x slower
   cast-int-to-double                                 5.4144+-0.1292            5.4090+-0.1624        
   cell-argument                                      8.6852+-0.1025            8.6543+-0.2996        
   cfg-simplify                                       2.9222+-0.1123            2.9116+-0.1969        
   chain-getter-access                                9.3312+-0.1371            9.2634+-0.1763        
   cmpeq-obj-to-obj-other                            12.6772+-1.3209     ?     12.8197+-0.9931        ? might be 1.0112x slower
   constant-test                                      5.1038+-0.2221            5.0224+-0.0228          might be 1.0162x faster
   create-lots-of-functions                          11.7335+-0.3418     ?     12.0164+-0.4489        ? might be 1.0241x slower
   cse-new-array-buffer                               2.6141+-0.0980     ?      2.6720+-0.2110        ? might be 1.0222x slower
   cse-new-array                                      2.6350+-0.0526     ?      2.6411+-0.0585        ?
   DataView-custom-properties                        43.0418+-1.6142     ?     43.6421+-2.0264        ? might be 1.0139x slower
   deconstructing-parameters-overridden-by-function   
                                                      0.6088+-0.0553            0.5695+-0.0347          might be 1.0690x faster
   delay-tear-off-arguments-strictmode               14.1698+-0.2457     ?     14.3218+-0.2491        ? might be 1.0107x slower
   deltablue-varargs                                215.8993+-18.0660         213.1444+-9.7052          might be 1.0129x faster
   destructuring-arguments                           17.8810+-0.5899           17.5660+-0.6234          might be 1.0179x faster
   destructuring-swap                                 5.2572+-0.1995     ?      5.2613+-0.2286        ?
   direct-arguments-getbyval                          1.4176+-0.1709            1.3342+-0.1134          might be 1.0625x faster
   div-boolean-double                                 5.2732+-0.0283     ?      5.2933+-0.0746        ?
   div-boolean                                        7.8628+-0.0837            7.8240+-0.0260        
   double-get-by-val-out-of-bounds                    4.7448+-0.1253            4.7166+-0.1754        
   double-pollution-getbyval                          8.9127+-0.0760     ?      8.9259+-0.0386        ?
   double-pollution-putbyoffset                       4.6154+-0.4252            4.5628+-0.2777          might be 1.0115x faster
   double-real-use                                   30.6083+-1.2423     ^     26.8977+-0.4437        ^ definitely 1.1380x faster
   double-to-int32-typed-array-no-inline              2.5259+-0.1606     ?      2.5596+-0.1220        ? might be 1.0133x slower
   double-to-int32-typed-array                        2.0383+-0.1188     ?      2.1089+-0.1882        ? might be 1.0346x slower
   double-to-uint32-typed-array-no-inline             2.6215+-0.1634     ?      2.6385+-0.0940        ?
   double-to-uint32-typed-array                       2.2292+-0.2593            2.0933+-0.1041          might be 1.0649x faster
   elidable-new-object-dag                           44.0384+-1.7788           43.9157+-1.5278        
   elidable-new-object-roflcopter                    44.8941+-2.1323     ?     46.5966+-2.5937        ? might be 1.0379x slower
   elidable-new-object-then-call                     40.1167+-0.6172           39.9511+-1.2781        
   elidable-new-object-tree                          45.6534+-1.6854     ?     46.1323+-1.9782        ? might be 1.0105x slower
   empty-string-plus-int                              5.7307+-0.3509            5.6814+-0.1894        
   emscripten-cube2hash                              39.9495+-0.9205           38.3503+-1.8771          might be 1.0417x faster
   exit-length-on-plain-object                       14.3197+-0.3227     ?     15.0712+-1.7169        ? might be 1.0525x slower
   external-arguments-getbyval                        1.2864+-0.0923     ?      1.4826+-0.2587        ? might be 1.1526x slower
   external-arguments-putbyval                        2.4093+-0.0490            2.3872+-0.0483        
   fixed-typed-array-storage-var-index                1.2677+-0.1096     ?      1.2754+-0.1516        ?
   fixed-typed-array-storage                          0.9650+-0.1078     ?      0.9846+-0.1375        ? might be 1.0203x slower
   Float32Array-matrix-mult                           4.7671+-0.2883            4.7120+-0.2500          might be 1.0117x faster
   Float32Array-to-Float64Array-set                  52.6925+-2.1853     !     57.6643+-2.0666        ! definitely 1.0944x slower
   Float64Array-alloc-long-lived                     86.9568+-1.4834     ?     87.5475+-1.6276        ?
   Float64Array-to-Int16Array-set                    69.7976+-1.6633     ?     71.8801+-1.4995        ? might be 1.0298x slower
   fold-double-to-int                                14.0352+-0.6970           13.9459+-0.2591        
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.1310+-1.0941           10.1054+-1.0360        
   fold-get-by-id-to-multi-get-by-offset             10.1697+-1.4928     ?     10.5650+-1.3110        ? might be 1.0389x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.9183+-0.9338            9.7284+-0.5880          might be 1.0195x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     10.5318+-1.3051            9.4893+-0.6447          might be 1.1099x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.3247+-0.6008     ?     10.2503+-0.6532        ? might be 1.0993x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      7.9151+-0.7231     ?      8.0010+-0.4450        ? might be 1.0109x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.9781+-0.4065     ?     10.2982+-0.5149        ? might be 1.0321x slower
   fold-put-by-id-to-multi-put-by-offset             10.8041+-0.6670           10.5944+-1.1401          might be 1.0198x faster
   fold-put-structure                                 6.2873+-2.1644            6.1503+-1.5005          might be 1.0223x faster
   for-of-iterate-array-entries                       4.8375+-0.4880            4.6163+-0.0923          might be 1.0479x faster
   for-of-iterate-array-keys                          3.7589+-0.0911     ?      3.8621+-0.1574        ? might be 1.0275x slower
   for-of-iterate-array-values                        3.7700+-0.1977     ?      3.7874+-0.2585        ?
   fround                                            21.0698+-0.8629           20.8125+-0.9192          might be 1.0124x faster
   ftl-library-inlining-dataview                     65.8031+-2.4573     ?     66.3633+-2.2200        ?
   ftl-library-inlining                              75.1298+-18.7421          72.3749+-6.0746          might be 1.0381x faster
   function-dot-apply                                 2.2896+-0.0721     ?      2.3614+-0.1111        ? might be 1.0314x slower
   function-test                                      3.0990+-0.3391     ?      3.2563+-0.5101        ? might be 1.0508x slower
   function-with-eval                               103.6340+-0.9946          102.7782+-1.5243        
   gcse-poly-get-less-obvious                        19.8511+-2.4780     ?     20.6216+-2.0589        ? might be 1.0388x slower
   gcse-poly-get                                     21.1770+-0.9898     ?     22.1546+-1.6671        ? might be 1.0462x slower
   gcse                                               4.3977+-0.0958     ?      4.4751+-0.1965        ? might be 1.0176x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.9716+-0.3352            2.8266+-0.1099          might be 1.0513x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.0175+-0.0828     ?      6.0975+-0.2019        ? might be 1.0133x slower
   get-by-id-chain-from-try-block                     6.8020+-0.2972            6.6825+-0.2327          might be 1.0179x faster
   get-by-id-check-structure-elimination              5.1951+-0.1351     ?      5.2680+-0.1738        ? might be 1.0140x slower
   get-by-id-proto-or-self                           18.1330+-0.8475     ?     19.4744+-1.6955        ? might be 1.0740x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.0097+-0.0729            2.9565+-0.0320          might be 1.0180x faster
   get-by-id-self-or-proto                           18.9848+-0.9475     ?     19.5079+-2.5353        ? might be 1.0276x slower
   get-by-val-out-of-bounds                           4.5629+-0.3466     ?      4.5951+-0.1839        ?
   get_callee_monomorphic                             3.0146+-0.3781     ?      3.2587+-0.6580        ? might be 1.0810x slower
   get_callee_polymorphic                             3.8818+-0.1500            3.8507+-0.1113        
   getter-no-activation                               5.2981+-0.4853            5.2823+-0.3508        
   getter-prototype                                  15.6368+-0.9663           14.8065+-0.1801          might be 1.0561x faster
   getter-richards                                  126.4050+-5.1292          121.5462+-4.0312          might be 1.0400x faster
   getter                                             6.5248+-0.7941            5.4882+-0.3937          might be 1.1889x faster
   global-var-const-infer-fire-from-opt               0.9474+-0.1024     ?      1.0192+-0.1760        ? might be 1.0758x slower
   global-var-const-infer                             1.1738+-0.3193            0.9084+-0.1277          might be 1.2921x faster
   HashMap-put-get-iterate-keys                      30.3682+-1.6365     ?     30.4166+-0.8849        ?
   HashMap-put-get-iterate                           31.6236+-1.2062     ?     34.2173+-3.1457        ? might be 1.0820x slower
   HashMap-string-put-get-iterate                    32.7264+-3.3039           32.6712+-2.5577        
   hoist-make-rope                                   12.2855+-0.3808     ?     12.5344+-0.9353        ? might be 1.0203x slower
   hoist-poly-check-structure-effectful-loop   
                                                      5.1246+-0.0257     ?      5.1697+-0.1534        ?
   hoist-poly-check-structure                         3.7656+-0.0837            3.7135+-0.0396          might be 1.0140x faster
   imul-double-only                                   8.4989+-0.6693     ?      8.5585+-0.6137        ?
   imul-int-only                                      9.8321+-0.5380     ?     10.0580+-0.7448        ? might be 1.0230x slower
   imul-mixed                                         8.4202+-0.3542     ?      8.5046+-0.4951        ? might be 1.0100x slower
   in-four-cases                                     23.0688+-1.5864           22.2783+-0.1492          might be 1.0355x faster
   in-one-case-false                                 11.1418+-0.1078     ?     11.3597+-0.4287        ? might be 1.0196x slower
   in-one-case-true                                  11.5194+-0.5378           11.0592+-0.0473          might be 1.0416x faster
   in-two-cases                                      11.7089+-0.2859           11.6455+-0.0986        
   indexed-properties-in-objects                      3.2495+-0.3585            3.0349+-0.0757          might be 1.0707x faster
   infer-closure-const-then-mov-no-inline             4.4194+-0.5021            4.1254+-0.2880          might be 1.0713x faster
   infer-closure-const-then-mov                      19.6966+-0.1815     ?     19.7834+-0.2400        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     12.7997+-0.1509     ?     13.2074+-1.0920        ? might be 1.0319x slower
   infer-closure-const-then-put-to-scope             23.3578+-1.5821     ^     21.4519+-0.1228        ^ definitely 1.0888x faster
   infer-closure-const-then-reenter-no-inline   
                                                     54.4246+-0.3167     ?     54.9907+-2.3118        ? might be 1.0104x slower
   infer-closure-const-then-reenter                  22.6489+-1.2307           22.0618+-1.2951          might be 1.0266x faster
   infer-constant-global-property                     3.7493+-0.2359            3.5911+-0.0319          might be 1.0441x faster
   infer-constant-property                            2.9080+-0.3266            2.8483+-0.1081          might be 1.0210x faster
   infer-one-time-closure-ten-vars                   12.8227+-0.5611           12.5890+-0.1718          might be 1.0186x faster
   infer-one-time-closure-two-vars                   12.6448+-1.6819     ?     13.1635+-1.3375        ? might be 1.0410x slower
   infer-one-time-closure                            12.4769+-0.8362           11.9530+-0.2295          might be 1.0438x faster
   infer-one-time-deep-closure                       21.8444+-1.8729     ?     22.1429+-1.4542        ? might be 1.0137x slower
   inline-arguments-access                            4.7625+-0.3660            4.6176+-0.0627          might be 1.0314x faster
   inline-arguments-aliased-access                    4.7806+-0.2456     ?      4.9225+-0.5292        ? might be 1.0297x slower
   inline-arguments-local-escape                      4.8164+-0.1742            4.6877+-0.0727          might be 1.0274x faster
   inline-get-scoped-var                              5.2936+-0.3069     ^      4.7820+-0.0436        ^ definitely 1.1070x faster
   inlined-put-by-id-transition                      12.0719+-0.2983           11.8033+-0.2769          might be 1.0228x faster
   int-or-other-abs-then-get-by-val                   6.1125+-2.7071            5.0496+-0.1007          might be 1.2105x faster
   int-or-other-abs-zero-then-get-by-val             17.8687+-0.6968     ?     18.3604+-1.5933        ? might be 1.0275x slower
   int-or-other-add-then-get-by-val                   4.4368+-0.1288            4.4269+-0.1465        
   int-or-other-add                                   5.5101+-0.1737            5.4358+-0.1235          might be 1.0137x faster
   int-or-other-div-then-get-by-val                   4.3531+-0.1965     ?      4.5806+-0.6665        ? might be 1.0523x slower
   int-or-other-max-then-get-by-val                   4.4974+-0.2439            4.3360+-0.0152          might be 1.0372x faster
   int-or-other-min-then-get-by-val                   4.4044+-0.1305            4.3659+-0.0322        
   int-or-other-mod-then-get-by-val                   4.0318+-0.1060            3.9685+-0.0351          might be 1.0159x faster
   int-or-other-mul-then-get-by-val                   3.9688+-0.0557     ?      4.1901+-0.4492        ? might be 1.0558x slower
   int-or-other-neg-then-get-by-val                   4.7808+-0.0161     ?      4.8302+-0.0392        ? might be 1.0103x slower
   int-or-other-neg-zero-then-get-by-val             17.7248+-0.1829     ?     18.0343+-1.1448        ? might be 1.0175x slower
   int-or-other-sub-then-get-by-val                   4.4134+-0.0335     ?      4.4454+-0.0648        ?
   int-or-other-sub                                   3.6678+-0.0749     ?      3.7014+-0.0950        ?
   int-overflow-local                                 4.6615+-0.1357     ?      4.6945+-0.2805        ?
   Int16Array-alloc-long-lived                       53.0475+-0.9939     ?     53.6426+-1.0074        ? might be 1.0112x slower
   Int16Array-bubble-sort-with-byteLength            20.5958+-0.9028     ?     20.6202+-0.9481        ?
   Int16Array-bubble-sort                            20.4302+-0.2172     ?     20.7670+-1.2921        ? might be 1.0165x slower
   Int16Array-load-int-mul                            1.6422+-0.1324            1.5353+-0.0101          might be 1.0696x faster
   Int16Array-to-Int32Array-set                      54.3070+-1.6574     !     58.4018+-1.6824        ! definitely 1.0754x slower
   Int32Array-alloc-large                            24.1757+-0.5930     ?     24.6455+-1.7956        ? might be 1.0194x slower
   Int32Array-alloc-long-lived                       64.2651+-1.9963     ?     64.4023+-1.7463        ?
   Int32Array-alloc                                   3.4187+-0.1375            3.3951+-0.1078        
   Int32Array-Int8Array-view-alloc                    7.5479+-1.1740            7.2793+-0.8247          might be 1.0369x faster
   int52-spill                                        6.0745+-0.3527            5.8871+-0.1453          might be 1.0318x faster
   Int8Array-alloc-long-lived                        48.3613+-1.3683     ?     49.5009+-1.5600        ? might be 1.0236x slower
   Int8Array-load-with-byteLength                     3.4780+-0.1885     ?      3.6906+-0.4786        ? might be 1.0611x slower
   Int8Array-load                                     3.4201+-0.0537     ?      3.5684+-0.2387        ? might be 1.0434x slower
   integer-divide                                    11.0440+-0.1315           10.9361+-0.2039        
   integer-modulo                                     2.2037+-0.2527            2.0947+-0.0576          might be 1.0520x faster
   is-boolean-fold-tricky                             4.7024+-0.2421     ?      4.8092+-0.5085        ? might be 1.0227x slower
   is-boolean-fold                                    3.0679+-0.2770     ?      3.1330+-0.2801        ? might be 1.0212x slower
   is-function-fold-tricky-internal-function   
                                                     12.0548+-0.1890     ?     12.0653+-0.0606        ?
   is-function-fold-tricky                            4.6057+-0.0802            4.5934+-0.0473        
   is-function-fold                                   3.1042+-0.2850     ?      3.1582+-0.3716        ? might be 1.0174x slower
   is-number-fold-tricky                              4.4878+-0.0778     ?      4.6681+-0.2531        ? might be 1.0402x slower
   is-number-fold                                     2.9164+-0.0421     ?      3.1025+-0.2900        ? might be 1.0638x slower
   is-object-or-null-fold-functions                   3.1436+-0.3688            3.0860+-0.2249          might be 1.0187x faster
   is-object-or-null-fold-less-tricky                 4.6110+-0.1072     ?      4.6645+-0.2701        ? might be 1.0116x slower
   is-object-or-null-fold-tricky                      6.8543+-0.3595            6.7362+-0.2318          might be 1.0175x faster
   is-object-or-null-fold                             3.0680+-0.3855            2.9163+-0.0488          might be 1.0520x faster
   is-object-or-null-trickier-function                4.7601+-0.2659     ?      4.9225+-0.4278        ? might be 1.0341x slower
   is-object-or-null-trickier-internal-function   
                                                     12.8347+-0.1650     ?     12.9543+-0.5704        ?
   is-object-or-null-tricky-function                  4.7076+-0.2008     ?      4.7929+-0.4675        ? might be 1.0181x slower
   is-object-or-null-tricky-internal-function   
                                                      9.3252+-0.0739     ?      9.3321+-0.1437        ?
   is-string-fold-tricky                              4.5378+-0.1591     ?      4.7892+-0.3578        ? might be 1.0554x slower
   is-string-fold                                     3.1344+-0.3823     ?      3.1831+-0.4184        ? might be 1.0155x slower
   is-undefined-fold-tricky                           3.9350+-0.3210            3.7817+-0.0453          might be 1.0405x faster
   is-undefined-fold                                  3.0053+-0.1655            2.9476+-0.0524          might be 1.0196x faster
   large-int-captured                                 5.0820+-0.5252     ?      5.1239+-0.3262        ?
   large-int-neg                                     16.5406+-0.8203     ?     17.1314+-1.4140        ? might be 1.0357x slower
   large-int                                         14.8286+-0.4062     ?     14.9555+-0.7241        ?
   load-varargs-elimination                          22.7071+-0.1788     ?     31.3809+-18.9817       ? might be 1.3820x slower
   logical-not-weird-types                            3.4186+-0.1837            3.3781+-0.0844          might be 1.0120x faster
   logical-not                                        4.6055+-0.0359     ?      4.6512+-0.0687        ?
   lots-of-fields                                    12.5911+-0.1494           12.4218+-0.5126          might be 1.0136x faster
   make-indexed-storage                               3.0541+-0.2009     ?      3.1566+-0.1381        ? might be 1.0336x slower
   make-rope-cse                                     12.2771+-1.0951     ?     12.5935+-1.5015        ? might be 1.0258x slower
   marsaglia-larger-ints                             36.7852+-1.7921           35.8618+-0.4922          might be 1.0257x faster
   marsaglia-osr-entry                               23.2332+-0.4112     ?     23.9528+-1.4614        ? might be 1.0310x slower
   math-with-out-of-bounds-array-values              25.0724+-1.6139     ?     25.3854+-0.7838        ? might be 1.0125x slower
   max-boolean                                        2.5769+-0.0901     ?      2.5847+-0.0896        ?
   method-on-number                                  17.9796+-0.2174     ^     17.4055+-0.2247        ^ definitely 1.0330x faster
   min-boolean                                        2.7835+-0.6302            2.5733+-0.0486          might be 1.0817x faster
   minus-boolean-double                               3.2336+-0.0436     ?      3.2514+-0.0685        ?
   minus-boolean                                      2.5136+-0.1227            2.4189+-0.0758          might be 1.0392x faster
   misc-strict-eq                                    39.8228+-3.1985           39.0572+-1.3588          might be 1.0196x faster
   mod-boolean-double                                10.9939+-0.1771     ?     11.2897+-0.7972        ? might be 1.0269x slower
   mod-boolean                                        7.8946+-0.0391     ?      7.9755+-0.2016        ? might be 1.0102x slower
   mul-boolean-double                                 3.7460+-0.0835     ?      3.7602+-0.1500        ?
   mul-boolean                                        3.0576+-0.2254            2.9900+-0.0479          might be 1.0226x faster
   neg-boolean                                        3.3205+-0.2587     ?      3.3700+-0.3940        ? might be 1.0149x slower
   negative-zero-divide                               0.3902+-0.0202     ?      0.4112+-0.0284        ? might be 1.0537x slower
   negative-zero-modulo                               0.4010+-0.0663     ?      0.4587+-0.1385        ? might be 1.1440x slower
   negative-zero-negate                               0.3625+-0.0214     !      0.4313+-0.0465        ! definitely 1.1898x slower
   nested-function-parsing                           40.6377+-1.8004           39.4135+-1.0237          might be 1.0311x faster
   new-array-buffer-dead                            112.5503+-2.4721     ?    113.6045+-1.7116        ?
   new-array-buffer-push                              6.8811+-0.0906     ?      6.9136+-0.0978        ?
   new-array-dead                                    19.5350+-0.8165           19.0659+-0.4709          might be 1.0246x faster
   new-array-push                                     7.0680+-0.9504            6.6026+-0.3220          might be 1.0705x faster
   no-inline-constructor                             42.4250+-1.0362           40.8241+-1.2013          might be 1.0392x faster
   number-test                                        3.1404+-0.0476     ?      3.3124+-0.3408        ? might be 1.0548x slower
   object-closure-call                                5.7347+-0.0553     ?      5.8264+-0.2389        ? might be 1.0160x slower
   object-test                                        3.0046+-0.1647            2.9822+-0.1297        
   obvious-sink-pathology-taken                     140.7885+-4.3980     ?    142.3224+-2.0632        ? might be 1.0109x slower
   obvious-sink-pathology                           130.9134+-2.0269     ?    133.3243+-3.7729        ? might be 1.0184x slower
   obviously-elidable-new-object                     36.3408+-1.2000     ?     36.4894+-1.4300        ?
   plus-boolean-arith                                 2.5558+-0.0254     ?      2.5613+-0.0298        ?
   plus-boolean-double                                3.3514+-0.2755            3.3468+-0.2684        
   plus-boolean                                       2.4828+-0.0769            2.4768+-0.0692        
   poly-chain-access-different-prototypes-simple   
                                                      3.6290+-0.3533     ?      3.6467+-0.5290        ?
   poly-chain-access-different-prototypes             2.6217+-0.0172     ?      2.7033+-0.2553        ? might be 1.0312x slower
   poly-chain-access-simpler                          3.3475+-0.0521     ?      3.3568+-0.0749        ?
   poly-chain-access                                  2.6127+-0.0301     ?      2.6265+-0.0333        ?
   poly-stricteq                                     59.8716+-1.1565     ?     60.9186+-2.8077        ? might be 1.0175x slower
   polymorphic-array-call                             1.4482+-0.0715     ?      1.4612+-0.1882        ?
   polymorphic-get-by-id                              3.2102+-0.0309            3.1970+-0.0413        
   polymorphic-put-by-id                             34.7648+-3.9706           31.8252+-1.9813          might be 1.0924x faster
   polymorphic-structure                             15.1081+-0.2073           15.0425+-0.2371        
   polyvariant-monomorphic-get-by-id                  8.7048+-0.1092     ?      8.7347+-0.1370        ?
   proto-getter-access                                9.2751+-0.1240     ?      9.4513+-0.2681        ? might be 1.0190x slower
   put-by-id-replace-and-transition                   9.6072+-0.0774     ?      9.8145+-0.2580        ? might be 1.0216x slower
   put-by-id-slightly-polymorphic                     3.0077+-0.2029     ?      3.0448+-0.3405        ? might be 1.0123x slower
   put-by-id                                         13.0151+-0.2770           12.7943+-0.2696          might be 1.0173x faster
   put-by-val-direct                                  0.4355+-0.0616            0.3936+-0.0164          might be 1.1065x faster
   put-by-val-large-index-blank-indexing-type   
                                                     12.3265+-1.1084           12.0483+-0.7156          might be 1.0231x faster
   put-by-val-machine-int                             2.8480+-0.0737     ?      2.8780+-0.1022        ? might be 1.0105x slower
   rare-osr-exit-on-local                            15.9913+-1.2760           15.1985+-0.4167          might be 1.0522x faster
   register-pressure-from-osr                        21.5356+-0.1664     ?     21.9041+-0.6430        ? might be 1.0171x slower
   repeat-multi-get-by-offset                        24.7608+-0.8519     ?     25.2542+-1.5211        ? might be 1.0199x slower
   setter-prototype                                  10.5325+-0.1346     ?     10.9357+-0.7670        ? might be 1.0383x slower
   setter                                             5.7752+-0.6039     ?      6.0874+-0.6888        ? might be 1.0541x slower
   simple-activation-demo                            25.4524+-0.3944           25.1325+-0.4415          might be 1.0127x faster
   simple-getter-access                              11.8270+-0.1804     ?     12.0248+-0.5223        ? might be 1.0167x slower
   simple-poly-call-nested                            8.5067+-0.7851            8.1897+-0.2060          might be 1.0387x faster
   simple-poly-call                                   1.3674+-0.0636     ?      1.3726+-0.0654        ?
   sin-boolean                                       22.8291+-0.5877     ?     22.9124+-0.7654        ?
   singleton-scope                                   62.2797+-0.5899     ?     63.7203+-1.8672        ? might be 1.0231x slower
   sink-function                                     12.3405+-0.3983           12.2428+-0.3684        
   sink-huge-activation                              18.8394+-0.3021     ?     19.4418+-0.7702        ? might be 1.0320x slower
   sinkable-new-object-dag                           70.5228+-0.3849           69.8621+-2.3182        
   sinkable-new-object-taken                         51.5270+-2.2933     ?     53.3783+-5.4343        ? might be 1.0359x slower
   sinkable-new-object                               38.6052+-0.3399     ?     39.0633+-0.9565        ? might be 1.0119x slower
   slow-array-profile-convergence                     3.2297+-0.3712            2.8952+-0.0503          might be 1.1155x faster
   slow-convergence                                   2.9270+-0.3294            2.7279+-0.0402          might be 1.0730x faster
   slow-ternaries                                    21.1071+-2.4826           20.3393+-3.2358          might be 1.0378x faster
   sorting-benchmark                                 19.2550+-0.6306           19.1977+-0.5469        
   sparse-conditional                                 1.2052+-0.0562     ?      1.2329+-0.1348        ? might be 1.0230x slower
   splice-to-remove                                  15.9714+-1.6478           15.8792+-1.3339        
   string-char-code-at                               16.3978+-0.4410     ?     16.8615+-0.6800        ? might be 1.0283x slower
   string-concat-object                               2.7797+-0.3064     ?      2.8610+-0.2595        ? might be 1.0293x slower
   string-concat-pair-object                          2.8154+-0.1978            2.6340+-0.1887          might be 1.0689x faster
   string-concat-pair-simple                         11.8418+-0.4567     ?     12.1330+-0.2749        ? might be 1.0246x slower
   string-concat-simple                              12.2856+-0.5446     ?     13.2740+-1.6978        ? might be 1.0805x slower
   string-cons-repeat                                 9.0823+-0.9483     ^      8.0001+-0.1259        ^ definitely 1.1353x faster
   string-cons-tower                                  8.2670+-0.2450     ?      8.3765+-0.2971        ? might be 1.0132x slower
   string-equality                                   17.9752+-0.7123     ?     18.0697+-1.0792        ?
   string-get-by-val-big-char                         7.3743+-0.2275            7.2351+-0.0656          might be 1.0192x faster
   string-get-by-val-out-of-bounds-insane             3.7590+-0.2183            3.6410+-0.1457          might be 1.0324x faster
   string-get-by-val-out-of-bounds                    5.6814+-0.2234            5.5584+-0.0529          might be 1.0221x faster
   string-get-by-val                                  3.4647+-0.0619     ?      3.4918+-0.2199        ?
   string-hash                                        2.1492+-0.1199     ?      2.2736+-0.2430        ? might be 1.0579x slower
   string-long-ident-equality                        14.9464+-1.0301           14.8337+-0.7255        
   string-out-of-bounds                              15.0102+-0.3120     ?     15.1136+-0.3411        ?
   string-repeat-arith                               34.0263+-1.8728           33.8778+-2.2149        
   string-sub                                        67.9135+-1.6727     ?     68.2456+-3.0013        ?
   string-test                                        3.0227+-0.0153     ?      3.0474+-0.0305        ?
   string-var-equality                               33.5386+-2.0310           32.2082+-0.3798          might be 1.0413x faster
   structure-hoist-over-transitions                   2.8547+-0.4560            2.6792+-0.0303          might be 1.0655x faster
   substring-concat-weird                            41.4771+-1.7399           41.3732+-1.6788        
   substring-concat                                  42.9596+-1.1900           42.8604+-0.5744        
   substring                                         46.0668+-1.2495     ?     47.0009+-3.8174        ? might be 1.0203x slower
   switch-char-constant                               2.9289+-0.1363     ?      2.9784+-0.1503        ? might be 1.0169x slower
   switch-char                                        6.9198+-0.7443            6.8586+-1.1912        
   switch-constant                                    8.5658+-0.2117     ?      8.6888+-0.5171        ? might be 1.0144x slower
   switch-string-basic-big-var                       18.5851+-0.3696     ?     18.9438+-0.4042        ? might be 1.0193x slower
   switch-string-basic-big                           15.6048+-1.7822           15.2658+-0.7807          might be 1.0222x faster
   switch-string-basic-var                           15.0824+-0.2207     ?     15.2163+-0.2479        ?
   switch-string-basic                               13.5952+-0.2137     ?     13.6023+-0.1596        ?
   switch-string-big-length-tower-var                20.2915+-0.4313           20.2835+-0.1296        
   switch-string-length-tower-var                    15.6263+-0.2468     ?     15.7563+-0.2066        ?
   switch-string-length-tower                        13.7559+-1.2457           13.2903+-0.3945          might be 1.0350x faster
   switch-string-short                               13.1050+-0.1585     ?     13.1509+-0.1871        ?
   switch                                            12.7249+-0.1926     ?     13.0591+-0.3772        ? might be 1.0263x slower
   tear-off-arguments-simple                          3.7993+-0.1889            3.6196+-0.1922          might be 1.0496x faster
   tear-off-arguments                                 4.9165+-0.1672     ?      5.0852+-0.4231        ? might be 1.0343x slower
   temporal-structure                                12.8182+-0.8732           12.2893+-0.3858          might be 1.0430x faster
   to-int32-boolean                                  14.1067+-0.2110           13.9358+-0.1953          might be 1.0123x faster
   try-catch-get-by-val-cloned-arguments             14.9554+-0.4873     ?     14.9939+-0.4124        ?
   try-catch-get-by-val-direct-arguments              6.8453+-0.2236     ?      6.8847+-0.8320        ?
   try-catch-get-by-val-scoped-arguments              8.0800+-0.7919     ?      8.4574+-1.4340        ? might be 1.0467x slower
   typed-array-get-set-by-val-profiling              33.5809+-1.7771           33.3000+-1.0689        
   undefined-property-access                        342.3951+-3.3096     ?    343.3002+-4.3138        ?
   undefined-test                                     3.1656+-0.1076     ?      3.1666+-0.0653        ?
   unprofiled-licm                                   24.1632+-1.4573           23.5682+-1.4026          might be 1.0252x faster
   varargs-call                                      15.0940+-0.4109           15.0931+-0.3372        
   varargs-construct-inline                          28.5719+-0.8833           27.9885+-0.6923          might be 1.0208x faster
   varargs-construct                                 22.8814+-0.6321     ?     22.9266+-0.8839        ?
   varargs-inline                                     9.7843+-0.8408            9.3125+-0.0553          might be 1.0507x faster
   varargs-strict-mode                               10.0411+-0.1667     ?     10.6716+-1.1066        ? might be 1.0628x slower
   varargs                                           10.1121+-0.1288     ?     10.1956+-0.3238        ?
   weird-inlining-const-prop                          3.5248+-0.3674            3.4598+-0.2392          might be 1.0188x faster

   <geometric>                                        8.9636+-0.0314            8.9578+-0.0215          might be 1.0007x faster

                                                        TipOfTree               DoubleRealUse                                   
AsmBench:
   bigfib.cpp                                       518.8040+-49.8107         498.0255+-2.6855          might be 1.0417x faster
   cray.c                                           431.3710+-12.6573         428.1437+-3.4040        
   dry.c                                            488.6579+-8.1970     ?    497.2350+-21.7451       ? might be 1.0176x slower
   FloatMM.c                                        722.0693+-1.6528     ?    722.1525+-2.0219        ?
   gcc-loops.cpp                                   4093.8066+-12.0332    ?   4196.5155+-255.2997      ? might be 1.0251x slower
   n-body.c                                         973.4665+-6.1992     ?    991.8999+-47.6840       ? might be 1.0189x slower
   Quicksort.c                                      424.1171+-2.0359          423.2583+-2.4650        
   stepanov_container.cpp                          3608.2825+-45.7520        3598.2685+-17.9705       
   Towers.c                                         256.3579+-2.6343          256.2805+-1.2721        

   <geometric>                                      792.3100+-8.2953     ?    793.0379+-6.8061        ? might be 1.0009x slower

                                                        TipOfTree               DoubleRealUse                                   
CompressionBench:
   huffman                                          355.3179+-1.9686     !    386.2188+-2.7035        ! definitely 1.0870x slower
   arithmetic-simple                                372.7928+-13.6699         369.6384+-6.8861        
   arithmetic-precise                               284.4393+-3.4096     ?    284.6909+-2.7542        ?
   arithmetic-complex-precise                       282.0315+-1.6502     ?    282.8636+-2.9708        ?
   arithmetic-precise-order-0                       382.1066+-18.8638         373.7717+-5.3831          might be 1.0223x faster
   arithmetic-precise-order-1                       331.4238+-4.2569     ?    333.2034+-2.5252        ?
   arithmetic-precise-order-2                       367.3392+-5.2870          367.0187+-5.1677        
   arithmetic-simple-order-1                        427.1547+-3.1452     ?    427.6714+-5.0059        ?
   arithmetic-simple-order-2                        471.0651+-3.6067     ?    473.0229+-5.3327        ?
   lz-string                                        311.6233+-4.3969     ?    314.5848+-2.0450        ?

   <geometric>                                      354.0521+-2.9362     ?    356.7875+-1.4017        ? might be 1.0077x slower

                                                        TipOfTree               DoubleRealUse                                   
Geomean of preferred means:
   <scaled-result>                                   62.2416+-0.2800           62.2058+-0.1711          might be 1.0006x faster
Comment 5 Filip Pizlo 2015-06-05 21:48:03 PDT
Ooops - of course!  This does need to handle ordinary double conversion.  You could have (Int32:1) + (Double:2).
Comment 6 Filip Pizlo 2015-06-05 22:02:50 PDT
Created attachment 254406 [details]
better
Comment 7 Filip Pizlo 2015-06-05 22:32:28 PDT
This isn't a speed-up on box2d, the benchmark it was targeting.  Not a slow-down, either.  It is a speed-up on the microbenchmark.  I think it's probably worth landing on the grounds that we have a microbenchmark speed-up and no slow downs.


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

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r185277)
"DoubleRealUse" at /Volumes/Data/pizlo/primary/OpenSource/WebKitBuild/Release/jsc (r185277)

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                        TipOfTree               DoubleRealUse                                   
SunSpider:
   3d-cube                                            5.2026+-0.1018     ?      5.2321+-0.1275        ?
   3d-morph                                           5.8165+-0.0678            5.8164+-0.1013        
   3d-raytrace                                        6.5668+-0.0382     ?      6.5899+-0.0678        ?
   access-binary-trees                                2.3927+-0.0840     ?      2.4734+-0.2429        ? might be 1.0337x slower
   access-fannkuch                                    6.3230+-0.0855            6.2534+-0.1414          might be 1.0111x faster
   access-nbody                                       2.9377+-0.0715     ?      3.1802+-0.3930        ? might be 1.0825x slower
   access-nsieve                                      3.5073+-0.1743            3.4458+-0.0727          might be 1.0178x faster
   bitops-3bit-bits-in-byte                           1.6018+-0.0227     ?      1.7095+-0.1716        ? might be 1.0673x slower
   bitops-bits-in-byte                                3.7928+-0.2100     ?      4.0126+-0.4482        ? might be 1.0579x slower
   bitops-bitwise-and                                 2.1962+-0.1567     ?      2.3123+-0.3010        ? might be 1.0529x slower
   bitops-nsieve-bits                                 3.2804+-0.0291     ?      3.3884+-0.2821        ? might be 1.0329x slower
   controlflow-recursive                              3.3219+-0.8031            2.9244+-0.0896          might be 1.1359x faster
   crypto-aes                                         4.7254+-0.2488            4.6718+-0.0706          might be 1.0115x faster
   crypto-md5                                         2.9290+-0.2674            2.7732+-0.1089          might be 1.0562x faster
   crypto-sha1                                        3.9234+-0.3411            3.6300+-0.2891          might be 1.0808x faster
   date-format-tofte                                  9.1747+-0.0895     ?      9.5341+-0.4467        ? might be 1.0392x slower
   date-format-xparb                                  5.9039+-0.1356     ?      5.9816+-0.2447        ? might be 1.0132x slower
   math-cordic                                        3.2038+-0.0769     ?      3.4410+-0.4478        ? might be 1.0740x slower
   math-partial-sums                                  6.0313+-0.8628            5.8447+-0.7282          might be 1.0319x faster
   math-spectral-norm                                 2.1651+-0.1260     ?      2.4008+-0.6643        ? might be 1.1089x slower
   regexp-dna                                         7.5648+-0.1991     ?      8.2447+-1.5835        ? might be 1.0899x slower
   string-base64                                      5.3027+-0.7949            5.0621+-0.2743          might be 1.0475x faster
   string-fasta                                       7.0802+-0.5843     ?      7.5710+-1.5564        ? might be 1.0693x slower
   string-tagcloud                                   10.3597+-0.4720     ?     10.4562+-1.4354        ?
   string-unpack-code                                20.2360+-0.4666     ?     20.9112+-1.0052        ? might be 1.0334x slower
   string-validate-input                              6.0770+-0.1384            5.9775+-0.0906          might be 1.0166x faster

   <arithmetic>                                       5.4468+-0.0751     ?      5.5322+-0.1216        ? might be 1.0157x slower

                                                        TipOfTree               DoubleRealUse                                   
LongSpider:
   3d-cube                                          901.3462+-3.1764     ?    906.6036+-9.7589        ?
   3d-morph                                        1531.9673+-7.8483     ?   1535.1906+-14.7097       ?
   3d-raytrace                                      732.7443+-67.9542         711.1558+-8.1386          might be 1.0304x faster
   access-binary-trees                             1002.6327+-6.7249     ?   1010.8462+-11.2496       ?
   access-fannkuch                                  348.3668+-2.8039     ?    370.5251+-48.1705       ? might be 1.0636x slower
   access-nbody                                     591.0437+-2.8346     !    606.8278+-1.7720        ! definitely 1.0267x slower
   access-nsieve                                    483.1322+-10.4077         481.3862+-7.6489        
   bitops-3bit-bits-in-byte                          45.3797+-1.4785           44.1983+-0.8650          might be 1.0267x faster
   bitops-bits-in-byte                              107.0593+-19.3226         101.1230+-3.3281          might be 1.0587x faster
   bitops-nsieve-bits                               421.9225+-1.9395     ?    425.0806+-4.0026        ?
   controlflow-recursive                            487.4026+-9.0812     ?    503.3051+-11.4977       ? might be 1.0326x slower
   crypto-aes                                       704.4706+-7.9363     ?    705.3912+-5.1696        ?
   crypto-md5                                       535.2856+-5.6195     ^    526.0693+-2.9380        ^ definitely 1.0175x faster
   crypto-sha1                                      687.7664+-15.1019         683.0371+-9.4787        
   date-format-tofte                                758.3883+-48.0466         722.0837+-11.5790         might be 1.0503x faster
   date-format-xparb                                827.0798+-17.9376    ^    795.4028+-10.3726       ^ definitely 1.0398x faster
   hash-map                                         183.7496+-6.4762     ?    185.3465+-4.9724        ?
   math-cordic                                      579.7266+-3.3025          576.3393+-2.9517        
   math-partial-sums                                508.6323+-7.2567     ?    510.4797+-3.4359        ?
   math-spectral-norm                               573.7021+-8.8469          573.0007+-14.9089       
   string-base64                                    412.0036+-7.0183          409.2138+-2.7316        
   string-fasta                                     436.7411+-5.2999     ^    426.0829+-4.8414        ^ definitely 1.0250x faster
   string-tagcloud                                  196.4525+-5.3208     ?    198.1056+-2.7451        ?

   <geometric>                                      460.2311+-2.9455          458.3733+-2.0976          might be 1.0041x faster

                                                        TipOfTree               DoubleRealUse                                   
V8Spider:
   crypto                                            56.4698+-1.3224     ?     56.8267+-2.3474        ?
   deltablue                                         99.6978+-4.1181     ?    101.5317+-2.3149        ? might be 1.0184x slower
   earley-boyer                                      48.6385+-1.5300     ?     49.6343+-1.8269        ? might be 1.0205x slower
   raytrace                                          40.9377+-1.7334     ?     42.8641+-2.1497        ? might be 1.0471x slower
   regexp                                            82.4089+-2.6578     ?     84.1447+-2.5198        ? might be 1.0211x slower
   richards                                          80.0120+-0.8285           77.9913+-2.8881          might be 1.0259x faster
   splay                                             40.7305+-1.5525           40.5649+-1.9596        

   <geometric>                                       60.6031+-0.4654     ?     61.3094+-0.8494        ? might be 1.0117x slower

                                                        TipOfTree               DoubleRealUse                                   
Octane:
   encrypt                                           0.20957+-0.01040          0.20655+-0.00595         might be 1.0147x faster
   decrypt                                           3.61027+-0.04016    ?     3.61537+-0.04675       ?
   deltablue                                x2       0.19497+-0.00142    ?     0.19598+-0.00192       ?
   earley                                            0.39424+-0.00145    ?     0.39456+-0.00355       ?
   boyer                                             5.16339+-0.03958    ?     5.18243+-0.02854       ?
   navier-stokes                            x2       5.20905+-0.01719    ?     5.21560+-0.05911       ?
   raytrace                                 x2       1.30908+-0.05103          1.29249+-0.03800         might be 1.0128x faster
   richards                                 x2       0.12915+-0.00147          0.12795+-0.00107       
   splay                                    x2       0.40275+-0.00362    ?     0.40608+-0.00327       ?
   regexp                                   x2      31.83571+-0.43011         31.68957+-0.22374       
   pdfjs                                    x2      42.85785+-0.51927         42.79992+-0.20894       
   mandreel                                 x2      51.12459+-0.25382    ?    51.51715+-1.20686       ?
   gbemu                                    x2      42.87791+-0.75220    ?    43.18229+-0.55683       ?
   closure                                           0.56751+-0.00422          0.56475+-0.00248       
   jquery                                            7.42726+-0.06766          7.41816+-0.04312       
   box2d                                    x2      11.89483+-0.06173    ?    12.36935+-1.05722       ? might be 1.0399x slower
   zlib                                     x2     393.68656+-15.36351   ?   398.11609+-2.68836       ? might be 1.0113x slower
   typescript                               x2     827.82385+-12.76021       819.13090+-11.73114        might be 1.0106x faster

   <geometric>                                       6.61643+-0.01791    ?     6.63077+-0.04745       ? might be 1.0022x slower

                                                        TipOfTree               DoubleRealUse                                   
Kraken:
   ai-astar                                          235.417+-1.696      ?     237.390+-3.275         ?
   audio-beat-detection                               82.699+-0.585             82.205+-0.395         
   audio-dft                                         122.845+-3.596      ?     124.097+-4.846         ? might be 1.0102x slower
   audio-fft                                          72.093+-2.011             70.856+-1.825           might be 1.0175x faster
   audio-oscillator                                   78.603+-1.761      ?      79.445+-2.016         ? might be 1.0107x slower
   imaging-darkroom                                  107.122+-1.776            106.082+-3.619         
   imaging-desaturate                                 63.598+-0.746      ?      64.304+-1.936         ? might be 1.0111x slower
   imaging-gaussian-blur                             114.473+-6.134            110.562+-1.749           might be 1.0354x faster
   json-parse-financial                               47.145+-1.742      ?      48.637+-2.133         ? might be 1.0316x slower
   json-stringify-tinderbox                           29.260+-2.305      ?      30.373+-1.992         ? might be 1.0381x slower
   stanford-crypto-aes                                59.196+-1.693             58.655+-0.994         
   stanford-crypto-ccm                                48.655+-1.480             48.544+-1.294         
   stanford-crypto-pbkdf2                            109.971+-0.594      ?     110.977+-2.249         ?
   stanford-crypto-sha256-iterative                   44.322+-2.093             43.471+-2.103           might be 1.0196x faster

   <arithmetic>                                       86.814+-0.683      ?      86.828+-0.350         ? might be 1.0002x slower

                                                        TipOfTree               DoubleRealUse                                   
JSRegress:
   abs-boolean                                        2.7649+-0.1183            2.6873+-0.0324          might be 1.0289x faster
   adapt-to-double-divide                            16.7288+-0.3671     ?     16.8645+-0.4734        ?
   aliased-arguments-getbyval                         1.4421+-0.2302            1.3382+-0.1006          might be 1.0777x faster
   allocate-big-object                                2.9254+-0.1073     ?      3.0038+-0.2455        ? might be 1.0268x slower
   arguments-named-and-reflective                    13.0861+-1.3456           12.9819+-1.0046        
   arguments-out-of-bounds                           14.5733+-0.2316     ?     14.8540+-0.5192        ? might be 1.0193x slower
   arguments-strict-mode                             10.9566+-0.3296     ?     11.8086+-1.3412        ? might be 1.0778x slower
   arguments                                         10.1036+-0.7402     ?     10.5160+-1.5001        ? might be 1.0408x slower
   arity-mismatch-inlining                            0.9017+-0.0483            0.8956+-0.0354        
   array-access-polymorphic-structure                 7.0216+-0.2172     ?      7.2062+-0.3152        ? might be 1.0263x slower
   array-nonarray-polymorhpic-access                 32.8719+-1.8345     ?     32.8955+-0.6989        ?
   array-prototype-every                             87.9524+-4.0077           86.7491+-2.5256          might be 1.0139x faster
   array-prototype-forEach                           87.0063+-1.2138           83.5326+-2.5129          might be 1.0416x faster
   array-prototype-map                               92.6319+-1.4502     ?     96.5256+-7.7157        ? might be 1.0420x slower
   array-prototype-reduce                            81.8702+-0.9279     ?     82.1413+-2.8818        ?
   array-prototype-reduceRight                       82.0904+-1.8855           79.6058+-1.8309          might be 1.0312x faster
   array-prototype-some                              88.2260+-2.6270           86.4564+-3.8683          might be 1.0205x faster
   array-splice-contiguous                           43.8490+-2.6188     ?     45.0930+-0.9397        ? might be 1.0284x slower
   array-with-double-add                              4.3463+-0.1342            4.3461+-0.1812        
   array-with-double-increment                        3.4650+-0.2279            3.2715+-0.0469          might be 1.0591x faster
   array-with-double-mul-add                          5.2054+-0.0482     ?      5.7114+-1.2200        ? might be 1.0972x slower
   array-with-double-sum                              3.7505+-0.3875            3.4980+-0.2291          might be 1.0722x faster
   array-with-int32-add-sub                           6.8856+-0.1234            6.8135+-0.0396          might be 1.0106x faster
   array-with-int32-or-double-sum                     3.4651+-0.0675            3.4024+-0.0487          might be 1.0184x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     37.7840+-2.3381           37.5572+-1.7134        
   ArrayBuffer-DataView-alloc-long-lived             14.2959+-0.3899     !     16.5704+-1.6687        ! definitely 1.1591x slower
   ArrayBuffer-Int32Array-byteOffset                  4.2788+-0.5260            4.0119+-0.3323          might be 1.0665x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     38.1942+-0.6386     ?     39.5656+-1.6971        ? might be 1.0359x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     22.2982+-0.5866     ?     22.7830+-1.5175        ? might be 1.0217x slower
   ArrayBuffer-Int8Array-alloc-long-lived            13.7660+-0.4629     ?     14.6244+-1.8022        ? might be 1.0624x slower
   ArrayBuffer-Int8Array-alloc                       11.5650+-1.3796           10.6271+-0.4835          might be 1.0883x faster
   asmjs_bool_bug                                     7.7279+-0.0555     ?      7.8003+-0.1000        ?
   assign-custom-setter-polymorphic                   3.4038+-0.1668     ?      3.4591+-0.3928        ? might be 1.0162x slower
   assign-custom-setter                               4.5816+-0.0447     ?      4.6850+-0.1296        ? might be 1.0226x slower
   basic-set                                         10.4003+-1.9170           10.0424+-1.1441          might be 1.0356x faster
   big-int-mul                                        4.1228+-0.0472     !      4.2523+-0.0258        ! definitely 1.0314x slower
   boolean-test                                       3.2338+-0.1223     ?      3.2371+-0.2382        ?
   branch-fold                                        4.4364+-0.5021            4.3280+-0.5857          might be 1.0250x faster
   branch-on-string-as-boolean                       20.9379+-0.8049           20.7851+-1.1391        
   by-val-generic                                     8.4496+-0.6162            8.4256+-0.4680        
   call-spread-apply                                 30.0473+-1.2583           29.6607+-1.0834          might be 1.0130x faster
   call-spread-call                                  25.8841+-1.6990     ?     26.4585+-1.1217        ? might be 1.0222x slower
   captured-assignments                               0.5249+-0.0237     ?      0.5555+-0.0702        ? might be 1.0582x slower
   cast-int-to-double                                 5.3745+-0.1502            5.3635+-0.1511        
   cell-argument                                      8.7243+-0.2841     ?      8.8645+-0.5968        ? might be 1.0161x slower
   cfg-simplify                                       2.9988+-0.2696            2.8474+-0.0431          might be 1.0532x faster
   chain-getter-access                                9.1357+-0.0920     ?      9.6206+-0.8220        ? might be 1.0531x slower
   cmpeq-obj-to-obj-other                            12.1787+-0.7837     ?     12.5842+-1.9518        ? might be 1.0333x slower
   constant-test                                      5.0123+-0.0253     ?      5.0671+-0.0893        ? might be 1.0109x slower
   create-lots-of-functions                          11.6797+-0.4007           11.5581+-0.3368          might be 1.0105x faster
   cse-new-array-buffer                               2.7593+-0.2821            2.6275+-0.1854          might be 1.0502x faster
   cse-new-array                                      2.6628+-0.1293            2.6271+-0.0380          might be 1.0136x faster
   DataView-custom-properties                        43.5056+-1.6841     ?     43.8673+-2.0971        ?
   deconstructing-parameters-overridden-by-function   
                                                      0.6581+-0.1004            0.6034+-0.0959          might be 1.0907x faster
   delay-tear-off-arguments-strictmode               15.0502+-1.0942           14.3447+-0.2251          might be 1.0492x faster
   deltablue-varargs                                210.5859+-4.5215     ?    210.9005+-2.1066        ?
   destructuring-arguments                           17.6674+-0.4716           17.5642+-0.2715        
   destructuring-swap                                 5.3977+-0.3946            5.1004+-0.0213          might be 1.0583x faster
   direct-arguments-getbyval                          1.2996+-0.0454     ?      1.3575+-0.1948        ? might be 1.0446x slower
   div-boolean-double                                 5.3299+-0.1547            5.2974+-0.0672        
   div-boolean                                        7.8198+-0.0110     !      7.9242+-0.0722        ! definitely 1.0134x slower
   double-get-by-val-out-of-bounds                    4.6955+-0.1761            4.6042+-0.0702          might be 1.0198x faster
   double-pollution-getbyval                          8.9615+-0.1542            8.9108+-0.0268        
   double-pollution-putbyoffset                       4.6159+-0.3783            4.4319+-0.1912          might be 1.0415x faster
   double-real-use                                   30.7680+-1.4014     ^     27.8455+-0.5449        ^ definitely 1.1050x faster
   double-to-int32-typed-array-no-inline              2.5655+-0.1732     ?      2.6180+-0.0494        ? might be 1.0205x slower
   double-to-int32-typed-array                        2.1217+-0.2726     ?      2.2112+-0.3140        ? might be 1.0422x slower
   double-to-uint32-typed-array-no-inline             2.9482+-0.2888            2.6280+-0.1780          might be 1.1218x faster
   double-to-uint32-typed-array                       2.0793+-0.0613     ?      2.3433+-0.2544        ? might be 1.1270x slower
   elidable-new-object-dag                           43.6029+-1.9667           43.4862+-2.7154        
   elidable-new-object-roflcopter                    44.9545+-1.1542           44.5726+-1.6791        
   elidable-new-object-then-call                     40.2013+-1.1971           39.4508+-1.2949          might be 1.0190x faster
   elidable-new-object-tree                          46.7319+-1.7593           46.4502+-1.6972        
   empty-string-plus-int                              5.5827+-0.1175     ?      5.6143+-0.1224        ?
   emscripten-cube2hash                              38.8370+-0.9669     ?     39.3053+-1.6712        ? might be 1.0121x slower
   exit-length-on-plain-object                       13.9146+-0.1349     ?     14.5843+-1.4161        ? might be 1.0481x slower
   external-arguments-getbyval                        1.2535+-0.0361     ?      1.3282+-0.0660        ? might be 1.0596x slower
   external-arguments-putbyval                        2.3966+-0.0575     ?      2.4865+-0.1349        ? might be 1.0375x slower
   fixed-typed-array-storage-var-index                1.3495+-0.1680            1.2178+-0.0202          might be 1.1081x faster
   fixed-typed-array-storage                          0.9326+-0.0452     ?      0.9500+-0.0834        ? might be 1.0187x slower
   Float32Array-matrix-mult                           4.6297+-0.2221            4.6053+-0.1801        
   Float32Array-to-Float64Array-set                  53.5590+-2.4331     !     57.6923+-1.2496        ! definitely 1.0772x slower
   Float64Array-alloc-long-lived                     87.8797+-2.9439           87.8154+-1.1353        
   Float64Array-to-Int16Array-set                    68.9527+-1.6965     ?     69.8889+-1.4584        ? might be 1.0136x slower
   fold-double-to-int                                13.6014+-0.1636     ?     13.8258+-0.2389        ? might be 1.0165x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.4222+-1.0423     ?     10.9725+-1.0662        ? might be 1.0528x slower
   fold-get-by-id-to-multi-get-by-offset             10.1340+-1.3274     ?     11.3405+-1.0545        ? might be 1.1191x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.7424+-1.1058     ?     10.3923+-1.3939        ? might be 1.0667x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.2607+-1.1588     ?      9.6464+-0.6475        ? might be 1.0416x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.0247+-0.8734            9.3558+-0.9142          might be 1.0715x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      8.2358+-0.6188            6.8994+-1.6665          might be 1.1937x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     10.0655+-0.4985            9.9585+-0.5643          might be 1.0108x faster
   fold-put-by-id-to-multi-put-by-offset             10.5042+-1.2973     ?     10.7074+-1.0722        ? might be 1.0193x slower
   fold-put-structure                                 7.6204+-0.6905            6.9910+-1.5184          might be 1.0900x faster
   for-of-iterate-array-entries                       4.7410+-0.2829            4.6010+-0.1380          might be 1.0304x faster
   for-of-iterate-array-keys                          3.9753+-0.5735            3.8818+-0.2540          might be 1.0241x faster
   for-of-iterate-array-values                        3.7312+-0.2276     ?      3.7704+-0.3525        ? might be 1.0105x slower
   fround                                            21.1287+-0.3732     ?     21.3750+-0.7753        ? might be 1.0117x slower
   ftl-library-inlining-dataview                     67.1286+-5.5787           66.2189+-1.6194          might be 1.0137x faster
   ftl-library-inlining                              75.4043+-19.0764          74.2172+-18.5748         might be 1.0160x faster
   function-dot-apply                                 2.2896+-0.0569            2.2804+-0.0748        
   function-test                                      2.9845+-0.1116            2.9187+-0.0392          might be 1.0226x faster
   function-with-eval                               103.9167+-3.0970          102.5265+-2.6564          might be 1.0136x faster
   gcse-poly-get-less-obvious                        19.1483+-1.3385           18.5897+-0.6445          might be 1.0300x faster
   gcse-poly-get                                     20.5992+-1.7924     ?     20.8334+-1.6266        ? might be 1.0114x slower
   gcse                                               4.5824+-0.5026            4.5014+-0.1645          might be 1.0180x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.0034+-0.2997            2.8690+-0.1050          might be 1.0468x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.0474+-0.1040            6.0246+-0.0465        
   get-by-id-chain-from-try-block                     7.0615+-0.6295     ?      7.4285+-1.1409        ? might be 1.0520x slower
   get-by-id-check-structure-elimination              5.2528+-0.2095     ?      5.2793+-0.1862        ?
   get-by-id-proto-or-self                           18.5943+-0.9645     ?     19.7433+-1.2489        ? might be 1.0618x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.0156+-0.1075            2.9733+-0.0406          might be 1.0142x faster
   get-by-id-self-or-proto                           18.7160+-0.8363     ?     19.4611+-2.3150        ? might be 1.0398x slower
   get-by-val-out-of-bounds                           4.6423+-0.2730     ?      4.8080+-0.6054        ? might be 1.0357x slower
   get_callee_monomorphic                             3.0088+-0.1199     ?      3.0387+-0.2374        ?
   get_callee_polymorphic                             3.7929+-0.1884     ?      3.9277+-0.3821        ? might be 1.0355x slower
   getter-no-activation                               5.1326+-0.2736            5.0011+-0.1349          might be 1.0263x faster
   getter-prototype                                  14.7728+-0.2277     ?     15.4115+-1.1204        ? might be 1.0432x slower
   getter-richards                                  127.0997+-3.0202          125.9145+-3.4852        
   getter                                             5.8917+-0.5951     ?      5.9327+-0.7877        ?
   global-var-const-infer-fire-from-opt               0.9563+-0.0361     ?      0.9591+-0.0341        ?
   global-var-const-infer                             1.0167+-0.1334            0.9040+-0.0945          might be 1.1246x faster
   HashMap-put-get-iterate-keys                      30.8184+-1.8675     ?     31.3241+-0.6596        ? might be 1.0164x slower
   HashMap-put-get-iterate                           33.1590+-1.6777           32.3455+-0.9040          might be 1.0252x faster
   HashMap-string-put-get-iterate                    32.4650+-2.0202           32.3478+-1.6796        
   hoist-make-rope                                   12.4580+-0.5100     ?     12.7791+-0.6886        ? might be 1.0258x slower
   hoist-poly-check-structure-effectful-loop   
                                                      5.1674+-0.0994            5.0603+-0.0716          might be 1.0212x faster
   hoist-poly-check-structure                         3.8571+-0.3347     ?      4.0552+-0.4108        ? might be 1.0514x slower
   imul-double-only                                   9.1540+-1.1312            9.0688+-0.0631        
   imul-int-only                                      9.9065+-0.1595     ?     10.6442+-0.6550        ? might be 1.0745x slower
   imul-mixed                                         8.4793+-0.4060            8.4738+-0.3026        
   in-four-cases                                     22.1650+-0.2572     ?     22.4874+-0.5091        ? might be 1.0145x slower
   in-one-case-false                                 11.1189+-0.1018     ?     11.2161+-0.1401        ?
   in-one-case-true                                  11.0849+-0.0919     ?     11.0880+-0.0925        ?
   in-two-cases                                      11.9036+-0.4053           11.8037+-0.3286        
   indexed-properties-in-objects                      3.1969+-0.2791            3.0449+-0.1761          might be 1.0499x faster
   infer-closure-const-then-mov-no-inline             4.1823+-0.3042            4.0704+-0.2587          might be 1.0275x faster
   infer-closure-const-then-mov                      19.7880+-0.4627     ?     19.9517+-0.1772        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     13.5107+-1.2799     ?     14.3783+-1.5306        ? might be 1.0642x slower
   infer-closure-const-then-put-to-scope             23.3468+-1.8319     ?     23.3590+-1.8271        ?
   infer-closure-const-then-reenter-no-inline   
                                                     54.3228+-0.4435     ?     55.3523+-1.8673        ? might be 1.0190x slower
   infer-closure-const-then-reenter                  23.1040+-0.8665           22.3345+-1.1557          might be 1.0345x faster
   infer-constant-global-property                     3.6313+-0.0647     ?      3.7094+-0.1394        ? might be 1.0215x slower
   infer-constant-property                            2.7998+-0.0744     ?      2.8898+-0.2817        ? might be 1.0321x slower
   infer-one-time-closure-ten-vars                   12.5927+-0.1853     ?     12.6359+-0.3417        ?
   infer-one-time-closure-two-vars                   12.5545+-0.5719     ?     13.2167+-1.7103        ? might be 1.0527x slower
   infer-one-time-closure                            11.8448+-0.2582     ?     12.0566+-0.3985        ? might be 1.0179x slower
   infer-one-time-deep-closure                       22.1726+-1.7452           21.7840+-1.0947          might be 1.0178x faster
   inline-arguments-access                            5.0644+-0.6172            4.7699+-0.1427          might be 1.0617x faster
   inline-arguments-aliased-access                    4.7702+-0.1138     ?      4.8065+-0.3694        ?
   inline-arguments-local-escape                      4.9061+-0.5369            4.8212+-0.3084          might be 1.0176x faster
   inline-get-scoped-var                              4.9820+-0.2706            4.9467+-0.1727        
   inlined-put-by-id-transition                      11.6175+-0.2839     ?     11.8226+-0.5680        ? might be 1.0177x slower
   int-or-other-abs-then-get-by-val                   5.0402+-0.1016     ?      5.1194+-0.2382        ? might be 1.0157x slower
   int-or-other-abs-zero-then-get-by-val             17.5608+-0.3821     ?     18.4869+-1.1515        ? might be 1.0527x slower
   int-or-other-add-then-get-by-val                   4.3645+-0.0213     ?      4.4022+-0.0834        ?
   int-or-other-add                                   5.4037+-0.0213     ?      5.4917+-0.1858        ? might be 1.0163x slower
   int-or-other-div-then-get-by-val                   4.3656+-0.1768            4.2928+-0.0461          might be 1.0170x faster
   int-or-other-max-then-get-by-val                   4.3445+-0.0106     ?      4.4605+-0.1728        ? might be 1.0267x slower
   int-or-other-min-then-get-by-val                   5.6239+-3.0714            4.3383+-0.0458          might be 1.2963x faster
   int-or-other-mod-then-get-by-val                   4.0172+-0.1071     ?      4.0636+-0.2126        ? might be 1.0115x slower
   int-or-other-mul-then-get-by-val                   4.9749+-2.3066            4.0291+-0.1592          might be 1.2347x faster
   int-or-other-neg-then-get-by-val                   4.8075+-0.0211     ?      4.8460+-0.1269        ?
   int-or-other-neg-zero-then-get-by-val             18.0243+-0.2209     ^     17.3781+-0.1907        ^ definitely 1.0372x faster
   int-or-other-sub-then-get-by-val                   4.4643+-0.1497            4.4471+-0.0975        
   int-or-other-sub                                   3.7574+-0.2765     ?      3.7653+-0.1458        ?
   int-overflow-local                                 4.5862+-0.0427     ?      4.6908+-0.1811        ? might be 1.0228x slower
   Int16Array-alloc-long-lived                       52.9876+-1.1439     ?     53.2183+-1.2539        ?
   Int16Array-bubble-sort-with-byteLength            20.2855+-0.1971     ?     20.4377+-0.3623        ?
   Int16Array-bubble-sort                            20.5279+-1.2312     ?     21.3903+-1.2170        ? might be 1.0420x slower
   Int16Array-load-int-mul                            1.6444+-0.1842            1.5708+-0.0672          might be 1.0469x faster
   Int16Array-to-Int32Array-set                      53.7147+-1.8504     !     58.9365+-0.5705        ! definitely 1.0972x slower
   Int32Array-alloc-large                            24.4908+-0.9589           24.2937+-1.3980        
   Int32Array-alloc-long-lived                       63.9952+-1.9592           63.8105+-0.8235        
   Int32Array-alloc                                   3.4477+-0.0970     ?      3.8851+-0.6322        ? might be 1.1268x slower
   Int32Array-Int8Array-view-alloc                    7.1173+-0.8781     ?      7.5314+-0.8287        ? might be 1.0582x slower
   int52-spill                                        5.7375+-0.0336     ?      5.7817+-0.0431        ?
   Int8Array-alloc-long-lived                        48.9581+-1.6839           48.3344+-1.1704          might be 1.0129x faster
   Int8Array-load-with-byteLength                     3.6595+-0.2221            3.4198+-0.0466          might be 1.0701x faster
   Int8Array-load                                     3.7262+-0.3340            3.5915+-0.3959          might be 1.0375x faster
   integer-divide                                    11.2612+-0.7858     ?     11.7140+-1.6091        ? might be 1.0402x slower
   integer-modulo                                     2.1007+-0.0379     ?      2.1104+-0.0854        ?
   is-boolean-fold-tricky                             4.5181+-0.0868     ?      4.6575+-0.2668        ? might be 1.0308x slower
   is-boolean-fold                                    2.9624+-0.0913            2.9288+-0.0479          might be 1.0115x faster
   is-function-fold-tricky-internal-function   
                                                     12.0374+-0.3402     ?     12.0951+-0.0912        ?
   is-function-fold-tricky                            4.6332+-0.1252     ?      4.7192+-0.1993        ? might be 1.0185x slower
   is-function-fold                                   2.9629+-0.0358     ?      2.9919+-0.1251        ?
   is-number-fold-tricky                              4.8808+-0.5293            4.5818+-0.2205          might be 1.0653x faster
   is-number-fold                                     3.1746+-0.3553            3.0692+-0.3794          might be 1.0343x faster
   is-object-or-null-fold-functions                   3.1336+-0.3002     ?      3.3345+-0.4106        ? might be 1.0641x slower
   is-object-or-null-fold-less-tricky                 4.5705+-0.0820     ?      4.6808+-0.2595        ? might be 1.0241x slower
   is-object-or-null-fold-tricky                      6.7696+-0.1363            6.7528+-0.1369        
   is-object-or-null-fold                             2.9506+-0.0724     ?      2.9688+-0.0654        ?
   is-object-or-null-trickier-function                4.6650+-0.1133     ?      5.0236+-0.9377        ? might be 1.0769x slower
   is-object-or-null-trickier-internal-function   
                                                     12.6900+-0.0736           12.5703+-0.0970        
   is-object-or-null-tricky-function                  4.5767+-0.0654     ?      4.6719+-0.0815        ? might be 1.0208x slower
   is-object-or-null-tricky-internal-function   
                                                      9.4711+-0.3842     ?      9.4871+-0.3143        ?
   is-string-fold-tricky                              4.5151+-0.1069     ?      4.7314+-0.4505        ? might be 1.0479x slower
   is-string-fold                                     2.8972+-0.0228     ?      2.9131+-0.0363        ?
   is-undefined-fold-tricky                           3.8040+-0.0391     ?      3.8277+-0.0945        ?
   is-undefined-fold                                  3.1521+-0.3533            3.1068+-0.3102          might be 1.0146x faster
   large-int-captured                                 4.9330+-0.2099            4.8893+-0.1173        
   large-int-neg                                     16.7028+-0.6964           16.4651+-0.7936          might be 1.0144x faster
   large-int                                         14.7038+-0.2219     ?     14.7371+-0.2079        ?
   load-varargs-elimination                          23.3787+-1.2534           23.3649+-1.1365        
   logical-not-weird-types                            3.3903+-0.1418     ?      3.3911+-0.1763        ?
   logical-not                                        4.6350+-0.0335     ?      4.7909+-0.2647        ? might be 1.0336x slower
   lots-of-fields                                    12.6230+-0.2570     ?     13.0515+-2.0007        ? might be 1.0339x slower
   make-indexed-storage                               3.2594+-0.1462            3.1270+-0.2464          might be 1.0423x faster
   make-rope-cse                                     12.3969+-1.2564           12.0170+-1.2601          might be 1.0316x faster
   marsaglia-larger-ints                             36.4939+-0.6195     ?     37.6276+-2.6405        ? might be 1.0311x slower
   marsaglia-osr-entry                               23.1974+-0.9869     ?     23.8764+-1.2779        ? might be 1.0293x slower
   math-with-out-of-bounds-array-values              26.9576+-7.2486           26.6963+-2.3409        
   max-boolean                                        2.5752+-0.1192     ?      2.6243+-0.1996        ? might be 1.0191x slower
   method-on-number                                  17.8790+-0.5505     ?     19.6233+-4.3820        ? might be 1.0976x slower
   min-boolean                                        2.7017+-0.3128            2.5543+-0.0316          might be 1.0577x faster
   minus-boolean-double                               3.2594+-0.1023     ?      3.2607+-0.0934        ?
   minus-boolean                                      2.3998+-0.0362     ?      2.5240+-0.3059        ? might be 1.0518x slower
   misc-strict-eq                                    39.3015+-0.8798     ?     39.3497+-1.0284        ?
   mod-boolean-double                                11.2163+-0.3828           10.9923+-0.1102          might be 1.0204x faster
   mod-boolean                                        8.0257+-0.2461            7.8951+-0.0102          might be 1.0165x faster
   mul-boolean-double                                 3.8599+-0.2596            3.7915+-0.0595          might be 1.0180x faster
   mul-boolean                                        3.0587+-0.2975     ?      3.1560+-0.3996        ? might be 1.0318x slower
   neg-boolean                                        3.2579+-0.0531     ?      3.3897+-0.3999        ? might be 1.0405x slower
   negative-zero-divide                               0.4338+-0.0720            0.4020+-0.0297          might be 1.0789x faster
   negative-zero-modulo                               0.4190+-0.0364            0.4037+-0.0285          might be 1.0378x faster
   negative-zero-negate                               0.4028+-0.0475            0.3781+-0.0223          might be 1.0653x faster
   nested-function-parsing                           39.2493+-0.1189           39.0745+-0.2591        
   new-array-buffer-dead                            113.4927+-2.5656          111.5985+-2.9043          might be 1.0170x faster
   new-array-buffer-push                              7.4875+-0.8834            6.9375+-0.2021          might be 1.0793x faster
   new-array-dead                                    19.3591+-0.5450     ?     19.6083+-0.9396        ? might be 1.0129x slower
   new-array-push                                     6.4486+-0.0638     ?      6.5577+-0.0878        ? might be 1.0169x slower
   no-inline-constructor                             42.6313+-1.8622           41.1036+-1.3199          might be 1.0372x faster
   number-test                                        3.1616+-0.1232            3.1098+-0.0293          might be 1.0167x faster
   object-closure-call                                5.8179+-0.0817     ?      5.9015+-0.3376        ? might be 1.0144x slower
   object-test                                        2.9736+-0.2638            2.8835+-0.0224          might be 1.0313x faster
   obvious-sink-pathology-taken                     146.9525+-11.4995         141.3045+-1.0046          might be 1.0400x faster
   obvious-sink-pathology                           132.6357+-2.3136          132.0987+-1.4803        
   obviously-elidable-new-object                     36.4392+-1.5764           34.8174+-0.9955          might be 1.0466x faster
   plus-boolean-arith                                 2.6580+-0.1305     ?      2.6775+-0.3251        ?
   plus-boolean-double                                3.4882+-0.3784            3.2903+-0.0473          might be 1.0602x faster
   plus-boolean                                       2.4759+-0.0501     ?      2.4855+-0.1152        ?
   poly-chain-access-different-prototypes-simple   
                                                      3.3580+-0.0781     ?      3.3894+-0.0998        ?
   poly-chain-access-different-prototypes             2.8794+-0.3666            2.7379+-0.3033          might be 1.0517x faster
   poly-chain-access-simpler                          3.4207+-0.1002            3.3523+-0.0478          might be 1.0204x faster
   poly-chain-access                                  2.7554+-0.3364            2.6338+-0.0435          might be 1.0462x faster
   poly-stricteq                                     60.9377+-2.1203           59.7648+-0.6538          might be 1.0196x faster
   polymorphic-array-call                             1.4191+-0.0612            1.4129+-0.0448        
   polymorphic-get-by-id                              3.2754+-0.2111            3.2098+-0.0602          might be 1.0204x faster
   polymorphic-put-by-id                             33.7656+-2.4640           32.7787+-1.6756          might be 1.0301x faster
   polymorphic-structure                             16.9566+-5.2977           15.5527+-0.8742          might be 1.0903x faster
   polyvariant-monomorphic-get-by-id                  8.7461+-0.2948     ?      8.7655+-0.2406        ?
   proto-getter-access                                9.4189+-0.1625     ?      9.6491+-0.5598        ? might be 1.0244x slower
   put-by-id-replace-and-transition                   9.5932+-0.0652     ?      9.7232+-0.2593        ? might be 1.0136x slower
   put-by-id-slightly-polymorphic                     2.9339+-0.0970            2.8736+-0.0317          might be 1.0210x faster
   put-by-id                                         13.0500+-0.2385           12.6633+-0.2294          might be 1.0305x faster
   put-by-val-direct                                  0.4187+-0.0619            0.4093+-0.0145          might be 1.0232x faster
   put-by-val-large-index-blank-indexing-type   
                                                     12.5348+-1.2371           12.5184+-1.1894        
   put-by-val-machine-int                             2.8787+-0.1924            2.8392+-0.0354          might be 1.0139x faster
   rare-osr-exit-on-local                            15.3765+-0.7056           15.3342+-0.7004        
   register-pressure-from-osr                        22.1255+-1.1094           21.9197+-1.0250        
   repeat-multi-get-by-offset                        25.2084+-1.4383           24.9320+-1.0521          might be 1.0111x faster
   setter-prototype                                  10.6165+-0.1528     ?     10.6251+-0.0770        ?
   setter                                             6.5298+-0.8744            6.3660+-0.7955          might be 1.0257x faster
   simple-activation-demo                            25.3591+-0.2911     ?     26.1081+-1.5538        ? might be 1.0295x slower
   simple-getter-access                              11.8133+-0.1867     ?     11.8572+-0.3743        ?
   simple-poly-call-nested                            8.3894+-0.7791     ?      8.4436+-0.4108        ?
   simple-poly-call                                   1.3816+-0.1241     ?      1.4088+-0.2056        ? might be 1.0197x slower
   sin-boolean                                       22.4815+-0.8652     ?     22.6965+-0.9251        ?
   singleton-scope                                   62.8346+-1.6408     ?     63.6619+-1.9345        ? might be 1.0132x slower
   sink-function                                     12.3191+-0.3735           12.0288+-0.1749          might be 1.0241x faster
   sink-huge-activation                              19.3323+-0.5815     ?     19.9036+-1.7381        ? might be 1.0296x slower
   sinkable-new-object-dag                           70.9199+-1.2252     ?     71.8415+-3.2129        ? might be 1.0130x slower
   sinkable-new-object-taken                         52.5699+-4.1713           51.9659+-2.8133          might be 1.0116x faster
   sinkable-new-object                               39.8404+-1.0175           38.8383+-0.4756          might be 1.0258x faster
   slow-array-profile-convergence                     2.9380+-0.1308     ?      3.0857+-0.3033        ? might be 1.0503x slower
   slow-convergence                                   2.9697+-0.2788            2.8308+-0.1608          might be 1.0491x faster
   slow-ternaries                                    22.0433+-1.6460           18.9023+-1.9406          might be 1.1662x faster
   sorting-benchmark                                 18.6527+-0.4101     ?     18.8980+-0.3997        ? might be 1.0132x slower
   sparse-conditional                                 1.2979+-0.2126     ?      1.4444+-0.4444        ? might be 1.1129x slower
   splice-to-remove                                  15.6659+-1.0644           15.3494+-0.3104          might be 1.0206x faster
   string-char-code-at                               17.1439+-1.6194           16.4173+-0.6535          might be 1.0443x faster
   string-concat-object                               2.8370+-0.5444            2.7131+-0.1080          might be 1.0457x faster
   string-concat-pair-object                          2.7073+-0.2315            2.5837+-0.0878          might be 1.0478x faster
   string-concat-pair-simple                         11.9191+-0.3498     ?     12.0178+-0.5709        ?
   string-concat-simple                              13.0638+-1.5799           12.9613+-1.1567        
   string-cons-repeat                                 9.7438+-0.8794            8.7532+-1.1283          might be 1.1132x faster
   string-cons-tower                                  8.3061+-0.3443     ?      8.5110+-0.6264        ? might be 1.0247x slower
   string-equality                                   18.1641+-0.7797     ?     18.6406+-1.8311        ? might be 1.0262x slower
   string-get-by-val-big-char                         7.2243+-0.0231     ?      7.2609+-0.1644        ?
   string-get-by-val-out-of-bounds-insane             3.6266+-0.1112     ?      3.9423+-0.5692        ? might be 1.0871x slower
   string-get-by-val-out-of-bounds                    5.5268+-0.0329     ?      5.5415+-0.0392        ?
   string-get-by-val                                  3.6193+-0.4561            3.4318+-0.2136          might be 1.0546x faster
   string-hash                                        2.1193+-0.0412     ?      2.2196+-0.1362        ? might be 1.0473x slower
   string-long-ident-equality                        14.6736+-0.1662           14.4659+-0.2071          might be 1.0144x faster
   string-out-of-bounds                              14.9633+-0.1815     ?     15.1074+-0.2726        ?
   string-repeat-arith                               33.6847+-1.9599     ?     35.1204+-1.5572        ? might be 1.0426x slower
   string-sub                                        67.0485+-2.6458     ?     71.5456+-3.1721        ? might be 1.0671x slower
   string-test                                        3.1298+-0.2736            3.0350+-0.0525          might be 1.0312x faster
   string-var-equality                               33.0560+-1.3082     ?     33.8698+-1.9813        ? might be 1.0246x slower
   structure-hoist-over-transitions                   2.7360+-0.0928     ?      2.7360+-0.0277        ?
   substring-concat-weird                            41.2107+-1.7561     ?     41.2759+-1.0279        ?
   substring-concat                                  42.6440+-0.5127     ?     42.9985+-0.9828        ?
   substring                                         48.5335+-8.2216           45.9051+-1.6477          might be 1.0573x faster
   switch-char-constant                               3.1143+-0.1967            2.9629+-0.2302          might be 1.0511x faster
   switch-char                                        6.4789+-0.3318     ?      7.0639+-0.8039        ? might be 1.0903x slower
   switch-constant                                    8.4672+-0.2130     ?      8.6052+-0.2598        ? might be 1.0163x slower
   switch-string-basic-big-var                       18.5179+-0.5437     ?     18.8149+-0.8684        ? might be 1.0160x slower
   switch-string-basic-big                           16.2025+-3.5888           15.1114+-0.3374          might be 1.0722x faster
   switch-string-basic-var                           15.2065+-0.2800           15.0765+-0.2113        
   switch-string-basic                               13.5850+-0.2303     ?     13.8495+-1.0559        ? might be 1.0195x slower
   switch-string-big-length-tower-var                20.1630+-0.2503     ?     20.5843+-1.3021        ? might be 1.0209x slower
   switch-string-length-tower-var                    15.6684+-0.2093           15.5169+-0.2019        
   switch-string-length-tower                        13.6844+-1.1508     ?     13.7624+-1.3460        ?
   switch-string-short                               13.1625+-0.1877     ?     13.2904+-0.2037        ?
   switch                                            12.7336+-0.2084     ?     12.7768+-0.4726        ?
   tear-off-arguments-simple                          3.5734+-0.0307     ?      3.6082+-0.1080        ?
   tear-off-arguments                                 4.9028+-0.1054            4.8628+-0.0880        
   temporal-structure                                12.2666+-0.2842           12.1772+-0.1134        
   to-int32-boolean                                  13.9360+-0.1775     ?     14.1127+-0.3120        ? might be 1.0127x slower
   try-catch-get-by-val-cloned-arguments             14.9442+-0.9098     ?     15.8510+-1.2071        ? might be 1.0607x slower
   try-catch-get-by-val-direct-arguments              7.2616+-0.9892            6.5286+-0.1252          might be 1.1123x faster
   try-catch-get-by-val-scoped-arguments              7.7489+-0.2051     ?      8.2821+-0.9710        ? might be 1.0688x slower
   typed-array-get-set-by-val-profiling              33.8614+-1.6957           32.6138+-0.2489          might be 1.0383x faster
   undefined-property-access                        343.6169+-3.5920     ?    344.1093+-1.4379        ?
   undefined-test                                     3.2235+-0.2332            3.1329+-0.0934          might be 1.0289x faster
   unprofiled-licm                                   23.4334+-1.5786     ?     23.5981+-1.6618        ?
   varargs-call                                      14.9989+-0.1980     ?     15.8424+-1.2820        ? might be 1.0562x slower
   varargs-construct-inline                          28.4843+-0.3949     ?     29.0465+-0.9530        ? might be 1.0197x slower
   varargs-construct                                 22.8858+-1.0049     ?     23.0784+-0.4801        ?
   varargs-inline                                     9.4686+-0.1182            9.4569+-0.1305        
   varargs-strict-mode                               10.1083+-0.1253     ?     10.4791+-0.9830        ? might be 1.0367x slower
   varargs                                           10.0447+-0.0735           10.0061+-0.0438        
   weird-inlining-const-prop                          3.3890+-0.2617     ?      4.0432+-2.0991        ? might be 1.1930x slower

   <geometric>                                        8.9828+-0.0370            8.9747+-0.0232          might be 1.0009x faster

                                                        TipOfTree               DoubleRealUse                                   
AsmBench:
   bigfib.cpp                                       500.8590+-4.9801     ?    501.3822+-3.6239        ?
   cray.c                                           427.4548+-0.6829     ?    429.9062+-2.0056        ?
   dry.c                                            491.1985+-3.9376     ?    492.3243+-5.9774        ?
   FloatMM.c                                        723.4755+-2.5057     ?    725.8680+-3.4654        ?
   gcc-loops.cpp                                   4110.9378+-9.6674         4106.2331+-9.5015        
   n-body.c                                         975.3578+-3.6786     !    988.6222+-6.7565        ! definitely 1.0136x slower
   Quicksort.c                                      423.9291+-1.5040     ?    427.3347+-3.9421        ?
   stepanov_container.cpp                          3611.3676+-28.6169    ?   3739.1442+-360.8933      ? might be 1.0354x slower
   Towers.c                                         256.7973+-1.5518          256.3450+-1.0713        

   <geometric>                                      790.0516+-1.1096     ?    795.5933+-9.1078        ? might be 1.0070x slower

                                                        TipOfTree               DoubleRealUse                                   
CompressionBench:
   huffman                                          363.4777+-24.9324    ?    379.6798+-2.9143        ? might be 1.0446x slower
   arithmetic-simple                                369.3888+-3.2803          368.1330+-4.5425        
   arithmetic-precise                               286.7947+-8.5259          286.4227+-2.4576        
   arithmetic-complex-precise                       283.2440+-2.7682     ?    285.2054+-5.4135        ?
   arithmetic-precise-order-0                       378.0345+-3.9396     ?    381.1244+-10.3295       ?
   arithmetic-precise-order-1                       336.5474+-8.7359          332.4686+-4.9355          might be 1.0123x faster
   arithmetic-precise-order-2                       365.7171+-5.2101     ?    371.1844+-3.1533        ? might be 1.0149x slower
   arithmetic-simple-order-1                        428.9500+-3.8664     ?    441.7043+-22.2044       ? might be 1.0297x slower
   arithmetic-simple-order-2                        471.4394+-3.9041     ?    477.3422+-6.6362        ? might be 1.0125x slower
   lz-string                                        316.3170+-6.3424     ?    323.5696+-7.3347        ? might be 1.0229x slower

   <geometric>                                      355.6574+-2.6702     ?    360.0178+-2.9351        ? might be 1.0123x slower

                                                        TipOfTree               DoubleRealUse                                   
Geomean of preferred means:
   <scaled-result>                                   62.0666+-0.1679     ?     62.4051+-0.1801        ? might be 1.0055x slower
Comment 8 WebKit Commit Bot 2015-06-05 22:34:35 PDT
Attachment 254406 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:297:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1430:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1519:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 9 Geoffrey Garen 2015-06-19 12:07:24 PDT
Comment on attachment 254406 [details]
better

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

r=me

Let's hold off on landing this for a bit.

Please check the EFL build.

> Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:289
> +    void tryToSinkRealNumberCheck()

Perhaps it would be better to call this "tryToHoistRealNumberCheck" (and "arithmeticWithHoistedRealNumberCheck"), or "tryToCombineRealNumberChecks". In a way, we are sinking real number checks because we are moving them after the arithmetic. But in a way we are hoisting them, because we are doing them two-for-one through the arithmetic at the head of a chain of nodes. Since it is usually illegal to sink checks, but legal to hoist checks, it might be clearer to call this hoisting.

> Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:320
> +        // Then we might eliminate the IsNumber because the DoubleRep's type checks:

because of

> Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:329
> +        // And then we might try to eliminat the DoubleRep's entirely:

eliminate
Comment 10 Filip Pizlo 2015-06-25 11:25:53 PDT
(In reply to comment #9)
> Comment on attachment 254406 [details]
> better
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=254406&action=review
> 
> r=me
> 
> Let's hold off on landing this for a bit.
> 
> Please check the EFL build.
> 
> > Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:289
> > +    void tryToSinkRealNumberCheck()
> 
> Perhaps it would be better to call this "tryToHoistRealNumberCheck" (and
> "arithmeticWithHoistedRealNumberCheck"), or "tryToCombineRealNumberChecks".
> In a way, we are sinking real number checks because we are moving them after
> the arithmetic. But in a way we are hoisting them, because we are doing them
> two-for-one through the arithmetic at the head of a chain of nodes. Since it
> is usually illegal to sink checks, but legal to hoist checks, it might be
> clearer to call this hoisting.

Agree.  I think that method name is a holdover from when I was trying to do this using sinking rather than hoisting.  I think I need to rename the bug as well.

> 
> > Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:320
> > +        // Then we might eliminate the IsNumber because the DoubleRep's type checks:
> 
> because of
> 
> > Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:329
> > +        // And then we might try to eliminat the DoubleRep's entirely:
> 
> eliminate
Comment 11 Filip Pizlo 2015-06-30 15:04:57 PDT
Created attachment 255861 [details]
patch for landing
Comment 12 WebKit Commit Bot 2015-06-30 15:06:09 PDT
Attachment 255861 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:297:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1430:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1519:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 13 Csaba Osztrogonác 2015-09-14 11:09:13 PDT
Comment on attachment 254406 [details]
better

Cleared Geoffrey Garen's review+ from obsolete attachment 254406 [details] so that this bug does not appear in http://webkit.org/pending-commit.