Bug 149509

Summary: Parallel copy phase synchronization should be simplified
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, benjamin, ggaren, joepeck, mark.lam, mhahnenb, msaboff, nrotem, oliver, saam, sam
Priority: P2    
Version: Other   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 149433    
Attachments:
Description Flags
the patch mark.lam: review+

Description Filip Pizlo 2015-09-23 13:01:29 PDT
Currently, we don't wait for the copy phase to finish after we have already finished it and the copied space is unable to handle any more copy tasks joining.  This means that we have weird hacks to ensure that things don't go to badly when a copy thread starts copying after we already finished copying.  It also meant two separate mechanisms for waiting for copying threads to finish - one mechanism in the Heap phase logic and another in the CopiedSpace::doneCopying() method.

We can get rid of a lot of the weirdness by just having a sound shutdown sequence:

1) Threads concur on when there is no more work. We already have this; once Heap::getNextBlocksToCopy() returns no work in any thread, it will also return no work in any other thread that asks for work.
2) Main thread waits for the threads to not be copying anymore.
3) Do whatever we need to do after copying finishes.

Currently, we do (3) before (2) and so we have weird problems.
Comment 1 Filip Pizlo 2015-09-23 13:08:01 PDT
Created attachment 261839 [details]
the patch
Comment 2 Filip Pizlo 2015-09-23 13:35:13 PDT
It doesn't appear to break performance.


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

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

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                SimplerCopy                                    
SunSpider:
   3d-cube                                            4.6068+-0.1597            4.5579+-0.1425          might be 1.0107x faster
   3d-morph                                           5.2879+-0.0640     ?      5.5467+-0.8172        ? might be 1.0489x slower
   3d-raytrace                                        5.6467+-1.2086            5.2932+-0.1094          might be 1.0668x faster
   access-binary-trees                                2.1460+-0.0585     ?      2.2931+-0.2359        ? might be 1.0686x slower
   access-fannkuch                                    5.5025+-0.2037            5.4589+-0.1213        
   access-nbody                                       2.4655+-0.0291     ?      2.4715+-0.0178        ?
   access-nsieve                                      3.0877+-0.1198            3.0641+-0.1108        
   bitops-3bit-bits-in-byte                           1.1316+-0.0155     ?      1.1618+-0.0478        ? might be 1.0267x slower
   bitops-bits-in-byte                                3.1863+-0.0271     ?      3.2177+-0.0937        ?
   bitops-bitwise-and                                 2.0005+-0.0519            1.9917+-0.0223        
   bitops-nsieve-bits                                 2.9325+-0.0963            2.8932+-0.0560          might be 1.0136x faster
   controlflow-recursive                              2.3280+-0.0574     ?      2.3518+-0.0763        ? might be 1.0102x slower
   crypto-aes                                         3.9299+-0.0996            3.8608+-0.0708          might be 1.0179x faster
   crypto-md5                                         2.4344+-0.0144     ?      2.4788+-0.0402        ? might be 1.0183x slower
   crypto-sha1                                        2.3917+-0.1201     ?      2.4891+-0.1285        ? might be 1.0407x slower
   date-format-tofte                                  6.7194+-0.1563            6.6821+-0.1208        
   date-format-xparb                                  4.5997+-0.0607     ?      4.6328+-0.0806        ?
   math-cordic                                        2.7423+-0.0223     ?      2.8560+-0.1336        ? might be 1.0415x slower
   math-partial-sums                                  4.9322+-0.3239            4.8094+-0.1254          might be 1.0255x faster
   math-spectral-norm                                 1.9193+-0.0364     ?      1.9244+-0.1044        ?
   regexp-dna                                         6.4719+-0.3636     ?      6.5184+-0.2909        ?
   string-base64                                      4.5010+-0.1002     ?      4.5709+-0.1380        ? might be 1.0155x slower
   string-fasta                                       5.9127+-0.3313            5.7945+-0.1066          might be 1.0204x faster
   string-tagcloud                                    7.9572+-0.1995     ?      8.2157+-0.2725        ? might be 1.0325x slower
   string-unpack-code                                18.1314+-0.2083     ?     18.4776+-0.5513        ? might be 1.0191x slower
   string-validate-input                              4.6374+-0.0564            4.4982+-0.1014          might be 1.0309x faster

   <arithmetic>                                       4.5232+-0.0418     ?      4.5427+-0.0408        ? might be 1.0043x slower

                                                        TipOfTree                SimplerCopy                                    
LongSpider:
   3d-cube                                          806.5248+-7.5374     ?    812.8152+-3.8147        ?
   3d-morph                                        1490.5118+-5.1652         1487.2630+-4.1903        
   3d-raytrace                                      593.5984+-4.2540          589.6819+-4.9816        
   access-binary-trees                              796.2114+-6.0994          790.1585+-7.2759        
   access-fannkuch                                  276.3256+-5.3056          273.7230+-2.1260        
   access-nbody                                     510.4565+-7.2531          507.9469+-4.7015        
   access-nsieve                                    361.7180+-4.7588     ?    371.1830+-12.2112       ? might be 1.0262x slower
   bitops-3bit-bits-in-byte                          33.6308+-0.3478           33.5624+-0.2242        
   bitops-bits-in-byte                               73.3051+-1.2045     ?     74.4926+-2.2603        ? might be 1.0162x slower
   bitops-nsieve-bits                               402.5841+-6.3524          398.9346+-2.6842        
   controlflow-recursive                            426.9473+-4.3439     ?    427.9908+-4.9051        ?
   crypto-aes                                       563.8418+-5.1908          553.5446+-9.4107          might be 1.0186x faster
   crypto-md5                                       430.4941+-1.2272     ?    432.5428+-9.9144        ?
   crypto-sha1                                      636.8109+-9.5903          634.0022+-6.9317        
   date-format-tofte                                507.3705+-17.0923         492.6200+-3.2805          might be 1.0299x faster
   date-format-xparb                                668.9313+-18.6743         652.9143+-8.0341          might be 1.0245x faster
   hash-map                                         150.0156+-0.4881     ?    150.7368+-1.1181        ?
   math-cordic                                      477.1571+-2.9349     ?    479.3956+-5.8434        ?
   math-partial-sums                                457.6941+-2.2974          454.7710+-2.1381        
   math-spectral-norm                               547.7623+-2.5525     ?    550.0366+-3.1903        ?
   string-base64                                    351.1273+-3.3704     ?    351.3577+-4.0313        ?
   string-fasta                                     361.6763+-4.8268     ?    399.8184+-95.4427       ? might be 1.1055x slower
   string-tagcloud                                  174.5459+-0.9434     ?    176.0378+-2.1130        ?

   <geometric>                                      382.7842+-1.0974     ?    383.3441+-3.4251        ? might be 1.0015x slower

                                                        TipOfTree                SimplerCopy                                    
