Bug 149586 - GC copy phase spans too many files
Summary: GC copy phase spans too many files
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: Other
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on:
Blocks: 149432
  Show dependency treegraph
 
Reported: 2015-09-27 10:46 PDT by Filip Pizlo
Modified: 2015-09-29 09:39 PDT (History)
12 users (show)

See Also:


Attachments
the patch (22.25 KB, patch)
2015-09-27 10:53 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (21.00 KB, patch)
2015-09-28 23:53 PDT, Filip Pizlo
kling: 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-09-27 10:46:55 PDT
Current the GC copy phase has some code in HeapInlines.h that gets included into every file in WebKit, some code in Heap.cpp, some code in CopyVisitor.cpp, and some in CopyVisitorInlines.h.  Also, CopyVisitor has this peculiar idiom where you always use it by first instantiating it, then calling an init method, then doing things, then calling a tear-down method, and then calling some malloc method, and then destructing the CopyVisitor.  That's too complicated.

Part of the problem is that we have a fairly clever sharding work distribution algorithm that uses Heap as the place where we hold shared state.  We don't really have to do that.  Because we now use a lambda-based parallelism API (ParallelHelperPool), we could just have the state on the stack, and have all of the functionality in one place.
Comment 1 Filip Pizlo 2015-09-27 10:53:18 PDT
Created attachment 261989 [details]
the patch

Not yet ready for review since I need to run more tests.
Comment 2 WebKit Commit Bot 2015-09-27 10:56:26 PDT
Attachment 261989 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/Heap.cpp:641:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:645:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/CopyVisitor.h:40:  The parameter name "heap" adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 3 Filip Pizlo 2015-09-28 23:40:38 PDT
The last version of the patch slows down Octane/splay.  I'll investigate...


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 (r190302)
"ParallelVectorIterator" at /Volumes/Data/quartary/OpenSource/WebKitBuild/Release/jsc (r190302)

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           ParallelVectorIterator                              
SunSpider:
   3d-cube                                            4.7198+-0.3629            4.4973+-0.0583          might be 1.0495x faster
   3d-morph                                           5.3687+-0.3406            5.2551+-0.2312          might be 1.0216x faster
   3d-raytrace                                        5.4230+-0.2569            5.1507+-0.1708          might be 1.0529x faster
   access-binary-trees                                2.1505+-0.0483     ?      2.1868+-0.1030        ? might be 1.0169x slower
   access-fannkuch                                    5.4629+-0.0694     ?      5.4673+-0.0533        ?
   access-nbody                                       2.6101+-0.2702            2.5481+-0.1092          might be 1.0243x faster
   access-nsieve                                      3.0956+-0.1562            3.0051+-0.0381          might be 1.0301x faster
   bitops-3bit-bits-in-byte                           1.1445+-0.0382     ?      1.2137+-0.0976        ? might be 1.0605x slower
   bitops-bits-in-byte                                3.2238+-0.0844            3.2224+-0.0849        
   bitops-bitwise-and                                 2.0033+-0.0710     ?      2.1066+-0.2302        ? might be 1.0516x slower
   bitops-nsieve-bits                                 2.9574+-0.0439     ?      2.9666+-0.1764        ?
   controlflow-recursive                              2.3386+-0.0750     ?      2.4635+-0.2343        ? might be 1.0534x slower
   crypto-aes                                         3.8857+-0.1144     ?      4.0352+-0.2337        ? might be 1.0385x slower
   crypto-md5                                         2.5060+-0.0917     ?      2.5598+-0.1586        ? might be 1.0214x slower
   crypto-sha1                                        2.4192+-0.1554     ?      2.5396+-0.3143        ? might be 1.0498x slower
   date-format-tofte                                  6.5307+-0.1700     ?      6.7145+-0.2908        ? might be 1.0281x slower
   date-format-xparb                                  4.8283+-0.2585            4.6191+-0.1358          might be 1.0453x faster
   math-cordic                                        2.8214+-0.1112            2.7889+-0.1126          might be 1.0117x faster
   math-partial-sums                                  4.7613+-0.1672            4.6622+-0.0444          might be 1.0213x faster
   math-spectral-norm                                 1.9011+-0.0435     ?      1.9155+-0.0357        ?
   regexp-dna                                         5.9851+-0.1017            5.9785+-0.0597        
   string-base64                                      4.3509+-0.0973     ?      4.5108+-0.2447        ? might be 1.0368x slower
   string-fasta                                       5.8706+-0.0838     ?      5.8842+-0.3663        ?
   string-tagcloud                                    7.9868+-0.1685            7.9612+-0.1245        
   string-unpack-code                                18.5650+-0.9484     ?     18.8600+-0.7487        ? might be 1.0159x slower
   string-validate-input                              4.5596+-0.1195            4.4879+-0.0511          might be 1.0160x faster

   <arithmetic>                                       4.5181+-0.0335     ?      4.5231+-0.0661        ? might be 1.0011x slower

                                                        TipOfTree           ParallelVectorIterator                              
LongSpider:
   3d-cube                                          806.5286+-10.9772         800.6581+-7.9082        
   3d-morph                                        1488.3861+-8.4161         1486.2430+-4.5600        
   3d-raytrace                                      593.6773+-4.5456     ?    596.5057+-6.3147        ?
   access-binary-trees                              788.3520+-4.1456     ?    791.7157+-4.7713        ?
   access-fannkuch                                  273.2931+-3.8264     ?    273.9457+-3.5773        ?
   access-nbody                                     507.1519+-3.9987          507.0606+-2.5119        
   access-nsieve                                    361.1972+-9.5092     ?    361.5741+-8.9620        ?
   bitops-3bit-bits-in-byte                          35.1540+-1.3661           34.1175+-0.6946          might be 1.0304x faster
   bitops-bits-in-byte                               75.4170+-1.8178           74.7498+-2.4062        
   bitops-nsieve-bits                               402.8913+-7.0871          402.6664+-4.2827        
   controlflow-recursive                            424.9516+-3.5355          424.2087+-2.7112        
   crypto-aes                                       558.5502+-12.2380         557.5879+-3.6967        
   crypto-md5                                       431.8592+-3.1391     ?    432.3088+-2.3650        ?
   crypto-sha1                                      624.1000+-10.7727         615.5404+-2.8211          might be 1.0139x faster
   date-format-tofte                                501.8983+-9.4399          495.6991+-2.4300          might be 1.0125x faster
   date-format-xparb                                659.6085+-12.7646         656.1720+-5.6042        
   hash-map                                         148.3479+-1.6938          147.7510+-1.2404        
   math-cordic                                      475.0909+-1.0715          474.5952+-1.5610        
   math-partial-sums                                456.0489+-4.0120     ?    456.6125+-3.1241        ?
   math-spectral-norm                               548.1241+-2.7451     ?    548.1714+-4.4251        ?
   string-base64                                    357.0710+-3.8468     ?    357.1678+-4.1928        ?
   string-fasta                                     365.1264+-2.9431     ?    365.6739+-2.8872        ?
   string-tagcloud                                  177.1620+-2.9066          176.5926+-3.8678        

   <geometric>                                      382.9365+-0.9874          381.7101+-1.3184          might be 1.0032x faster

                                                        TipOfTree           ParallelVectorIterator                              
V8Spider:
   crypto                                            48.3882+-0.8375     ?     48.4755+-0.9997        ?
   deltablue                                         76.9487+-1.1511     ?     79.1720+-3.4619        ? might be 1.0289x slower
   earley-boyer                                      41.9492+-1.4348     ?     42.2403+-1.0588        ?
   raytrace                                          31.9180+-0.5899           30.3493+-1.6250          might be 1.0517x faster
   regexp                                            62.8758+-2.0589           62.4668+-1.1517        
   richards                                          54.0979+-0.8149     ?     56.0048+-2.4996        ? might be 1.0352x slower
   splay                                             35.9219+-1.2276           35.9107+-0.6539        

   <geometric>                                       48.2420+-0.5888     ?     48.3300+-0.6411        ? might be 1.0018x slower

                                                        TipOfTree           ParallelVectorIterator                              
Octane:
   encrypt                                           0.16391+-0.00251          0.16341+-0.00199       
   decrypt                                           2.90447+-0.01149          2.90354+-0.01478       
   deltablue                                x2       0.14223+-0.00544    ?     0.14566+-0.01236       ? might be 1.0241x slower
   earley                                            0.30285+-0.00538          0.30252+-0.00506       
   boyer                                             4.31675+-0.06716          4.31633+-0.03843       
   navier-stokes                            x2       4.81196+-0.01963    ?     4.82167+-0.01869       ?
   raytrace                                 x2       0.85262+-0.00451    ?     0.85832+-0.00534       ?
   richards                                 x2       0.08824+-0.00081          0.08802+-0.00068       
   splay                                    x2       0.33032+-0.00191    !     0.34865+-0.00428       ! definitely 1.0555x slower
   regexp                                   x2      24.07513+-0.22880         23.88162+-0.12267       
   pdfjs                                    x2      36.95176+-0.46881    ?    37.58974+-0.52199       ? might be 1.0173x slower
   mandreel                                 x2      42.32431+-0.34138    ?    42.62847+-0.37430       ?
   gbemu                                    x2      31.41305+-0.25535    ?    33.14016+-3.38958       ? might be 1.0550x slower
   closure                                           0.57352+-0.00448    ?     0.57630+-0.00403       ?
   jquery                                            7.23065+-0.04616    ?     7.25613+-0.07282       ?
   box2d                                    x2       9.13888+-0.08414          9.05755+-0.06801       
   zlib                                     x2     383.49586+-6.18816    ?   386.36110+-4.91962       ?
   typescript                               x2     659.80699+-9.13697    ?   676.34664+-9.46067       ? might be 1.0251x slower

   <geometric>                                       5.30716+-0.01964    ?     5.36851+-0.06267       ? might be 1.0116x slower

                                                        TipOfTree           ParallelVectorIterator                              
Kraken:
   ai-astar                                          127.952+-3.161            127.569+-2.103         
   audio-beat-detection                               49.759+-0.161      ?      50.196+-0.564         ?
   audio-dft                                          96.581+-1.775      ?      96.905+-2.104         ?
   audio-fft                                          36.030+-2.434             34.911+-0.131           might be 1.0320x faster
   audio-oscillator                                   56.216+-0.795             55.926+-0.668         
   imaging-darkroom                                   60.720+-1.773             60.051+-0.969           might be 1.0111x faster
   imaging-desaturate                                 47.834+-0.177      ?      48.658+-2.248         ? might be 1.0172x slower
   imaging-gaussian-blur                              87.420+-4.314             84.698+-0.267           might be 1.0321x faster
   json-parse-financial                               39.951+-0.940             39.531+-0.815           might be 1.0106x faster
   json-stringify-tinderbox                           22.896+-0.506             22.050+-0.490           might be 1.0384x faster
   stanford-crypto-aes                                41.904+-3.078             40.575+-1.016           might be 1.0327x faster
   stanford-crypto-ccm                                36.384+-0.916      ?      36.593+-0.820         ?
   stanford-crypto-pbkdf2                             94.205+-0.779      ?      94.322+-1.702         ?
   stanford-crypto-sha256-iterative                   36.736+-1.131             36.162+-0.882           might be 1.0159x faster

   <arithmetic>                                       59.613+-0.475             59.153+-0.397           might be 1.0078x faster

                                                        TipOfTree           ParallelVectorIterator                              
