<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>149509</bug_id>
          
          <creation_ts>2015-09-23 13:01:29 -0700</creation_ts>
          <short_desc>Parallel copy phase synchronization should be simplified</short_desc>
          <delta_ts>2015-10-06 15:43:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149433</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1128369</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-23 13:01:29 -0700</bug_when>
    <thetext>Currently, we don&apos;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&apos;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.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128372</commentid>
    <comment_count>1</comment_count>
      <attachid>261839</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-23 13:08:01 -0700</bug_when>
    <thetext>Created attachment 261839
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128377</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-23 13:35:13 -0700</bug_when>
    <thetext>It doesn&apos;t appear to break performance.


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

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r190178)
&quot;SimplerCopy&quot; 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

   &lt;arithmetic&gt;                                       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        ?

   &lt;geometric&gt;                                      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

   &lt;geometric&gt;                                       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

   &lt;geometric&gt;                                       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

   &lt;arithmetic&gt;                                       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

   &lt;geometric&gt;                                        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        

   &lt;geometric&gt;                                      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        ?

   &lt;geometric&gt;                                      252.1573+-0.9075     ?    252.7075+-1.0807        ? might be 1.0022x slower

                                                        TipOfTree                SimplerCopy                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                                   49.7423+-0.1133           49.6864+-0.1342          might be 1.0011x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128381</commentid>
    <comment_count>3</comment_count>
      <attachid>261839</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-23 13:42:40 -0700</bug_when>
    <thetext>Comment on attachment 261839
the patch

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

r=me

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

Do we still need m_loadedBlocksCondition?  Can&apos;t we get rid of it now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128382</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-23 13:47:55 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 261839 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=261839&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/CopiedSpace.cpp:-236
&gt; &gt; -            m_loanedBlocksCondition.wait(m_loanedBlocksLock);
&gt; 
&gt; Do we still need m_loadedBlocksCondition?  Can&apos;t we get rid of it now?

Good catch, I think I can remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128385</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-23 14:00:47 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/190185</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131145</commentid>
    <comment_count>6</comment_count>
      <attachid>261839</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-10-06 15:41:43 -0700</bug_when>
    <thetext>Comment on attachment 261839
the patch

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

&gt;&gt;&gt; Source/JavaScriptCore/heap/CopiedSpace.cpp:-236
&gt;&gt;&gt; -            m_loanedBlocksCondition.wait(m_loanedBlocksLock);
&gt;&gt; 
&gt;&gt; Do we still need m_loadedBlocksCondition?  Can&apos;t we get rid of it now?
&gt; 
&gt; 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?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261839</attachid>
            <date>2015-09-23 13:08:01 -0700</date>
            <delta_ts>2015-09-23 13:42:40 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8712</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE1LTA5LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UGFyYWxsZWwgY29weSBwaGFzZSBzeW5jaHJvbml6YXRpb24gc2hvdWxkIGJlIHNpbXBsaWZpZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTUwOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlZm9yZSB0