V8Spider:
   crypto                                            47.7449+-1.7614           46.8942+-0.9180          might be 1.0181x faster
   deltablue                                         78.7598+-3.0082           78.1335+-4.5379        
   earley-boyer                                      41.1656+-1.1882     ?     41.8474+-0.7979        ? might be 1.0166x slower
   raytrace                                          31.2718+-1.3254           30.2050+-1.1623          might be 1.0353x faster
   regexp                                            62.2937+-1.3522           61.9227+-0.4862        
   richards                                          54.0561+-1.5475           53.8316+-0.5816        
   splay                                             35.0198+-0.8436     ?     35.4792+-0.9149        ? might be 1.0131x slower

   <geometric>                                       47.7854+-0.4611           47.5060+-0.2799          might be 1.0059x faster

                                                        TipOfTree                SimplerCopy                                    
Octane:
   encrypt                                           0.16585+-0.00355          0.16517+-0.00408       
   decrypt                                           2.95342+-0.06095          2.92064+-0.01470         might be 1.0112x faster
   deltablue                                x2       0.13783+-0.00099          0.13683+-0.00138       
   earley                                            0.30109+-0.00470          0.30066+-0.00264       
   boyer                                             4.39896+-0.09210          4.34267+-0.05122         might be 1.0130x faster
   navier-stokes                            x2       4.83762+-0.02180    ?     4.85994+-0.03560       ?
   raytrace                                 x2       0.86590+-0.00994          0.85652+-0.00637         might be 1.0109x faster
   richards                                 x2       0.09037+-0.00311          0.08875+-0.00090         might be 1.0183x faster
   splay                                    x2       0.33011+-0.00520          0.32832+-0.00516       
   regexp                                   x2      25.51087+-0.64549    ^    24.19394+-0.38241       ^ definitely 1.0544x faster
   pdfjs                                    x2      36.77092+-0.26829    ?    36.92099+-0.70216       ?
   mandreel                                 x2      42.43172+-0.12859    ?    42.75683+-0.80521       ?
   gbemu                                    x2      31.07801+-0.35927    ?    31.74470+-1.75582       ? might be 1.0215x slower
   closure                                           0.57592+-0.00281    ?     0.57999+-0.00967       ?
   jquery                                            7.31215+-0.04738          7.24567+-0.04556       
   box2d                                    x2       9.07665+-0.08641    ?     9.10723+-0.04998       ?
   zlib                                     x2     404.06208+-39.29542       377.93624+-15.09257        might be 1.0691x faster
   typescript                               x2     687.69189+-84.54952       646.73190+-4.17103         might be 1.0633x faster

   <geometric>                                       5.36482+-0.04605          5.29756+-0.02176         might be 1.0127x faster

                                                        TipOfTree                SimplerCopy                                    
Kraken:
   ai-astar                                          128.911+-3.045            126.425+-0.734           might be 1.0197x faster
   audio-beat-detection                               50.145+-0.314             49.977+-0.153         
   audio-dft                                          96.519+-1.781             96.028+-2.119         
   audio-fft                                          34.827+-0.162             34.779+-0.095         
   audio-oscillator                                   55.614+-0.412      ?      56.495+-0.697         ? might be 1.0158x slower
   imaging-darkroom                                   60.726+-1.613             59.846+-0.212           might be 1.0147x faster
   imaging-desaturate                                 49.165+-2.322      ?      49.659+-3.058         ? might be 1.0101x slower
   imaging-gaussian-blur                              86.766+-4.506             86.643+-4.826         
   json-parse-financial                               37.470+-1.977      ?      37.590+-0.433         ?
   json-stringify-tinderbox                           22.365+-0.328      ^      21.804+-0.172         ^ definitely 1.0257x faster
   stanford-crypto-aes                                39.739+-0.390      ?      39.810+-0.512         ?
   stanford-crypto-ccm                                35.183+-1.209      ?      35.382+-0.847         ?
   stanford-crypto-pbkdf2                             94.332+-0.944      ?      94.583+-0.871         ?
   stanford-crypto-sha256-iterative                   35.942+-0.374      ?      39.109+-7.530         ? might be 1.0881x slower

   <arithmetic>                                       59.122+-0.459      ?      59.152+-0.831         ? might be 1.0005x slower

                                                        TipOfTree                SimplerCopy                                    