JSRegress:
   abc-forward-loop-equal                            29.6770+-0.7162           29.4969+-0.6214        
   abc-postfix-backward-loop                         29.8435+-0.8621           29.4561+-0.4044          might be 1.0132x faster
   abc-simple-backward-loop                          29.0502+-0.4882           28.9692+-0.4055        
   abc-simple-forward-loop                           29.4918+-0.8450           28.8855+-0.4949          might be 1.0210x faster
   abc-skippy-loop                                   21.0804+-0.3147     ?     21.1904+-0.5192        ?
   abs-boolean                                        2.4701+-0.0704            2.4453+-0.0214          might be 1.0102x faster
   adapt-to-double-divide                            16.5219+-0.2640           16.3653+-0.3598        
   aliased-arguments-getbyval                         1.2864+-0.1142            1.1804+-0.0439          might be 1.0899x faster
   allocate-big-object                                2.5823+-0.0736            2.4933+-0.1815          might be 1.0357x faster
   arguments-named-and-reflective                    10.8886+-0.4118           10.8502+-0.8668        
   arguments-out-of-bounds                            9.7872+-0.8404            9.1480+-0.3854          might be 1.0699x faster
   arguments-strict-mode                              9.8865+-0.4604            9.6050+-0.7045          might be 1.0293x faster
   arguments                                          8.3978+-0.1832            8.3838+-0.2936        
   arity-mismatch-inlining                            0.8483+-0.0317     ?      0.8514+-0.0148        ?
   array-access-polymorphic-structure                 7.1277+-0.2311            7.0051+-0.1500          might be 1.0175x faster
   array-nonarray-polymorhpic-access                 23.5317+-0.2949           23.2759+-0.4260          might be 1.0110x faster
   array-prototype-every                             76.5602+-1.9625           74.3754+-1.1216          might be 1.0294x faster
   array-prototype-forEach                           73.8797+-1.1221           73.3880+-1.0849        
   array-prototype-map                               84.4649+-5.8481           81.8962+-3.2133          might be 1.0314x faster
   array-prototype-reduce                            72.2394+-1.6381           70.4252+-0.9117          might be 1.0258x faster
   array-prototype-reduceRight                       72.2816+-2.0628           70.2383+-0.8014          might be 1.0291x faster
   array-prototype-some                              74.5935+-0.9776     ?     75.8073+-1.4885        ? might be 1.0163x slower
   array-splice-contiguous                           19.9602+-0.7089     ?     21.7476+-1.7305        ? might be 1.0895x slower
   array-with-double-add                              3.4406+-0.0702            3.3806+-0.0753          might be 1.0178x faster
   array-with-double-increment                        3.0778+-0.0572     ?      3.1352+-0.1672        ? might be 1.0186x slower
   array-with-double-mul-add                          4.3679+-0.4207            4.3239+-0.2821          might be 1.0102x faster
   array-with-double-sum                              3.2352+-0.0837     ?      3.2458+-0.1447        ?
   array-with-int32-add-sub                           5.6926+-0.1260     ?      5.7109+-0.2785        ?
   array-with-int32-or-double-sum                     3.2786+-0.0803            3.2245+-0.0167          might be 1.0168x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     25.8411+-1.1773     ?     26.2293+-1.5782        ? might be 1.0150x slower
   ArrayBuffer-DataView-alloc-long-lived             11.7835+-0.2069     ?     11.9142+-0.4903        ? might be 1.0111x slower
   ArrayBuffer-Int32Array-byteOffset                  3.5314+-0.0934            3.4839+-0.0423          might be 1.0136x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     26.3897+-1.0839           26.1191+-0.8353          might be 1.0104x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     19.3875+-0.4117     ?     19.5706+-0.7506        ?
   ArrayBuffer-Int8Array-alloc-long-lived            11.1662+-0.3716     ?     11.4241+-0.6068        ? might be 1.0231x slower
   ArrayBuffer-Int8Array-alloc                        9.3915+-0.1825     ?      9.6046+-0.4490        ? might be 1.0227x slower
   arrowfunction-call                                11.0184+-0.2956           10.8916+-0.1434          might be 1.0116x faster
   asmjs_bool_bug                                     7.4454+-0.1004     ?      7.4710+-0.1434        ?
   assign-custom-setter-polymorphic                   2.4972+-0.0503     ?      2.5307+-0.0817        ? might be 1.0134x slower
   assign-custom-setter                               3.4521+-0.0681     ?      3.4799+-0.0731        ?
   basic-set                                          7.1288+-0.2272     ?      7.2008+-0.2775        ? might be 1.0101x slower
   big-int-mul                                        3.5892+-0.1656            3.5240+-0.1795          might be 1.0185x faster
   boolean-test                                       3.0974+-0.1035     ?      3.1780+-0.2850        ? might be 1.0260x slower
   branch-fold                                        3.6129+-0.0702     ?      3.6708+-0.1759        ? might be 1.0160x slower
   branch-on-string-as-boolean                       16.8345+-0.6243     ?     16.9973+-0.5976        ?
   by-val-generic                                     2.5074+-0.2997            2.4803+-0.1628          might be 1.0109x faster
   call-spread-apply                                 27.4395+-1.6954     ?     27.6671+-0.6994        ?
   call-spread-call                                  21.2433+-0.9638     ?     21.5852+-0.5724        ? might be 1.0161x slower
   captured-assignments                               0.4233+-0.0286     ?      0.4251+-0.0296        ?
   cast-int-to-double                                 5.0602+-0.0672     ?      5.0606+-0.0561        ?
   cell-argument                                      5.9829+-0.2760     ?      6.0107+-0.5199        ?
   cfg-simplify                                       2.8534+-0.0777     ?      2.8678+-0.0565        ?
   chain-getter-access                                8.2721+-0.1988     ?      8.3705+-0.2343        ? might be 1.0119x slower
   cmpeq-obj-to-obj-other                            12.6757+-0.9236     ?     13.7775+-0.9394        ? might be 1.0869x slower
   constant-test                                      4.9523+-0.3058            4.8662+-0.0626          might be 1.0177x faster
   create-lots-of-functions                           9.7955+-0.5147            9.6869+-0.4708          might be 1.0112x faster
   cse-new-array-buffer                               2.2826+-0.1175     ?      2.2896+-0.1332        ?
   cse-new-array                                      2.3422+-0.0907            2.3362+-0.1107        
   DataView-custom-properties                        31.6114+-1.5687           30.9164+-0.7174          might be 1.0225x faster
   delay-tear-off-arguments-strictmode               12.6078+-0.3017           12.5170+-0.4205        
   deltablue-varargs                                174.3766+-3.5076          174.2301+-10.1673       
   destructuring-arguments                          164.7410+-1.4091     ^    160.4176+-0.7298        ^ definitely 1.0270x faster
   destructuring-parameters-overridden-by-function   
                                                      0.4701+-0.0289     ?      0.5084+-0.0713        ? might be 1.0815x slower
   destructuring-swap                                 4.7796+-0.1328     ?      4.7808+-0.0599        ?
   direct-arguments-getbyval                          1.2084+-0.0595            1.1816+-0.0867          might be 1.0226x faster
   div-boolean-double                                 5.2433+-0.1205     ?      5.2883+-0.1269        ?
   div-boolean                                        8.1613+-0.2435            8.0975+-0.0431        
   double-get-by-val-out-of-bounds                    4.4399+-0.0810     ?      4.4649+-0.0369        ?
   double-pollution-getbyval                          8.7924+-0.3001     ?      8.8292+-0.3646        ?
   double-pollution-putbyoffset                       3.9293+-0.4153            3.5732+-0.0651          might be 1.0996x faster
   double-real-use                                   24.3079+-1.4268     ?     25.5923+-2.5703        ? might be 1.0528x slower
   double-to-int32-typed-array-no-inline              2.1471+-0.0544     ?      2.2559+-0.1414        ? might be 1.0507x slower
   double-to-int32-typed-array                        2.0924+-0.0183     ?      2.1481+-0.1496        ? might be 1.0266x slower
   double-to-uint32-typed-array-no-inline             2.3039+-0.0497            2.2379+-0.0435          might be 1.0295x faster
   double-to-uint32-typed-array                       2.1039+-0.0355            2.0942+-0.0331        
   elidable-new-object-dag                           34.3477+-1.0919           33.5826+-0.7355          might be 1.0228x faster
   elidable-new-object-roflcopter                    33.4452+-1.1616           32.1285+-1.6350          might be 1.0410x faster
   elidable-new-object-then-call                     31.7069+-0.6927     ?     31.7254+-0.6728        ?
   elidable-new-object-tree                          37.1338+-0.7748     ?     37.4034+-0.5054        ?
   empty-string-plus-int                              4.7148+-0.0995            4.6979+-0.0802        
   emscripten-cube2hash                              28.0883+-0.9972           26.8709+-1.2746          might be 1.0453x faster
   exit-length-on-plain-object                       15.3962+-0.3820     ?     15.4000+-0.6944        ?
   external-arguments-getbyval                        1.2035+-0.1038     ?      1.3633+-0.2590        ? might be 1.1328x slower
   external-arguments-putbyval                        2.1987+-0.1281            2.0954+-0.0688          might be 1.0493x faster
   fixed-typed-array-storage-var-index                1.2307+-0.0409     ?      1.3546+-0.2997        ? might be 1.1007x slower
   fixed-typed-array-storage                          0.9903+-0.1437            0.9811+-0.1574        
   Float32Array-matrix-mult                           4.0787+-0.1666     ?      4.1012+-0.1819        ?
   Float32Array-to-Float64Array-set                  46.6777+-0.9884     ?     47.0780+-0.5295        ?
   Float64Array-alloc-long-lived                     59.3318+-1.7185           59.1440+-1.8451        
   Float64Array-to-Int16Array-set                    56.3639+-0.7206     ?     57.8730+-2.2894        ? might be 1.0268x slower
   fold-double-to-int                                12.1485+-0.2297     ?     12.1792+-0.1018        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     11.2668+-1.2814           10.7415+-1.0988          might be 1.0489x faster
   fold-get-by-id-to-multi-get-by-offset             10.4859+-0.8394            9.5759+-0.3636          might be 1.0950x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.2978+-0.7358            8.2230+-1.2851          might be 1.1307x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.2277+-1.1763     ?      9.3454+-1.0889        ? might be 1.1359x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.5171+-1.4215     ?      9.7660+-0.9283        ? might be 1.0261x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                     10.8831+-1.4569     ?     11.0658+-1.7935        ? might be 1.0168x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.2083+-0.2837            9.1522+-0.2898        
   fold-put-by-id-to-multi-put-by-offset             10.6126+-0.7352     ?     11.3849+-0.7043        ? might be 1.0728x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     11.7564+-0.5140           11.2516+-0.9656          might be 1.0449x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     11.0328+-1.4508     ?     11.5962+-1.7949        ? might be 1.0511x slower
   fold-put-structure                                 7.7807+-0.9301     ?      8.1231+-0.9151        ? might be 1.0440x slower
   for-of-iterate-array-entries                      10.7488+-0.2276           10.6910+-0.2495        
   for-of-iterate-array-keys                          3.4860+-0.1427            3.4175+-0.1811          might be 1.0201x faster
   for-of-iterate-array-values                        3.3741+-0.2295     ?      3.3807+-0.1580        ?
   fround                                            17.4179+-0.5303     ?     17.5969+-0.7738        ? might be 1.0103x slower
   ftl-library-inlining-dataview                     56.8091+-1.0227     ?     57.2077+-1.3081        ?
   ftl-library-inlining                              96.8898+-0.6429     ?     97.2562+-1.2549        ?
   function-call                                     11.0019+-0.8980           10.9349+-0.6033        
   function-dot-apply                                 2.1870+-0.2914            2.1302+-0.1772          might be 1.0267x faster
   function-test                                      2.7544+-0.0731     ?      2.7723+-0.0878        ?
   function-with-eval                                92.9128+-0.8352     ?     93.1299+-1.0733        ?
   gcse-poly-get-less-obvious                        20.4478+-0.2368     ?     20.6124+-0.5163        ?
   gcse-poly-get                                     22.4891+-0.3689     ?     22.6455+-0.6326        ?
   gcse                                               3.4142+-0.1312     ?      3.4217+-0.0569        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.6511+-0.1016            2.6334+-0.1101        
   get-by-id-bimorphic-check-structure-elimination   
                                                      4.7292+-0.0710            4.6743+-0.0236          might be 1.0118x faster
   get-by-id-chain-from-try-block                     2.4201+-0.0701     ?      2.5405+-0.2013        ? might be 1.0498x slower
   get-by-id-check-structure-elimination              3.9374+-0.0653            3.8959+-0.0880          might be 1.0106x faster
   get-by-id-proto-or-self                           15.1851+-0.5198     ?     15.7605+-0.8221        ? might be 1.0379x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.9361+-0.0715            2.8616+-0.0474          might be 1.0260x faster
   get-by-id-self-or-proto                           15.2713+-0.3762     ?     15.8104+-0.9283        ? might be 1.0353x slower
   get-by-val-out-of-bounds                           4.3072+-0.0741     ?      4.3229+-0.0975        ?
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.7436+-0.1100            2.7276+-0.0847        
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      5.9237+-0.2391     ?      5.9936+-0.2462        ? might be 1.0118x slower
   get-by-val-with-string-chain-from-try-block   
                                                      2.4171+-0.0455     ?      2.4606+-0.1043        ? might be 1.0180x slower
   get-by-val-with-string-check-structure-elimination   
                                                      5.2216+-0.2045            5.1315+-0.1039          might be 1.0176x faster
   get-by-val-with-string-proto-or-self              15.6932+-0.6184           15.4091+-0.5114          might be 1.0184x faster
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.1074+-0.0975            3.0829+-0.0893        
   get-by-val-with-string-self-or-proto              15.2571+-0.2186     ?     15.5173+-0.3712        ? might be 1.0171x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      2.9511+-0.0983            2.9343+-0.0655        
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.3140+-0.0812     ?     12.3884+-0.2537        ?
   get-by-val-with-symbol-chain-from-try-block   
                                                      2.3986+-0.0296     ?      2.4385+-0.0719        ? might be 1.0166x slower
   get-by-val-with-symbol-check-structure-elimination   
                                                     11.0212+-0.1042           10.9775+-0.0785        
   get-by-val-with-symbol-proto-or-self              15.8233+-0.7195           15.5793+-0.5583          might be 1.0157x faster
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.9875+-0.1452            3.9099+-0.0781          might be 1.0198x faster
   get-by-val-with-symbol-self-or-proto              16.2772+-0.9066     ?     16.3554+-1.2275        ?
   get_callee_monomorphic                             2.3077+-0.0714     ?      2.3846+-0.3107        ? might be 1.0333x slower
   get_callee_polymorphic                             3.6186+-0.4392            3.3800+-0.0898          might be 1.0706x faster
   getter-no-activation                               4.7125+-0.1866     ?      4.8066+-0.2054        ? might be 1.0200x slower
   getter-prototype                                   8.0119+-0.0895            7.9814+-0.2099        
   getter-richards-try-catch                       1004.8022+-19.6664         978.9166+-14.5859         might be 1.0264x faster
   getter-richards                                  113.0417+-7.5249          110.6151+-3.9557          might be 1.0219x faster
   getter                                             5.2949+-0.5255     ?      5.4763+-0.5872        ? might be 1.0343x slower
   global-object-access-with-mutating-structure   
                                                      5.6864+-0.2938            5.5027+-0.2135          might be 1.0334x faster
   global-var-const-infer-fire-from-opt               0.8319+-0.0933     ?      0.8619+-0.0964        ? might be 1.0361x slower
   global-var-const-infer                             0.7117+-0.0699            0.6870+-0.0489          might be 1.0359x faster
   hard-overflow-check-equal                         27.9329+-0.6513     ?     28.2484+-0.8833        ? might be 1.0113x slower
   hard-overflow-check                               27.3933+-0.8720           26.3164+-0.8791          might be 1.0409x faster
   HashMap-put-get-iterate-keys                      26.9686+-1.8430           25.5536+-2.8207          might be 1.0554x faster
   HashMap-put-get-iterate                           28.1602+-0.6819     ?     29.2721+-1.3300        ? might be 1.0395x slower
   HashMap-string-put-get-iterate                    24.0840+-1.0760     ?     25.3236+-1.7875        ? might be 1.0515x slower
   hoist-make-rope                                    8.6285+-0.4054            8.5981+-0.4463        
   hoist-poly-check-structure-effectful-loop   
                                                      3.5981+-0.1305     ?      3.8786+-0.3253        ? might be 1.0779x slower
   hoist-poly-check-structure                         3.0853+-0.0436     ?      3.2411+-0.1919        ? might be 1.0505x slower
   imul-double-only                                   7.6740+-0.4026     ?      7.7243+-0.3599        ?
   imul-int-only                                      8.4802+-1.0744            8.2806+-0.9237          might be 1.0241x faster
   imul-mixed                                         7.1970+-0.4605            7.1761+-0.6919        
   in-four-cases                                     17.0289+-0.5030     ?     17.1070+-0.2652        ?
   in-one-case-false                                  9.5100+-0.5981            9.3691+-0.2533          might be 1.0150x faster
   in-one-case-true                                   9.4107+-0.3569     ?      9.6008+-0.4339        ? might be 1.0202x slower
   in-two-cases                                      10.1095+-0.4431           10.0510+-0.3440        
   indexed-properties-in-objects                      2.7348+-0.0433     ?      2.8201+-0.0960        ? might be 1.0312x slower
   infer-closure-const-then-mov-no-inline             3.8145+-0.5175     ?      3.8334+-0.5874        ?
   infer-closure-const-then-mov                      18.4396+-0.5674     ?     18.7829+-0.3901        ? might be 1.0186x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     10.9309+-0.1441           10.8907+-0.1758        
   infer-closure-const-then-put-to-scope             22.8817+-0.5774     ?     23.0935+-0.3905        ?
   infer-closure-const-then-reenter-no-inline   
                                                     47.3127+-0.6095     ?     47.7298+-0.4000        ?
   infer-closure-const-then-reenter                  23.4400+-1.5639           22.8026+-0.8222          might be 1.0280x faster
   infer-constant-global-property                     3.4227+-0.0683            3.3811+-0.0458          might be 1.0123x faster
   infer-constant-property                            2.6168+-0.0299     ?      2.6426+-0.0677        ?
   infer-one-time-closure-ten-vars                    7.8292+-0.4415            7.7040+-0.2297          might be 1.0163x faster
   infer-one-time-closure-two-vars                    7.4386+-0.6323     ?      7.4827+-0.3301        ?
   infer-one-time-closure                             7.2569+-0.1427     ?      7.3122+-0.2519        ?
   infer-one-time-deep-closure                       11.1136+-0.5784           11.0881+-0.6143        
   inline-arguments-access                            3.4675+-0.0939     ?      3.6915+-0.2641        ? might be 1.0646x slower
   inline-arguments-aliased-access                    3.7949+-0.1664            3.6841+-0.1122          might be 1.0301x faster
   inline-arguments-local-escape                      3.7462+-0.2082            3.6034+-0.3012          might be 1.0396x faster
   inline-get-scoped-var                              4.4468+-0.1021     ?      4.5379+-0.2102        ? might be 1.0205x slower
   inlined-put-by-id-transition                       9.2277+-0.5035            8.9526+-0.3671          might be 1.0307x faster
   inlined-put-by-val-with-string-transition   
                                                     42.1857+-1.2557     ?     42.7688+-1.3706        ? might be 1.0138x slower
   inlined-put-by-val-with-symbol-transition   
                                                     44.4078+-3.3003           43.3343+-1.6856          might be 1.0248x faster
   int-or-other-abs-then-get-by-val                   4.5595+-0.2664            4.4706+-0.1160          might be 1.0199x faster
   int-or-other-abs-zero-then-get-by-val             15.3921+-0.3038     ?     15.8472+-0.5329        ? might be 1.0296x slower
   int-or-other-add-then-get-by-val                   4.0172+-0.0187     ?      4.0480+-0.0926        ?
   int-or-other-add                                   4.8963+-0.0479     ?      4.9362+-0.1123        ?
   int-or-other-div-then-get-by-val                   3.7567+-0.0578     ?      3.7798+-0.0848        ?
   int-or-other-max-then-get-by-val                   3.9105+-0.1643     ?      4.0031+-0.2356        ? might be 1.0237x slower
   int-or-other-min-then-get-by-val                   3.7319+-0.0371     ?      3.9442+-0.2236        ? might be 1.0569x slower
   int-or-other-mod-then-get-by-val                   3.4665+-0.0394            3.4118+-0.0423          might be 1.0160x faster
   int-or-other-mul-then-get-by-val                   3.6628+-0.2355            3.5913+-0.0687          might be 1.0199x faster
   int-or-other-neg-then-get-by-val                   3.9674+-0.0712     ?      4.0123+-0.0783        ? might be 1.0113x slower
   int-or-other-neg-zero-then-get-by-val             15.2318+-0.2796     ?     15.6262+-0.5351        ? might be 1.0259x slower
   int-or-other-sub-then-get-by-val                   4.1803+-0.2702            4.0664+-0.1616          might be 1.0280x faster
   int-or-other-sub                                   3.4561+-0.0830     ?      3.4676+-0.0962        ?
   int-overflow-local                                 4.1094+-0.1042     ?      4.1394+-0.0855        ?
   Int16Array-alloc-long-lived                       42.8222+-1.0441           42.3891+-1.2822          might be 1.0102x faster
   Int16Array-bubble-sort-with-byteLength            17.1483+-0.5543           17.1142+-0.5054        
   Int16Array-bubble-sort                            16.6215+-0.3203     ?     17.0758+-0.3792        ? might be 1.0273x slower
   Int16Array-load-int-mul                            1.4260+-0.0385     ?      1.4661+-0.0772        ? might be 1.0282x slower
   Int16Array-to-Int32Array-set                      44.3347+-0.7585     ?     45.0978+-2.2138        ? might be 1.0172x slower
   Int32Array-alloc-large                            11.9339+-0.4855     ?     12.1517+-1.0080        ? might be 1.0183x slower
   Int32Array-alloc-long-lived                       48.5370+-1.1996           48.1074+-1.2698        
   Int32Array-alloc                                   2.8971+-0.5147            2.8558+-0.1982          might be 1.0145x faster
   Int32Array-Int8Array-view-alloc                    5.8100+-0.0570     ?      5.8604+-0.3055        ?
   int52-spill                                        4.6993+-0.2533     ?      4.9553+-0.5697        ? might be 1.0545x slower
   Int8Array-alloc-long-lived                        39.3871+-2.0717           38.0007+-0.5861          might be 1.0365x faster
   Int8Array-load-with-byteLength                     3.3352+-0.0155     ?      3.3764+-0.0502        ? might be 1.0124x slower
   Int8Array-load                                     3.4974+-0.2933            3.3928+-0.0592          might be 1.0308x faster
   integer-divide                                    10.4599+-0.1940     ?     10.8890+-1.3211        ? might be 1.0410x slower
   integer-modulo                                     1.5858+-0.1044     ?      1.6018+-0.0314        ? might be 1.0101x slower
   is-boolean-fold-tricky                             3.8574+-0.1665            3.7771+-0.0474          might be 1.0213x faster
   is-boolean-fold                                    2.7332+-0.2260            2.6324+-0.0550          might be 1.0383x faster
   is-function-fold-tricky-internal-function   
                                                      9.6073+-0.2732            9.3526+-0.1450          might be 1.0272x faster
   is-function-fold-tricky                            4.0649+-0.0585     ?      4.1437+-0.1400        ? might be 1.0194x slower
   is-function-fold                                   2.6742+-0.0500            2.6601+-0.0645        
   is-number-fold-tricky                              3.9841+-0.2819            3.9727+-0.1071        
   is-number-fold                                     2.6272+-0.0214     ?      2.6305+-0.0405        ?
   is-object-or-null-fold-functions                   2.6556+-0.0606     ?      2.7143+-0.0504        ? might be 1.0221x slower
   is-object-or-null-fold-less-tricky                 4.1639+-0.2697            4.0422+-0.1090          might be 1.0301x faster
   is-object-or-null-fold-tricky                      4.8451+-0.0970     ?      4.9031+-0.2310        ? might be 1.0120x slower
   is-object-or-null-fold                             2.6584+-0.0250     ?      2.7042+-0.0726        ? might be 1.0172x slower
   is-object-or-null-trickier-function                4.1253+-0.1271     ?      4.1557+-0.2725        ?
   is-object-or-null-trickier-internal-function   
                                                      9.7689+-0.2194     ?      9.8943+-0.3791        ? might be 1.0128x slower
   is-object-or-null-tricky-function                  4.0228+-0.0454     ?      4.0255+-0.0678        ?
   is-object-or-null-tricky-internal-function   
                                                      7.3601+-0.0425     ?      7.4750+-0.1840        ? might be 1.0156x slower
   is-string-fold-tricky                              4.0060+-0.0894            3.9669+-0.0950        
   is-string-fold                                     2.6727+-0.1490     ?      2.6865+-0.0801        ?
   is-undefined-fold-tricky                           3.4399+-0.1369            3.2958+-0.0402          might be 1.0437x faster
   is-undefined-fold                                  2.6394+-0.0246     ?      2.6979+-0.0720        ? might be 1.0222x slower
   JSONP-negative-0                                   0.2457+-0.0040     ?      0.2545+-0.0184        ? might be 1.0361x slower
   large-int-captured                                 4.0660+-0.1125     ?      4.0811+-0.1012        ?
   large-int-neg                                     14.2176+-0.4421     ?     14.2315+-0.3477        ?
   large-int                                         13.4577+-0.3351           13.1978+-0.4118          might be 1.0197x faster
   load-varargs-elimination                          20.3990+-0.7054           20.2183+-0.2766        
   logical-not-weird-types                            3.1539+-0.2277            3.1475+-0.2718        
   logical-not                                        4.2455+-0.1013     ?      4.3793+-0.1858        ? might be 1.0315x slower
   lots-of-fields                                     9.2709+-0.1913     ?      9.6934+-0.5642        ? might be 1.0456x slower
   make-indexed-storage                               2.7335+-0.0949            2.6902+-0.3176          might be 1.0161x faster
   make-rope-cse                                      3.7055+-0.3128            3.6099+-0.0691          might be 1.0265x faster
   marsaglia-larger-ints                             32.6343+-1.8756           32.4033+-1.2181        
   marsaglia-osr-entry                               21.7427+-0.9894     ?     21.8319+-1.0145        ?
   math-with-out-of-bounds-array-values              21.8448+-0.8821           21.6093+-0.4812          might be 1.0109x faster
   max-boolean                                        2.6380+-0.0385            2.6307+-0.0422        
   method-on-number                                  15.6768+-0.2380           15.3625+-0.1640          might be 1.0205x faster
   min-boolean                                        2.6856+-0.1192     ?      2.7666+-0.1329        ? might be 1.0302x slower
   minus-boolean-double                               3.1154+-0.0982            3.0609+-0.0258          might be 1.0178x faster
   minus-boolean                                      2.3399+-0.0343            2.3380+-0.0679        
   misc-strict-eq                                    28.9134+-0.9028           28.6462+-0.7979        
   mod-boolean-double                                10.9830+-0.1200     ?     11.0098+-0.1241        ?
   mod-boolean                                        8.4160+-0.2968            8.2483+-0.0656          might be 1.0203x faster
   mul-boolean-double                                 3.5726+-0.0384     ?      3.6059+-0.1000        ?
   mul-boolean                                        2.8511+-0.0810            2.7853+-0.0341          might be 1.0236x faster
   neg-boolean                                        3.0852+-0.0806     ?      3.1302+-0.0981        ? might be 1.0146x slower
   negative-zero-divide                               0.3400+-0.0219     ?      0.3576+-0.0353        ? might be 1.0518x slower
   negative-zero-modulo                               0.3420+-0.0131            0.3394+-0.0149        
   negative-zero-negate                               0.3174+-0.0054     ?      0.3443+-0.0299        ? might be 1.0848x slower
   nested-function-parsing                           44.5689+-0.2881     ?     44.6025+-1.0757        ?
   new-array-buffer-dead                             86.9551+-0.5985     ?     87.9126+-1.0495        ? might be 1.0110x slower
   new-array-buffer-push                              6.0558+-0.1208     ?      6.1197+-0.3972        ? might be 1.0105x slower
   new-array-dead                                    16.0193+-0.6076           14.8572+-0.6364          might be 1.0782x faster
   new-array-push                                     3.4784+-0.2079     ?      3.5104+-0.2230        ?
   no-inline-constructor                             31.4183+-0.2544     ?     32.1433+-0.8846        ? might be 1.0231x slower
   number-test                                        3.0160+-0.0578     ?      3.1002+-0.2561        ? might be 1.0279x slower
   object-closure-call                                4.9472+-0.2748            4.8197+-0.0473          might be 1.0264x faster
   object-get-own-property-symbols-on-large-array   
                                                      4.0938+-0.1991     ?      4.1530+-0.3105        ? might be 1.0144x slower
   object-test                                        2.7143+-0.0573     ?      2.7381+-0.0879        ?
   obvious-sink-pathology-taken                      97.5793+-1.0778           97.3818+-0.7431        
   obvious-sink-pathology                            93.2603+-0.5603           92.1355+-1.2641          might be 1.0122x faster
   obviously-elidable-new-object                     28.0208+-0.4412     ?     28.2259+-0.4939        ?
   plus-boolean-arith                                 2.4407+-0.1074     ?      2.4535+-0.1050        ?
   plus-boolean-double                                3.1010+-0.0526     ?      3.1159+-0.0203        ?
   plus-boolean                                       2.5040+-0.0393     ?      2.5258+-0.0837        ?
   poly-chain-access-different-prototypes-simple   
                                                      2.5908+-0.0481            2.5719+-0.0559        
   poly-chain-access-different-prototypes             2.5342+-0.0598     ?      2.5768+-0.0817        ? might be 1.0168x slower
   poly-chain-access-simpler                          2.5961+-0.0582     ?      2.6466+-0.0968        ? might be 1.0194x slower
   poly-chain-access                                  2.4767+-0.0321     ?      2.5084+-0.0467        ? might be 1.0128x slower
   poly-stricteq                                     49.3317+-0.6505           49.2115+-0.6802        
   polymorphic-array-call                             1.2897+-0.1324            1.2595+-0.0585          might be 1.0240x faster
   polymorphic-get-by-id                              2.8389+-0.0309            2.8055+-0.0338          might be 1.0119x faster
   polymorphic-put-by-id                             27.7979+-0.8278     ?     28.9282+-1.3970        ? might be 1.0407x slower
   polymorphic-put-by-val-with-string                29.1529+-1.3317     ?     29.4073+-1.2137        ?
   polymorphic-put-by-val-with-symbol                29.5353+-1.2086     ?     30.4859+-1.8198        ? might be 1.0322x slower
   polymorphic-structure                             12.4118+-0.1201     ?     12.8125+-0.9792        ? might be 1.0323x slower
   polyvariant-monomorphic-get-by-id                  7.3883+-1.1816            7.0173+-1.0364          might be 1.0529x faster
   proto-getter-access                                8.6376+-0.6961            8.3865+-0.2581          might be 1.0299x faster
   prototype-access-with-mutating-prototype           5.5536+-0.2589            5.5229+-0.2885        
   put-by-id-replace-and-transition                   8.3089+-1.0534     ?      8.4595+-0.7194        ? might be 1.0181x slower
   put-by-id-slightly-polymorphic                     2.7794+-0.2549            2.7279+-0.1127          might be 1.0189x faster
   put-by-id                                          9.8139+-0.4846            9.6297+-0.3283          might be 1.0191x faster
   put-by-val-direct                                  0.3523+-0.0243     ?      0.3901+-0.1184        ? might be 1.1073x slower
   put-by-val-large-index-blank-indexing-type   
                                                      5.2549+-0.2090     ?      5.4855+-0.3573        ? might be 1.0439x slower
   put-by-val-machine-int                             2.4643+-0.1222     ?      2.6445+-0.3289        ? might be 1.0731x slower
   put-by-val-with-string-replace-and-transition   
                                                     10.0909+-0.2394     ?     10.1880+-0.3616        ?
   put-by-val-with-string-slightly-polymorphic   
                                                      3.0334+-0.1066     ?      3.0686+-0.1899        ? might be 1.0116x slower
   put-by-val-with-string                            10.3218+-0.4999     ?     10.4972+-0.4983        ? might be 1.0170x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     11.5505+-0.2809     ?     11.8688+-0.5962        ? might be 1.0276x slower
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.2356+-0.0616     ?      3.3199+-0.2729        ? might be 1.0261x slower
   put-by-val-with-symbol                            10.2814+-0.4428     ?     10.3164+-0.3856        ?
   rare-osr-exit-on-local                            13.4415+-0.0910     ?     13.4814+-0.1624        ?
   raytrace-with-empty-try-catch                      5.3946+-0.3841            5.2033+-0.1937          might be 1.0368x faster
   raytrace-with-try-catch                            9.5641+-0.1392     ?      9.8623+-0.3271        ? might be 1.0312x slower
   register-pressure-from-osr                        16.4407+-0.3720     ?     16.7373+-0.7062        ? might be 1.0180x slower
   repeat-multi-get-by-offset                        21.8018+-0.4516     ?     21.8478+-0.5516        ?
   richards-empty-try-catch                          71.6671+-1.3105     ?     71.8797+-0.9423        ?
   richards-try-catch                               240.5911+-4.0544          239.8602+-1.4102        
   setter-prototype                                   7.7629+-0.2271            7.7384+-0.2739        
   setter                                             5.8600+-0.4555            5.4999+-0.4255          might be 1.0655x faster
   simple-activation-demo                            24.2722+-0.5836     ?     24.3283+-0.7621        ?
   simple-getter-access                              10.6872+-0.2813           10.5184+-0.2677          might be 1.0160x faster
   simple-poly-call-nested                            8.7399+-0.4254            8.3803+-0.3762          might be 1.0429x faster
   simple-poly-call                                   1.3357+-0.1195            1.2462+-0.0341          might be 1.0718x faster
   sin-boolean                                       19.6247+-1.9533     ?     20.5963+-1.6036        ? might be 1.0495x slower
   singleton-scope                                   64.8293+-1.3862           64.0579+-0.5945          might be 1.0120x faster
   sink-function                                     10.7642+-0.5270     ^      9.7822+-0.4075        ^ definitely 1.1004x faster
   sink-huge-activation                              16.3645+-0.6742     ?     16.5791+-1.0191        ? might be 1.0131x slower
   sinkable-new-object-dag                           53.2177+-0.7142     ?     54.9324+-1.6513        ? might be 1.0322x slower
   sinkable-new-object-taken                         44.1754+-1.1355     ?     44.2919+-0.8080        ?
   sinkable-new-object                               30.2204+-1.1504           30.1243+-0.7862        
   slow-array-profile-convergence                     2.6412+-0.2142            2.4782+-0.1150          might be 1.0658x faster
   slow-convergence                                   2.4249+-0.3062            2.3341+-0.0566          might be 1.0389x faster
   slow-ternaries                                    17.3737+-0.3820     ?     17.4223+-0.7844        ?
   sorting-benchmark                                 17.2174+-0.4645     ?     17.3118+-1.1968        ?
   sparse-conditional                                 1.1561+-0.0315     ?      1.1880+-0.0737        ? might be 1.0276x slower
   splice-to-remove                                  12.6351+-1.2448           12.3420+-0.6045          might be 1.0238x faster
   string-char-code-at                               13.0364+-0.1796     ?     13.2134+-0.1866        ? might be 1.0136x slower
   string-concat-object                               2.2462+-0.1707            2.1144+-0.0976          might be 1.0624x faster
   string-concat-pair-object                          2.1083+-0.0596            2.0428+-0.0799          might be 1.0320x faster
   string-concat-pair-simple                          9.0213+-0.2967     ?      9.4517+-0.6198        ? might be 1.0477x slower
   string-concat-simple                               9.1240+-0.3749     ?      9.3624+-0.6665        ? might be 1.0261x slower
   string-cons-repeat                                 6.5746+-0.2303            6.5534+-0.5195        
   string-cons-tower                                  6.4961+-0.0943     ?      6.7939+-0.2833        ? might be 1.0459x slower
   string-equality                                   15.0994+-0.2956           14.9392+-0.3086          might be 1.0107x faster
   string-get-by-val-big-char                         6.7433+-0.6510            6.5887+-0.1945          might be 1.0235x faster
   string-get-by-val-out-of-bounds-insane             3.1051+-0.2297     ?      3.2043+-0.2856        ? might be 1.0320x slower
   string-get-by-val-out-of-bounds                    3.9191+-0.1328            3.9134+-0.0688        
   string-get-by-val                                  2.7541+-0.0295     ?      2.7720+-0.0253        ?
   string-hash                                        1.8431+-0.0363     ?      1.8436+-0.0523        ?
   string-long-ident-equality                        13.0469+-0.3256     ?     13.1634+-0.4427        ?
   string-out-of-bounds                              10.1843+-0.1470           10.1148+-0.3264        
   string-repeat-arith                               27.3773+-0.6802           27.1851+-1.1514        
   string-sub                                        55.6023+-0.9198     ?     55.8103+-0.5386        ?
   string-test                                        2.9307+-0.2078            2.9067+-0.1454        
   string-var-equality                               26.9177+-1.1870           26.5417+-0.5691          might be 1.0142x faster
   structure-hoist-over-transitions                   2.3397+-0.0760            2.2908+-0.0882          might be 1.0213x faster
   substring-concat-weird                            35.3231+-1.2600           34.6815+-0.4950          might be 1.0185x faster
   substring-concat                                  38.8700+-0.7205     ?     39.8767+-1.0532        ? might be 1.0259x slower
   substring                                         44.9980+-1.4145     ?     45.2886+-1.1949        ?
   switch-char-constant                               2.6686+-0.0374     ?      2.6808+-0.0428        ?
   switch-char                                        5.5224+-0.3622     ?      6.0460+-1.0145        ? might be 1.0948x slower
   switch-constant                                    8.2701+-0.9718            7.5202+-0.7092          might be 1.0997x faster
   switch-string-basic-big-var                       14.4404+-0.3636           14.3031+-0.3766        
   switch-string-basic-big                           14.8748+-0.1993           14.8220+-0.1424        
   switch-string-basic-var                           13.4073+-0.2109           13.1989+-0.3181          might be 1.0158x faster
   switch-string-basic                               12.4755+-0.2809     ?     13.1125+-0.8782        ? might be 1.0511x slower
   switch-string-big-length-tower-var                17.8474+-0.3683     ?     18.1482+-0.4978        ? might be 1.0169x slower
   switch-string-length-tower-var                    13.5779+-0.4865           13.2005+-0.3800          might be 1.0286x faster
   switch-string-length-tower                        11.7563+-0.7424           11.6149+-0.8558          might be 1.0122x faster
   switch-string-short                               11.3710+-0.1319     ?     11.4155+-0.4367        ?
   switch                                            11.2035+-0.7201           10.9507+-0.4702          might be 1.0231x faster
   tear-off-arguments-simple                          3.0854+-0.1353            3.0314+-0.0965          might be 1.0178x faster
   tear-off-arguments                                 4.2083+-0.1619     ?      4.4774+-1.2493        ? might be 1.0640x slower
   temporal-structure                                12.1154+-0.5187           11.9754+-0.4179          might be 1.0117x faster
   to-int32-boolean                                  12.6476+-0.2737           12.3763+-0.1256          might be 1.0219x faster
   try-catch-get-by-val-cloned-arguments              9.5428+-0.3446            9.2576+-0.3506          might be 1.0308x faster
   try-catch-get-by-val-direct-arguments              2.1165+-0.1402     ?      2.1273+-0.3604        ?
   try-catch-get-by-val-scoped-arguments              4.7640+-0.1703     ?      4.9064+-0.5234        ? might be 1.0299x slower
   typed-array-get-set-by-val-profiling              26.8555+-0.8235     ?     27.0438+-0.9424        ?
   undefined-property-access                        217.3007+-3.5391          215.7565+-0.4759        
   undefined-test                                     2.9516+-0.0506     ?      2.9690+-0.0766        ?
   unprofiled-licm                                    9.6862+-0.8713            9.6771+-0.3205        
   v8-raytrace-with-empty-try-catch                  24.0251+-0.8599     ?     24.1824+-0.5494        ?
   v8-raytrace-with-try-catch                        61.9902+-1.2281           60.8697+-1.2398          might be 1.0184x faster
   varargs-call                                      13.1579+-0.4265           12.9939+-0.2224          might be 1.0126x faster
   varargs-construct-inline                          22.0255+-0.4269           21.7186+-0.4674          might be 1.0141x faster
   varargs-construct                                 20.9310+-0.6121           20.8031+-1.0267        
   varargs-inline                                     8.6428+-0.0874     ?      8.8281+-0.1710        ? might be 1.0214x slower
   varargs-strict-mode                               10.0477+-0.2875            9.9021+-0.0542          might be 1.0147x faster
   varargs                                            9.8313+-0.1873            9.7568+-0.1145        
   weird-inlining-const-prop                          2.1732+-0.0983     ?      2.3579+-0.2472        ? might be 1.0850x slower

   <geometric>                                        8.0380+-0.0198     ?      8.0449+-0.0189        ? might be 1.0009x slower

                                                        TipOfTree           ParallelVectorIterator                              
