Bug 145204 - Node::origin should be able to tell you if it's OK to exit
Summary: Node::origin should be able to tell you if it's OK to exit
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on: 145205 148286 148323 148331 148338 148367 148397
Blocks: 148259 148462
  Show dependency treegraph
 
Reported: 2015-05-19 22:49 PDT by Filip Pizlo
Modified: 2015-08-26 12:25 PDT (History)
13 users (show)

See Also:


Attachments
maybe it'll work (11.49 KB, patch)
2015-08-20 15:24 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
builds but crashes on launch (22.83 KB, patch)
2015-08-20 16:04 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
more things (29.63 KB, patch)
2015-08-21 12:35 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
builds again (33.94 KB, patch)
2015-08-21 14:12 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
it passed a test (38.36 KB, patch)
2015-08-21 15:05 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
more things (43.26 KB, patch)
2015-08-22 11:55 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
even more things (59.89 KB, patch)
2015-08-24 19:50 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
passing so many tests (71.35 KB, patch)
2015-08-24 21:37 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
more fixes (78.98 KB, patch)
2015-08-25 12:39 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
passes hundreds of tests! (81.35 KB, patch)
2015-08-25 12:52 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
passes thousands of tests! (86.87 KB, patch)
2015-08-25 14:14 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
might be done (95.67 KB, patch)
2015-08-25 15:40 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
few more fixes (97.10 KB, patch)
2015-08-25 16:49 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
even more stuff (97.55 KB, patch)
2015-08-25 18:39 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (112.86 KB, patch)
2015-08-25 21:32 PDT, Filip Pizlo
ggaren: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2015-05-19 22:49:04 PDT
We often have sequences of operations like this:

a: GetStuff(...)
b: Check(Thing:@a)
c: Call(@a, ...)
d: MovHint(@c, loc42)

Notice that GetStuff, Check, and Call can all exit. But after Call, you can't exit anymore. In particular, MovHint cannot exit.

But, the fact that MovHint cannot exit is not communicated in the IR.  We should change that: a Node's forExit origin is set only when that node can exit.

This means that we can for example immediately see that we cannot hoist an exiting node just above the MovHint. But, we would also see that we could hoist an exiting node above the Call, or above @a or @b.

This would harden the IR for fancier CFG transformations, and make it easier to split blocks and insert control flow.
Comment 1 Filip Pizlo 2015-08-20 15:24:02 PDT
Created attachment 259507 [details]
maybe it'll work
Comment 2 Filip Pizlo 2015-08-20 16:04:09 PDT
Created attachment 259512 [details]
builds but crashes on launch

Off to a good start!
Comment 3 Filip Pizlo 2015-08-21 12:35:57 PDT
Created attachment 259643 [details]
more things
Comment 4 Filip Pizlo 2015-08-21 14:12:11 PDT
Created attachment 259656 [details]
builds again

Validation is catching tons of errors.  Fixing them...
Comment 5 Filip Pizlo 2015-08-21 15:05:37 PDT
Created attachment 259666 [details]
it passed a test
Comment 6 Filip Pizlo 2015-08-22 11:55:43 PDT
Created attachment 259724 [details]
more things
Comment 7 Filip Pizlo 2015-08-24 19:50:10 PDT
Created attachment 259810 [details]
even more things
Comment 8 Filip Pizlo 2015-08-24 21:37:32 PDT
Created attachment 259820 [details]
passing so many tests
Comment 9 Filip Pizlo 2015-08-25 12:39:40 PDT
Created attachment 259871 [details]
more fixes
Comment 10 Filip Pizlo 2015-08-25 12:52:27 PDT
Created attachment 259872 [details]
passes hundreds of tests!
Comment 11 Filip Pizlo 2015-08-25 14:14:57 PDT
Created attachment 259879 [details]
passes thousands of tests!
Comment 12 Filip Pizlo 2015-08-25 15:40:55 PDT
Created attachment 259892 [details]
might be done

This one looks like it might be the winner.  So far, no test failures...
Comment 13 Filip Pizlo 2015-08-25 16:49:54 PDT
Created attachment 259902 [details]
few more fixes
Comment 14 Filip Pizlo 2015-08-25 18:39:06 PDT
Created attachment 259911 [details]
even more stuff