JSRegress:
   abc-forward-loop-equal                            29.2909+-0.2519           29.2413+-0.4313        
   abc-postfix-backward-loop                         28.9085+-0.3038     ?     29.3231+-0.2772        ? might be 1.0143x slower
   abc-simple-backward-loop                          28.9746+-0.3795           28.7208+-0.2567        
   abc-simple-forward-loop                           28.7900+-0.3522     ?     29.4290+-0.8315        ? might be 1.0222x slower
   abc-skippy-loop                                   20.7495+-0.1480     ?     20.8391+-0.2599        ?
   abs-boolean                                        2.4624+-0.0538            2.4523+-0.0726        
   adapt-to-double-divide                            16.4237+-0.5898           16.1879+-0.2142          might be 1.0146x faster
   aliased-arguments-getbyval                         1.2187+-0.0591     ?      1.2287+-0.0647        ?
   allocate-big-object                                2.5400+-0.1403            2.5067+-0.1234          might be 1.0133x faster
   arguments-named-and-reflective                    10.5999+-0.3343     ?     10.8622+-0.4352        ? might be 1.0247x slower
   arguments-out-of-bounds                            9.2860+-0.1742            9.1801+-0.1875          might be 1.0115x faster
   arguments-strict-mode                              9.5565+-0.3028     ?      9.6215+-0.3615        ?
   arguments                                          8.4563+-0.1523            8.4322+-0.1780        
   arity-mismatch-inlining                            0.8413+-0.0192     ?      0.8793+-0.0564        ? might be 1.0452x slower
   array-access-polymorphic-structure                 7.0474+-0.1018     ?      7.1451+-0.1484        ? might be 1.0139x slower
   array-nonarray-polymorhpic-access                 23.2296+-0.6859           23.1494+-0.1563        
   array-prototype-every                             74.2049+-0.3780           74.0306+-0.5201        
   array-prototype-forEach                           73.5342+-1.1745           72.9287+-0.6549        
   array-prototype-map                               79.3030+-0.5786     ?     79.8805+-1.5764        ?
   array-prototype-reduce                            71.0744+-1.7669           70.4683+-0.6373        
   array-prototype-reduceRight                       69.7628+-0.5811           69.7603+-0.3703        
   array-prototype-some                              74.1478+-0.4782     ?     74.5217+-0.7399        ?
   array-splice-contiguous                           21.1046+-0.6938           20.8946+-0.3109          might be 1.0100x faster
   array-with-double-add                              3.4199+-0.0713     ?      3.4201+-0.0364        ?
   array-with-double-increment                        3.2878+-0.5738            3.0587+-0.0508          might be 1.0749x faster
   array-with-double-mul-add                          4.2615+-0.2349            4.1475+-0.0370          might be 1.0275x faster
   array-with-double-sum                              3.3339+-0.2492            3.1572+-0.0138          might be 1.0560x faster
   array-with-int32-add-sub                           5.6240+-0.0601            5.5654+-0.0379          might be 1.0105x faster
   array-with-int32-or-double-sum                     3.2482+-0.0402     ?      3.2688+-0.0661        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     25.6424+-0.2795           25.4470+-0.4336        
   ArrayBuffer-DataView-alloc-long-lived             11.7547+-0.4335     ?     11.8685+-0.6559        ?
   ArrayBuffer-Int32Array-byteOffset                  3.5063+-0.0361            3.4893+-0.0440        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     26.3487+-1.3932           26.0879+-0.4513        
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     19.1448+-0.2681           19.1277+-0.3942        
   ArrayBuffer-Int8Array-alloc-long-lived            11.0219+-0.2097           10.9311+-0.1659        
   ArrayBuffer-Int8Array-alloc                        9.3493+-0.1393     ?      9.6793+-0.5929        ? might be 1.0353x slower
   arrowfunction-call                                10.7087+-0.4045           10.4342+-0.1218          might be 1.0263x faster
   asmjs_bool_bug                                     7.4061+-0.0366     ?      7.4671+-0.0629        ?
   assign-custom-setter-polymorphic                   2.4211+-0.0162     ?      2.5650+-0.2266        ? might be 1.0594x slower
   assign-custom-setter                               3.2355+-0.0285     !      3.4910+-0.1027        ! definitely 1.0790x slower
   basic-set                                          7.3646+-0.2442     ?      7.4335+-0.2648        ?
   big-int-mul                                        3.4607+-0.0699            3.4341+-0.0570        
   boolean-test                                       3.0662+-0.0426     ?      3.0900+-0.0299        ?
   branch-fold                                        3.8337+-0.4467            3.6149+-0.0606          might be 1.0605x faster
   branch-on-string-as-boolean                       16.7023+-0.2624     ?     17.0042+-0.6291        ? might be 1.0181x slower
   by-val-generic                                     2.4745+-0.0776     ?      2.5827+-0.1093        ? might be 1.0437x slower
   call-spread-apply                                 27.5857+-0.4117     ^     26.5071+-0.3576        ^ definitely 1.0407x faster
   call-spread-call                                  20.9957+-0.2922           20.9606+-0.3417        
   captured-assignments                               0.4383+-0.0332            0.4234+-0.0219          might be 1.0350x faster
   cast-int-to-double                                 5.0804+-0.0366     ?      5.0811+-0.0406        ?
   cell-argument                                      5.7129+-0.2021     ?      5.8072+-0.1578        ? might be 1.0165x slower
   cfg-simplify                                       2.8887+-0.0397            2.8880+-0.0506        
   chain-getter-access                                8.3752+-0.1110     ?      8.3876+-0.1681        ?
   cmpeq-obj-to-obj-other                            12.3818+-1.0929           12.2978+-0.9116        
   constant-test                                      4.8196+-0.0469            4.8108+-0.0433        
   create-lots-of-functions                           9.9041+-0.7442            9.4430+-0.4256          might be 1.0488x faster
   cse-new-array-buffer                               2.2477+-0.0620     ?      2.3289+-0.0768        ? might be 1.0361x slower
   cse-new-array                                      2.4038+-0.1019            2.3606+-0.1486          might be 1.0183x faster
   DataView-custom-properties                        30.3496+-0.3845           30.3494+-0.5030        
   delay-tear-off-arguments-strictmode               12.1786+-0.1629     ?     12.5185+-0.4135        ? might be 1.0279x slower
   deltablue-varargs                                174.6500+-2.5624          167.0293+-5.2591          might be 1.0456x faster
   destructuring-arguments                          160.7614+-0.3908     ?    160.9450+-2.0588        ?
   destructuring-parameters-overridden-by-function   
                                                      0.5034+-0.1258            0.4714+-0.0389          might be 1.0678x faster
   destructuring-swap                                 4.7437+-0.0578     ?      4.7577+-0.0329        ?
   direct-arguments-getbyval                          1.2159+-0.0600     ?      1.2191+-0.0353        ?
   div-boolean-double                                 5.2720+-0.0246     ?      5.3603+-0.1212        ? might be 1.0168x slower
   div-boolean                                        8.0683+-0.0155     ?      8.1302+-0.0590        ?
   double-get-by-val-out-of-bounds                    4.4832+-0.1619            4.4693+-0.0377        
   double-pollution-getbyval                          8.6159+-0.0595     ?      8.6672+-0.0716        ?
   double-pollution-putbyoffset                       3.6610+-0.0713            3.6196+-0.0781          might be 1.0114x faster
   double-real-use                                   23.8302+-0.8774           23.5278+-0.2536          might be 1.0129x faster
   double-to-int32-typed-array-no-inline              2.2619+-0.1052            2.1855+-0.0591          might be 1.0350x faster
   double-to-int32-typed-array                        2.0783+-0.0483     ?      2.1074+-0.0402        ? might be 1.0140x slower
   double-to-uint32-typed-array-no-inline             2.2650+-0.1063     ?      2.4804+-0.6098        ? might be 1.0951x slower
   double-to-uint32-typed-array                       2.1365+-0.0598            2.0776+-0.0165          might be 1.0283x faster
   elidable-new-object-dag                           33.7245+-0.4850           33.5694+-0.4495        
   elidable-new-object-roflcopter                    32.5374+-0.9342           32.0479+-1.2248          might be 1.0153x faster
   elidable-new-object-then-call                     31.9924+-0.5764           31.3804+-0.6266          might be 1.0195x faster
   elidable-new-object-tree                          37.7877+-0.7565           36.8010+-0.2781          might be 1.0268x faster
   empty-string-plus-int                              4.8326+-0.1322            4.7743+-0.1148          might be 1.0122x faster
   emscripten-cube2hash                              26.9406+-1.2708     ?     27.2435+-1.3094        ? might be 1.0112x slower
   exit-length-on-plain-object                       15.0627+-0.1996     ?     15.0849+-0.1283        ?
   external-arguments-getbyval                        1.3207+-0.0377     ?      1.3348+-0.0975        ? might be 1.0106x slower
   external-arguments-putbyval                        2.1678+-0.0760            2.1130+-0.0159          might be 1.0259x faster
   fixed-typed-array-storage-var-index                1.2168+-0.0439            1.2096+-0.0487        
   fixed-typed-array-storage                          0.9062+-0.0300     ?      0.9461+-0.0715        ? might be 1.0440x slower
   Float32Array-matrix-mult                           4.0079+-0.0892            3.9881+-0.0332        
   Float32Array-to-Float64Array-set                  46.7083+-0.8988           46.6364+-0.3106        
   Float64Array-alloc-long-lived                     58.2559+-0.7929     ?     58.5363+-2.4889        ?
   Float64Array-to-Int16Array-set                    57.9146+-0.9798     ^     56.0997+-0.3593        ^ definitely 1.0324x faster
   fold-double-to-int                                12.2489+-0.3241           12.1348+-0.1097        
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.3458+-0.9533     ?     10.8510+-0.8601        ? might be 1.0488x slower
   fold-get-by-id-to-multi-get-by-offset              9.8188+-0.9866     ?      9.8557+-0.7272        ?
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.5401+-1.6775            8.7580+-1.3760          might be 1.0893x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.2407+-1.2288     ?      8.3824+-0.9646        ? might be 1.0172x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.0231+-1.4130            9.3829+-1.4289          might be 1.0682x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      9.8999+-0.5426     ?     10.0218+-0.9530        ? might be 1.0123x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.8090+-0.9311            9.2973+-0.5252          might be 1.0550x faster
   fold-put-by-id-to-multi-put-by-offset             11.3285+-0.7596           10.5679+-1.1031          might be 1.0720x faster
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     10.9460+-0.7136           10.3527+-0.8432          might be 1.0573x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.2523+-1.2310     ?     11.1060+-0.5773        ? might be 1.0833x slower
   fold-put-structure                                 8.2571+-0.3890            7.7605+-0.9569          might be 1.0640x faster
   for-of-iterate-array-entries                      11.1105+-0.8075           10.6253+-0.1977          might be 1.0457x faster
   for-of-iterate-array-keys                          3.4193+-0.1602     ?      3.5357+-0.1118        ? might be 1.0340x slower
   for-of-iterate-array-values                        3.3440+-0.1106            3.3114+-0.0306        
   fround                                            17.2563+-0.2416     ?     17.4524+-0.3839        ? might be 1.0114x slower
   ftl-library-inlining-dataview                     55.8464+-1.2797           55.6145+-0.5894        
   ftl-library-inlining                              96.1807+-2.4267     ?     96.1826+-1.3364        ?
   function-call                                     10.6880+-0.1315     ?     10.8796+-0.4522        ? might be 1.0179x slower
   function-dot-apply                                 2.0201+-0.0339     ?      2.1456+-0.1101        ? might be 1.0621x slower
   function-test                                      2.7040+-0.0379     ?      2.7538+-0.0883        ? might be 1.0184x slower
   function-with-eval                                98.2649+-1.0629           97.0503+-1.7043          might be 1.0125x faster
   gcse-poly-get-less-obvious                        20.2768+-0.2300           20.1552+-0.1739        
   gcse-poly-get                                     21.8574+-2.0592           21.8427+-2.1665        
   gcse                                               3.3852+-0.0509     ?      3.4371+-0.0833        ? might be 1.0153x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.6190+-0.0793            2.6043+-0.0248        
   get-by-id-bimorphic-check-structure-elimination   
                                                      4.8768+-0.4067            4.7976+-0.1040          might be 1.0165x faster
   get-by-id-chain-from-try-block                     2.3911+-0.0195     ?      2.4602+-0.0746        ? might be 1.0289x slower
   get-by-id-check-structure-elimination              3.9190+-0.0805            3.8919+-0.0497        
   get-by-id-proto-or-self                           15.0061+-0.2393     ?     15.3201+-0.5589        ? might be 1.0209x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8831+-0.0595            2.8578+-0.0076        
   get-by-id-self-or-proto                           16.0868+-1.1454           15.7521+-0.8850          might be 1.0212x faster
   get-by-val-out-of-bounds                           4.3001+-0.0843     ?      4.3637+-0.0875        ? might be 1.0148x slower
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.7693+-0.1265            2.7472+-0.0602        
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      5.8756+-0.1169     ?      6.2719+-1.0480        ? might be 1.0675x slower
   get-by-val-with-string-chain-from-try-block   
                                                      2.3978+-0.0426     ?      2.4187+-0.0544        ?
   get-by-val-with-string-check-structure-elimination   
                                                      5.4771+-0.9104            5.1619+-0.1090          might be 1.0611x faster
   get-by-val-with-string-proto-or-self              15.4359+-0.4128     ?     15.5901+-0.4725        ?
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.0632+-0.0802     ?      3.0753+-0.0590        ?
   get-by-val-with-string-self-or-proto              15.5244+-0.5570     ?     15.6200+-0.7079        ?
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      3.1136+-0.0469     ?      3.1193+-0.0363        ?
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.4374+-0.3226           12.3044+-0.0476          might be 1.0108x faster
   get-by-val-with-symbol-chain-from-try-block   
                                                      2.4285+-0.0492            2.4226+-0.0575        
   get-by-val-with-symbol-check-structure-elimination   
                                                     11.3370+-0.0803           11.3057+-0.0595        
   get-by-val-with-symbol-proto-or-self              15.8044+-1.0397           15.3847+-0.3259          might be 1.0273x faster
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.7572+-0.0695            3.7289+-0.1412        
   get-by-val-with-symbol-self-or-proto              15.5077+-0.8680     ?     15.5218+-0.4196        ?
   get_callee_monomorphic                             2.3931+-0.1482     ?      2.4240+-0.2206        ? might be 1.0129x slower
   get_callee_polymorphic                             3.3796+-0.0538     ?      3.3957+-0.0607        ?
   getter-no-activation                               4.7756+-0.1620     ?      4.8209+-0.1954        ?
   getter-prototype                                   7.9553+-0.1798            7.8676+-0.1820          might be 1.0111x faster
   getter-richards                                  114.4554+-3.1492     ?    117.0092+-7.1145        ? might be 1.0223x slower
   getter                                             5.6112+-0.5977     ?      5.6985+-0.7275        ? might be 1.0156x slower
   global-object-access-with-mutating-structure   
                                                      5.5878+-0.0851            5.5606+-0.0381        
   global-var-const-infer-fire-from-opt               0.8550+-0.1036     ?      0.8568+-0.0248        ?
   global-var-const-infer                             0.6744+-0.0474     ?      0.6852+-0.0692        ? might be 1.0160x slower
   hard-overflow-check-equal                         26.3220+-0.3158           26.0347+-0.3547          might be 1.0110x faster
   hard-overflow-check                               26.0702+-0.5483           25.9783+-0.4692        
   HashMap-put-get-iterate-keys                      24.6407+-1.2264     ?     25.7842+-1.4817        ? might be 1.0464x slower
   HashMap-put-get-iterate                           27.7595+-0.4656     ?     28.7734+-1.5644        ? might be 1.0365x slower
   HashMap-string-put-get-iterate                    24.3329+-0.9523     ?     25.1225+-0.9640        ? might be 1.0325x slower
   hoist-make-rope                                    8.2794+-0.5418            8.0986+-0.2458          might be 1.0223x faster
   hoist-poly-check-structure-effectful-loop   
                                                      3.6240+-0.0669            3.6035+-0.0345        
   hoist-poly-check-structure                         3.1359+-0.0698     ?      3.1682+-0.0297        ? might be 1.0103x slower
   imul-double-only                                   7.8790+-0.1065     ^      7.6018+-0.1456        ^ definitely 1.0365x faster
   imul-int-only                                      8.6405+-1.0568            8.5202+-1.0161          might be 1.0141x faster
   imul-mixed                                         6.7825+-0.1936     ?      7.0551+-0.3388        ? might be 1.0402x slower
   in-four-cases                                     16.7106+-0.1052     ?     16.9877+-0.6978        ? might be 1.0166x slower
   in-one-case-false                                  9.4248+-0.3483     ?      9.7199+-0.4318        ? might be 1.0313x slower
   in-one-case-true                                   9.5416+-0.4148            9.4884+-0.3864        
   in-two-cases                                       9.8127+-0.4207            9.7338+-0.3794        
   indexed-properties-in-objects                      2.7619+-0.0730     ?      2.7777+-0.1053        ?
   infer-closure-const-then-mov-no-inline             3.5571+-0.0316     ?      3.5628+-0.0262        ?
   infer-closure-const-then-mov                      18.8195+-1.6992           18.1579+-0.1862          might be 1.0364x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     10.7948+-0.1175           10.7935+-0.2284        
   infer-closure-const-then-put-to-scope             22.4336+-0.1729           21.8477+-0.7741          might be 1.0268x faster
   infer-closure-const-then-reenter-no-inline   
                                                     44.5476+-0.2699     ?     44.5909+-0.5155        ?
   infer-closure-const-then-reenter                  22.5002+-0.5749           22.3549+-0.6665        
   infer-constant-global-property                     3.4095+-0.0483     ?      3.5322+-0.2081        ? might be 1.0360x slower
   infer-constant-property                            2.6366+-0.0572     ?      2.6710+-0.0889        ? might be 1.0131x slower
   infer-one-time-closure-ten-vars                    7.7269+-0.0991     ?      7.7857+-0.3246        ?
   infer-one-time-closure-two-vars                    7.3508+-0.2985            7.3454+-0.1439        
   infer-one-time-closure                             7.2490+-0.1240     ?      7.6134+-0.6736        ? might be 1.0503x slower
   infer-one-time-deep-closure                       10.6600+-0.3181     ?     10.9124+-0.4181        ? might be 1.0237x slower
   inline-arguments-access                            3.6725+-0.1022     ?      3.7020+-0.1309        ?
   inline-arguments-aliased-access                    3.6824+-0.1537            3.6730+-0.1435        
   inline-arguments-local-escape                      3.9278+-0.1494            3.7156+-0.1875          might be 1.0571x faster
   inline-get-scoped-var                              4.4772+-0.1177     ?      4.5824+-0.1404        ? might be 1.0235x slower
   inlined-put-by-id-transition                       9.0572+-0.4341     ?      9.1814+-0.2520        ? might be 1.0137x slower
   inlined-put-by-val-with-string-transition   
                                                     42.0760+-0.9686           41.2617+-0.7890          might be 1.0197x faster
   inlined-put-by-val-with-symbol-transition   
                                                     42.0807+-2.0945           41.3245+-0.9707          might be 1.0183x faster
   int-or-other-abs-then-get-by-val                   4.4799+-0.0883     ?      4.5099+-0.0433        ?
   int-or-other-abs-zero-then-get-by-val             15.4758+-0.1341           15.2149+-0.1606          might be 1.0171x faster
   int-or-other-add-then-get-by-val                   4.1504+-0.0394            4.1392+-0.1189        
   int-or-other-add                                   4.9601+-0.0653            4.9435+-0.0601        
   int-or-other-div-then-get-by-val                   3.7211+-0.0282            3.7194+-0.0310        
   int-or-other-max-then-get-by-val                   3.8299+-0.0227     ?      3.9193+-0.1329        ? might be 1.0233x slower
   int-or-other-min-then-get-by-val                   3.7796+-0.0747            3.7438+-0.0887        
   int-or-other-mod-then-get-by-val                   3.5474+-0.1336            3.5237+-0.0705        
   int-or-other-mul-then-get-by-val                   3.6521+-0.1323            3.5604+-0.0318          might be 1.0258x faster
   int-or-other-neg-then-get-by-val                   4.0101+-0.1527     ?      4.0367+-0.0521        ?
   int-or-other-neg-zero-then-get-by-val             15.2120+-0.1742     ?     15.3709+-0.3071        ? might be 1.0104x slower
   int-or-other-sub-then-get-by-val                   4.0359+-0.0892     ?      4.0783+-0.0635        ? might be 1.0105x slower
   int-or-other-sub                                   3.4502+-0.0642     ?      3.4586+-0.0366        ?
   int-overflow-local                                 4.1135+-0.0796            4.0951+-0.0620        
   Int16Array-alloc-long-lived                       42.7177+-0.6583     ?     42.7979+-1.6350        ?
   Int16Array-bubble-sort-with-byteLength            17.9657+-1.2828           17.1049+-0.1713          might be 1.0503x faster
   Int16Array-bubble-sort                            16.5497+-0.1241     ?     16.6368+-0.4677        ?
   Int16Array-load-int-mul                            1.4314+-0.0352     ?      1.4368+-0.0358        ?
   Int16Array-to-Int32Array-set                      43.8738+-0.6019     ?     44.9498+-0.7330        ? might be 1.0245x slower
   Int32Array-alloc-large                            11.7731+-0.3195           11.7378+-0.3111        
   Int32Array-alloc-long-lived                       47.5672+-0.6586           47.4658+-0.3459        
   Int32Array-alloc                                   2.8657+-0.1482     ?      2.9772+-0.2368        ? might be 1.0389x slower
   Int32Array-Int8Array-view-alloc                    5.7738+-0.0904     ?      5.8859+-0.0787        ? might be 1.0194x slower
   int52-spill                                        4.6054+-0.0609     ?      4.7147+-0.0858        ? might be 1.0237x slower
   Int8Array-alloc-long-lived                        38.4620+-0.9246     ?     38.5030+-1.0774        ?
   Int8Array-load-with-byteLength                     3.3737+-0.0611            3.3386+-0.0262          might be 1.0105x faster
   Int8Array-load                                     3.3407+-0.0574            3.3323+-0.0377        
   integer-divide                                    10.4285+-0.3568           10.3052+-0.1283          might be 1.0120x faster
   integer-modulo                                     1.5995+-0.0409     ?      1.6427+-0.0341        ? might be 1.0270x slower
   is-boolean-fold-tricky                             3.7596+-0.0425     ?      3.8194+-0.0706        ? might be 1.0159x slower
   is-boolean-fold                                    2.6426+-0.0424     ?      2.6653+-0.0647        ?
   is-function-fold-tricky-internal-function   
                                                      9.5196+-0.0648     ^      9.2604+-0.0557        ^ definitely 1.0280x faster
   is-function-fold-tricky                            4.0642+-0.1212            4.0316+-0.0695        
   is-function-fold                                   2.6663+-0.0416            2.6534+-0.0329        
   is-number-fold-tricky                              3.9563+-0.0526     ?      3.9619+-0.0631        ?
   is-number-fold                                     2.6060+-0.0335     ?      2.6422+-0.0525        ? might be 1.0139x slower
   is-object-or-null-fold-functions                   2.6612+-0.0200     ?      2.6955+-0.0561        ? might be 1.0129x slower
   is-object-or-null-fold-less-tricky                 4.0122+-0.1273     ?      4.0399+-0.0883        ?
   is-object-or-null-fold-tricky                      4.8239+-0.1388     ?      4.9986+-0.4129        ? might be 1.0362x slower
   is-object-or-null-fold                             2.6735+-0.0593     ?      2.6879+-0.0543        ?
   is-object-or-null-trickier-function                4.0330+-0.0970     ?      4.0359+-0.0516        ?
   is-object-or-null-trickier-internal-function   
                                                      9.9395+-0.0488     ^      9.7594+-0.1285        ^ definitely 1.0185x faster
   is-object-or-null-tricky-function                  4.0571+-0.1638     ?      4.0601+-0.0873        ?
   is-object-or-null-tricky-internal-function   
                                                      7.3042+-0.0684     ?      7.3685+-0.0503        ?
   is-string-fold-tricky                              3.9042+-0.0678     ?      3.9486+-0.0589        ? might be 1.0114x slower
   is-string-fold                                     2.7141+-0.2381            2.6730+-0.0898          might be 1.0154x faster
   is-undefined-fold-tricky                           3.3299+-0.0581     ?      3.3855+-0.0927        ? might be 1.0167x slower
   is-undefined-fold                                  2.6330+-0.0473     ?      2.6586+-0.0537        ?
   JSONP-negative-0                                   0.2381+-0.0078     ?      0.2599+-0.0262        ? might be 1.0915x slower
   large-int-captured                                 4.1347+-0.1500     ?      4.1491+-0.0918        ?
   large-int-neg                                     14.0885+-0.1412           13.8504+-0.2462          might be 1.0172x faster
   large-int                                         13.3239+-0.3419           12.8732+-0.3660          might be 1.0350x faster
   load-varargs-elimination                          20.0030+-0.3366     ?     20.6173+-1.0109        ? might be 1.0307x slower
   logical-not-weird-types                            3.0168+-0.0576     ?      3.2283+-0.4695        ? might be 1.0701x slower
   logical-not                                        4.4597+-0.0861            4.4459+-0.0772        
   lots-of-fields                                     9.5946+-0.5361            9.5804+-0.3701        
   make-indexed-storage                               2.8472+-0.0768            2.7432+-0.2598          might be 1.0379x faster
   make-rope-cse                                      3.6068+-0.0560            3.5902+-0.0555        
   marsaglia-larger-ints                             31.9777+-1.3056           31.5342+-0.7006          might be 1.0141x faster
   marsaglia-osr-entry                               20.8884+-0.3287     ?     21.0343+-0.5124        ?
   math-with-out-of-bounds-array-values              21.0923+-0.2329           21.0239+-0.2126        
   max-boolean                                        2.6145+-0.0441     ?      2.6518+-0.0190        ? might be 1.0143x slower
   method-on-number                                  15.5202+-0.3466           15.3531+-0.1645          might be 1.0109x faster
   min-boolean                                        2.6285+-0.0256     ?      2.6629+-0.0238        ? might be 1.0131x slower
   minus-boolean-double                               3.0596+-0.0338            3.0466+-0.0460        
   minus-boolean                                      2.3084+-0.0178     ?      2.3501+-0.0292        ? might be 1.0181x slower
   misc-strict-eq                                    28.0663+-0.3649           27.8726+-0.5915        
   mod-boolean-double                                11.0457+-0.1520     ?     11.1507+-0.1755        ?
   mod-boolean                                        8.2859+-0.1167            8.2548+-0.0746        
   mul-boolean-double                                 3.6015+-0.0724            3.5904+-0.0213        
   mul-boolean                                        2.8293+-0.0534            2.8045+-0.0503        
   neg-boolean                                        3.0720+-0.0198     ?      3.0859+-0.0347        ?
   negative-zero-divide                               0.3470+-0.0170     ?      0.3519+-0.0333        ? might be 1.0142x slower
   negative-zero-modulo                               0.3407+-0.0191            0.3305+-0.0095          might be 1.0308x faster
   negative-zero-negate                               0.3359+-0.0357            0.3314+-0.0163          might be 1.0137x faster
   nested-function-parsing                           44.7364+-0.6112     ?     44.9786+-0.7160        ?
   new-array-buffer-dead                             87.4044+-0.4054           86.7900+-0.2500        
   new-array-buffer-push                              6.2249+-0.2839            6.1732+-0.1837        
   new-array-dead                                    14.7286+-0.5775     ?     15.1682+-0.9696        ? might be 1.0299x slower
   new-array-push                                     3.5989+-0.1749            3.5541+-0.1698          might be 1.0126x faster
   no-inline-constructor                             30.6550+-0.2777           30.4841+-0.2313        
   number-test                                        3.0396+-0.1130     ?      3.0789+-0.1023        ? might be 1.0129x slower
   object-closure-call                                4.9147+-0.0879     ?      4.9553+-0.1556        ?
   object-get-own-property-symbols-on-large-array   
                                                      4.3023+-0.1974            4.2792+-0.2210        
   object-test                                        2.7103+-0.0938     ?      2.7384+-0.0561        ? might be 1.0103x slower
   obvious-sink-pathology-taken                      98.6867+-0.7214     ^     96.8860+-0.7973        ^ definitely 1.0186x faster
   obvious-sink-pathology                            94.2371+-1.2849           93.1236+-0.9738          might be 1.0120x faster
   obviously-elidable-new-object                     28.3357+-0.3424     ?     28.8953+-0.6674        ? might be 1.0197x slower
   plus-boolean-arith                                 2.3787+-0.0277     ?      2.4194+-0.0814        ? might be 1.0171x slower
   plus-boolean-double                                3.1125+-0.0495            3.0974+-0.0210        
   plus-boolean                                       2.5511+-0.0528     ?      2.6612+-0.2974        ? might be 1.0432x slower
   poly-chain-access-different-prototypes-simple   
                                                      3.2312+-0.0721            3.2146+-0.0471        
   poly-chain-access-different-prototypes             3.2588+-0.0481     ?      3.2613+-0.0445        ?
   poly-chain-access-simpler                          3.2520+-0.0781            3.2122+-0.0608          might be 1.0124x faster
   poly-chain-access                                  3.2489+-0.0892            3.2281+-0.0464        
   poly-stricteq                                     48.9922+-0.3194     ?     49.2879+-0.3495        ?
   polymorphic-array-call                             1.3330+-0.1193     ?      1.3603+-0.1363        ? might be 1.0205x slower
   polymorphic-get-by-id                              2.8274+-0.0227     ?      2.8476+-0.0495        ?
   polymorphic-put-by-id                             27.2638+-0.2322     ?     27.2948+-0.4744        ?
   polymorphic-put-by-val-with-string                28.6475+-1.8448           27.9189+-0.3355          might be 1.0261x faster
   polymorphic-put-by-val-with-symbol                28.2116+-0.4654     ?     28.4871+-0.4554        ?
   polymorphic-structure                             12.8629+-0.6405           12.4932+-0.2668          might be 1.0296x faster
   polyvariant-monomorphic-get-by-id                  6.6411+-0.8563            6.5379+-0.6765          might be 1.0158x faster
   proto-getter-access                                8.4104+-0.1599            8.3059+-0.1789          might be 1.0126x faster
   prototype-access-with-mutating-prototype           5.4453+-0.1293     ?      5.5401+-0.2558        ? might be 1.0174x slower
   put-by-id-replace-and-transition                   8.3075+-0.4522            7.9556+-0.3046          might be 1.0442x faster
   put-by-id-slightly-polymorphic                     2.7157+-0.0687            2.6767+-0.0310          might be 1.0146x faster
   put-by-id                                          9.7587+-0.3055            9.5305+-0.1716          might be 1.0239x faster
   put-by-val-direct                                  0.3453+-0.0242     ?      0.3479+-0.0132        ?
   put-by-val-large-index-blank-indexing-type   
                                                      5.1712+-0.1824     ?      5.3297+-0.1292        ? might be 1.0306x slower
   put-by-val-machine-int                             2.5294+-0.0546     ?      2.5429+-0.0850        ?
   put-by-val-with-string-replace-and-transition   
                                                      9.9703+-0.1504     ?     10.1177+-0.1962        ? might be 1.0148x slower
   put-by-val-with-string-slightly-polymorphic   
                                                      2.8499+-0.0484     ?      2.8583+-0.0219        ?
   put-by-val-with-string                            10.2775+-0.2806     ?     10.3060+-0.3214        ?
   put-by-val-with-symbol-replace-and-transition   
                                                     11.5703+-0.1560           11.5106+-0.1035        
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.1192+-0.0169     ?      3.2715+-0.2284        ? might be 1.0488x slower
   put-by-val-with-symbol                            10.3084+-0.2797           10.0618+-0.2394          might be 1.0245x faster
   rare-osr-exit-on-local                            13.5043+-0.2207     ?     13.5600+-0.2191        ?
   raytrace-with-empty-try-catch                      5.1242+-0.0771            5.0984+-0.0664        
   raytrace-with-try-catch                            9.9599+-0.2545     ?     10.0029+-0.2383        ?
   register-pressure-from-osr                        16.3525+-0.1336           16.2846+-0.1566        
   repeat-multi-get-by-offset                        19.9489+-0.1352     ?     20.1374+-0.3155        ?
   richards-empty-try-catch                          73.8472+-1.3074           73.5354+-0.4946        
   richards-try-catch                               240.1469+-0.3787     ?    241.1603+-1.5579        ?
   setter-prototype                                   7.6918+-0.1616            7.6552+-0.1706        
   setter                                             5.2097+-0.2218     !      6.3966+-0.6222        ! definitely 1.2278x slower
   simple-activation-demo                            23.8700+-0.3185     ?     23.9777+-0.3708        ?
   simple-getter-access                              10.6919+-0.2109     ?     10.7034+-0.1640        ?
   simple-poly-call-nested                            8.7935+-0.3779            8.4767+-0.6240          might be 1.0374x faster
   simple-poly-call                                   1.3650+-0.0975            1.3198+-0.0690          might be 1.0343x faster
   sin-boolean                                       19.9539+-1.9253           19.6818+-1.5924          might be 1.0138x faster
   singleton-scope                                   55.2812+-0.3725           55.2665+-0.4382        
   sink-function                                     10.3478+-0.5273            9.7851+-0.5019          might be 1.0575x faster
   sink-huge-activation                              17.0866+-0.3606           17.0017+-0.4834        
   sinkable-new-object-dag                           58.2367+-9.4820           53.0164+-0.8474          might be 1.0985x faster
   sinkable-new-object-taken                         43.6810+-0.4197           43.1470+-0.3918          might be 1.0124x faster
   sinkable-new-object                               29.7608+-0.1779           29.5799+-0.1786        
   slow-array-profile-convergence                     2.4820+-0.0414            2.4455+-0.0505          might be 1.0149x faster
   slow-convergence                                   2.3202+-0.0371            2.3152+-0.0668        
   slow-ternaries                                    17.1083+-0.1143     ?     18.1611+-1.7442        ? might be 1.0615x slower
   sorting-benchmark                                 16.7353+-0.4427           16.6885+-0.1704        
   sparse-conditional                                 1.1574+-0.0389     ?      1.1797+-0.0352        ? might be 1.0193x slower
   splice-to-remove                                  12.2297+-0.2102           12.2131+-0.3484        
   string-char-code-at                               13.1632+-0.6677           12.8324+-0.1190          might be 1.0258x faster
   string-concat-object                               2.2043+-0.0667     ?      2.2474+-0.1012        ? might be 1.0196x slower
   string-concat-pair-object                          2.1790+-0.0835     ?      2.2487+-0.1195        ? might be 1.0320x slower
   string-concat-pair-simple                          9.3000+-0.3669            9.1679+-0.1580          might be 1.0144x faster
   string-concat-simple                               9.3681+-0.1472            9.1521+-0.2261          might be 1.0236x faster
   string-cons-repeat                                 6.3437+-0.1073     ?      7.0004+-1.2510        ? might be 1.1035x slower
   string-cons-tower                                  6.6958+-0.2429            6.4975+-0.1182          might be 1.0305x faster
   string-equality                                   15.0094+-0.2998           14.8135+-0.0971          might be 1.0132x faster
   string-get-by-val-big-char                         6.5172+-0.0746            6.4631+-0.1120        
   string-get-by-val-out-of-bounds-insane             2.9926+-0.0180     !      3.0881+-0.0395        ! definitely 1.0319x slower
   string-get-by-val-out-of-bounds                    3.8827+-0.0142     ?      3.9238+-0.0546        ? might be 1.0106x slower
   string-get-by-val                                  2.8009+-0.0611            2.7990+-0.0311        
   string-hash                                        1.8744+-0.0855            1.8615+-0.0433        
   string-long-ident-equality                        14.4482+-3.4745           12.9947+-0.1056          might be 1.1119x faster
   string-out-of-bounds                              10.0375+-0.2622     ?     10.0978+-0.1275        ?
   string-repeat-arith                               26.6178+-0.1605     ?     27.0045+-1.6697        ? might be 1.0145x slower
   string-sub                                        56.0266+-0.5607     ^     53.4667+-1.6778        ^ definitely 1.0479x faster
   string-test                                        2.8793+-0.0604     ?      2.9280+-0.0631        ? might be 1.0169x slower
   string-var-equality                               26.4867+-0.4051     ?     26.7642+-1.1824        ? might be 1.0105x slower
   structure-hoist-over-transitions                   2.3712+-0.0637     ?      2.4470+-0.1509        ? might be 1.0320x slower
   substring-concat-weird                            35.6788+-1.2237     ?     36.2892+-0.9273        ? might be 1.0171x slower
   substring-concat                                  39.6727+-0.9346     ?     40.4276+-0.5113        ? might be 1.0190x slower
   substring                                         44.7008+-1.4510           44.4321+-0.7775        
   switch-char-constant                               2.6717+-0.0328     ?      2.6959+-0.0497        ?
   switch-char                                        6.3148+-0.9957            5.5079+-0.6657          might be 1.1465x faster
   switch-constant                                    8.9417+-0.4013            8.7215+-0.5295          might be 1.0252x faster
   switch-string-basic-big-var                       14.3090+-0.1974           14.1459+-0.1460          might be 1.0115x faster
   switch-string-basic-big                           15.0452+-0.1837     ?     15.3206+-0.8682        ? might be 1.0183x slower
   switch-string-basic-var                           13.4061+-0.3221           13.3846+-0.1684        
   switch-string-basic                               12.3425+-0.1855     ?     12.3763+-0.0732        ?
   switch-string-big-length-tower-var                17.7743+-0.2202     ?     18.0509+-0.3999        ? might be 1.0156x slower
   switch-string-length-tower-var                    13.0208+-0.1228           13.0140+-0.1024        
   switch-string-length-tower                        11.2908+-0.1566     ?     11.4148+-0.2424        ? might be 1.0110x slower
   switch-string-short                               11.2708+-0.1024     ?     11.3105+-0.2159        ?
   switch                                            10.8297+-0.4498           10.6068+-0.2603          might be 1.0210x faster
   tear-off-arguments-simple                          3.1353+-0.1466            3.0524+-0.0953          might be 1.0272x faster
   tear-off-arguments                                 4.0592+-0.0949     ?      4.1921+-0.1639        ? might be 1.0328x slower
   temporal-structure                                11.7493+-0.1656     ?     11.7869+-0.1664        ?
   to-int32-boolean                                  12.6408+-0.7790           12.4426+-0.1950          might be 1.0159x faster
   try-catch-get-by-val-cloned-arguments              9.6605+-0.1793     ?      9.7231+-0.2585        ?
   try-catch-get-by-val-direct-arguments              2.1920+-0.0413     ?      2.2626+-0.1829        ? might be 1.0322x slower
   try-catch-get-by-val-scoped-arguments              4.8569+-0.0818            4.8141+-0.0387        
   typed-array-get-set-by-val-profiling              26.1845+-0.3549     ?     27.2468+-1.3539        ? might be 1.0406x slower
   undefined-property-access                        218.6985+-3.0125          217.8561+-3.0796        
   undefined-test                                     2.9952+-0.0576     ?      3.0469+-0.0849        ? might be 1.0173x slower
   unprofiled-licm                                    9.2857+-0.2338     ?      9.3751+-0.5389        ?
   v8-raytrace-with-empty-try-catch                  48.3828+-0.9384     ?     49.8805+-0.5786        ? might be 1.0310x slower
   v8-raytrace-with-try-catch                        61.4597+-0.6558     ?     61.6141+-0.2387        ?
   varargs-call                                      12.8796+-0.1907     ?     13.2360+-0.5688        ? might be 1.0277x slower
   varargs-construct-inline                          21.6068+-0.3911     ?     21.6527+-0.2677        ?
   varargs-construct                                 20.3935+-0.7583           20.2423+-0.8480        
   varargs-inline                                     8.7748+-0.2039            8.6721+-0.1455          might be 1.0118x faster
   varargs-strict-mode                                9.6595+-0.1381     ^      9.4254+-0.0583        ^ definitely 1.0248x faster
   varargs                                            9.7220+-0.0996            9.4913+-0.1587          might be 1.0243x faster
   weird-inlining-const-prop                          2.1073+-0.0763     ?      2.2252+-0.0799        ? might be 1.0560x slower

   <geometric>                                        7.9193+-0.0195     ?      7.9220+-0.0189        ? might be 1.0003x slower

                                                        TipOfTree                SimplerCopy                                    