AsmBench:
   bigfib.cpp                                       449.9829+-9.3862          447.4383+-6.5769        
   cray.c                                           391.1788+-0.9719     ?    392.3573+-3.9766        ?
   dry.c                                            425.5672+-2.2263          422.7777+-5.6461        
   FloatMM.c                                        682.1969+-4.8086          681.9141+-4.0784        
   gcc-loops.cpp                                   3415.7914+-15.4003    ?   3542.5110+-289.8301      ? might be 1.0371x slower
   n-body.c                                         822.2723+-2.8582     ?    825.1013+-5.5596        ?
   Quicksort.c                                      400.1668+-3.6393     ?    405.6935+-5.8324        ? might be 1.0138x slower
   stepanov_container.cpp                          3515.0561+-35.7537        3511.6133+-49.5142       
   Towers.c                                         234.5948+-5.0463          231.9956+-0.6542          might be 1.0112x faster

   <geometric>                                      712.5263+-2.2075     ?    714.8510+-7.4813        ? might be 1.0033x slower

                                                        TipOfTree           ParallelVectorIterator                              
CompressionBench:
   huffman                                           59.1395+-0.9240     ?     59.2012+-1.2806        ?
   arithmetic-simple                                271.2191+-3.3708     ?    271.6396+-3.8963        ?
   arithmetic-precise                               242.5250+-1.7289          240.9445+-1.1679        
   arithmetic-complex-precise                       242.5132+-1.4665          242.3458+-2.4149        
   arithmetic-precise-order-0                       281.9789+-3.4864          279.9594+-1.5527        
   arithmetic-precise-order-1                       298.8577+-1.0877     ?    300.7672+-10.2189       ?
   arithmetic-precise-order-2                       343.8937+-3.9892     ?    345.4187+-3.5366        ?
   arithmetic-simple-order-1                        321.0414+-3.7064          317.5757+-1.5001          might be 1.0109x faster
   arithmetic-simple-order-2                        371.5095+-5.9257          368.1855+-0.7561        
   lz-string                                        308.1920+-2.9452     ?    308.9833+-4.8797        ?

   <geometric>                                      251.2977+-0.5382          250.8272+-1.2069          might be 1.0019x faster

                                                        TipOfTree           ParallelVectorIterator                              