aGlzIGNoYW5nZSwgd2UgZGlkbid0IHdhaXQgZm9yIHRoZSBjb3B5IHBoYXNlIHRvIGZpbmlzaCBi
ZWZvcmUgc3RhcnRpbmcgdG8gZG8gdGhpbmdzIHRvCisgICAgICAgIGNvcGllZCBzcGFjZSB0aGF0
IHByZXN1bWVkIHRoYXQgY29weWluZyB3YXMgZG9uZS4gQ29waWVkIHNwYWNlIHdvdWxkICJkZXRl
Y3QiIHRoYXQgbm9ib2R5IHdhcworICAgICAgICBjb3B5aW5nIGFueW1vcmUgYnkgd2FpdGluZyBm
b3IgYWxsIGxvYW5lZCBibG9ja3MgdG8gYmUgcmV0dXJuZWQuIEJ1dCB0aGF0IHdvdWxkIHN1Y2Nl
ZWQgaWYgc29tZQorICAgICAgICB0aHJlYWQgaGFkIG5vdCB5ZXQgc3RhcnRlZCBjb3B5aW5nLiBT
bywgd2UgaGFkIHdlaXJkIGhhY2tzIHRvIGVuc3VyZSB0aGF0IGEgYmxvY2sgd2FzIGxvYW5lZAor
ICAgICAgICBiZWZvcmUgYW55IHRocmVhZHMgc3RhcnRlZC4gSXQgYWxzbyBtZWFudCB0aGF0IHdl
IGhhZCB0d28gc2VwYXJhdGUgbWVjaGFuaXNtcyBmb3Igd2FpdGluZyBmb3IKKyAgICAgICAgY29w
eWluZyB0aHJlYWRzIHRvIGZpbmlzaCAtIG9uZSBtZWNoYW5pc20gaW4gdGhlIEhlYXAgcGhhc2Ug
bG9naWMgYW5kIGFub3RoZXIgaW4gdGhlCisgICAgICAgIENvcGllZFNwYWNlOjpkb25lQ29weWlu
ZygpIG1ldGhvZC4KKworICAgICAgICBXZSBjYW4gZ2V0IHJpZCBvZiBhIGxvdCBvZiB0aGUgd2Vp
cmRuZXNzIGJ5IGp1c3QgaGF2aW5nIGEgc291bmQgc2h1dGRvd24gc2VxdWVuY2U6CisKKyAgICAg
ICAgMSkgVGhyZWFkcyBjb25jdXIgb24gd2hlbiB0aGVyZSBpcyBubyBtb3JlIHdvcmsuIFdlIGFs
cmVhZHkgaGF2ZSB0aGlzOyBvbmNlCisgICAgICAgICAgIEhlYXA6OmdldE5leHRCbG9ja3NUb0Nv
cHkoKSByZXR1cm5zIG5vIHdvcmsgaW4gYW55IHRocmVhZCwgaXQgd2lsbCBhbHNvIHJldHVybiBu
byB3b3JrIGluCisgICAgICAgICAgIGFueSBvdGhlciB0aHJlYWQgdGhhdCBhc2tzIGZvciB3b3Jr
LgorICAgICAgICAyKSBNYWluIHRocmVhZCB3YWl0cyBmb3IgdGhlIHRocmVhZHMgdG8gbm90IGJl
IGNvcHlpbmcgYW55bW9yZS4KKyAgICAgICAgMykgRG8gd2hhdGV2ZXIgd2UgbmVlZCB0byBkbyBh
ZnRlciBjb3B5aW5nIGZpbmlzaGVzLgorCisgICAgICAgIEN1cnJlbnRseSwgd2UgZG8gKDMpIGJl
Zm9yZSAoMikgYW5kIHNvIHdlIGhhdmUgd2VpcmQgcHJvYmxlbXMuIFRoaXMganVzdCBjaGFuZ2Vz
IHRoZSBjb2RlIHRvIGRvCisgICAgICAgICgzKSBhZnRlciAoMiksIGFuZCBzbyB3ZSBjYW4gZ2V0
IHJpZCBvZiB0aGUgc3luY2hyb25pemF0aW9uIGluIGRvbmVDb3B5aW5nKCkgYW5kIHdlIGNhbiBz
YWZlbHkKKyAgICAgICAgY2FsbCBzdGFydENvcHlpbmcoKSBpbnNpZGUgR0NUaHJlYWQuIFRoaXMg
YWxzbyBtZWFucyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gbWFrZSBDb3B5VmlzaXRvciBhCisgICAg
ICAgIHByb3BlcnR5IG9mIEdDVGhyZWFkLiBJbnN0ZWFkLCBHQ1RocmVhZCBqdXN0IGluc3RhbnRp
YXRlcyBpdHMgb3duIENvcHlWaXNpdG9yIHdoZW4gaXQgbmVlZHMgdG8uCisKKyAgICAgICAgKiBo
ZWFwL0NvcGllZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29waWVkU3BhY2U6OmRvbmVDb3B5
aW5nKToKKyAgICAgICAgKiBoZWFwL0dDVGhyZWFkLmNwcDoKKyAgICAgICAgKEpTQzo6R0NUaHJl
YWQ6OkdDVGhyZWFkKToKKyAgICAgICAgKEpTQzo6R0NUaHJlYWQ6OnNsb3RWaXNpdG9yKToKKyAg
ICAgICAgKEpTQzo6R0NUaHJlYWQ6OndhaXRGb3JOZXh0UGhhc2UpOgorICAgICAgICAoSlNDOjpH
Q1RocmVhZDo6Z2NUaHJlYWRNYWluKToKKyAgICAgICAgKEpTQzo6R0NUaHJlYWQ6OmNvcHlWaXNp
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0dDVGhyZWFkLmg6CisgICAgICAgICogaGVh
cC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6Okhl
YXA6OmNvcHlCYWNraW5nU3RvcmVzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Z2F0aGVyU3RhY2tS
b290cyk6CisKIDIwMTUtMDktMjMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgdW5pbXBsZW1lbnRlZCBtZXRob2QgSGVhcDo6c2hvd1N0YXRp
c3RpY3MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5jcHAJ
KHJldmlzaW9uIDE5MDE3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNw
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDEzICsyMzAsOCBAQCB2b2lkIENvcGllZFNw
YWNlOjpkaWRTdGFydEZ1bGxDb2xsZWN0aW9uCiAKIHZvaWQgQ29waWVkU3BhY2U6OmRvbmVDb3B5
aW5nKCkKIHsKLSAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tz
TG9jayk7Ci0gICAgICAgIHdoaWxlIChtX251bWJlck9mTG9hbmVkQmxvY2tzID4gMCkKLSAgICAg
ICAgICAgIG1fbG9hbmVkQmxvY2tzQ29uZGl0aW9uLndhaXQobV9sb2FuZWRCbG9ja3NMb2NrKTsK
LSAgICB9Ci0KLSAgICBBU1NFUlQobV9pbkNvcHlpbmdQaGFzZSA9PSBtX3Nob3VsZERvQ29weVBo
YXNlKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9udW1iZXJPZkxvYW5lZEJsb2Nrcyk7CisgICAg
UkVMRUFTRV9BU1NFUlQobV9pbkNvcHlpbmdQaGFzZSA9PSBtX3Nob3VsZERvQ29weVBoYXNlKTsK
ICAgICBtX2luQ29weWluZ1BoYXNlID0gZmFsc2U7CiAKICAgICBEb3VibHlMaW5rZWRMaXN0PENv
cGllZEJsb2NrPiogdG9TcGFjZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dD
VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1Ro
cmVhZC5jcHAJKHJldmlzaW9uIDE5MDE3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dDVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDEwIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1HQ1RocmVhZDo6R0NUaHJlYWQoSGVhcCYgaGVhcCwgc3RkOjp1bmlxdWVf
cHRyPFNsb3RWaXNpdG9yPiBzbG90VmlzaXRvciwgc3RkOjp1bmlxdWVfcHRyPENvcHlWaXNpdG9y
PiBjb3B5VmlzaXRvcikKK0dDVGhyZWFkOjpHQ1RocmVhZChIZWFwJiBoZWFwLCBzdGQ6OnVuaXF1
ZV9wdHI8U2xvdFZpc2l0b3I+IHNsb3RWaXNpdG9yKQogICAgIDogbV90aHJlYWRJRCgwKQogICAg
ICwgbV9oZWFwKGhlYXApCiAgICAgLCBtX3Nsb3RWaXNpdG9yKFdURjo6bW92ZShzbG90VmlzaXRv
cikpCi0gICAgLCBtX2NvcHlWaXNpdG9yKFdURjo6bW92ZShjb3B5VmlzaXRvcikpCiB7CiB9CiAK
QEAgLTYwLDEyICs1OSw2IEBAIFNsb3RWaXNpdG9yKiBHQ1RocmVhZDo6c2xvdFZpc2l0b3IoKQog
ICAgIHJldHVybiBtX3Nsb3RWaXNpdG9yLmdldCgpOwogfQogCi1Db3B5VmlzaXRvciogR0NUaHJl
YWQ6OmNvcHlWaXNpdG9yKCkKLXsKLSAgICBBU1NFUlQobV9jb3B5VmlzaXRvcik7Ci0gICAgcmV0
dXJuIG1fY29weVZpc2l0b3IuZ2V0KCk7Ci19Ci0KIEdDUGhhc2UgR0NUaHJlYWQ6OndhaXRGb3JO
ZXh0UGhhc2UoKQogewogICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX2hlYXAubV9w
aGFzZU11dGV4KTsKQEAgLTEwMiwyMCArOTUsMjEgQEAgdm9pZCBHQ1RocmVhZDo6Z2NUaHJlYWRN
YWluKCkKICAgICAgICAgICAgICAgICAvLyB0aGF0IGFsbCBvZiB0aGUgdmFyaW91cyBzdWJwaGFz
ZXMgaW4gSGVhcDo6bWFya1Jvb3RzKCkgaGF2ZSBiZWVuIGZ1bGx5IGZpbmlzaGVkIGFuZCB0aGVy
ZSBpcyAKICAgICAgICAgICAgICAgICAvLyBubyBtb3JlIG1hcmtpbmcgd29yayB0byBkbyBhbmQg
YWxsIG9mIHRoZSBHQ1RocmVhZHMgYXJlIGlkbGUsIG1lYW5pbmcgbm8gbW9yZSB3b3JrIGNhbiBi
ZSBnZW5lcmF0ZWQuCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENv
cHk6Ci0gICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBjYWxsIHN0YXJ0Q29weWlu
ZygpIGJlY2F1c2UgaXQncyBjYWxsZWQgZm9yIHVzIG9uIHRoZSBtYWluIHRocmVhZCB0byBhdm9p
ZCBhIAotICAgICAgICAgICAgICAgIC8vIHJhY2UgY29uZGl0aW9uLgotICAgICAgICAgICAgICAg
IG1fY29weVZpc2l0b3ItPmNvcHlGcm9tU2hhcmVkKCk7CisgICAgICAgICAgICBjYXNlIENvcHk6
IHsKKyAgICAgICAgICAgICAgICBDb3B5VmlzaXRvciBjb3B5VmlzaXRvcihtX2hlYXApOworICAg
ICAgICAgICAgICAgIGNvcHlWaXNpdG9yLnN0YXJ0Q29weWluZygpOworICAgICAgICAgICAgICAg
IGNvcHlWaXNpdG9yLmNvcHlGcm9tU2hhcmVkKCk7CiAgICAgICAgICAgICAgICAgLy8gV2Uga25v
dyB3ZSdyZSBkb25lIGNvcHlpbmcgd2hlbiB3ZSByZXR1cm4gZnJvbSBjb3B5RnJvbVNoYXJlZCgp
IGJlY2F1c2Ugd2Ugd291bGQgCiAgICAgICAgICAgICAgICAgLy8gb25seSBkbyBzbyBpZiB0aGVy
ZSB3ZXJlIG5vIG1vcmUgY2h1bmtzIG9mIGNvcHlpbmcgd29yayBsZWZ0IHRvIGRvLiBXaGVuIHRo
ZXJlIGlzIG5vIAogICAgICAgICAgICAgICAgIC8vIG1vcmUgY29weWluZyB3b3JrIHRvIGRvLCB0
aGUgbWFpbiB0aHJlYWQgd2lsbCB3YWl0IGluIENvcGllZFNwYWNlOjpkb25lQ29weWluZygpIHVu
dGlsIAogICAgICAgICAgICAgICAgIC8vIGFsbCBvZiB0aGUgYmxvY2tzIHRoYXQgdGhlIEdDVGhy
ZWFkcyBib3Jyb3dlZCBoYXZlIGJlZW4gcmV0dXJuZWQuIGRvbmVDb3B5aW5nKCkgCiAgICAgICAg
ICAgICAgICAgLy8gcmV0dXJucyBvdXIgYm9ycm93ZWQgQ29waWVkQmxvY2ssIGFsbG93aW5nIHRo
ZSBjb3B5aW5nIHBoYXNlIHRvIGZpbmlzaC4KLSAgICAgICAgICAgICAgICBtX2NvcHlWaXNpdG9y
LT5kb25lQ29weWluZygpOworICAgICAgICAgICAgICAgIGNvcHlWaXNpdG9yLmRvbmVDb3B5aW5n
KCk7CiAKICAgICAgICAgICAgICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUZv
clRoaXNUaHJlYWQoKTsKIAogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgY2FzZSBOb1BoYXNlOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDVGhyZWFkLmgJKHJldmlzaW9uIDE5MDE3OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIENvcHlWaXNpdG9yOwogY2xhc3MgSGVhcDsK
IGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC00NCwxMCArNDMsOSBAQCBlbnVtIEdDUGhhc2Ugewog
CiBjbGFzcyBHQ1RocmVhZCB7CiBwdWJsaWM6Ci0gICAgR0NUaHJlYWQoSGVhcCYsIHN0ZDo6dW5p
cXVlX3B0cjxTbG90VmlzaXRvcj4sIHN0ZDo6dW5pcXVlX3B0cjxDb3B5VmlzaXRvcj4pOworICAg
IEdDVGhyZWFkKEhlYXAmLCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+KTsKIAogICAgIFNs
b3RWaXNpdG9yKiBzbG90VmlzaXRvcigpOwotICAgIENvcHlWaXNpdG9yKiBjb3B5VmlzaXRvcigp
OwogICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKTsKICAgICB2b2lkIGluaXRpYWxpemVU
aHJlYWRJRChUaHJlYWRJZGVudGlmaWVyKTsKIApAQCAtNjAsNyArNTgsNiBAQCBwcml2YXRlOgog
ICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKICAgICBIZWFwJiBtX2hlYXA7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiBtX3Nsb3RWaXNpdG9yOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxDb3B5VmlzaXRvcj4gbV9jb3B5VmlzaXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE5MDE3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNjIsNyArMzYyLDcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBl
KQogICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9waGFzZU11dGV4KTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJz
KCk7ICsraSkgewogICAgICAgICAgICAgbV9udW1iZXJPZkFjdGl2ZUdDVGhyZWFkcysrOwotICAg
ICAgICAgICAgR0NUaHJlYWQqIG5ld1RocmVhZCA9IG5ldyBHQ1RocmVhZCgqdGhpcywgc3RkOjpt
YWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMpLCBzdGQ6Om1ha2VfdW5pcXVlPENvcHlWaXNp
dG9yPigqdGhpcykpOworICAgICAgICAgICAgR0NUaHJlYWQqIG5ld1RocmVhZCA9IG5ldyBHQ1Ro
cmVhZCgqdGhpcywgc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMpKTsKICAgICAg
ICAgICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoR0NUaHJlYWQ6
OmdjVGhyZWFkU3RhcnRGdW5jLCBuZXdUaHJlYWQsICJKYXZhU2NyaXB0Q29yZTo6TWFya2luZyIp
OwogICAgICAgICAgICAgbmV3VGhyZWFkLT5pbml0aWFsaXplVGhyZWFkSUQodGhyZWFkSUQpOwog
ICAgICAgICAgICAgbV9nY1RocmVhZHMuYXBwZW5kKG5ld1RocmVhZCk7CkBAIC02MzQsMjUgKzYz
NCwxNyBAQCB2b2lkIEhlYXA6OmNvcHlCYWNraW5nU3RvcmVzKCkKICAgICAgICAgICAgIG1fY29w
eUluZGV4ID0gMDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgLy8gV2UgZG8gdGhpcyBo
ZXJlIHNvIHRoYXQgd2UgYXZvaWQgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgbWFpbiB0aHJl
YWQgY2FuIAotICAgICAgICAvLyBibG93IHRocm91Z2ggYWxsIG9mIHRoZSBjb3B5aW5nIHdvcmsg
YmVmb3JlIHRoZSBHQ1RocmVhZHMgZnVsbHkgd2FrZSB1cC4gCi0gICAgICAgIC8vIFRoZSBHQ1Ro
cmVhZHMgdGhlbiByZXF1ZXN0IGEgYmxvY2sgZnJvbSB0aGUgQ29waWVkU3BhY2Ugd2hlbiB0aGUg
Y29weWluZyBwaGFzZSAKLSAgICAgICAgLy8gaGFzIGNvbXBsZXRlZCwgd2hpY2ggaXNuJ3QgYWxs
b3dlZC4KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2djVGhyZWFkcy5zaXplKCk7
IGkrKykKLSAgICAgICAgICAgIG1fZ2NUaHJlYWRzW2ldLT5jb3B5VmlzaXRvcigpLT5zdGFydENv
cHlpbmcoKTsKLSAgICAgICAgCiAgICAgICAgIHN0YXJ0TmV4dFBoYXNlKENvcHkpOwogICAgICAg
ICAKICAgICAgICAgbV9jb3B5VmlzaXRvci5zdGFydENvcHlpbmcoKTsKICAgICAgICAgbV9jb3B5
VmlzaXRvci5jb3B5RnJvbVNoYXJlZCgpOwogICAgICAgICBtX2NvcHlWaXNpdG9yLmRvbmVDb3B5
aW5nKCk7Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgZXZlcnlib2R5IHRvIGZpbmlz
aCBhbmQgcmV0dXJuIHRoZWlyIENvcGllZEJsb2NrcyAKLSAgICAgICAgLy8gYmVmb3JlIHNpZ25h
bGluZyB0aGF0IHRoZSBwaGFzZSBpcyBjb21wbGV0ZS4KLSAgICAgICAgbV9zdG9yYWdlU3BhY2Uu
ZG9uZUNvcHlpbmcoKTsKKwogICAgICAgICBBU1NFUlQobV9jdXJyZW50UGhhc2UgPT0gQ29weSk7
CiAgICAgICAgIGVuZEN1cnJlbnRQaGFzZSgpOwotICAgIH0gZWxzZQotICAgICAgICBtX3N0b3Jh
Z2VTcGFjZS5kb25lQ29weWluZygpOworICAgIH0KKyAgICAKKyAgICBtX3N0b3JhZ2VTcGFjZS5k
b25lQ29weWluZygpOwogfQogCiB2b2lkIEhlYXA6OmdhdGhlclN0YWNrUm9vdHMoQ29uc2VydmF0
aXZlUm9vdHMmIHJvb3RzLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hp
bmVUaHJlYWRzOjpSZWdpc3RlclN0YXRlJiBjYWxsZWVTYXZlZFJlZ2lzdGVycykK
</data>
<flag name="review"
          id="287035"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>