AsmBench:
   bigfib.cpp                                       453.2217+-5.3773          448.6992+-5.3043          might be 1.0101x faster
   cray.c                                           394.3928+-5.5141          391.6582+-2.3295        
   dry.c                                            423.3073+-8.5466          422.8090+-8.1942        
   FloatMM.c                                        683.0602+-3.1328     ?    686.6721+-3.4707        ?
   gcc-loops.cpp                                   3435.7447+-34.5825    ?   3438.7936+-31.1996       ?
   n-body.c                                         827.1580+-8.5109     ?    832.0322+-19.1100       ?
   Quicksort.c                                      405.5120+-3.8331     ?    412.1637+-15.0812       ? might be 1.0164x slower
   stepanov_container.cpp                          3494.1758+-34.8502        3493.9626+-24.0400       
   Towers.c                                         235.9206+-6.1953          235.1775+-3.3175        

   <geometric>                                      715.3542+-1.5091     ?    715.8755+-3.1959        ? might be 1.0007x slower

                                                        TipOfTree                SimplerCopy                                    
CompressionBench:
   huffman                                           60.7457+-1.1442     ?     61.0661+-0.9277        ?
   arithmetic-simple                                273.6670+-2.2331     ?    274.6016+-2.9498        ?
   arithmetic-precise                               241.7605+-1.4816     ?    242.7927+-3.3814        ?
   arithmetic-complex-precise                       244.5236+-1.9916          243.0312+-1.1280        
   arithmetic-precise-order-0                       282.1301+-3.7254          281.2226+-1.8495        
   arithmetic-precise-order-1                       297.8790+-2.2046          297.4447+-1.9831        
   arithmetic-precise-order-2                       342.2154+-1.0000     ?    344.4773+-3.5422        ?
   arithmetic-simple-order-1                        319.5737+-1.6391     ?    321.7959+-5.8819        ?
   arithmetic-simple-order-2                        373.2523+-6.1462     ?    374.5044+-7.6024        ?
   lz-string                                        308.4091+-2.6052     ?    309.3480+-4.0112        ?

   <geometric>                                      252.1573+-0.9075     ?    252.7075+-1.0807        ? might be 1.0022x slower

                                                        TipOfTree                SimplerCopy                                    