Geomean of preferred means:
   <scaled-result>                                   49.8280+-0.0854     ?     49.8628+-0.2417        ? might be 1.0007x slower
Comment 4 Filip Pizlo 2015-09-28 23:52:09 PDT
Duh, the problem is that I removed the call to recycleEvacuatedBlock().
Comment 5 Filip Pizlo 2015-09-28 23:53:10 PDT
Created attachment 262043 [details]
the patch

With performance/memory fixes.  This version restores the call to recycleEvacuatedBlock().
Comment 6 WebKit Commit Bot 2015-09-28 23:55:32 PDT
Attachment 262043 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/Heap.cpp:641:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:645:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 7 Filip Pizlo 2015-09-29 08:54:06 PDT
Performance looks OK now:


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 (r190302)
"ParallelVectorIterator" at /Volumes/Data/quartary/OpenSource/WebKitBuild/Release/jsc (r190302)

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           ParallelVectorIterator                              
SunSpider:
   3d-cube                                            4.4760+-0.1011     ?      4.5503+-0.1280        ? might be 1.0166x slower
   3d-morph                                           5.2051+-0.1151     ?      5.2645+-0.1730        ? might be 1.0114x slower
   3d-raytrace                                        5.4387+-0.7276            5.1344+-0.0425          might be 1.0593x faster
   access-binary-trees                                2.1580+-0.1263            2.1196+-0.0804          might be 1.0181x faster
   access-fannkuch                                    5.5060+-0.0549            5.4628+-0.0489        
   access-nbody                                       2.4975+-0.0342            2.4721+-0.0226          might be 1.0103x faster
   access-nsieve                                      3.0690+-0.1363            3.0399+-0.0980        
   bitops-3bit-bits-in-byte                           1.1452+-0.0150     ?      1.1590+-0.0248        ? might be 1.0121x slower
   bitops-bits-in-byte                                3.2238+-0.0402            3.1960+-0.0292        
   bitops-bitwise-and                                 2.0126+-0.0587            1.9724+-0.0240          might be 1.0204x faster
   bitops-nsieve-bits                                 2.9532+-0.0482     ?      3.0289+-0.1853        ? might be 1.0256x slower
   controlflow-recursive                              2.3255+-0.0283     ?      2.3405+-0.0747        ?
   crypto-aes                                         3.8658+-0.0404     ?      3.9212+-0.1958        ? might be 1.0143x slower
   crypto-md5                                         2.4762+-0.0683            2.4743+-0.0361        
   crypto-sha1                                        2.4375+-0.1146            2.3984+-0.1364          might be 1.0163x faster
   date-format-tofte                                  6.6451+-0.0606     ?      6.9538+-0.6022        ? might be 1.0465x slower
   date-format-xparb                                  4.5715+-0.0765            4.5397+-0.0984        
   math-cordic                                        2.7650+-0.0320     ?      2.7802+-0.0505        ?
   math-partial-sums                                  4.8819+-0.5450            4.7296+-0.1249          might be 1.0322x faster
   math-spectral-norm                                 1.9132+-0.0304            1.9097+-0.0310        
   regexp-dna                                         6.0192+-0.1430            5.9832+-0.1069        
   string-base64                                      4.3147+-0.0650     ?      4.4003+-0.1752        ? might be 1.0198x slower
   string-fasta                                       5.8130+-0.0444     ?      5.8391+-0.1349        ?
   string-tagcloud                                    7.9428+-0.0656     ?      8.1255+-0.2620        ? might be 1.0230x slower
   string-unpack-code                                17.9911+-0.3018     ?     18.0786+-0.4590        ?
   string-validate-input                              4.5458+-0.0302     ?      4.7008+-0.2212        ? might be 1.0341x slower

   <arithmetic>                                       4.4690+-0.0393     ?      4.4836+-0.0265        ? might be 1.0033x slower

                                                        TipOfTree           ParallelVectorIterator                              