Finding more little corner cases
Comment 15 Filip Pizlo 2015-08-25 19:11:48 PDT
(In reply to comment #14)
> Created attachment 259911 [details]
> even more stuff
> 
> Finding more little corner cases

This just passed debug 64-bit tests.
Comment 16 Filip Pizlo 2015-08-25 20:51:42 PDT
This doesn't appear to hurt performance.


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

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

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

                                                        TipOfTree                   ExitOK                                      
SunSpider:
   3d-cube                                            4.8896+-0.1833     ?      5.3938+-1.5224        ? might be 1.1031x slower
   3d-morph                                           5.3436+-0.3864            5.2766+-0.1187          might be 1.0127x faster
   3d-raytrace                                        5.1812+-0.4144            5.1461+-0.3324        
   access-binary-trees                                1.9736+-0.0592     ?      2.0747+-0.2195        ? might be 1.0512x slower
   access-fannkuch                                    5.3772+-0.3580            5.2728+-0.0767          might be 1.0198x faster
   access-nbody                                       2.4603+-0.0778            2.4450+-0.0610        
   access-nsieve                                      3.0032+-0.0711     ?      3.2390+-0.3367        ? might be 1.0785x slower
   bitops-3bit-bits-in-byte                           1.4457+-0.0521     ?      1.4539+-0.0514        ?
   bitops-bits-in-byte                                3.2582+-0.0774            3.2457+-0.0710        
   bitops-bitwise-and                                 1.9789+-0.0653            1.9486+-0.0345          might be 1.0155x faster
   bitops-nsieve-bits                                 2.9690+-0.0724            2.9212+-0.0396          might be 1.0164x faster
   controlflow-recursive                              2.1756+-0.4144            2.0517+-0.0688          might be 1.0604x faster
   crypto-aes                                         3.8805+-0.2668            3.8577+-0.1680        
   crypto-md5                                         2.4336+-0.1663            2.3236+-0.0925          might be 1.0473x faster
   crypto-sha1                                        2.4112+-0.2668     ?      2.4223+-0.1492        ?
   date-format-tofte                                  6.6462+-0.2358            6.5720+-0.4110          might be 1.0113x faster
   date-format-xparb                                  4.6622+-0.1911     ?      5.0462+-0.4624        ? might be 1.0824x slower
   math-cordic                                        2.7442+-0.1126     ?      2.8068+-0.2761        ? might be 1.0228x slower
   math-partial-sums                                  5.0578+-0.1121            5.0247+-0.0790        
   math-spectral-norm                                 1.9392+-0.3083            1.7838+-0.0606          might be 1.0871x faster
   regexp-dna                                         6.4343+-0.2482     ?      6.7470+-0.3588        ? might be 1.0486x slower
   string-base64                                      4.3145+-0.2144     ?      4.4381+-0.3994        ? might be 1.0286x slower
   string-fasta                                       5.9825+-0.2559            5.8736+-0.2866          might be 1.0185x faster
   string-tagcloud                                    7.9216+-0.1464     ?      8.2128+-0.4057        ? might be 1.0368x slower
   string-unpack-code                                18.3817+-0.6447     ?     18.9768+-0.9092        ? might be 1.0324x slower
   string-validate-input                              4.5040+-0.1386            4.4999+-0.1523        

   <arithmetic>                                       4.5142+-0.0571     ?      4.5790+-0.1200        ? might be 1.0144x slower

                                                        TipOfTree                   ExitOK                                      
LongSpider:
   3d-cube                                          808.3400+-10.0554    ?    818.5363+-10.9203       ? might be 1.0126x slower
   3d-morph                                        1500.2028+-10.8913        1498.3061+-9.2667        
   3d-raytrace                                      603.4610+-6.6692     ?    607.3777+-4.3103        ?
   access-binary-trees                              797.7372+-3.3536     ?    798.3420+-6.0576        ?
   access-fannkuch                                  284.8860+-9.4044     ?    292.6564+-22.8851       ? might be 1.0273x slower
   access-nbody                                     509.1995+-3.6657          506.9030+-2.3976        
   access-nsieve                                    365.0481+-9.2001          363.5181+-10.6793       
   bitops-3bit-bits-in-byte                          38.5849+-0.8184     ?     39.2378+-1.8421        ? might be 1.0169x slower
   bitops-bits-in-byte                               77.5928+-2.3438           76.3056+-1.6621          might be 1.0169x faster
   bitops-nsieve-bits                               407.5053+-7.9268     ?    410.0804+-8.0490        ?
   controlflow-recursive                            427.2923+-7.7161          425.4536+-6.3240        
   crypto-aes                                       568.1852+-11.6548    ?    572.4289+-8.6458        ?
   crypto-md5                                       500.0910+-3.3382          496.8773+-6.3817        
   crypto-sha1                                      641.3495+-13.1620    ?    651.4514+-10.2983       ? might be 1.0158x slower
   date-format-tofte                                494.4534+-5.8857     ?    498.8000+-9.3658        ?
   date-format-xparb                                672.9099+-13.2751    !    754.3044+-9.4436        ! definitely 1.1210x slower
   hash-map                                         149.1402+-1.8986     ?    151.0415+-3.5234        ? might be 1.0127x slower
   math-cordic                                      484.4093+-3.3417          482.2714+-2.2487        
   math-partial-sums                                465.8065+-3.0430     ?    467.7980+-3.3115        ?
   math-spectral-norm                               551.0503+-4.4607          550.0794+-3.5044        
   string-base64                                    351.9412+-5.8611          349.3042+-4.0061        
   string-fasta                                     364.7245+-2.8287     ?    368.3845+-4.7967        ? might be 1.0100x slower
   string-tagcloud                                  178.4104+-1.7611     ?    179.2775+-1.1052        ?

   <geometric>                                      390.8698+-1.4926     !    394.1693+-1.1317        ! definitely 1.0084x slower

                                                        TipOfTree                   ExitOK                                      
V8Spider:
   crypto                                            49.3206+-1.9541           49.0698+-1.1195        
   deltablue                                         89.3190+-5.1352           85.4078+-5.4816          might be 1.0458x faster
   earley-boyer                                      39.1767+-1.1275     ?     40.1682+-1.1828        ? might be 1.0253x slower
   raytrace                                          32.0417+-1.7159           31.9754+-1.6580        
   regexp                                            61.8215+-1.1598     ?     62.0590+-2.2039        ?
   richards                                          65.1760+-1.1590     ?     65.5263+-1.6507        ?
   splay                                             35.7221+-1.6290           34.8504+-1.5896          might be 1.0250x faster

   <geometric>                                       50.0950+-0.5312           49.7906+-0.6245          might be 1.0061x faster

                                                        TipOfTree                   ExitOK                                      
Octane:
   encrypt                                           0.16835+-0.00385    ?     0.17087+-0.00161       ? might be 1.0149x slower
   decrypt                                           3.25838+-0.10900    ?     3.26244+-0.11730       ?
   deltablue                                x2       0.15809+-0.00236          0.15538+-0.00352         might be 1.0175x faster
   earley                                            0.27482+-0.00174    ?     0.27742+-0.00291       ?
   boyer                                             4.14026+-0.04072          4.12559+-0.01394       
   navier-stokes                            x2       4.88253+-0.03590          4.86301+-0.01878       
   raytrace                                 x2       0.99439+-0.03701    ?     0.99524+-0.04065       ?
   richards                                 x2       0.10996+-0.00085          0.10955+-0.00110       
   splay                                    x2       0.33553+-0.00424          0.33212+-0.00392         might be 1.0103x faster
   regexp                                   x2      25.26138+-0.50646         24.87384+-0.37559         might be 1.0156x faster
   pdfjs                                    x2      36.62692+-0.26023         36.59849+-0.27802       
   mandreel                                 x2      44.65932+-0.91312         44.31157+-1.02146       
   gbemu                                    x2      34.22528+-0.42733    ?    34.22709+-0.33630       ?
   closure                                           0.56477+-0.00582    ?     0.56604+-0.00348       ?
   jquery                                            7.13536+-0.02819    ?     7.14109+-0.07167       ?
   box2d                                    x2      10.02969+-0.11983    ?    10.20829+-0.24253       ? might be 1.0178x slower
   zlib                                     x2     390.47519+-7.59867        390.02182+-6.13878       
   typescript                               x2     639.91085+-9.84479    ?   656.27741+-12.23213      ? might be 1.0256x slower

   <geometric>                                       5.58119+-0.01319          5.57958+-0.03397         might be 1.0003x faster

                                                        TipOfTree                   ExitOK                                      
Kraken:
   ai-astar                                          228.318+-12.078     ?     229.190+-8.489         ?
   audio-beat-detection                               50.138+-0.511      ?      51.053+-0.862         ? might be 1.0182x slower
   audio-dft                                          95.221+-0.303      ?      98.130+-3.190         ? might be 1.0305x slower
   audio-fft                                          34.779+-0.359      ?      34.861+-0.268         ?
   audio-oscillator                                   60.515+-0.639             59.657+-1.031           might be 1.0144x faster
   imaging-darkroom                                   61.089+-0.577             60.790+-0.088         
   imaging-desaturate                                 49.408+-0.425      ?      49.700+-0.501         ?
   imaging-gaussian-blur                              84.811+-2.928             84.612+-0.923         
   json-parse-financial                               38.814+-0.795      ?      39.707+-0.906         ? might be 1.0230x slower
   json-stringify-tinderbox                           22.287+-0.710      ?      23.121+-0.806         ? might be 1.0374x slower
   stanford-crypto-aes                                41.077+-1.961      ?      42.103+-0.807         ? might be 1.0250x slower
   stanford-crypto-ccm                                33.910+-0.585      ?      35.390+-1.193         ? might be 1.0436x slower
   stanford-crypto-pbkdf2                             95.025+-1.618      ?      95.365+-1.706         ?
   stanford-crypto-sha256-iterative                   37.845+-1.223             36.653+-0.786           might be 1.0325x faster

   <arithmetic>                                       66.660+-0.821      ?      67.166+-0.588         ? might be 1.0076x slower

                                                        TipOfTree                   ExitOK                                      
JSRegress:
   abc-forward-loop-equal                            30.4698+-1.3190           29.4448+-0.4076          might be 1.0348x faster
   abc-postfix-backward-loop                         30.7947+-1.5435           30.1754+-0.8200          might be 1.0205x faster
   abc-simple-backward-loop                          30.2321+-0.7664     ?     31.4377+-2.9701        ? might be 1.0399x slower
   abc-simple-forward-loop                           29.6490+-0.6774     ?     30.4507+-1.4745        ? might be 1.0270x slower
   abc-skippy-loop                                   21.8389+-0.3638           21.7327+-0.7147        
   abs-boolean                                        2.4155+-0.0657     ?      2.4914+-0.2234        ? might be 1.0314x slower
   adapt-to-double-divide                            16.6795+-0.5643           16.3973+-0.3894          might be 1.0172x faster
   aliased-arguments-getbyval                         1.3232+-0.1773            1.2033+-0.0847          might be 1.0996x faster
   allocate-big-object                                2.4394+-0.1895     ?      2.4978+-0.2010        ? might be 1.0239x slower
   arguments-named-and-reflective                    11.1548+-0.5601           10.9955+-0.5189          might be 1.0145x faster
   arguments-out-of-bounds                            9.3332+-0.2055     ?      9.5661+-0.2637        ? might be 1.0250x slower
   arguments-strict-mode                              9.8496+-0.2187            9.7982+-0.5506        
   arguments                                          8.9028+-0.4698            8.3916+-0.2159          might be 1.0609x faster
   arity-mismatch-inlining                            0.7661+-0.0086     ?      0.7789+-0.0155        ? might be 1.0166x slower
   array-access-polymorphic-structure                 5.8091+-0.1679     ?      5.9122+-0.1920        ? might be 1.0177x slower
   array-nonarray-polymorhpic-access                 24.8020+-0.4813     ?     25.0867+-0.7482        ? might be 1.0115x slower
   array-prototype-every                             77.7476+-1.0371     ?     78.7034+-1.7710        ? might be 1.0123x slower
   array-prototype-forEach                           76.9349+-2.5649           76.5386+-1.7993        
   array-prototype-map                               81.7243+-0.8562     ?     83.5348+-3.5031        ? might be 1.0222x slower
   array-prototype-reduce                            73.1005+-2.9519           71.7309+-1.7091          might be 1.0191x faster
   array-prototype-reduceRight                       71.9795+-1.5904           71.7950+-1.4373        
   array-prototype-some                              77.6536+-1.2321           76.5376+-1.2714          might be 1.0146x faster
   array-splice-contiguous                           20.1143+-0.4437     ?     20.7225+-0.4967        ? might be 1.0302x slower
   array-with-double-add                              3.4363+-0.1568     ?      3.5920+-0.2024        ? might be 1.0453x slower
   array-with-double-increment                        3.0782+-0.1170            3.0622+-0.0839        
   array-with-double-mul-add                          4.1679+-0.1702     ?      4.3237+-0.4513        ? might be 1.0374x slower
   array-with-double-sum                              3.1311+-0.1324     ?      3.1365+-0.0361        ?
   array-with-int32-add-sub                           5.8179+-0.0649            5.7378+-0.0997          might be 1.0140x faster
   array-with-int32-or-double-sum                     3.2452+-0.2143     ?      3.2574+-0.1195        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     25.7573+-0.7892     ?     26.6571+-0.9699        ? might be 1.0349x slower
   ArrayBuffer-DataView-alloc-long-lived             11.6248+-0.3907     ?     11.7550+-0.4453        ? might be 1.0112x slower
   ArrayBuffer-Int32Array-byteOffset                  3.6823+-0.1416            3.5969+-0.1422          might be 1.0238x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     31.3067+-3.5543           30.5074+-0.5660          might be 1.0262x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     20.0981+-0.5562     ?     20.5520+-0.6470        ? might be 1.0226x slower
   ArrayBuffer-Int8Array-alloc-long-lived            12.1869+-0.3097     ?     12.6426+-0.4827        ? might be 1.0374x slower
   ArrayBuffer-Int8Array-alloc                        9.4494+-0.2549     ?      9.6077+-0.3719        ? might be 1.0168x slower
   arrowfunction-call                                10.1312+-0.1011            9.9428+-0.3881          might be 1.0189x faster
   asmjs_bool_bug                                     6.9733+-0.3603            6.8529+-0.0975          might be 1.0176x faster
   assign-custom-setter-polymorphic                   2.3062+-0.0407     ?      2.3190+-0.0818        ?
   assign-custom-setter                               3.1531+-0.0951     ?      3.2816+-0.3032        ? might be 1.0407x slower
   basic-set                                          8.7397+-0.1847            8.7258+-0.6103        
   big-int-mul                                        3.4840+-0.2896     ?      3.5791+-0.1221        ? might be 1.0273x slower
   boolean-test                                       2.9172+-0.1591     ?      2.9885+-0.1551        ? might be 1.0244x slower
   branch-fold                                        3.5517+-0.0631            3.5396+-0.0492        
   branch-on-string-as-boolean                       17.0410+-0.5453     ?     17.6646+-0.9355        ? might be 1.0366x slower
   by-val-generic                                     2.4249+-0.2230            2.2906+-0.0929          might be 1.0587x faster
   call-spread-apply                                 25.9804+-0.5496           25.9255+-0.6542        
   call-spread-call                                  20.9815+-0.3201     ?     21.5199+-0.7379        ? might be 1.0257x slower
   captured-assignments                               0.5308+-0.1792            0.4657+-0.0520          might be 1.1398x faster
   cast-int-to-double                                 5.0031+-0.0756     ?      5.1517+-0.2375        ? might be 1.0297x slower
   cell-argument                                      6.6503+-0.4772            6.4904+-0.6054          might be 1.0246x faster
   cfg-simplify                                       2.6374+-0.0775     ?      2.7147+-0.1287        ? might be 1.0293x slower
   chain-getter-access                                8.4846+-0.3806            8.3207+-0.1807          might be 1.0197x faster
   cmpeq-obj-to-obj-other                            11.9402+-0.5529     ?     12.4177+-1.0157        ? might be 1.0400x slower
   constant-test                                      4.8178+-0.2333            4.7880+-0.0702        
   create-lots-of-functions                           9.7049+-0.4674            9.3466+-0.3243          might be 1.0383x faster
   cse-new-array-buffer                               2.1017+-0.1020     ?      2.2136+-0.0891        ? might be 1.0532x slower
   cse-new-array                                      2.2688+-0.3004            2.2414+-0.0982          might be 1.0122x faster
   DataView-custom-properties                        30.5092+-0.5099     ?     31.9320+-1.3195        ? might be 1.0466x slower
   delay-tear-off-arguments-strictmode               13.7024+-3.1280           12.4542+-0.4523          might be 1.1002x faster
   deltablue-varargs                                161.1699+-3.2985          159.4307+-3.1459          might be 1.0109x faster
   destructuring-arguments                          161.6390+-2.7455          158.9493+-2.4782          might be 1.0169x faster
   destructuring-parameters-overridden-by-function   
                                                      0.5042+-0.1385            0.4852+-0.0871          might be 1.0390x faster
   destructuring-swap                                 4.6210+-0.0642     ?      4.7531+-0.2157        ? might be 1.0286x slower
   direct-arguments-getbyval                          1.2997+-0.1812            1.2055+-0.0507          might be 1.0781x faster
   div-boolean-double                                 5.3129+-0.0854            5.2583+-0.1081          might be 1.0104x faster
   div-boolean                                        8.1765+-0.1337            8.1445+-0.1610        
   double-get-by-val-out-of-bounds                    4.2850+-0.7986            3.9773+-0.1031          might be 1.0774x faster
   double-pollution-getbyval                          8.8892+-0.4766     ?      8.8962+-0.3639        ?
   double-pollution-putbyoffset                       3.8402+-0.2338     ?      3.9023+-0.4059        ? might be 1.0162x slower
   double-real-use                                   24.9604+-2.0559     ?     25.5760+-2.6534        ? might be 1.0247x slower
   double-to-int32-typed-array-no-inline              1.9641+-0.0838     ?      2.1265+-0.2835        ? might be 1.0827x slower
   double-to-int32-typed-array                        1.7376+-0.0488     ?      1.7497+-0.1332        ?
   double-to-uint32-typed-array-no-inline             1.9878+-0.0622     ?      2.0178+-0.0783        ? might be 1.0151x slower
   double-to-uint32-typed-array                       1.8614+-0.1373     ?      1.9076+-0.1080        ? might be 1.0248x slower
   elidable-new-object-dag                           34.3115+-0.9118     ?     34.5193+-1.0677        ?
   elidable-new-object-roflcopter                    32.9223+-1.6101     ?     33.2328+-1.7590        ?
   elidable-new-object-then-call                     31.7666+-0.9912           31.2389+-0.4176          might be 1.0169x faster
   elidable-new-object-tree                          37.4168+-0.8893     ?     37.9925+-1.4968        ? might be 1.0154x slower
   empty-string-plus-int                              4.8125+-0.2719            4.7802+-0.2064        
   emscripten-cube2hash                              27.5885+-1.1768           26.0370+-0.9753          might be 1.0596x faster
   exit-length-on-plain-object                       12.4285+-0.7695           12.3016+-0.7431          might be 1.0103x faster
   external-arguments-getbyval                        1.1988+-0.1032            1.1540+-0.0735          might be 1.0388x faster
   external-arguments-putbyval                        2.2773+-0.3406            2.1579+-0.1198          might be 1.0554x faster
   fixed-typed-array-storage-var-index                1.1438+-0.0286            1.1143+-0.0384          might be 1.0264x faster
   fixed-typed-array-storage                          0.8456+-0.0572            0.8448+-0.0165        
   Float32Array-matrix-mult                           3.9317+-0.1272            3.8333+-0.1836          might be 1.0257x faster
   Float32Array-to-Float64Array-set                  46.2292+-0.4682     ?     46.7229+-0.9425        ? might be 1.0107x slower
   Float64Array-alloc-long-lived                     70.1972+-1.3152           68.7367+-1.3666          might be 1.0212x faster
   Float64Array-to-Int16Array-set                    56.8904+-1.9615     ?     58.7655+-1.0549        ? might be 1.0330x slower
   fold-double-to-int                                11.9571+-0.1793           11.9384+-0.2948        
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     11.1296+-0.8040     ?     12.6097+-1.2274        ? might be 1.1330x slower
   fold-get-by-id-to-multi-get-by-offset             10.6460+-1.4266           10.2802+-0.3830          might be 1.0356x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      7.9280+-1.4227     ?      9.0385+-0.6676        ? might be 1.1401x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.9663+-0.8717            7.8375+-1.7048          might be 1.1440x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.6588+-0.7348            8.2246+-1.0498          might be 1.0528x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      6.0339+-1.5662            4.5663+-0.7756          might be 1.3214x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      8.4769+-1.1738            8.0220+-0.1819          might be 1.0567x faster
   fold-put-by-id-to-multi-put-by-offset              9.8156+-1.5095     ?     10.1333+-1.3423        ? might be 1.0324x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     10.4302+-1.3854            9.7178+-0.5050          might be 1.0733x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.3157+-1.4323     ?     11.5949+-2.4073        ? might be 1.1240x slower
   fold-put-structure                                 5.8551+-0.8126            4.5640+-1.0157          might be 1.2829x faster
   for-of-iterate-array-entries                      11.4443+-0.6031           11.0149+-0.3072          might be 1.0390x faster
   for-of-iterate-array-keys                          3.3741+-0.1590            3.3563+-0.1787        
   for-of-iterate-array-values                        3.4786+-0.2960            3.4550+-0.2379        
   fround                                            17.9725+-0.5887           17.8930+-0.5270        
   ftl-library-inlining-dataview                     55.7602+-0.9962     ?     56.0685+-1.6089        ?
   ftl-library-inlining                             108.9796+-2.3380          108.6687+-1.1867        
   function-call                                      9.9092+-0.2060     ?     10.2310+-0.2590        ? might be 1.0325x slower
   function-dot-apply                                 1.8305+-0.0914     ?      1.9946+-0.1959        ? might be 1.0896x slower
   function-test                                      2.6820+-0.0484     ?      2.6937+-0.0554        ?
   function-with-eval                                98.5656+-1.5687     ?    102.3465+-2.7759        ? might be 1.0384x slower
   gcse-poly-get-less-obvious                        14.3858+-0.3796     ?     14.4665+-0.3622        ?
   gcse-poly-get                                     16.2370+-0.5220     ?     16.3306+-1.0435        ?
   gcse                                               3.8783+-0.2961            3.8205+-0.1295          might be 1.0151x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.5454+-0.0386     ?      2.5957+-0.0617        ? might be 1.0197x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.9804+-0.4146            5.9579+-0.4387        
   get-by-id-chain-from-try-block                     5.4656+-0.1293            5.4190+-0.1319        
   get-by-id-check-structure-elimination              4.3968+-0.1786            4.3503+-0.0728          might be 1.0107x faster
   get-by-id-proto-or-self                           14.5692+-0.4610     ?     15.3856+-0.7658        ? might be 1.0560x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.9245+-0.2379            2.8370+-0.0375          might be 1.0308x faster
   get-by-id-self-or-proto                           14.9092+-0.5470           14.7171+-0.3855          might be 1.0131x faster
   get-by-val-out-of-bounds                           3.7075+-0.0922     ?      3.7876+-0.1064        ? might be 1.0216x slower
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.7619+-0.0473     ?      2.8193+-0.1035        ? might be 1.0208x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      6.0056+-0.0926     ?      6.0322+-0.2165        ?
   get-by-val-with-string-chain-from-try-block   
                                                      5.8793+-0.5130            5.7002+-0.2256          might be 1.0314x faster
   get-by-val-with-string-check-structure-elimination   
                                                      5.3671+-0.5176            5.2140+-0.3133          might be 1.0294x faster
   get-by-val-with-string-proto-or-self              15.2861+-0.6039     ?     15.2912+-0.9452        ?
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.1856+-0.1361     ?      3.2192+-0.2686        ? might be 1.0105x slower
   get-by-val-with-string-self-or-proto              15.0463+-0.6830     ?     15.3380+-0.6312        ? might be 1.0194x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      3.0564+-0.1821            2.9965+-0.0667          might be 1.0200x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.3433+-0.2214           12.2345+-0.0584        
   get-by-val-with-symbol-chain-from-try-block   
                                                      5.5285+-0.1089            5.5176+-0.1024        
   get-by-val-with-symbol-check-structure-elimination   
                                                     11.4343+-1.2463           10.9274+-0.0441          might be 1.0464x faster
   get-by-val-with-symbol-proto-or-self              14.9707+-1.0659     ?     15.1043+-0.3913        ?
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.9099+-0.1038            3.8887+-0.0672        
   get-by-val-with-symbol-self-or-proto              15.1580+-0.4574           15.0433+-0.6596        
   get_callee_monomorphic                             2.1760+-0.0904     ?      2.2046+-0.1925        ? might be 1.0131x slower
   get_callee_polymorphic                             3.4118+-0.2298            3.1697+-0.2157          might be 1.0764x faster
   getter-no-activation                               4.7752+-0.1850            4.6045+-0.0607          might be 1.0371x faster
   getter-prototype                                   8.8917+-0.1554     ?      9.0577+-0.3627        ? might be 1.0187x slower
   getter-richards                                  120.9947+-2.6959     ?    122.5612+-3.6869        ? might be 1.0129x slower
   getter                                             5.6491+-0.5961     ?      5.6795+-0.6068        ?
   global-object-access-with-mutating-structure   
                                                      5.5910+-0.1593            5.5138+-0.0537          might be 1.0140x faster
   global-var-const-infer-fire-from-opt               0.7881+-0.0105     ?      0.8290+-0.0482        ? might be 1.0518x slower
   global-var-const-infer                             0.6005+-0.0320     ?      0.6425+-0.0793        ? might be 1.0699x slower
   hard-overflow-check-equal                         33.5056+-0.7832     ?     34.4111+-1.4211        ? might be 1.0270x slower
   hard-overflow-check                               33.8466+-0.8502           33.1149+-0.7903          might be 1.0221x faster
   HashMap-put-get-iterate-keys                      25.7039+-0.8206     ?     26.4381+-2.0471        ? might be 1.0286x slower
   HashMap-put-get-iterate                           27.0393+-2.0074     ?     28.2359+-0.9442        ? might be 1.0443x slower
   HashMap-string-put-get-iterate                    26.6911+-5.4665           25.6192+-1.4611          might be 1.0418x faster
   hoist-make-rope                                    9.0221+-1.2041     ?      9.1301+-0.9107        ? might be 1.0120x slower
   hoist-poly-check-structure-effectful-loop   
                                                      4.2654+-0.4186            4.0371+-0.0632          might be 1.0565x faster
   hoist-poly-check-structure                         3.2921+-0.2250            3.2795+-0.0878        
   imul-double-only                                   7.2348+-0.2267     ?      7.4163+-0.5965        ? might be 1.0251x slower
   imul-int-only                                      9.0261+-0.4133            8.8375+-0.7348          might be 1.0213x faster
   imul-mixed                                         6.9876+-0.3542     ?      7.0445+-0.1292        ?
   in-four-cases                                     16.9824+-0.5784     ?     17.1726+-0.7333        ? might be 1.0112x slower
   in-one-case-false                                 10.0744+-0.7010     ?     10.7332+-1.1331        ? might be 1.0654x slower
   in-one-case-true                                   9.7698+-0.6614            9.4651+-0.6156          might be 1.0322x faster
   in-two-cases                                       9.7930+-0.6670     ?     10.1045+-0.4704        ? might be 1.0318x slower
   indexed-properties-in-objects                      2.6688+-0.0576     ?      2.6911+-0.0277        ?
   infer-closure-const-then-mov-no-inline             2.8336+-0.0429     ?      2.8508+-0.0434        ?
   infer-closure-const-then-mov                      18.8043+-0.6521     ?     18.9519+-1.0607        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     10.3857+-0.7846            9.9120+-0.2168          might be 1.0478x faster
   infer-closure-const-then-put-to-scope             21.4362+-0.5355           21.3803+-0.5083        
   infer-closure-const-then-reenter-no-inline   
                                                     50.5754+-1.2301     ^     48.1675+-0.8183        ^ definitely 1.0500x faster
   infer-closure-const-then-reenter                  21.3747+-0.7987     ?     22.6381+-0.7574        ? might be 1.0591x slower
   infer-constant-global-property                     3.4296+-0.1847            3.3832+-0.0454          might be 1.0137x faster
   infer-constant-property                            2.5742+-0.0333            2.5725+-0.0697        
   infer-one-time-closure-ten-vars                    7.9633+-0.4493            7.6648+-0.2859          might be 1.0389x faster
   infer-one-time-closure-two-vars                    7.5497+-0.4067            7.2544+-0.1982          might be 1.0407x faster
   infer-one-time-closure                             7.1812+-0.1719     ?      7.4365+-0.4900        ? might be 1.0356x slower
   infer-one-time-deep-closure                       11.0851+-0.6582           10.6424+-0.3333          might be 1.0416x faster
   inline-arguments-access                            3.4545+-0.0762     ?      3.6799+-0.2109        ? might be 1.0652x slower
   inline-arguments-aliased-access                    3.7333+-0.1652            3.4788+-0.0935          might be 1.0731x faster
   inline-arguments-local-escape                      3.8767+-0.3520            3.6222+-0.2397          might be 1.0703x faster
   inline-get-scoped-var                              4.5140+-0.1349     ?      4.5684+-0.1863        ? might be 1.0121x slower
   inlined-put-by-id-transition                      10.4773+-0.6586           10.0448+-0.4030          might be 1.0431x faster
   inlined-put-by-val-with-string-transition   
                                                     73.9001+-3.5650           72.0616+-1.0752          might be 1.0255x faster
   inlined-put-by-val-with-symbol-transition   
                                                     71.1769+-1.7692           70.2564+-1.5650          might be 1.0131x faster
   int-or-other-abs-then-get-by-val                   4.7199+-0.0578     ?      4.7698+-0.1654        ? might be 1.0106x slower
   int-or-other-abs-zero-then-get-by-val             16.4823+-1.0342           16.3928+-0.6534        
   int-or-other-add-then-get-by-val                   3.9773+-0.0306            3.9647+-0.1158        
   int-or-other-add                                   5.0492+-0.6637            4.7840+-0.0671          might be 1.0554x faster
   int-or-other-div-then-get-by-val                   3.8086+-0.0860            3.7864+-0.1292        
   int-or-other-max-then-get-by-val                   3.8836+-0.2637            3.7798+-0.1196          might be 1.0275x faster
   int-or-other-min-then-get-by-val                   3.8796+-0.0630     ?      3.9825+-0.1966        ? might be 1.0265x slower
   int-or-other-mod-then-get-by-val                   3.5254+-0.1028            3.5060+-0.0422        
   int-or-other-mul-then-get-by-val                   3.5375+-0.0816     ?      3.5656+-0.0968        ?
   int-or-other-neg-then-get-by-val                   4.4333+-0.1648            4.3682+-0.0405          might be 1.0149x faster
   int-or-other-neg-zero-then-get-by-val             16.1765+-0.9870           16.1153+-1.0318        
   int-or-other-sub-then-get-by-val                   4.1050+-0.1903            3.9386+-0.0545          might be 1.0422x faster
   int-or-other-sub                                   3.3941+-0.1817            3.3645+-0.0827        
   int-overflow-local                                 4.1480+-0.0582     ?      4.3097+-0.3244        ? might be 1.0390x slower
   Int16Array-alloc-long-lived                       47.5698+-1.2972           46.8081+-1.1704          might be 1.0163x faster
   Int16Array-bubble-sort-with-byteLength            18.3340+-1.2604           17.6042+-0.8244          might be 1.0415x faster
   Int16Array-bubble-sort                            17.6725+-0.7786           17.5391+-0.5440        
   Int16Array-load-int-mul                            1.3820+-0.0182     ?      1.4269+-0.0710        ? might be 1.0325x slower
   Int16Array-to-Int32Array-set                      44.9193+-1.3225           43.6104+-1.2054          might be 1.0300x faster
   Int32Array-alloc-large                            12.0658+-0.4597           11.9804+-0.4320        
   Int32Array-alloc-long-lived                       55.9835+-1.2658     ?     56.0404+-1.1622        ?
   Int32Array-alloc                                   2.9322+-0.3100            2.8357+-0.1538          might be 1.0340x faster
   Int32Array-Int8Array-view-alloc                    6.1364+-0.4244            5.9699+-0.3002          might be 1.0279x faster
   int52-spill                                        4.7604+-0.3340            4.4377+-0.0742          might be 1.0727x faster
   Int8Array-alloc-long-lived                        40.3136+-0.8603     ?     41.0736+-1.5408        ? might be 1.0189x slower
   Int8Array-load-with-byteLength                     3.4319+-0.1359     ?      3.5174+-0.2307        ? might be 1.0249x slower
   Int8Array-load                                     3.3490+-0.0409     ?      3.3685+-0.0738        ?
   integer-divide                                    10.0212+-0.1538            9.9912+-0.0790        
   integer-modulo                                     1.4974+-0.0428     ?      1.5041+-0.0648        ?
   is-boolean-fold-tricky                             3.7498+-0.1190     ?      3.7798+-0.0892        ?
   is-boolean-fold                                    2.5579+-0.0478     !      2.6608+-0.0461        ! definitely 1.0402x slower
   is-function-fold-tricky-internal-function   
                                                      9.7749+-0.1353     ^      9.4858+-0.1223        ^ definitely 1.0305x faster
   is-function-fold-tricky                            4.1228+-0.1525     ?      4.2090+-0.1535        ? might be 1.0209x slower
   is-function-fold                                   2.6451+-0.0892     ?      2.6740+-0.1483        ? might be 1.0109x slower
   is-number-fold-tricky                              4.1336+-0.3067            4.0310+-0.1056          might be 1.0255x faster
   is-number-fold                                     2.5708+-0.0300            2.5573+-0.0446        
   is-object-or-null-fold-functions                   2.6231+-0.0662            2.6041+-0.0254        
   is-object-or-null-fold-less-tricky                 4.2829+-0.5289            4.0423+-0.0492          might be 1.0595x faster
   is-object-or-null-fold-tricky                      5.1393+-0.1241     ?      5.1607+-0.1642        ?
   is-object-or-null-fold                             2.7434+-0.1984            2.6706+-0.1333          might be 1.0273x faster
   is-object-or-null-trickier-function                4.0792+-0.0781     ?      4.1448+-0.1850        ? might be 1.0161x slower
   is-object-or-null-trickier-internal-function   
                                                     10.3335+-0.2572     ?     10.7017+-0.2552        ? might be 1.0356x slower
   is-object-or-null-tricky-function                  4.0414+-0.1037     ?      4.1411+-0.1595        ? might be 1.0247x slower
   is-object-or-null-tricky-internal-function   
                                                      7.8750+-0.4457            7.8108+-0.2041        
   is-string-fold-tricky                              4.0026+-0.1606            3.9656+-0.0256        
   is-string-fold                                     2.5640+-0.0447     ?      2.5833+-0.0787        ?
   is-undefined-fold-tricky                           3.3192+-0.1327     ?      3.4178+-0.2040        ? might be 1.0297x slower
   is-undefined-fold                                  2.6233+-0.0386            2.6038+-0.0374        
   JSONP-negative-0                                   0.2610+-0.0280            0.2534+-0.0129          might be 1.0301x faster
   large-int-captured                                 3.9407+-0.2897            3.6677+-0.0649          might be 1.0744x faster
   large-int-neg                                     13.7328+-0.1887     ?     13.7682+-0.4428        ?
   large-int                                         12.7982+-0.7093           12.2503+-0.1766          might be 1.0447x faster
   load-varargs-elimination                          20.9674+-0.9109           20.8583+-0.7551        
   logical-not-weird-types                            2.7074+-0.0414            2.7073+-0.0563        
   logical-not                                        4.1912+-0.0759            4.0839+-0.0681          might be 1.0263x faster
   lots-of-fields                                     9.7500+-0.3601            9.6051+-0.4588          might be 1.0151x faster
   make-indexed-storage                               2.7122+-0.1669     ?      2.7126+-0.2162        ?
   make-rope-cse                                      3.7447+-0.2867            3.5873+-0.1270          might be 1.0439x faster
   marsaglia-larger-ints                             31.9111+-0.7289           31.8458+-0.9551        
   marsaglia-osr-entry                               21.5986+-0.9519           21.2733+-0.8299          might be 1.0153x faster
   math-with-out-of-bounds-array-values              22.6468+-0.6927           22.2170+-0.9633          might be 1.0193x faster
   max-boolean                                        2.7205+-0.1741     ?      2.7976+-0.1749        ? might be 1.0284x slower
   method-on-number                                  15.5593+-0.2606     ?     16.5821+-1.0081        ? might be 1.0657x slower
   min-boolean                                        2.5738+-0.0328     ?      2.6017+-0.1160        ? might be 1.0108x slower
   minus-boolean-double                               3.2739+-0.6033            3.0879+-0.1073          might be 1.0602x faster
   minus-boolean                                      2.2992+-0.0700            2.2617+-0.0266          might be 1.0166x faster
   misc-strict-eq                                    28.6559+-1.1611     ?     29.2071+-1.1071        ? might be 1.0192x slower
   mod-boolean-double                                11.2738+-0.3854           11.0689+-0.1846          might be 1.0185x faster
   mod-boolean                                        8.2922+-0.1064     ?      8.3664+-0.1548        ?
   mul-boolean-double                                 3.5704+-0.0485     ?      3.7159+-0.1421        ? might be 1.0408x slower
   mul-boolean                                        2.8695+-0.1238            2.7959+-0.0863          might be 1.0263x faster
   neg-boolean                                        3.2227+-0.3741            3.0600+-0.0433          might be 1.0532x faster
   negative-zero-divide                               0.3456+-0.0166            0.3361+-0.0074          might be 1.0282x faster
   negative-zero-modulo                               0.3404+-0.0097     ?      0.3455+-0.0170        ? might be 1.0151x slower
   negative-zero-negate                               0.3423+-0.0361            0.3254+-0.0212          might be 1.0518x faster
   nested-function-parsing                           44.9306+-0.7378     ?     46.5511+-1.0663        ? might be 1.0361x slower
   new-array-buffer-dead                             88.3361+-1.0779           87.7802+-0.8938        
   new-array-buffer-push                              6.1810+-0.4946            6.0363+-0.4000          might be 1.0240x faster
   new-array-dead                                    15.2165+-0.8713     ?     15.3443+-1.0570        ?
   new-array-push                                     3.4165+-0.1588     ?      3.5086+-0.1664        ? might be 1.0270x slower
   no-inline-constructor                             30.9124+-0.4919           30.8752+-0.6936        
   number-test                                        2.8707+-0.0759     ?      2.8939+-0.1378        ?
   object-closure-call                                4.9714+-0.3019            4.7649+-0.1434          might be 1.0433x faster
   object-get-own-property-symbols-on-large-array   
                                                      4.1204+-0.2174     ?      4.2705+-0.1884        ? might be 1.0364x slower
   object-test                                        2.5985+-0.0356     ?      2.7511+-0.2178        ? might be 1.0587x slower
   obvious-sink-pathology-taken                      99.6016+-1.1994           99.5434+-0.9208        
   obvious-sink-pathology                            93.8476+-0.5055           93.4044+-0.9585        
   obviously-elidable-new-object                     29.3661+-1.0342           28.3551+-0.4303          might be 1.0357x faster
   plus-boolean-arith                                 2.4301+-0.1188            2.3824+-0.0514          might be 1.0200x faster
   plus-boolean-double                                3.1951+-0.1942            3.0863+-0.0408          might be 1.0353x faster
   plus-boolean                                       2.6107+-0.1783            2.4896+-0.0514          might be 1.0486x faster
   poly-chain-access-different-prototypes-simple   
                                                      3.2236+-0.0806     ?      3.2630+-0.1264        ? might be 1.0122x slower
   poly-chain-access-different-prototypes             2.9226+-0.1541            2.8943+-0.1205        
   poly-chain-access-simpler                          3.2139+-0.0644     ?      3.3181+-0.1222        ? might be 1.0324x slower
   poly-chain-access                                  3.2621+-0.0576            3.2506+-0.0699        
   poly-stricteq                                     48.3000+-1.3243           48.2075+-0.8781        
   polymorphic-array-call                             1.2656+-0.2995     ?      1.3396+-0.2290        ? might be 1.0585x slower
   polymorphic-get-by-id                              2.8593+-0.1257            2.8014+-0.0650          might be 1.0207x faster
   polymorphic-put-by-id                             25.1350+-0.9576     ?     25.4116+-1.1636        ? might be 1.0110x slower
   polymorphic-put-by-val-with-string                25.6296+-1.0726           25.2155+-0.3187          might be 1.0164x faster
   polymorphic-put-by-val-with-symbol                26.1808+-1.0395     ?     26.4073+-1.4693        ?
   polymorphic-structure                             13.1381+-0.3707     ?     13.6190+-0.8812        ? might be 1.0366x slower
   polyvariant-monomorphic-get-by-id                  6.2665+-0.5253     ?      6.7006+-1.1876        ? might be 1.0693x slower
   proto-getter-access                                8.3124+-0.2412            8.2133+-0.2085          might be 1.0121x faster
   prototype-access-with-mutating-prototype           5.6769+-0.3800            5.5255+-0.2268          might be 1.0274x faster
   put-by-id-replace-and-transition                   8.1458+-0.5264     ?      8.2584+-1.1034        ? might be 1.0138x slower
   put-by-id-slightly-polymorphic                     2.6482+-0.1435            2.6470+-0.1109        
   put-by-id                                          9.7928+-0.3883            9.6982+-0.5361        
   put-by-val-direct                                  0.3845+-0.0618     ?      0.3982+-0.1146        ? might be 1.0356x slower
   put-by-val-large-index-blank-indexing-type   
                                                      5.3746+-0.3148            5.0473+-0.2698          might be 1.0649x faster
   put-by-val-machine-int                             2.2857+-0.1080     ?      2.3072+-0.1142        ?
   put-by-val-with-string-replace-and-transition   
                                                     10.2638+-0.5097           10.1181+-0.4648          might be 1.0144x faster
   put-by-val-with-string-slightly-polymorphic   
                                                      2.8301+-0.0430     ?      2.8444+-0.1028        ?
   put-by-val-with-string                            10.2091+-0.5318     ?     10.4694+-0.8198        ? might be 1.0255x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     11.5507+-0.2532     ?     11.5885+-0.6499        ?
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.2574+-0.2940            3.0965+-0.0464          might be 1.0520x faster
   put-by-val-with-symbol                            10.8313+-0.7692           10.4110+-0.3822          might be 1.0404x faster
   rare-osr-exit-on-local                            14.8477+-0.4697           14.5754+-0.5404          might be 1.0187x faster
   register-pressure-from-osr                        16.7494+-0.4680     ?     16.8634+-0.6414        ?
   repeat-multi-get-by-offset                        20.8780+-0.5619     ?     21.4251+-0.9321        ? might be 1.0262x slower
   setter-prototype                                   7.5159+-0.0430     !      7.9371+-0.2759        ! definitely 1.0560x slower
   setter                                             5.5669+-0.6042            5.2563+-0.3300          might be 1.0591x faster
   simple-activation-demo                            24.5015+-0.6021     ?     24.7694+-1.1143        ? might be 1.0109x slower
   simple-getter-access                              10.7201+-0.2322           10.6562+-0.3582        
   simple-poly-call-nested                            8.8230+-0.4501            8.7064+-0.7425          might be 1.0134x faster
   simple-poly-call                                   1.1693+-0.0854     ?      1.2064+-0.0768        ? might be 1.0318x slower
   sin-boolean                                       18.5954+-1.3679     ?     20.4302+-1.8377        ? might be 1.0987x slower
   singleton-scope                                   52.6837+-0.8403     ?     52.9659+-0.7674        ?
   sink-function                                     10.4165+-0.6144           10.2003+-0.3316          might be 1.0212x faster
   sink-huge-activation                              16.7293+-0.8411           16.6853+-0.6841        
   sinkable-new-object-dag                           55.0483+-1.1016           54.9665+-1.1426        
   sinkable-new-object-taken                         44.2879+-1.8126     ?     44.3845+-0.4512        ?
   sinkable-new-object                               30.3952+-0.9326           30.0963+-0.5969        
   slow-array-profile-convergence                     2.3841+-0.0836            2.3392+-0.0950          might be 1.0192x faster
   slow-convergence                                   2.2537+-0.0697     ?      2.2898+-0.1066        ? might be 1.0160x slower
   slow-ternaries                                    17.7145+-0.9793           17.3070+-0.4795          might be 1.0235x faster
   sorting-benchmark                                 16.7590+-0.9076     ?     16.8106+-0.4376        ?
   sparse-conditional                                 1.0890+-0.0247     ?      1.0944+-0.0386        ?
   splice-to-remove                                  12.0253+-0.1314     ?     12.4504+-0.5867        ? might be 1.0354x slower
   string-char-code-at                               13.9816+-0.3134     ?     14.1931+-0.2427        ? might be 1.0151x slower
   string-concat-object                               2.1389+-0.1075            2.0664+-0.0926          might be 1.0351x faster
   string-concat-pair-object                          2.3579+-0.5598            2.2564+-0.2565          might be 1.0450x faster
   string-concat-pair-simple                          9.0254+-0.2005     ?      9.2311+-0.2519        ? might be 1.0228x slower
   string-concat-simple                               9.4737+-0.5766            9.2212+-0.2468          might be 1.0274x faster
   string-cons-repeat                                 6.4663+-0.1881     ?      6.5348+-0.2104        ? might be 1.0106x slower
   string-cons-tower                                  6.5168+-0.1667     ?      6.9007+-0.5651        ? might be 1.0589x slower
   string-equality                                   16.4184+-0.7229     ?     16.5308+-1.2035        ?
   string-get-by-val-big-char                         6.7213+-0.4182            6.4678+-0.1167          might be 1.0392x faster
   string-get-by-val-out-of-bounds-insane             3.0568+-0.0694            2.9987+-0.0349          might be 1.0194x faster
   string-get-by-val-out-of-bounds                    4.2462+-0.7582            4.0337+-0.1724          might be 1.0527x faster
   string-get-by-val                                  2.8815+-0.1007     ?      2.9979+-0.3570        ? might be 1.0404x slower
   string-hash                                        1.7902+-0.0504     ?      1.7964+-0.0533        ?
   string-long-ident-equality                        14.9160+-0.4421           14.6138+-0.1160          might be 1.0207x faster
   string-out-of-bounds                              10.4899+-0.7788           10.2904+-0.3766          might be 1.0194x faster
   string-repeat-arith                               27.2992+-1.0994           27.2383+-0.6558        
   string-sub                                        54.0286+-2.0908           53.3387+-1.4644          might be 1.0129x faster
   string-test                                        2.7499+-0.0473     ?      2.8112+-0.1049        ? might be 1.0223x slower
   string-var-equality                               29.1468+-0.8969     ?     30.0219+-1.3981        ? might be 1.0300x slower
   structure-hoist-over-transitions                   2.3252+-0.1309     ?      2.3728+-0.1250        ? might be 1.0205x slower
   substring-concat-weird                            35.6656+-1.0478     ?     36.2475+-0.8726        ? might be 1.0163x slower
   substring-concat                                  39.3784+-0.5236     ?     40.0609+-1.5303        ? might be 1.0173x slower
   substring                                         46.2250+-2.2693           45.4114+-1.0586          might be 1.0179x faster
   switch-char-constant                               2.6574+-0.1299            2.5897+-0.0386          might be 1.0262x faster
   switch-char                                        6.0310+-0.9133     ?      6.0753+-1.0285        ?
   switch-constant                                    8.8509+-1.2189            7.8828+-0.5771          might be 1.1228x faster
   switch-string-basic-big-var                       13.5812+-0.1936     ?     14.3868+-0.8297        ? might be 1.0593x slower
   switch-string-basic-big                           13.8801+-0.2138     ?     14.2633+-0.5168        ? might be 1.0276x slower
   switch-string-basic-var                           12.9577+-0.3684           12.8540+-0.2716        
   switch-string-basic                               12.5769+-0.4312           12.3060+-0.2304          might be 1.0220x faster
   switch-string-big-length-tower-var                18.2888+-0.7924           17.6908+-0.4393          might be 1.0338x faster
   switch-string-length-tower-var                    13.0086+-0.2104     ?     13.2680+-0.7202        ? might be 1.0199x slower
   switch-string-length-tower                        12.0233+-0.6443           11.7844+-0.3766          might be 1.0203x faster
   switch-string-short                               12.0448+-0.5004           11.6650+-0.1304          might be 1.0326x faster
   switch                                            11.7311+-0.6936           11.0530+-0.7046          might be 1.0614x faster
   tear-off-arguments-simple                          2.8398+-0.1295     ?      3.0720+-0.3767        ? might be 1.0818x slower
   tear-off-arguments                                 3.8645+-0.0922     ?      4.0838+-0.2921        ? might be 1.0568x slower
   temporal-structure                                12.0540+-0.2402           12.0521+-0.3287        
   to-int32-boolean                                  12.8553+-0.4350           12.7300+-0.1994        
   try-catch-get-by-val-cloned-arguments             14.1943+-0.5596     ?     14.2414+-0.5574        ?
   try-catch-get-by-val-direct-arguments              6.2373+-0.3026            6.1438+-0.1203          might be 1.0152x faster
   try-catch-get-by-val-scoped-arguments              7.6895+-0.4477     ?      7.8871+-0.6416        ? might be 1.0257x slower
   typed-array-get-set-by-val-profiling              27.3549+-0.7046     ?     27.6141+-0.9083        ?
   undefined-property-access                        225.5249+-3.5263          224.6792+-2.0526        
   undefined-test                                     2.9044+-0.1212     ?      2.9174+-0.0855        ?
   unprofiled-licm                                   13.9976+-0.5937     ?     14.0229+-0.5720        ?
   varargs-call                                      12.6203+-0.4928     ?     12.7869+-0.3257        ? might be 1.0132x slower
   varargs-construct-inline                          22.2998+-0.9935     ?     22.3860+-0.7416        ?
   varargs-construct                                 19.8271+-0.5889     ?     20.0320+-1.2403        ? might be 1.0103x slower
   varargs-inline                                     8.2479+-0.2024     ?      8.3212+-0.3149        ?
   varargs-strict-mode                                8.8158+-0.2282     ?      8.8771+-0.3184        ?
   varargs                                            8.5624+-0.1039     ?      8.6385+-0.1630        ?
   weird-inlining-const-prop                          2.7343+-0.3340            2.2725+-0.2129          might be 1.2032x faster

   <geometric>                                        7.8372+-0.0285            7.8117+-0.0282          might be 1.0033x faster

                                                        TipOfTree                   ExitOK                                      
AsmBench:
   bigfib.cpp                                       454.0028+-8.3266          452.0775+-6.0062        
   cray.c                                           400.4227+-3.5026     ?    400.6133+-4.2057        ?
   dry.c                                            428.9613+-3.2866     ?    429.8392+-2.2834        ?
   FloatMM.c                                        689.2677+-3.4319          686.2321+-3.9377        
   gcc-loops.cpp                                   3441.9628+-18.9995        3436.0395+-8.5734        
   n-body.c                                         834.4776+-6.5368          827.7265+-3.2103        
   Quicksort.c                                      408.5826+-6.9697     ?    408.9957+-5.0643        ?
   stepanov_container.cpp                          3614.3223+-23.1930    ?   3748.3386+-230.8086      ? might be 1.0371x slower
   Towers.c                                         235.1770+-3.6958          233.3141+-2.5405        

   <geometric>                                      722.4239+-4.5320     ?    723.3850+-4.4013        ? might be 1.0013x slower

                                                        TipOfTree                   ExitOK                                      
CompressionBench:
   huffman                                           60.2182+-1.6767           59.3228+-1.0903          might be 1.0151x faster
   arithmetic-simple                                273.7364+-2.9503          272.2260+-2.8617        
   arithmetic-precise                               242.4689+-2.5506     ?    243.2534+-2.7532        ?
   arithmetic-complex-precise                       247.6703+-3.4592          245.3638+-2.5876        
   arithmetic-precise-order-0                       285.3087+-3.6112          283.3357+-3.9428        
   arithmetic-precise-order-1                       307.5774+-5.4324          306.8859+-3.5278        
   arithmetic-precise-order-2                       357.5638+-2.4043          356.6668+-3.4604        
   arithmetic-simple-order-1                        329.2629+-3.4367     ?    331.5043+-5.6785        ?
   arithmetic-simple-order-2                        387.6920+-6.6456     ?    387.7330+-3.7552        ?
   lz-string                                        320.2186+-5.2014          319.1564+-9.1053        

   <geometric>                                      257.2295+-1.0014          256.3367+-0.7973          might be 1.0035x faster

                                                        TipOfTree                   ExitOK                                      
Geomean of preferred means:
   <scaled-result>                                   51.2886+-0.1309     ?     51.4055+-0.1627        ? might be 1.0023x slower
Comment 17 Filip Pizlo 2015-08-25 21:32:18 PDT
Created attachment 259919 [details]
the patch
Comment 18 WebKit Commit Bot 2015-08-25 21:35:33 PDT
Attachment 259919 [details] did not pass style-queue:


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


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 19 Geoffrey Garen 2015-08-25 22:59:07 PDT
Comment on attachment 259919 [details]
the patch

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

r=me

> Source/JavaScriptCore/dfg/DFGClobbersExitState.h:37
> +// longer exit to this node's exit origin.

...an observable effect, which means that we can no longer exit to this node's exit origin, since doing so would perform the effect a second time.
Comment 20 Filip Pizlo 2015-08-26 12:25:14 PDT
Landed in http://trac.webkit.org/changeset/188979