Geomean of preferred means:
   <scaled-result>                                   49.7423+-0.1133           49.6864+-0.1342          might be 1.0011x faster
Comment 3 Mark Lam 2015-09-23 13:42:40 PDT
Comment on attachment 261839 [details]
the patch

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

r=me

> Source/JavaScriptCore/heap/CopiedSpace.cpp:-236
> -            m_loanedBlocksCondition.wait(m_loanedBlocksLock);

Do we still need m_loadedBlocksCondition?  Can't we get rid of it now?
Comment 4 Filip Pizlo 2015-09-23 13:47:55 PDT
(In reply to comment #3)
> Comment on attachment 261839 [details]
> the patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=261839&action=review
> 
> r=me
> 
> > Source/JavaScriptCore/heap/CopiedSpace.cpp:-236
> > -            m_loanedBlocksCondition.wait(m_loanedBlocksLock);
> 
> Do we still need m_loadedBlocksCondition?  Can't we get rid of it now?

Good catch, I think I can remove it.
Comment 5 Filip Pizlo 2015-09-23 14:00:47 PDT
Landed in http://trac.webkit.org/changeset/190185
Comment 6 Joseph Pecoraro 2015-10-06 15:41:43 PDT
Comment on attachment 261839 [details]
the patch

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

>>> Source/JavaScriptCore/heap/CopiedSpace.cpp:-236
>>> -            m_loanedBlocksCondition.wait(m_loanedBlocksLock);
>> 
>> Do we still need m_loadedBlocksCondition?  Can't we get rid of it now?
> 
> Good catch, I think I can remove it.

Likewise, do we still need the m_loanedBlocksLock and m_numberOfLoanedBlocks counter in release builds? The value appears to only ever checked by this RELEASE_ASSERT (unprotected by the lock) or by other ASSERTs with the lock. Does it provide some form of synchronization or is it now only a debug counter?