LongSpider:
   3d-cube                                          798.8271+-5.1104     ?    803.5287+-6.3206        ?
   3d-morph                                        1506.4283+-29.4142        1495.5259+-11.5887       
   3d-raytrace                                      599.0761+-7.7710          598.4250+-7.8796        
   access-binary-trees                              793.5181+-8.9766          788.1069+-5.8970        
   access-fannkuch                                  277.2193+-8.9864          275.4223+-3.5293        
   access-nbody                                     508.8670+-7.7075          506.9766+-2.4202        
   access-nsieve                                    361.8585+-6.7853     ?    373.0757+-9.6836        ? might be 1.0310x slower
   bitops-3bit-bits-in-byte                          33.5029+-0.2938     ?     34.2511+-1.2225        ? might be 1.0223x slower
   bitops-bits-in-byte                               73.8964+-0.6802     ?     74.3853+-1.1433        ?
   bitops-nsieve-bits                               404.2176+-8.4078          402.2663+-5.8251        
   controlflow-recursive                            428.3780+-4.4866          426.1742+-2.6473        
   crypto-aes                                       558.3344+-6.0687     ?    560.8743+-12.3034       ?
   crypto-md5                                       432.1639+-4.5533     ?    441.8394+-23.4057       ? might be 1.0224x slower
   crypto-sha1                                      639.3575+-17.1097    ?    642.6121+-7.8061        ?
   date-format-tofte                                501.2223+-5.1957     ?    502.2789+-18.7141       ?
   date-format-xparb                                668.5439+-10.6333    ?    725.5767+-59.9340       ? might be 1.0853x slower
   hash-map                                         150.1240+-2.4418     ?    150.8898+-2.7840        ?
   math-cordic                                      478.6348+-4.9698          476.2370+-2.9685        
   math-partial-sums                                457.1077+-4.6655     ?    458.5506+-5.6254        ?
   math-spectral-norm                               548.8940+-1.9265     ?    551.8439+-6.9814        ?
   string-base64                                    358.7466+-5.0325          353.1794+-2.8580          might be 1.0158x faster
   string-fasta                                     366.1895+-5.3917     ?    367.6398+-8.4016        ?
   string-tagcloud                                  177.7227+-3.5085     ?    179.8787+-2.4627        ? might be 1.0121x slower

   <geometric>                                      383.7846+-0.9294     !    386.2831+-1.4708        ! definitely 1.0065x slower

                                                        TipOfTree           ParallelVectorIterator                              
V8Spider:
   crypto                                            47.4623+-1.3045           47.0640+-1.5126        
   deltablue                                         77.4427+-2.4629     ?     78.5190+-2.9625        ? might be 1.0139x slower
   earley-boyer                                      41.3913+-0.6641           40.9458+-0.8638          might be 1.0109x faster
   raytrace                                          31.0310+-1.3919     ?     31.5144+-0.4037        ? might be 1.0156x slower
   regexp                                            60.4610+-0.3144     ?     61.8942+-2.9957        ? might be 1.0237x slower
   richards                                          54.9540+-2.3860     ?     55.7616+-6.7552        ? might be 1.0147x slower
   splay                                             35.3907+-0.7883     ?     35.5698+-1.9180        ?

   <geometric>                                       47.6010+-0.6628     ?     47.9159+-0.8198        ? might be 1.0066x slower

                                                        TipOfTree           ParallelVectorIterator                              
Octane:
   encrypt                                           0.16423+-0.00231    ?     0.16487+-0.00316       ?
   decrypt                                           2.92221+-0.02064    ?     2.93800+-0.02892       ?
   deltablue                                x2       0.13891+-0.00388    ?     0.14167+-0.00289       ? might be 1.0199x slower
   earley                                            0.30365+-0.00786          0.30313+-0.00460       
   boyer                                             4.41469+-0.06999          4.33658+-0.12231         might be 1.0180x faster
   navier-stokes                            x2       4.84928+-0.02590          4.83957+-0.02466       
   raytrace                                 x2       0.85928+-0.00761    ?     0.86164+-0.00734       ?
   richards                                 x2       0.08910+-0.00107          0.08835+-0.00068       
   splay                                    x2       0.33515+-0.00598          0.33258+-0.00484       
   regexp                                   x2      24.09492+-0.15174         23.99685+-0.27603       
   pdfjs                                    x2      37.19903+-0.39897         36.97696+-0.49196       
   mandreel                                 x2      43.12332+-1.29720         42.56409+-0.34918         might be 1.0131x faster
   gbemu                                    x2      31.98209+-1.66746         31.47769+-1.78718         might be 1.0160x faster
   closure                                           0.57345+-0.00368    ?     0.57482+-0.00511       ?
   jquery                                            7.24384+-0.05257    ?     7.29155+-0.12094       ?
   box2d                                    x2       9.18229+-0.14855          9.09036+-0.10005         might be 1.0101x faster
   zlib                                     x2     386.07243+-6.75619        379.10514+-13.25442        might be 1.0184x faster
   typescript                               x2     665.86011+-15.97762       663.07286+-22.11981      

   <geometric>                                       5.34144+-0.03373          5.31713+-0.02370         might be 1.0046x faster

                                                        TipOfTree           ParallelVectorIterator                              
Kraken:
   ai-astar                                          127.322+-0.887            126.497+-1.089         
   audio-beat-detection                               49.981+-0.648      ?      50.102+-0.716         ?
   audio-dft                                          97.563+-2.305             97.221+-3.051         
   audio-fft                                          34.892+-0.283      ?      35.433+-1.046         ? might be 1.0155x slower
   audio-oscillator                                   56.858+-2.899             56.239+-1.918           might be 1.0110x faster
   imaging-darkroom                                   59.989+-0.340      ?      60.627+-1.670         ? might be 1.0106x slower
   imaging-desaturate                                 47.920+-0.531             47.595+-0.198         
   imaging-gaussian-blur                              85.319+-0.775      ?      86.006+-1.130         ?
   json-parse-financial                               39.151+-0.286             39.001+-0.752         
   json-stringify-tinderbox                           21.598+-0.275      ?      21.740+-0.451         ?
   stanford-crypto-aes                                41.438+-2.584             40.750+-1.356           might be 1.0169x faster
   stanford-crypto-ccm                                34.218+-0.659      ?      35.349+-0.746         ? might be 1.0330x slower
   stanford-crypto-pbkdf2                             94.013+-0.409             93.409+-0.316         
   stanford-crypto-sha256-iterative                   35.968+-0.660      ?      36.285+-0.580         ?

   <arithmetic>                                       59.017+-0.463      ?      59.018+-0.319         ? might be 1.0000x slower

                                                        TipOfTree           ParallelVectorIterator                              
JSRegress:
   abc-forward-loop-equal                            29.1121+-0.5965     ?     29.1455+-0.4696        ?
   abc-postfix-backward-loop                         29.3722+-0.5073           28.8387+-0.1417          might be 1.0185x faster
   abc-simple-backward-loop                          28.6260+-0.3652     ?     29.3899+-1.0110        ? might be 1.0267x slower
   abc-simple-forward-loop                           28.9833+-0.2718           28.9671+-0.6357        
   abc-skippy-loop                                   20.9405+-0.6247     ?     21.0560+-0.6178        ?
   abs-boolean                                        2.4223+-0.0268     ?      2.4348+-0.0307        ?
   adapt-to-double-divide                            16.3673+-0.4261     ?     16.4058+-1.0262        ?
   aliased-arguments-getbyval                         1.2047+-0.0473     ?      1.2391+-0.0615        ? might be 1.0286x slower
   allocate-big-object                                2.5626+-0.0742            2.5096+-0.1418          might be 1.0211x faster
   arguments-named-and-reflective                    10.8996+-1.1279           10.3493+-0.2441          might be 1.0532x faster
   arguments-out-of-bounds                            9.1663+-0.1361            9.1600+-0.1646        
   arguments-strict-mode                              9.3867+-0.4921     ?      9.7508+-0.6504        ? might be 1.0388x slower
   arguments                                          8.2552+-0.1409     ?      8.3955+-0.1770        ? might be 1.0170x slower
   arity-mismatch-inlining                            0.8302+-0.0216     ?      0.8476+-0.0174        ? might be 1.0209x slower
   array-access-polymorphic-structure                 7.0699+-0.1042     ?      7.3020+-0.7181        ? might be 1.0328x slower
   array-nonarray-polymorhpic-access                 22.8116+-0.2054     ?     23.2497+-0.8786        ? might be 1.0192x slower
   array-prototype-every                             75.7182+-3.1570           74.6999+-0.9136          might be 1.0136x faster
   array-prototype-forEach                           73.5049+-0.5588           72.8525+-0.4795        
   array-prototype-map                               82.2889+-0.7749           80.9135+-2.3317          might be 1.0170x faster
   array-prototype-reduce                            71.6960+-1.5202           70.0963+-0.6532          might be 1.0228x faster
   array-prototype-reduceRight                       71.9127+-3.8101     ?     72.1363+-3.3234        ?
   array-prototype-some                              73.8372+-0.4430     ?     74.1003+-0.4074        ?
   array-splice-contiguous                           19.5972+-0.4254     ?     19.6080+-0.5108        ?
   array-with-double-add                              3.4896+-0.1196            3.4303+-0.0663          might be 1.0173x faster
   array-with-double-increment                        3.0737+-0.0186            3.0408+-0.0268          might be 1.0108x faster
   array-with-double-mul-add                          4.2914+-0.1765            4.1804+-0.0614          might be 1.0266x faster
   array-with-double-sum                              3.2666+-0.1683            3.1569+-0.0088          might be 1.0348x faster
   array-with-int32-add-sub                           5.9488+-0.6883            5.6540+-0.1033          might be 1.0521x faster
   array-with-int32-or-double-sum                     3.2627+-0.0467     ?      3.3152+-0.1150        ? might be 1.0161x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     25.3457+-0.1960     ?     25.7479+-0.7329        ? might be 1.0159x slower
   ArrayBuffer-DataView-alloc-long-lived             11.7183+-0.3364     ?     11.7446+-0.4392        ?
   ArrayBuffer-Int32Array-byteOffset                  3.5743+-0.1404            3.5199+-0.0349          might be 1.0154x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     25.6548+-0.2841     ?     26.2605+-0.7358        ? might be 1.0236x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     19.9502+-1.5047           19.1771+-0.1552          might be 1.0403x faster
   ArrayBuffer-Int8Array-alloc-long-lived            11.0955+-0.2835     ?     11.1167+-0.4836        ?
   ArrayBuffer-Int8Array-alloc                        9.2408+-0.0711     ?      9.4263+-0.2532        ? might be 1.0201x slower
   arrowfunction-call                                10.8542+-0.1503           10.8432+-0.3217        
   asmjs_bool_bug                                     7.4485+-0.0629            7.3970+-0.0559        
   assign-custom-setter-polymorphic                   2.4996+-0.0410            2.4769+-0.0370        
   assign-custom-setter                               3.3970+-0.0279     ?      3.5472+-0.1427        ? might be 1.0442x slower
   basic-set                                          7.2848+-0.3268            7.2317+-0.2186        
   big-int-mul                                        3.5149+-0.1919            3.4525+-0.0550          might be 1.0181x faster
   boolean-test                                       3.0523+-0.0201     ?      3.0629+-0.0597        ?
   branch-fold                                        3.6014+-0.0336            3.5923+-0.0233        
   branch-on-string-as-boolean                       16.4125+-0.2349           16.2785+-0.2122        
   by-val-generic                                     2.5175+-0.1216     ?      2.5593+-0.2735        ? might be 1.0166x slower
   call-spread-apply                                 26.6446+-0.3987     ?     26.6971+-0.3647        ?
   call-spread-call                                  21.2158+-0.6265           20.8985+-0.5462          might be 1.0152x faster
   captured-assignments                               0.4297+-0.0369            0.4250+-0.0223          might be 1.0109x faster
   cast-int-to-double                                 5.1125+-0.0397     ?      5.1139+-0.0588        ?
   cell-argument                                      6.0601+-0.2094            6.0045+-0.0708        
   cfg-simplify                                       2.8971+-0.0668            2.8680+-0.0301          might be 1.0102x faster
   chain-getter-access                                8.3442+-0.1948     ?      8.4343+-0.3932        ? might be 1.0108x slower
   cmpeq-obj-to-obj-other                            12.2571+-0.9320     ?     12.5652+-0.8972        ? might be 1.0251x slower
   constant-test                                      4.8120+-0.0636     ?      4.8298+-0.0500        ?
   create-lots-of-functions                           9.9379+-0.8040            9.1459+-0.4150          might be 1.0866x faster
   cse-new-array-buffer                               2.3007+-0.0375     ?      2.3100+-0.0865        ?
   cse-new-array                                      2.3294+-0.0855     ?      2.4193+-0.1601        ? might be 1.0386x slower
   DataView-custom-properties                        30.2248+-0.1755     ?     30.6316+-0.5658        ? might be 1.0135x slower
   delay-tear-off-arguments-strictmode               12.4605+-0.0908           12.2671+-0.3434          might be 1.0158x faster
   deltablue-varargs                                172.8281+-5.3036     ?    176.7958+-3.6378        ? might be 1.0230x slower
   destructuring-arguments                          165.3172+-1.8582     ^    161.9852+-1.2179        ^ definitely 1.0206x faster
   destructuring-parameters-overridden-by-function   
                                                      0.4636+-0.0255     ?      0.4868+-0.0587        ? might be 1.0502x slower
   destructuring-swap                                 4.7871+-0.0537     ?      4.8150+-0.0842        ?
   direct-arguments-getbyval                          1.1851+-0.0458     ?      1.2514+-0.0764        ? might be 1.0560x slower
   div-boolean-double                                 5.2794+-0.1279     ?      5.3027+-0.1285        ?
   div-boolean                                        8.1384+-0.1794            8.0715+-0.0317        
   double-get-by-val-out-of-bounds                    4.6966+-0.5737            4.4523+-0.0915          might be 1.0549x faster
   double-pollution-getbyval                          8.6701+-0.0701     ?      8.7029+-0.1724        ?
   double-pollution-putbyoffset                       3.5848+-0.0842     ?      3.6646+-0.1031        ? might be 1.0223x slower
   double-real-use                                   23.5763+-0.4887     ?     23.9912+-1.4961        ? might be 1.0176x slower
   double-to-int32-typed-array-no-inline              2.2020+-0.0310     ?      2.2128+-0.0415        ?
   double-to-int32-typed-array                        2.0776+-0.0421     ?      2.1418+-0.1169        ? might be 1.0309x slower
   double-to-uint32-typed-array-no-inline             2.2651+-0.0761     ?      2.3134+-0.1048        ? might be 1.0213x slower
   double-to-uint32-typed-array                       2.2333+-0.2385            2.1851+-0.1203          might be 1.0221x faster
   elidable-new-object-dag                           33.4408+-0.5322           33.2882+-0.3470        
   elidable-new-object-roflcopter                    32.1123+-1.2389     ?     33.0120+-0.6379        ? might be 1.0280x slower
   elidable-new-object-then-call                     32.1181+-0.6399           31.6716+-0.8482          might be 1.0141x faster
   elidable-new-object-tree                          37.8586+-1.6753           36.5401+-0.4071          might be 1.0361x faster
   empty-string-plus-int                              4.7100+-0.1724     ?      5.5265+-0.6847        ? might be 1.1733x slower
   emscripten-cube2hash                              27.0485+-1.6696     ?     28.1802+-1.2500        ? might be 1.0418x slower
   exit-length-on-plain-object                       15.6039+-0.5570           14.9476+-0.2954          might be 1.0439x faster
   external-arguments-getbyval                        1.3576+-0.1639            1.2963+-0.0773          might be 1.0473x faster
   external-arguments-putbyval                        2.1631+-0.1196            2.1323+-0.0178          might be 1.0144x faster
   fixed-typed-array-storage-var-index                1.2236+-0.0094     ?      1.3030+-0.1568        ? might be 1.0649x slower
   fixed-typed-array-storage                          0.9484+-0.0524            0.9037+-0.0092          might be 1.0494x faster
   Float32Array-matrix-mult                           3.9625+-0.0531     ?      3.9934+-0.0560        ?
   Float32Array-to-Float64Array-set                  47.5383+-3.7964           45.9960+-0.2876          might be 1.0335x faster
   Float64Array-alloc-long-lived                     58.2018+-1.6090     ?     59.3402+-2.6478        ? might be 1.0196x slower
   Float64Array-to-Int16Array-set                    55.6957+-1.5913           55.3457+-0.7925        
   fold-double-to-int                                12.4749+-1.5414           11.9400+-0.2132          might be 1.0448x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.2129+-0.7225     ?     10.7928+-1.0028        ? might be 1.0568x slower
   fold-get-by-id-to-multi-get-by-offset             10.9081+-1.2445           10.0770+-0.7065          might be 1.0825x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.4059+-0.4723     ?      9.6368+-1.1170        ? might be 1.0245x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.2180+-1.0274     ?      8.3362+-1.1683        ? might be 1.0144x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.5136+-0.5687            9.2336+-1.7312          might be 1.0303x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                     10.3065+-0.6875           10.1905+-0.4979          might be 1.0114x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.1424+-0.1023            9.1179+-0.2423        
   fold-put-by-id-to-multi-put-by-offset             11.3881+-1.1523     ?     11.9783+-0.9853        ? might be 1.0518x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     11.9833+-1.7229           11.1740+-1.1187          might be 1.0724x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.6434+-1.5013           10.6233+-1.2405        
   fold-put-structure                                 8.2535+-0.1997            7.6973+-0.9533          might be 1.0723x faster
   for-of-iterate-array-entries                      10.9053+-0.3246           10.6725+-0.0796          might be 1.0218x faster
   for-of-iterate-array-keys                          3.4251+-0.1287     ?      3.4566+-0.0758        ?
   for-of-iterate-array-values                        3.3857+-0.0983            3.3755+-0.1251        
   fround                                            17.2327+-0.1801     ?     17.4142+-0.9514        ? might be 1.0105x slower
   ftl-library-inlining-dataview                     55.9349+-0.7179     ?     56.0762+-0.8952        ?
   ftl-library-inlining                              97.3609+-1.7316           97.1164+-2.0733        
   function-call                                     10.7308+-0.1899     ?     10.8166+-0.4631        ?
   function-dot-apply                                 2.1641+-0.2495            2.0436+-0.0291          might be 1.0590x faster
   function-test                                      2.7477+-0.0624     ?      2.7927+-0.1224        ? might be 1.0164x slower
   function-with-eval                                97.0897+-0.6721     !     99.2897+-1.1061        ! definitely 1.0227x slower
   gcse-poly-get-less-obvious                        20.7380+-1.2587           19.9685+-0.2858          might be 1.0385x faster
   gcse-poly-get                                     21.8378+-0.2322     ?     22.9421+-1.1203        ? might be 1.0506x slower
   gcse                                               3.4908+-0.2148            3.4118+-0.0770          might be 1.0231x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.5835+-0.0211     ?      2.6098+-0.0408        ? might be 1.0102x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      4.6686+-0.0344     ?      4.7674+-0.0879        ? might be 1.0212x slower
   get-by-id-chain-from-try-block                     2.4127+-0.0695     ?      2.4134+-0.0484        ?
   get-by-id-check-structure-elimination              3.9170+-0.0545            3.8957+-0.0329        
   get-by-id-proto-or-self                           15.5020+-0.9044     ?     15.5521+-0.7342        ?
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8836+-0.0265            2.8647+-0.0364        
   get-by-id-self-or-proto                           15.0330+-0.4155     ?     15.5348+-0.8611        ? might be 1.0334x slower
   get-by-val-out-of-bounds                           4.3211+-0.0515     ?      4.3563+-0.0484        ?
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.7186+-0.0544     ?      2.7768+-0.1135        ? might be 1.0214x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      5.8315+-0.0494     ?      5.9183+-0.1920        ? might be 1.0149x slower
   get-by-val-with-string-chain-from-try-block   
                                                      2.3723+-0.0129     !      2.5110+-0.1250        ! definitely 1.0585x slower
   get-by-val-with-string-check-structure-elimination   
                                                      5.0906+-0.0422     ?      5.1766+-0.1880        ? might be 1.0169x slower
   get-by-val-with-string-proto-or-self              15.5871+-0.8635           14.9418+-0.2238          might be 1.0432x faster
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.0837+-0.0597     ?      3.0986+-0.0654        ?
   get-by-val-with-string-self-or-proto              15.9916+-1.1109           15.5327+-0.4303          might be 1.0295x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      2.9184+-0.0403     ?      2.9277+-0.0831        ?
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.4183+-0.1692           12.2113+-0.0710          might be 1.0170x faster
   get-by-val-with-symbol-chain-from-try-block   
                                                      2.3992+-0.0450            2.3866+-0.0264        
   get-by-val-with-symbol-check-structure-elimination   
                                                     10.9339+-0.0379     ?     10.9662+-0.0624        ?
   get-by-val-with-symbol-proto-or-self              15.4903+-0.7557           15.2866+-0.5816          might be 1.0133x faster
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.9407+-0.0226            3.9239+-0.0743        
   get-by-val-with-symbol-self-or-proto              15.8197+-0.6311     ?     15.9622+-0.7394        ?
   get_callee_monomorphic                             2.4690+-0.1326     ?      2.5161+-0.2868        ? might be 1.0191x slower
   get_callee_polymorphic                             3.4029+-0.0853            3.3582+-0.0859          might be 1.0133x faster
   getter-no-activation                               4.7528+-0.1306            4.6845+-0.0176          might be 1.0146x faster
   getter-prototype                                   7.8770+-0.1242     ?      7.8785+-0.1236        ?
   getter-richards-try-catch                       1003.8516+-14.8322    ?   1006.2893+-22.8049       ?
   getter-richards                                  116.3187+-5.9325          115.3047+-4.2551        
   getter                                             5.4393+-0.5208            5.4095+-0.7102        
   global-object-access-with-mutating-structure   
                                                      5.6101+-0.1158            5.6000+-0.1132        
   global-var-const-infer-fire-from-opt               0.8994+-0.1189            0.8647+-0.0668          might be 1.0401x faster
   global-var-const-infer                             0.6861+-0.0571     ?      0.6868+-0.1051        ?
   hard-overflow-check-equal                         27.5022+-0.5646     ?     27.7935+-1.4991        ? might be 1.0106x slower
   hard-overflow-check                               26.5630+-0.9052     ?     27.2798+-1.3911        ? might be 1.0270x slower
   HashMap-put-get-iterate-keys                      24.3657+-1.4198     ?     25.6622+-2.1858        ? might be 1.0532x slower
   HashMap-put-get-iterate                           26.9809+-1.0037     ?     27.2630+-0.7071        ? might be 1.0105x slower
   HashMap-string-put-get-iterate                    23.7254+-0.8529     ?     24.7883+-1.0751        ? might be 1.0448x slower
   hoist-make-rope                                    8.0553+-0.6604     ?      8.5497+-1.1249        ? might be 1.0614x slower
   hoist-poly-check-structure-effectful-loop   
                                                      3.6301+-0.0172     ?      3.7735+-0.3572        ? might be 1.0395x slower
   hoist-poly-check-structure                         3.1493+-0.2147            3.1149+-0.0684          might be 1.0111x faster
   imul-double-only                                   7.7979+-0.1538            7.3724+-0.4511          might be 1.0577x faster
   imul-int-only                                      8.3660+-0.7346            8.0697+-0.7495          might be 1.0367x faster
   imul-mixed                                         6.7442+-0.2941     ?      6.9148+-0.4655        ? might be 1.0253x slower
   in-four-cases                                     16.8946+-0.4379     ?     16.9442+-0.4645        ?
   in-one-case-false                                  9.6648+-0.4894     ?      9.6676+-0.4500        ?
   in-one-case-true                                   9.4445+-0.4164            9.2825+-0.2234          might be 1.0174x faster
   in-two-cases                                       9.7161+-0.3722            9.5063+-0.0488          might be 1.0221x faster
   indexed-properties-in-objects                      2.8331+-0.2249            2.7437+-0.0161          might be 1.0326x faster
   infer-closure-const-then-mov-no-inline             3.6027+-0.0348     ?      3.6102+-0.0383        ?
   infer-closure-const-then-mov                      18.2684+-0.5430           18.1890+-0.6500        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     11.0326+-0.6526           10.8909+-0.3358          might be 1.0130x faster
   infer-closure-const-then-put-to-scope             22.8913+-0.9619     ?     22.9354+-1.2509        ?
   infer-closure-const-then-reenter-no-inline   
                                                     49.0533+-2.7693           46.9982+-0.2951          might be 1.0437x faster
   infer-closure-const-then-reenter                  22.3295+-0.6142     ?     22.5478+-0.6013        ?
   infer-constant-global-property                     3.5012+-0.2478            3.4132+-0.0496          might be 1.0258x faster
   infer-constant-property                            2.6516+-0.0906            2.6398+-0.0516        
   infer-one-time-closure-ten-vars                    7.8410+-0.3470            7.6407+-0.1149          might be 1.0262x faster
   infer-one-time-closure-two-vars                    7.3453+-0.1911            7.2380+-0.1800          might be 1.0148x faster
   infer-one-time-closure                             7.3534+-0.1950            7.2211+-0.1631          might be 1.0183x faster
   infer-one-time-deep-closure                       10.5110+-0.2370     ?     10.7154+-0.1690        ? might be 1.0194x slower
   inline-arguments-access                            3.6664+-0.0869            3.5341+-0.0723          might be 1.0374x faster
   inline-arguments-aliased-access                    3.5893+-0.0529     ?      3.7872+-0.2433        ? might be 1.0552x slower
   inline-arguments-local-escape                      3.7092+-0.2217            3.6522+-0.1772          might be 1.0156x faster
   inline-get-scoped-var                              4.5711+-0.1255            4.4637+-0.0453          might be 1.0241x faster
   inlined-put-by-id-transition                       9.0726+-0.3906            9.0156+-0.4615        
   inlined-put-by-val-with-string-transition   
                                                     41.7287+-1.0218     ?     43.4899+-2.8786        ? might be 1.0422x slower
   inlined-put-by-val-with-symbol-transition   
                                                     42.0261+-1.9817           41.1012+-0.7465          might be 1.0225x faster
   int-or-other-abs-then-get-by-val                   4.4624+-0.0525     ?      4.5027+-0.0190        ?
   int-or-other-abs-zero-then-get-by-val             15.1442+-0.3203     ?     15.3780+-0.2351        ? might be 1.0154x slower
   int-or-other-add-then-get-by-val                   4.1184+-0.1721            4.0650+-0.0735          might be 1.0131x faster
   int-or-other-add                                   4.9571+-0.0460     ?      4.9936+-0.2106        ?
   int-or-other-div-then-get-by-val                   3.7128+-0.0636            3.6816+-0.0515        
   int-or-other-max-then-get-by-val                   3.9004+-0.0494            3.8568+-0.0505          might be 1.0113x faster
   int-or-other-min-then-get-by-val                   3.7497+-0.0498            3.7379+-0.0303        
   int-or-other-mod-then-get-by-val                   3.4990+-0.0658     ?      3.6640+-0.4436        ? might be 1.0472x slower
   int-or-other-mul-then-get-by-val                   3.7610+-0.2777            3.6003+-0.0477          might be 1.0446x faster
   int-or-other-neg-then-get-by-val                   4.0717+-0.1709     ?      4.0924+-0.3322        ?
   int-or-other-neg-zero-then-get-by-val             15.3349+-0.6612     ?     15.4238+-0.7499        ?
   int-or-other-sub-then-get-by-val                   4.0158+-0.0960            4.0063+-0.0589        
   int-or-other-sub                                   3.4261+-0.0396     ?      3.4426+-0.0984        ?
   int-overflow-local                                 4.0902+-0.0439            4.0877+-0.0645        
   Int16Array-alloc-long-lived                       43.1358+-0.9222           43.0531+-1.7731        
   Int16Array-bubble-sort-with-byteLength            16.9632+-0.2633     ?     17.4961+-1.2364        ? might be 1.0314x slower
   Int16Array-bubble-sort                            16.5819+-0.2792     ?     16.9068+-0.6025        ? might be 1.0196x slower
   Int16Array-load-int-mul                            1.4284+-0.0065            1.4238+-0.0135        
   Int16Array-to-Int32Array-set                      43.9258+-1.7384           43.6491+-1.4121        
   Int32Array-alloc-large                            11.6555+-0.3134           11.5811+-0.3945        
   Int32Array-alloc-long-lived                       48.1889+-0.9801           47.7393+-1.4367        
   Int32Array-alloc                                   2.8681+-0.0937     ?      2.9786+-0.1563        ? might be 1.0385x slower
   Int32Array-Int8Array-view-alloc                    5.8605+-0.0965            5.8452+-0.0997        
   int52-spill                                        4.5774+-0.1524     ?      4.6252+-0.2510        ? might be 1.0104x slower
   Int8Array-alloc-long-lived                        38.1917+-1.1019     ?     38.4717+-0.8402        ?
   Int8Array-load-with-byteLength                     3.3606+-0.0437     ?      3.4159+-0.1025        ? might be 1.0164x slower
   Int8Array-load                                     3.3596+-0.0517     ?      3.4083+-0.0763        ? might be 1.0145x slower
   integer-divide                                    10.3008+-0.0760     ?     10.3247+-0.1489        ?
   integer-modulo                                     1.7251+-0.2893            1.6343+-0.1036          might be 1.0555x faster
   is-boolean-fold-tricky                             3.8044+-0.1069            3.7895+-0.0789        
   is-boolean-fold                                    2.6698+-0.0600     ?      2.6986+-0.0803        ? might be 1.0108x slower
   is-function-fold-tricky-internal-function   
                                                      9.4686+-0.0522     ?      9.5271+-0.1066        ?
   is-function-fold-tricky                            4.3418+-0.6433            4.0280+-0.0680          might be 1.0779x faster
   is-function-fold                                   2.6777+-0.0405            2.6639+-0.0503        
   is-number-fold-tricky                              4.1464+-0.4107            4.0104+-0.1481          might be 1.0339x faster
   is-number-fold                                     2.6746+-0.0876            2.6521+-0.0213        
   is-object-or-null-fold-functions                   2.7348+-0.0736            2.6825+-0.0249          might be 1.0195x faster
   is-object-or-null-fold-less-tricky                 4.0337+-0.1464            4.0137+-0.0942        
   is-object-or-null-fold-tricky                      4.7740+-0.0537            4.7253+-0.0439          might be 1.0103x faster
   is-object-or-null-fold                             2.6865+-0.0302     ?      2.6943+-0.0558        ?
   is-object-or-null-trickier-function                4.0513+-0.0495            4.0040+-0.0356          might be 1.0118x faster
   is-object-or-null-trickier-internal-function   
                                                      9.7108+-0.1497     ?      9.7270+-0.1587        ?
   is-object-or-null-tricky-function                  4.0153+-0.0833            3.9944+-0.0939        
   is-object-or-null-tricky-internal-function   
                                                      7.3594+-0.0415            7.3578+-0.0486        
   is-string-fold-tricky                              3.9643+-0.0816     ?      3.9811+-0.0921        ?
   is-string-fold                                     2.6381+-0.0185     ?      2.7160+-0.1709        ? might be 1.0295x slower
   is-undefined-fold-tricky                           3.3368+-0.0213     ?      3.4235+-0.1758        ? might be 1.0260x slower
   is-undefined-fold                                  2.6476+-0.0234     ?      2.6660+-0.0718        ?
   JSONP-negative-0                                   0.2511+-0.0084     ?      0.2523+-0.0193        ?
   large-int-captured                                 4.0184+-0.0823     ?      4.0720+-0.0545        ? might be 1.0133x slower
   large-int-neg                                     13.9774+-0.4073           13.9306+-0.5992        
   large-int                                         12.7616+-0.4113     ?     13.5119+-1.3120        ? might be 1.0588x slower
   load-varargs-elimination                          19.8640+-0.2821     ?     20.6838+-0.7239        ? might be 1.0413x slower
   logical-not-weird-types                            2.9961+-0.0399     ?      2.9987+-0.0291        ?
   logical-not                                        4.2502+-0.0693            4.2212+-0.0465        
   lots-of-fields                                     9.2935+-0.2502     ?      9.4337+-0.2857        ? might be 1.0151x slower
   make-indexed-storage                               2.7396+-0.1582     ?      2.7481+-0.1312        ?
   make-rope-cse                                      3.6148+-0.0536     ?      3.6708+-0.1546        ? might be 1.0155x slower
   marsaglia-larger-ints                             31.7422+-1.0254           31.5574+-0.3920        
   marsaglia-osr-entry                               21.0744+-0.5361           20.8016+-0.2617          might be 1.0131x faster
   math-with-out-of-bounds-array-values              21.7229+-1.4554           21.6044+-1.0768        
   max-boolean                                        2.6173+-0.0421            2.6029+-0.0673        
   method-on-number                                  15.3292+-0.2632     ?     15.3542+-0.2254        ?
   min-boolean                                        2.6292+-0.0275            2.6101+-0.0656        
   minus-boolean-double                               3.0944+-0.0618            3.0908+-0.0320        
   minus-boolean                                      2.3405+-0.0459            2.3139+-0.0184          might be 1.0115x faster
   misc-strict-eq                                    28.2450+-1.0709     ?     28.5756+-1.2139        ? might be 1.0117x slower
   mod-boolean-double                                11.0805+-0.3549           10.9470+-0.0495          might be 1.0122x faster
   mod-boolean                                        8.2726+-0.0847     ?      8.2924+-0.0918        ?
   mul-boolean-double                                 3.6063+-0.0354     ?      3.6085+-0.0731        ?
   mul-boolean                                        2.7904+-0.0204     ?      2.8168+-0.0330        ?
   neg-boolean                                        3.0726+-0.0086     ?      3.1037+-0.0772        ? might be 1.0101x slower
   negative-zero-divide                               0.3340+-0.0022     ?      0.3485+-0.0286        ? might be 1.0433x slower
   negative-zero-modulo                               0.3621+-0.0648            0.3390+-0.0142          might be 1.0681x faster
   negative-zero-negate                               0.4069+-0.2081            0.3236+-0.0058          might be 1.2574x faster
   nested-function-parsing                           45.1926+-0.7766     ?     45.6406+-1.6269        ?
   new-array-buffer-dead                             86.6356+-0.4919     ?     86.9308+-0.9623        ?
   new-array-buffer-push                              6.0083+-0.0370            6.0029+-0.2238        
   new-array-dead                                    14.8462+-1.5262     ?     14.9300+-1.0844        ?
   new-array-push                                     3.4109+-0.0906     ?      3.4545+-0.1124        ? might be 1.0128x slower
   no-inline-constructor                             31.1731+-0.2070     ?     31.7261+-0.5414        ? might be 1.0177x slower
   number-test                                        3.0663+-0.0548            3.0213+-0.0518          might be 1.0149x faster
   object-closure-call                                4.8797+-0.0794            4.8364+-0.0334        
   object-get-own-property-symbols-on-large-array   
                                                      4.1746+-0.2175     ?      4.3607+-0.3634        ? might be 1.0446x slower
   object-test                                        2.7277+-0.0132            2.7016+-0.0338        
   obvious-sink-pathology-taken                      97.6988+-2.0089           97.6124+-1.4182        
   obvious-sink-pathology                            92.7352+-1.3241           92.5547+-0.6536        
   obviously-elidable-new-object                     27.9913+-0.4251     ?     28.6787+-0.6965        ? might be 1.0246x slower
   plus-boolean-arith                                 2.4656+-0.1383            2.4016+-0.0233          might be 1.0266x faster
   plus-boolean-double                                3.1330+-0.0664            3.1131+-0.0859        
   plus-boolean                                       2.5026+-0.0427            2.4983+-0.0525        
   poly-chain-access-different-prototypes-simple   
                                                      2.5435+-0.0265     ?      2.6134+-0.0440        ? might be 1.0275x slower
   poly-chain-access-different-prototypes             2.5402+-0.0209     ?      2.5710+-0.0292        ? might be 1.0121x slower
   poly-chain-access-simpler                          2.5693+-0.0159     ?      2.6270+-0.0662        ? might be 1.0225x slower
   poly-chain-access                                  2.4784+-0.0329     ?      2.5301+-0.0702        ? might be 1.0209x slower
   poly-stricteq                                     48.8127+-0.3009     ?     49.1757+-0.9144        ?
   polymorphic-array-call                             1.3324+-0.0555     ?      1.3343+-0.1835        ?
   polymorphic-get-by-id                              2.8764+-0.0620            2.8357+-0.0192          might be 1.0144x faster
   polymorphic-put-by-id                             27.4346+-0.6317           26.7222+-0.3400          might be 1.0267x faster
   polymorphic-put-by-val-with-string                28.9216+-1.1163           28.8349+-0.9711        
   polymorphic-put-by-val-with-symbol                29.3331+-1.5205           28.3643+-0.3558          might be 1.0342x faster
   polymorphic-structure                             12.3028+-0.1576           12.2429+-0.1719        
   polyvariant-monomorphic-get-by-id                  6.7134+-0.9402            6.5030+-0.8394          might be 1.0324x faster
   proto-getter-access                                8.3820+-0.1863     ?      8.3924+-0.3178        ?
   prototype-access-with-mutating-prototype           5.4463+-0.2123     ?      5.6363+-0.2297        ? might be 1.0349x slower
   put-by-id-replace-and-transition                   7.8863+-0.3081            7.8338+-0.4660        
   put-by-id-slightly-polymorphic                     2.6911+-0.0088            2.6854+-0.0188        
   put-by-id                                          9.4120+-0.1544     ?      9.4896+-0.3098        ?
   put-by-val-direct                                  0.3540+-0.0206     ?      0.3547+-0.0203        ?
   put-by-val-large-index-blank-indexing-type   
                                                      5.2478+-0.1932     ?      5.4642+-0.1633        ? might be 1.0412x slower
   put-by-val-machine-int                             2.5067+-0.0881     ?      2.5949+-0.3009        ? might be 1.0352x slower
   put-by-val-with-string-replace-and-transition   
                                                      9.9909+-0.3400            9.8702+-0.0445          might be 1.0122x faster
   put-by-val-with-string-slightly-polymorphic   
                                                      2.9320+-0.0581     ?      2.9841+-0.0686        ? might be 1.0178x slower
   put-by-val-with-string                            10.0031+-0.2774            9.9614+-0.2143        
   put-by-val-with-symbol-replace-and-transition   
                                                     11.6682+-0.5119     ?     11.6835+-0.3869        ?
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.1926+-0.0589            3.1387+-0.0984          might be 1.0172x faster
   put-by-val-with-symbol                             9.8921+-0.0685     ?     10.0697+-0.3361        ? might be 1.0179x slower
   rare-osr-exit-on-local                            13.3027+-0.0699           13.2896+-0.0924        
   raytrace-with-empty-try-catch                      5.2686+-0.4243            5.0702+-0.0605          might be 1.0391x faster
   raytrace-with-try-catch                            9.6886+-0.2680     ?      9.7048+-0.1519        ?
   register-pressure-from-osr                        16.1607+-0.1224     ?     16.4074+-0.1858        ? might be 1.0153x slower
   repeat-multi-get-by-offset                        21.1818+-0.1380     ?     21.4956+-0.4828        ? might be 1.0148x slower
   richards-empty-try-catch                          71.9101+-1.6521           71.5377+-1.6662        
   richards-try-catch                               241.5111+-5.1729     ?    243.2578+-5.0892        ?
   setter-prototype                                   7.6279+-0.1360     ?      7.6721+-0.0928        ?
   setter                                             5.4072+-0.4494     ?      5.4295+-0.4336        ?
   simple-activation-demo                            23.6376+-0.2631     ?     23.7525+-0.4889        ?
   simple-getter-access                              10.5458+-0.2731     ?     10.7325+-0.2074        ? might be 1.0177x slower
   simple-poly-call-nested                            8.7629+-0.5479            8.5541+-0.5201          might be 1.0244x faster
   simple-poly-call                                   1.3005+-0.0546            1.2673+-0.0229          might be 1.0263x faster
   sin-boolean                                       21.3939+-0.5481           19.6918+-1.5215          might be 1.0864x faster
   singleton-scope                                   62.8305+-0.4561     ?     63.2624+-1.4098        ?
   sink-function                                     10.0673+-0.6817            9.7631+-0.7376          might be 1.0312x faster
   sink-huge-activation                              16.0059+-0.6491     ?     16.4120+-0.3517        ? might be 1.0254x slower
   sinkable-new-object-dag                           53.2526+-0.9570     ?     53.6776+-0.8207        ?
   sinkable-new-object-taken                         43.4637+-2.2779           43.0030+-1.0998          might be 1.0107x faster
   sinkable-new-object                               29.7319+-0.4265     ?     29.8645+-0.9156        ?
   slow-array-profile-convergence                     2.4724+-0.0913     ?      2.4727+-0.0403        ?
   slow-convergence                                   2.3357+-0.0395     ?      2.5086+-0.2432        ? might be 1.0740x slower
   slow-ternaries                                    17.3373+-0.7472           16.8895+-0.1804          might be 1.0265x faster
   sorting-benchmark                                 16.9160+-1.1910           16.8585+-0.5659        
   sparse-conditional                                 1.1297+-0.0265     ?      1.1570+-0.0270        ? might be 1.0242x slower
   splice-to-remove                                  14.4522+-1.3204     ^     11.8686+-0.1010        ^ definitely 1.2177x faster
   string-char-code-at                               13.1022+-0.2396           12.9436+-0.1156          might be 1.0122x faster
   string-concat-object                               2.1628+-0.0292     ?      2.1946+-0.0814        ? might be 1.0147x slower
   string-concat-pair-object                          2.1302+-0.0325            2.0908+-0.0578          might be 1.0189x faster
   string-concat-pair-simple                          9.0516+-0.2534     ?      9.5371+-0.7135        ? might be 1.0536x slower
   string-concat-simple                               9.2077+-0.3967     ?      9.3782+-0.4752        ? might be 1.0185x slower
   string-cons-repeat                                 6.3434+-0.1325            6.2967+-0.0446        
   string-cons-tower                                  6.5045+-0.2455     ?      6.6711+-0.3746        ? might be 1.0256x slower
   string-equality                                   14.9669+-0.6641     ?     14.9797+-0.5307        ?
   string-get-by-val-big-char                         6.6260+-0.4533            6.4640+-0.0507          might be 1.0251x faster
   string-get-by-val-out-of-bounds-insane             2.9989+-0.0166     ?      3.0672+-0.1003        ? might be 1.0228x slower
   string-get-by-val-out-of-bounds                    3.9314+-0.0672            3.8737+-0.0306          might be 1.0149x faster
   string-get-by-val                                  2.8581+-0.1227            2.7907+-0.0318          might be 1.0242x faster
   string-hash                                        1.8155+-0.0182     ?      1.8518+-0.0370        ? might be 1.0200x slower
   string-long-ident-equality                        12.7831+-0.1130     ?     12.9298+-0.1882        ? might be 1.0115x slower
   string-out-of-bounds                              10.1140+-0.3049           10.0350+-0.3149        
   string-repeat-arith                               26.5645+-0.5564     ?     27.1384+-1.3064        ? might be 1.0216x slower
   string-sub                                        54.9455+-0.8494     ?     56.4158+-0.7074        ? might be 1.0268x slower
   string-test                                        2.8958+-0.2087            2.8886+-0.0801        
   string-var-equality                               25.9427+-0.5661     ?     25.9983+-0.4391        ?
   structure-hoist-over-transitions                   2.3418+-0.0749     ?      2.3429+-0.0463        ?
   substring-concat-weird                            35.5424+-0.7252           35.5164+-0.3529        
   substring-concat                                  40.5896+-1.3102     ?     40.5914+-2.4632        ?
   substring                                         44.0460+-0.3503     ?     45.1400+-1.1958        ? might be 1.0248x slower
   switch-char-constant                               2.7066+-0.0433            2.6617+-0.0206          might be 1.0169x faster
   switch-char                                        5.6145+-0.8081     ?      6.3776+-1.0541        ? might be 1.1359x slower
   switch-constant                                    8.0564+-0.7897            7.8280+-0.8773          might be 1.0292x faster
   switch-string-basic-big-var                       14.3335+-0.1259     ^     13.9696+-0.0769        ^ definitely 1.0261x faster
   switch-string-basic-big                           14.7600+-0.2120           14.5927+-0.1107          might be 1.0115x faster
   switch-string-basic-var                           13.4458+-0.9157           12.9737+-0.0910          might be 1.0364x faster
   switch-string-basic                               12.3363+-0.2838     ?     12.4946+-0.4528        ? might be 1.0128x slower
   switch-string-big-length-tower-var                17.8181+-0.3911           17.7440+-0.6094        
   switch-string-length-tower-var                    12.8684+-0.1300     ?     13.1723+-0.5755        ? might be 1.0236x slower
   switch-string-length-tower                        11.2435+-0.2429     ?     11.2757+-0.1891        ?
   switch-string-short                               11.2231+-0.1287           11.2068+-0.1112        
   switch                                            10.4695+-0.4600     ?     10.6816+-0.3367        ? might be 1.0203x slower
   tear-off-arguments-simple                          3.0341+-0.0668     ?      3.0400+-0.0887        ?
   tear-off-arguments                                 4.0707+-0.1244            4.0384+-0.1883        
   temporal-structure                                11.8155+-0.2400           11.5958+-0.1598          might be 1.0189x faster
   to-int32-boolean                                  12.4307+-0.3661           12.3171+-0.2105        
   try-catch-get-by-val-cloned-arguments              9.5251+-0.4616            9.2840+-0.0926          might be 1.0260x faster
   try-catch-get-by-val-direct-arguments              2.1624+-0.2055            2.0860+-0.0107          might be 1.0366x faster
   try-catch-get-by-val-scoped-arguments              4.6680+-0.0589     ?      4.7234+-0.2122        ? might be 1.0119x slower
   typed-array-get-set-by-val-profiling              26.6460+-0.4162           26.1608+-0.3362          might be 1.0185x faster
   undefined-property-access                        218.3126+-2.7169          217.1899+-2.3551        
   undefined-test                                     2.9870+-0.0484            2.9794+-0.0303        
   unprofiled-licm                                    9.4313+-0.3685            9.4021+-0.1890        
   v8-raytrace-with-empty-try-catch                  23.8767+-1.0763           23.4472+-0.1819          might be 1.0183x faster
   v8-raytrace-with-try-catch                        61.2155+-1.1874           61.0274+-1.0342        
   varargs-call                                      12.9182+-0.2788     ?     13.0686+-0.4183        ? might be 1.0116x slower
   varargs-construct-inline                          21.3981+-0.2423     ?     21.6842+-0.4570        ? might be 1.0134x slower
   varargs-construct                                 20.4292+-0.5025     ?     20.9313+-1.0477        ? might be 1.0246x slower
   varargs-inline                                     8.7004+-0.0871     ?      8.7317+-0.2245        ?
   varargs-strict-mode                               10.1039+-0.3554     ?     10.3634+-0.9649        ? might be 1.0257x slower
   varargs                                            9.8156+-0.1705            9.8063+-0.0793        
   weird-inlining-const-prop                          2.1760+-0.1239     ?      2.2282+-0.2768        ? might be 1.0240x slower

   <geometric>                                        7.9828+-0.0187            7.9798+-0.0204          might be 1.0004x faster

                                                        TipOfTree           ParallelVectorIterator                              
AsmBench:
   bigfib.cpp                                       448.1843+-5.3940     ?    452.7718+-3.6302        ? might be 1.0102x slower
   cray.c                                           397.6614+-8.7933     ?    397.9905+-8.1765        ?
   dry.c                                            423.6230+-8.0512          422.7723+-6.2957        
   FloatMM.c                                        683.3425+-2.6920     ?    691.5821+-15.4875       ? might be 1.0121x slower
   gcc-loops.cpp                                   3433.2930+-16.4402        3421.2750+-13.7682       
   n-body.c                                         828.4470+-11.9840         824.6730+-6.1826        
   Quicksort.c                                      403.7090+-5.0089     ?    408.7156+-5.5308        ? might be 1.0124x slower
   stepanov_container.cpp                          3520.4555+-18.6736    ?   3589.0770+-132.0583      ? might be 1.0195x slower
   Towers.c                                         233.8587+-2.7037          233.2573+-2.0461        

   <geometric>                                      714.8409+-3.0608     ?    718.1358+-4.3791        ? might be 1.0046x slower

                                                        TipOfTree           ParallelVectorIterator                              
CompressionBench:
   huffman                                           59.9701+-0.6331           59.6248+-0.8616        
   arithmetic-simple                                273.2520+-3.3121          271.1920+-3.6025        
   arithmetic-precise                               244.4824+-3.8363          243.9747+-2.1938        
   arithmetic-complex-precise                       245.6497+-3.6651          242.6950+-1.3713          might be 1.0122x faster
   arithmetic-precise-order-0                       280.7568+-6.5456          278.8388+-2.5852        
   arithmetic-precise-order-1                       298.9087+-2.7398          298.5026+-2.3714        
   arithmetic-precise-order-2                       347.7651+-6.1826     ?    350.9298+-9.2363        ?
   arithmetic-simple-order-1                        323.2661+-3.1287          318.8053+-2.8745          might be 1.0140x faster
   arithmetic-simple-order-2                        374.5296+-10.9722         373.3166+-5.8732        
   lz-string                                        307.7385+-2.1383     ?    313.1673+-7.5722        ? might be 1.0176x slower

   <geometric>                                      252.8671+-1.2074          252.2074+-1.2487          might be 1.0026x faster

                                                        TipOfTree           ParallelVectorIterator                              
Geomean of preferred means:
   <scaled-result>                                   49.6841+-0.2124     ?     49.7672+-0.1204        ? might be 1.0017x slower
Comment 8 Andreas Kling 2015-09-29 09:32:09 PDT
Comment on attachment 262043 [details]
the patch

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

r=me

> Source/JavaScriptCore/heap/CopyVisitor.cpp:43
> +    CopiedBlock* block = 0;

nullptr

> Source/JavaScriptCore/heap/Heap.cpp:658
> +                            item.cell()->methodTable()->copyBackingStore(
> +                                item.cell(), copyVisitor, item.token());

You could use the methodTable(VM&) overload here.

> Source/WTF/wtf/ParallelVectorIterator.h:29
> +#include <wtf/FastMalloc.h>

You probably don't need this header here.
Comment 9 Filip Pizlo 2015-09-29 09:33:44 PDT
(In reply to comment #8)
> Comment on attachment 262043 [details]
> the patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=262043&action=review
> 
> r=me
> 
> > Source/JavaScriptCore/heap/CopyVisitor.cpp:43
> > +    CopiedBlock* block = 0;
> 
> nullptr

Yup!

> 
> > Source/JavaScriptCore/heap/Heap.cpp:658
> > +                            item.cell()->methodTable()->copyBackingStore(
> > +                                item.cell(), copyVisitor, item.token());
> 
> You could use the methodTable(VM&) overload here.

Wow, that's kind of a startling omission.  Fixed.

> 
> > Source/WTF/wtf/ParallelVectorIterator.h:29
> > +#include <wtf/FastMalloc.h>
> 
> You probably don't need this header here.

I use WTF_MAKE_FAST_ALLOCATED in that header, for the ParallelVectorIterator class. :-)
Comment 10 Filip Pizlo 2015-09-29 09:39:59 PDT
Landed in http://trac.webkit.org/changeset/190310