<?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>148259</bug_id>
          
          <creation_ts>2015-08-20 16:06:04 -0700</creation_ts>
          <short_desc>LICM should be sound even if the CFG has changed</short_desc>
          <delta_ts>2015-08-28 15:39:22 -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>
          <dependson>145204</dependson>
          <blocked>148586</blocked>
    
    <blocked>148260</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</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>1119423</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-20 16:06:04 -0700</bug_when>
    <thetext>The main thing is knowing whether the loop pre-header is a place where exiting is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121810</commentid>
    <comment_count>1</comment_count>
      <attachid>260173</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-28 13:32:28 -0700</bug_when>
    <thetext>Created attachment 260173
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121836</commentid>
    <comment_count>2</comment_count>
      <attachid>260173</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-08-28 14:41:34 -0700</bug_when>
    <thetext>Comment on attachment 260173
the patch

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

I am not familiar with the exitOK craziness but this looks sensible.

&gt; Source/JavaScriptCore/dfg/DFGLICMPhase.cpp:137
&gt; +                numberOfPreHeaders++;

WebKit style would be
    ++numberOfPreHeaders;
...for some reason.

&gt; Source/JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.cpp:60
&gt; +    // Notice how the Upsilons are not in the predecessor of the Phi anymore. It&apos;s not clear if this
&gt; +    // would be bad. Probably not, but it&apos;s weird anyway. We should add a validation rule, and we

That does not seem bad to me...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121839</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-28 14:52:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 260173 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260173&amp;action=review
&gt; 
&gt; I am not familiar with the exitOK craziness but this looks sensible.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGLICMPhase.cpp:137
&gt; &gt; +                numberOfPreHeaders++;
&gt; 
&gt; WebKit style would be
&gt;     ++numberOfPreHeaders;
&gt; ...for some reason.

Fixed!

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.cpp:60
&gt; &gt; +    // Notice how the Upsilons are not in the predecessor of the Phi anymore. It&apos;s not clear if this
&gt; &gt; +    // would be bad. Probably not, but it&apos;s weird anyway. We should add a validation rule, and we
&gt; 
&gt; That does not seem bad to me...

Yeah, it doesn&apos;t seem terrible.  We just have to make a choice to either recognize that as a possibility and document it, or we need to require that Upsilons are canonicalized to the Phi predecessors, and document that.  Right now we just leave the question open, hence the FIXME.

Also, right now we never run pre-header creation in SSA, so this issue simply doesn&apos;t come up.  So, we don&apos;t know what would happen, if it did come up.  Hence, if someone tries to convert the phase to work on SSA (or just invokes the phase in SSA), that FIXME is there to remind you that you have introduced an IR pattern that we previously didn&apos;t consider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121855</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-28 15:37:42 -0700</bug_when>
    <thetext>This does not appear to have an effect on 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 (r189124)
&quot;LICMExitOK&quot; at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r189124)

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                 LICMExitOK                                    
SunSpider:
   3d-cube                                            4.6135+-0.2079     ?      4.6490+-0.3009        ?
   3d-morph                                           5.2972+-0.1792            5.2244+-0.0614          might be 1.0139x faster
   3d-raytrace                                        4.9949+-0.0340     ?      5.0840+-0.2030        ? might be 1.0178x slower
   access-binary-trees                                2.0006+-0.2203            1.9659+-0.0810          might be 1.0177x faster
   access-fannkuch                                    5.3201+-0.2356            5.2175+-0.0812          might be 1.0197x faster
   access-nbody                                       2.4142+-0.0548     ?      2.5030+-0.1500        ? might be 1.0368x slower
   access-nsieve                                      2.9895+-0.0901     ?      3.0325+-0.0937        ? might be 1.0144x slower
   bitops-3bit-bits-in-byte                           1.4827+-0.1328            1.4780+-0.0812        
   bitops-bits-in-byte                                3.2294+-0.0967            3.1950+-0.0423          might be 1.0108x faster
   bitops-bitwise-and                                 1.9811+-0.0582     ?      2.1229+-0.2219        ? might be 1.0716x slower
   bitops-nsieve-bits                                 2.9345+-0.0897     ?      3.0161+-0.1367        ? might be 1.0278x slower
   controlflow-recursive                              2.0872+-0.1407            1.9432+-0.1038          might be 1.0741x faster
   crypto-aes                                         3.8426+-0.2135            3.8257+-0.2977        
   crypto-md5                                         2.4723+-0.2635            2.3590+-0.0740          might be 1.0480x faster
   crypto-sha1                                        2.3632+-0.1968            2.2455+-0.1230          might be 1.0524x faster
   date-format-tofte                                  6.5397+-0.2211     ?      6.7213+-0.2596        ? might be 1.0278x slower
   date-format-xparb                                  4.6289+-0.3336            4.5768+-0.1821          might be 1.0114x faster
   math-cordic                                        2.8140+-0.1652     ?      3.0020+-0.7302        ? might be 1.0668x slower
   math-partial-sums                                  5.0235+-0.1207     ?      5.0451+-0.1881        ?
   math-spectral-norm                                 1.7430+-0.0416     ?      1.8081+-0.0919        ? might be 1.0373x slower
   regexp-dna                                         6.4519+-0.2489     ?      6.5976+-0.2121        ? might be 1.0226x slower
   string-base64                                      4.5059+-0.4590            4.2384+-0.1762          might be 1.0631x faster
   string-fasta                                       5.8607+-0.3035     ?      6.7460+-2.4934        ? might be 1.1511x slower
   string-tagcloud                                    7.7774+-0.0793     ?      8.2309+-0.4912        ? might be 1.0583x slower
   string-unpack-code                                18.7444+-1.0840           18.1560+-0.7461          might be 1.0324x faster
   string-validate-input                              4.4201+-0.0707     ?      4.6698+-0.4502        ? might be 1.0565x slower

   &lt;arithmetic&gt;                                       4.4820+-0.0723     ?      4.5251+-0.0900        ? might be 1.0096x slower

                                                        TipOfTree                 LICMExitOK                                    
LongSpider:
   3d-cube                                          817.2873+-5.8588     ?    819.1008+-16.8328       ?
   3d-morph                                        1496.4801+-9.1777         1489.6412+-5.3951        
   3d-raytrace                                      594.5786+-5.3124     ?    595.1396+-3.6693        ?
   access-binary-trees                              793.5456+-6.5995          792.2739+-8.0686        
   access-fannkuch                                  273.2230+-3.6663     ?    278.4969+-7.7329        ? might be 1.0193x slower
   access-nbody                                     507.8719+-5.0187          507.1450+-3.3244        
   access-nsieve                                    367.1509+-21.3282    ?    371.8929+-22.3046       ? might be 1.0129x slower
   bitops-3bit-bits-in-byte                          38.4224+-0.6304     ?     38.5778+-0.9694        ?
   bitops-bits-in-byte                               74.6547+-0.6576     ?     75.1801+-0.9336        ?
   bitops-nsieve-bits                               402.7707+-4.2918          400.6693+-4.7972        
   controlflow-recursive                            422.6918+-3.3199          420.6275+-1.4491        
   crypto-aes                                       571.0076+-7.0723          565.9223+-11.7351       
   crypto-md5                                       482.9322+-21.3286    ?    489.4794+-2.8709        ? might be 1.0136x slower
   crypto-sha1                                      635.9345+-10.5679         626.8860+-9.3523          might be 1.0144x faster
   date-format-tofte                                504.1233+-14.4630         493.1081+-5.2262          might be 1.0223x faster
   date-format-xparb                                670.1132+-34.2201         659.0229+-6.5789          might be 1.0168x faster
   hash-map                                         149.6915+-2.0505          148.9519+-1.8104        
   math-cordic                                      479.2579+-2.8663     ?    481.5912+-3.4856        ?
   math-partial-sums                                465.1179+-1.6769     ?    465.4683+-1.4835        ?
   math-spectral-norm                               546.7384+-2.3776     ?    548.5211+-5.5796        ?
   string-base64                                    347.9546+-8.7616          347.5533+-6.8530        
   string-fasta                                     363.0392+-2.0283          361.6469+-1.0921        
   string-tagcloud                                  175.8611+-1.1943          174.6818+-0.9035        

   &lt;geometric&gt;                                      387.6895+-1.3242          387.2465+-0.9195          might be 1.0011x faster

                                                        TipOfTree                 LICMExitOK                                    
V8Spider:
   crypto                                            48.6100+-1.8379           48.1591+-1.5449        
   deltablue                                         85.3010+-2.5016           84.6094+-5.1212        
   earley-boyer                                      39.0124+-1.2078     ?     39.8956+-1.1136        ? might be 1.0226x slower
   raytrace                                          32.4173+-1.3303           31.0273+-1.7322          might be 1.0448x faster
   regexp                                            62.5481+-2.0326           61.3258+-1.0199          might be 1.0199x faster
   richards                                          64.7092+-1.1558           64.4942+-1.3885        
   splay                                             35.1023+-1.3400     ?     36.7514+-2.2579        ? might be 1.0470x slower

   &lt;geometric&gt;                                       49.6363+-0.4128           49.5118+-0.9781          might be 1.0025x faster

                                                        TipOfTree                 LICMExitOK                                    
Octane:
   encrypt                                           0.17462+-0.02330          0.16667+-0.00447         might be 1.0477x faster
   decrypt                                           3.22520+-0.09999          3.21980+-0.10886       
   deltablue                                x2       0.15651+-0.00293          0.15630+-0.00163       
   earley                                            0.27469+-0.00271          0.27421+-0.00257       
   boyer                                             4.16832+-0.10629          4.15096+-0.08099       
   navier-stokes                            x2       4.83595+-0.01786    ?     4.84091+-0.02600       ?
   raytrace                                 x2       1.01556+-0.04134          0.98533+-0.03932         might be 1.0307x faster
   richards                                 x2       0.10779+-0.00120    ?     0.10933+-0.00116       ? might be 1.0142x slower
   splay                                    x2       0.32510+-0.00276    ?     0.32955+-0.00682       ? might be 1.0137x slower
   regexp                                   x2      24.65094+-0.21848    ?    24.73347+-0.30344       ?
   pdfjs                                    x2      36.66072+-0.24184    ?    36.94987+-0.29325       ?
   mandreel                                 x2      43.81576+-0.47353         43.71492+-0.57164       
   gbemu                                    x2      33.81141+-0.14912    ?    34.00492+-0.62430       ?
   closure                                           0.56116+-0.00540          0.55976+-0.00213       
   jquery                                            7.06230+-0.04560    ?     7.10008+-0.05436       ?
   box2d                                    x2       9.96297+-0.11543          9.95132+-0.08017       
   zlib                                     x2     384.48141+-4.45184        382.37587+-6.07859       
   typescript                               x2     642.12873+-8.72855        634.67358+-6.66395         might be 1.0117x faster

   &lt;geometric&gt;                                       5.53719+-0.03981          5.52645+-0.01230         might be 1.0019x faster

                                                        TipOfTree                 LICMExitOK                                    
Kraken:
   ai-astar                                          223.636+-8.906      ?     225.723+-8.827         ?
   audio-beat-detection                               50.126+-0.806      ?      50.219+-0.431         ?
   audio-dft                                          95.134+-0.817      ?      95.481+-1.611         ?
   audio-fft                                          34.944+-0.486      ?      35.132+-0.735         ?
   audio-oscillator                                   59.916+-0.829             59.171+-0.619           might be 1.0126x faster
   imaging-darkroom                                   63.018+-4.183             61.481+-1.779           might be 1.0250x faster
   imaging-desaturate                                 49.641+-1.198      ?      50.600+-2.285         ? might be 1.0193x slower
   imaging-gaussian-blur                              84.834+-1.207      ?      84.972+-1.032         ?
   json-parse-financial                               39.280+-0.912             38.289+-0.530           might be 1.0259x faster
   json-stringify-tinderbox                           22.557+-0.738      ?      23.005+-0.866         ? might be 1.0199x slower
   stanford-crypto-aes                                40.468+-0.650      ?      43.801+-6.068         ? might be 1.0824x slower
   stanford-crypto-ccm                                35.209+-1.383      ?      35.899+-0.856         ? might be 1.0196x slower
   stanford-crypto-pbkdf2                             93.644+-0.598      ?      94.478+-1.310         ?
   stanford-crypto-sha256-iterative                   36.179+-0.623      ?      36.202+-0.757         ?

   &lt;arithmetic&gt;                                       66.328+-0.695      ?      66.747+-0.846         ? might be 1.0063x slower

                                                        TipOfTree                 LICMExitOK                                    
JSRegress:
   abc-forward-loop-equal                            29.5175+-0.8621           29.4101+-0.6952        
   abc-postfix-backward-loop                         29.6942+-0.7907     ?     30.3485+-1.0470        ? might be 1.0220x slower
   abc-simple-backward-loop                          30.0272+-1.2573           28.9308+-0.6845          might be 1.0379x faster
   abc-simple-forward-loop                           29.9419+-1.5790           29.8170+-1.0331        
   abc-skippy-loop                                   21.7100+-1.1871     ?     21.7554+-0.6365        ?
   abs-boolean                                        2.4262+-0.0605            2.3901+-0.0404          might be 1.0151x faster
   adapt-to-double-divide                            16.4942+-0.4602           16.2450+-0.3637          might be 1.0153x faster
   aliased-arguments-getbyval                         1.2791+-0.2121            1.1541+-0.0302          might be 1.1082x faster
   allocate-big-object                                2.5086+-0.2494            2.4869+-0.1909        
   arguments-named-and-reflective                    10.7385+-0.0851           10.6838+-0.2741        
   arguments-out-of-bounds                            9.3638+-0.4357            9.3438+-0.2625        
   arguments-strict-mode                              9.9324+-0.2747            9.6711+-0.2517          might be 1.0270x faster
   arguments                                          8.3913+-0.1546            8.2510+-0.1747          might be 1.0170x faster
   arity-mismatch-inlining                            0.8427+-0.0366            0.7983+-0.0447          might be 1.0556x faster
   array-access-polymorphic-structure                 6.6855+-2.0134            5.9712+-0.3197          might be 1.1196x faster
   array-nonarray-polymorhpic-access                 24.9423+-0.7870     ?     25.2947+-1.0339        ? might be 1.0141x slower
   array-prototype-every                             75.4042+-1.3253     ?     75.4136+-1.3079        ?
   array-prototype-forEach                           74.9834+-1.8205           74.0259+-1.1225          might be 1.0129x faster
   array-prototype-map                               81.2676+-1.6357     ?     87.1975+-15.6061       ? might be 1.0730x slower
   array-prototype-reduce                            70.6018+-1.2518     ?     71.7140+-1.7095        ? might be 1.0158x slower
   array-prototype-reduceRight                       71.3504+-4.7705           70.2523+-1.7525          might be 1.0156x faster
   array-prototype-some                              74.8663+-0.7619           74.8016+-0.7815        
   array-splice-contiguous                           21.7904+-0.9244           21.6932+-0.6567        
   array-with-double-add                              3.4154+-0.0700            3.4133+-0.0436        
   array-with-double-increment                        3.0532+-0.0231            3.0378+-0.0881        
   array-with-double-mul-add                          4.1226+-0.0340     ?      4.1725+-0.1066        ? might be 1.0121x slower
   array-with-double-sum                              3.1765+-0.0856            3.1684+-0.1312        
   array-with-int32-add-sub                           6.5220+-1.7559            5.9125+-0.1885          might be 1.1031x faster
   array-with-int32-or-double-sum                     3.2302+-0.0880            3.1942+-0.0560          might be 1.0113x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     25.8017+-0.9343           25.3866+-0.2244          might be 1.0163x faster
   ArrayBuffer-DataView-alloc-long-lived             11.8805+-0.4274           11.8619+-0.4143        
   ArrayBuffer-Int32Array-byteOffset                  3.5884+-0.1157            3.5769+-0.1233        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     30.2916+-0.5414           30.2114+-0.9717        
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     20.4425+-0.5574           20.3508+-0.4955        
   ArrayBuffer-Int8Array-alloc-long-lived            12.6024+-0.7838     ?     12.6149+-1.0070        ?
   ArrayBuffer-Int8Array-alloc                        9.6583+-0.4465            9.5658+-0.2113        
   arrowfunction-call                                 9.7712+-0.1813     ?     10.0557+-0.2492        ? might be 1.0291x slower
   asmjs_bool_bug                                     6.8917+-0.2190     ?      6.8959+-0.2907        ?
   assign-custom-setter-polymorphic                   2.3459+-0.1022     ?      2.3526+-0.1106        ?
   assign-custom-setter                               3.6049+-1.1671            3.1712+-0.1023          might be 1.1368x faster
   basic-set                                          8.5003+-0.2666     ^      8.0233+-0.1316        ^ definitely 1.0595x faster
   big-int-mul                                        3.3943+-0.0936     ?      3.4283+-0.0771        ? might be 1.0100x slower
   boolean-test                                       2.8333+-0.0504     ?      2.8664+-0.0415        ? might be 1.0117x slower
   branch-fold                                        3.6155+-0.1241            3.5856+-0.1000        
   branch-on-string-as-boolean                       17.0466+-0.5110           16.9670+-0.4689        
   by-val-generic                                     2.3455+-0.0917            2.3133+-0.1160          might be 1.0139x faster
   call-spread-apply                                 25.8419+-0.6560     ?     26.7903+-1.0252        ? might be 1.0367x slower
   call-spread-call                                  21.5093+-0.4188     ?     21.7802+-0.9386        ? might be 1.0126x slower
   captured-assignments                               0.4386+-0.0171            0.4316+-0.0213          might be 1.0162x faster
   cast-int-to-double                                 5.0402+-0.0992     ?      5.0811+-0.2225        ?
   cell-argument                                      6.7322+-0.7328            6.3256+-0.4295          might be 1.0643x faster
   cfg-simplify                                       2.6676+-0.0875            2.6374+-0.0735          might be 1.0115x faster
   chain-getter-access                                8.1107+-0.1077     ?      8.5507+-0.4119        ? might be 1.0542x slower
   cmpeq-obj-to-obj-other                            12.4426+-1.2013           11.6990+-1.2543          might be 1.0636x faster
   constant-test                                      4.6877+-0.0161     ?      4.7442+-0.0559        ? might be 1.0120x slower
   create-lots-of-functions                           9.4415+-0.2154     ?      9.5153+-0.4838        ?
   cse-new-array-buffer                               2.1651+-0.1058     ?      2.1832+-0.1435        ?
   cse-new-array                                      2.1596+-0.1458     ?      2.2908+-0.2847        ? might be 1.0608x slower
   DataView-custom-properties                        30.3315+-0.3671     ?     31.1466+-1.1116        ? might be 1.0269x slower
   delay-tear-off-arguments-strictmode               12.0271+-0.4302     ?     12.1507+-0.4118        ? might be 1.0103x slower
   deltablue-varargs                                164.9954+-5.5853          159.6237+-2.7667          might be 1.0337x faster
   destructuring-arguments                          159.6517+-2.4741     ?    160.3069+-4.0923        ?
   destructuring-parameters-overridden-by-function   
                                                      0.4566+-0.0471            0.4418+-0.0235          might be 1.0336x faster
   destructuring-swap                                 4.6392+-0.0469            4.5624+-0.0586          might be 1.0168x faster
   direct-arguments-getbyval                          1.1537+-0.0665     ?      1.1953+-0.0647        ? might be 1.0361x slower
   div-boolean-double                                 5.2832+-0.0961            5.2674+-0.1132        
   div-boolean                                        8.1505+-0.1010     ?      8.2236+-0.1398        ?
   double-get-by-val-out-of-bounds                    3.9084+-0.0728     ?      3.9195+-0.0885        ?
   double-pollution-getbyval                          8.6263+-0.0835     ?      8.6447+-0.1480        ?
   double-pollution-putbyoffset                       3.9277+-0.2385            3.8730+-0.3768          might be 1.0141x faster
   double-real-use                                   24.1664+-0.7766           23.9327+-0.5499        
   double-to-int32-typed-array-no-inline              1.9308+-0.0463     ?      1.9703+-0.0947        ? might be 1.0205x slower
   double-to-int32-typed-array                        1.8419+-0.1686            1.8303+-0.2938        
   double-to-uint32-typed-array-no-inline             2.0206+-0.1143            2.0133+-0.0582        
   double-to-uint32-typed-array                       1.8500+-0.0845     ?      1.8943+-0.1886        ? might be 1.0239x slower
   elidable-new-object-dag                           34.0213+-0.8017     ?     34.2637+-1.0266        ?
   elidable-new-object-roflcopter                    32.0517+-1.1738     ?     33.5673+-0.7182        ? might be 1.0473x slower
   elidable-new-object-then-call                     31.9938+-1.0695           31.7497+-0.6907        
   elidable-new-object-tree                          37.6705+-0.6869           37.4911+-1.2941        
   empty-string-plus-int                              4.6455+-0.1478     ?      4.7754+-0.1049        ? might be 1.0280x slower
   emscripten-cube2hash                              27.8104+-1.8167           26.6670+-1.6255          might be 1.0429x faster
   exit-length-on-plain-object                       12.3520+-0.7251           12.3291+-0.5501        
   external-arguments-getbyval                        1.1356+-0.0998            1.0933+-0.0457          might be 1.0388x faster
   external-arguments-putbyval                        2.2512+-0.1595            2.1414+-0.1100          might be 1.0513x faster
   fixed-typed-array-storage-var-index                1.1523+-0.1093     ?      1.1613+-0.0543        ?
   fixed-typed-array-storage                          0.8274+-0.0419     ?      0.8402+-0.0265        ? might be 1.0156x slower
   Float32Array-matrix-mult                           4.0272+-0.2988     ?      4.0864+-0.2570        ? might be 1.0147x slower
   Float32Array-to-Float64Array-set                  46.3691+-0.6442     ?     46.5468+-1.0655        ?
   Float64Array-alloc-long-lived                     70.4576+-1.6128           68.8197+-0.6633          might be 1.0238x faster
   Float64Array-to-Int16Array-set                    56.9480+-1.5679           55.5815+-1.1724          might be 1.0246x faster
   fold-double-to-int                                11.8413+-0.0772     ?     12.0963+-0.5279        ? might be 1.0215x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     12.4526+-0.7246           11.5824+-0.9692          might be 1.0751x faster
   fold-get-by-id-to-multi-get-by-offset             10.5914+-0.5181           10.1617+-0.4858          might be 1.0423x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.6175+-1.7564            8.5519+-1.3209        
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.3917+-0.9666            7.6446+-1.6292          might be 1.0977x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.4630+-0.9722     ?      8.4720+-0.6046        ?
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.4289+-0.8980     ?      4.6031+-0.7638        ? might be 1.0393x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      8.1907+-0.3080            7.9540+-0.1440          might be 1.0298x faster
   fold-put-by-id-to-multi-put-by-offset              9.5437+-0.7510            9.5026+-0.6232        
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                      9.6858+-0.5886            9.4978+-0.7071          might be 1.0198x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                      9.7069+-0.5434     ?     10.9170+-0.7204        ? might be 1.1247x slower
   fold-put-structure                                 4.1457+-0.2107     ?      4.3701+-0.5157        ? might be 1.0541x slower
   for-of-iterate-array-entries                      10.9382+-0.3974     ?     11.1300+-0.3811        ? might be 1.0175x slower
   for-of-iterate-array-keys                          3.5165+-0.3331            3.2524+-0.0794          might be 1.0812x faster
   for-of-iterate-array-values                        3.5993+-0.2608            3.4470+-0.1781          might be 1.0442x faster
   fround                                            17.8258+-0.7931           17.4134+-0.5186          might be 1.0237x faster
   ftl-library-inlining-dataview                     55.1900+-0.9440     ?     55.6848+-1.3042        ?
   ftl-library-inlining                             105.6682+-1.6950     ?    106.5223+-2.6172        ?
   function-call                                     10.3997+-0.3597     ^      9.9195+-0.0998        ^ definitely 1.0484x faster
   function-dot-apply                                 1.9369+-0.0563     ?      2.0305+-0.1789        ? might be 1.0483x slower
   function-test                                      2.6520+-0.0503     ?      2.7296+-0.1620        ? might be 1.0293x slower
   function-with-eval                                98.3277+-1.3376           98.2923+-2.7265        
   gcse-poly-get-less-obvious                        14.0142+-0.1749     ?     14.0884+-0.2808        ?
   gcse-poly-get                                     15.8262+-0.2335           15.7509+-0.3054        
   gcse                                               3.7910+-0.0624            3.7671+-0.0290        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.5134+-0.0337     ?      2.6195+-0.0826        ? might be 1.0422x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.7549+-0.1652     ?      5.7942+-0.3225        ?
   get-by-id-chain-from-try-block                     5.3395+-0.0300     ?      5.3963+-0.0630        ? might be 1.0106x slower
   get-by-id-check-structure-elimination              4.3831+-0.0778     ?      4.6278+-0.4040        ? might be 1.0558x slower
   get-by-id-proto-or-self                           15.2765+-0.8520           15.2336+-0.8001        
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8683+-0.0531            2.8546+-0.0300        
   get-by-id-self-or-proto                           15.0682+-0.5153     ?     15.1449+-0.4603        ?
   get-by-val-out-of-bounds                           3.6793+-0.0941     ?      3.7404+-0.1612        ? might be 1.0166x slower
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.7465+-0.0283     ?      2.9764+-0.3085        ? might be 1.0837x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      6.0915+-0.3227            5.9638+-0.1524          might be 1.0214x faster
   get-by-val-with-string-chain-from-try-block   
                                                      5.5624+-0.1686            5.4622+-0.0986          might be 1.0183x faster
   get-by-val-with-string-check-structure-elimination   
                                                      5.1132+-0.0962     ?      5.4623+-0.5847        ? might be 1.0683x slower
   get-by-val-with-string-proto-or-self              15.1074+-0.7093           15.0043+-0.5173        
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.0948+-0.0345            3.0823+-0.0310        
   get-by-val-with-string-self-or-proto              15.3129+-0.9603     ?     15.7849+-0.9049        ? might be 1.0308x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      3.0725+-0.1271            3.0272+-0.0813          might be 1.0150x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.2550+-0.1535     ?     12.3188+-0.2220        ?
   get-by-val-with-symbol-chain-from-try-block   
                                                      5.6815+-0.2265            5.5197+-0.1484          might be 1.0293x faster
   get-by-val-with-symbol-check-structure-elimination   
                                                     10.9734+-0.2017     ?     11.2516+-0.5007        ? might be 1.0254x slower
   get-by-val-with-symbol-proto-or-self              14.8302+-0.4174     ?     15.6371+-0.6673        ? might be 1.0544x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.8747+-0.0389     ?      4.0485+-0.2988        ? might be 1.0449x slower
   get-by-val-with-symbol-self-or-proto              15.4757+-0.9449           15.0801+-0.3491          might be 1.0262x faster
   get_callee_monomorphic                             2.3200+-0.1907            2.2174+-0.1696          might be 1.0462x faster
   get_callee_polymorphic                             3.1641+-0.1724            3.1521+-0.1506        
   getter-no-activation                               4.7930+-0.1928     ?      4.8105+-0.1286        ?
   getter-prototype                                   9.0179+-0.3338     ?      9.0264+-0.2969        ?
   getter-richards                                  122.0512+-4.6675          121.2683+-9.5448        
   getter                                             5.7700+-0.7140            5.3366+-0.6699          might be 1.0812x faster
   global-object-access-with-mutating-structure   
                                                      5.7161+-0.2605            5.5367+-0.1102          might be 1.0324x faster
   global-var-const-infer-fire-from-opt               0.8254+-0.0757            0.7891+-0.0153          might be 1.0460x faster
   global-var-const-infer                             0.5908+-0.0418     ?      0.6712+-0.1901        ? might be 1.1361x slower
   hard-overflow-check-equal                         33.0853+-0.8199     ?     33.1447+-1.1128        ?
   hard-overflow-check                               33.6119+-1.7451           32.6675+-0.7311          might be 1.0289x faster
   HashMap-put-get-iterate-keys                      25.7609+-1.2272           25.2037+-1.6522          might be 1.0221x faster
   HashMap-put-get-iterate                           27.9213+-0.5221     ?     28.5785+-2.2362        ? might be 1.0235x slower
   HashMap-string-put-get-iterate                    24.2794+-1.2133     ?     24.4171+-0.8625        ?
   hoist-make-rope                                    8.7563+-0.8257     ?      8.9577+-1.0238        ? might be 1.0230x slower
   hoist-poly-check-structure-effectful-loop   
                                                      4.1163+-0.1154     ?      4.1247+-0.3190        ?
   hoist-poly-check-structure                         3.2777+-0.0553     ?      3.2819+-0.0962        ?
   imul-double-only                                   7.6510+-0.8069            7.3434+-0.1208          might be 1.0419x faster
   imul-int-only                                      8.9763+-0.9013     ?      9.0650+-0.7608        ?
   imul-mixed                                         7.2353+-0.7933            7.0649+-0.4256          might be 1.0241x faster
   in-four-cases                                     17.1875+-0.5086           17.0578+-0.5418        
   in-one-case-false                                  9.7841+-0.6456            9.1927+-0.1219          might be 1.0643x faster
   in-one-case-true                                   9.6036+-0.6528            9.3881+-0.2017          might be 1.0230x faster
   in-two-cases                                       9.9654+-0.3562     ?     10.3823+-1.1363        ? might be 1.0418x slower
   indexed-properties-in-objects                      2.7505+-0.0379            2.7432+-0.0967        
   infer-closure-const-then-mov-no-inline             3.1067+-0.4805            2.8864+-0.0651          might be 1.0763x faster
   infer-closure-const-then-mov                      18.5082+-0.6986           18.5042+-0.3744        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     10.1254+-0.4620            9.8410+-0.0698          might be 1.0289x faster
   infer-closure-const-then-put-to-scope             20.9185+-0.3271     ?     20.9832+-0.2458        ?
   infer-closure-const-then-reenter-no-inline   
                                                     47.3631+-0.7661     ?     47.9479+-0.8392        ? might be 1.0123x slower
   infer-closure-const-then-reenter                  22.3255+-0.7312           21.7529+-0.5157          might be 1.0263x faster
   infer-constant-global-property                     3.3959+-0.0415     ?      3.4406+-0.0904        ? might be 1.0132x slower
   infer-constant-property                            2.6423+-0.1112     ?      2.6665+-0.1550        ?
   infer-one-time-closure-ten-vars                    7.8376+-0.2717            7.7673+-0.3146        
   infer-one-time-closure-two-vars                    7.3827+-0.3347            7.1743+-0.1321          might be 1.0291x faster
   infer-one-time-closure                             7.0792+-0.2367     ?      7.2826+-0.5510        ? might be 1.0287x slower
   infer-one-time-deep-closure                       10.6174+-0.3989     ?     10.9776+-0.5361        ? might be 1.0339x slower
   inline-arguments-access                            3.6861+-0.1703            3.6768+-0.1641        
   inline-arguments-aliased-access                    3.4863+-0.0513     ?      3.5021+-0.2201        ?
   inline-arguments-local-escape                      3.8448+-0.3242            3.6015+-0.1502          might be 1.0676x faster
   inline-get-scoped-var                              4.5904+-0.2324            4.4530+-0.1173          might be 1.0309x faster
   inlined-put-by-id-transition                      10.0122+-0.5367     ?     10.0469+-0.7973        ?
   inlined-put-by-val-with-string-transition   
                                                     71.8271+-1.2201     ?     72.1265+-1.7221        ?
   inlined-put-by-val-with-symbol-transition   
                                                     69.9735+-1.5154     ?     70.5578+-1.8619        ?
   int-or-other-abs-then-get-by-val                   4.7890+-0.1485            4.7300+-0.1243          might be 1.0125x faster
   int-or-other-abs-zero-then-get-by-val             16.2141+-0.9677           15.5608+-0.2318          might be 1.0420x faster
   int-or-other-add-then-get-by-val                   3.9042+-0.0673     ?      3.9404+-0.0398        ?
   int-or-other-add                                   4.8016+-0.1333     ?      4.8146+-0.0578        ?
   int-or-other-div-then-get-by-val                   3.8585+-0.2279            3.8056+-0.1176          might be 1.0139x faster
   int-or-other-max-then-get-by-val                   3.8301+-0.1012            3.8142+-0.0825        
   int-or-other-min-then-get-by-val                   4.0322+-0.2561            4.0141+-0.3290        
   int-or-other-mod-then-get-by-val                   3.6180+-0.3149            3.4836+-0.0815          might be 1.0386x faster
   int-or-other-mul-then-get-by-val                   3.5076+-0.0262     ?      3.6019+-0.1789        ? might be 1.0269x slower
   int-or-other-neg-then-get-by-val                   4.7598+-0.5108            4.3935+-0.1090          might be 1.0834x faster
   int-or-other-neg-zero-then-get-by-val             16.4661+-1.1981           15.5850+-0.2588          might be 1.0565x faster
   int-or-other-sub-then-get-by-val                   4.0187+-0.0943            3.9911+-0.0827        
   int-or-other-sub                                   3.3810+-0.1347     ?      3.4768+-0.3297        ? might be 1.0284x slower
   int-overflow-local                                 4.0669+-0.0740     ?      4.2283+-0.2303        ? might be 1.0397x slower
   Int16Array-alloc-long-lived                       46.2867+-0.7621           45.9717+-1.2126        
   Int16Array-bubble-sort-with-byteLength            17.2784+-0.3886     ?     17.4439+-0.4326        ?
   Int16Array-bubble-sort                            16.9859+-0.3294     ?     17.3100+-0.3045        ? might be 1.0191x slower
   Int16Array-load-int-mul                            1.4574+-0.0881            1.3900+-0.0398          might be 1.0485x faster
   Int16Array-to-Int32Array-set                      44.7440+-0.8916           43.1135+-0.8098          might be 1.0378x faster
   Int32Array-alloc-large                            12.1153+-0.4958           12.0597+-0.4991        
   Int32Array-alloc-long-lived                       55.6282+-1.1858           54.7035+-1.3218          might be 1.0169x faster
   Int32Array-alloc                                   2.8247+-0.1779            2.7525+-0.2069          might be 1.0262x faster
   Int32Array-Int8Array-view-alloc                    6.0163+-0.1785            5.9177+-0.1418          might be 1.0167x faster
   int52-spill                                        4.5398+-0.1575     ?      4.5813+-0.2545        ?
   Int8Array-alloc-long-lived                        41.2830+-1.9921           40.1334+-1.5956          might be 1.0286x faster
   Int8Array-load-with-byteLength                     3.3589+-0.0773     ?      3.3738+-0.0352        ?
   Int8Array-load                                     3.3305+-0.0542     ?      3.3669+-0.0951        ? might be 1.0109x slower
   integer-divide                                    10.1305+-0.2842     ?     10.1472+-0.2045        ?
   integer-modulo                                     1.4994+-0.0534            1.4975+-0.0479        
   is-boolean-fold-tricky                             3.8071+-0.1754     ?      3.8239+-0.2266        ?
   is-boolean-fold                                    2.6128+-0.0741            2.5707+-0.0288          might be 1.0164x faster
   is-function-fold-tricky-internal-function   
                                                      9.4815+-0.0651     !     10.0978+-0.3271        ! definitely 1.0650x slower
   is-function-fold-tricky                            4.0620+-0.0889     ?      4.0776+-0.0558        ?
   is-function-fold                                   2.6505+-0.1013     ?      2.6584+-0.0823        ?
   is-number-fold-tricky                              3.9924+-0.0546     ?      4.0246+-0.0583        ?
   is-number-fold                                     2.6765+-0.2145            2.6051+-0.0409          might be 1.0274x faster
   is-object-or-null-fold-functions                   2.6647+-0.1296            2.6185+-0.0182          might be 1.0176x faster
   is-object-or-null-fold-less-tricky                 4.0927+-0.1346     ?      4.1804+-0.0754        ? might be 1.0214x slower
   is-object-or-null-fold-tricky                      5.1700+-0.2069            5.1018+-0.1203          might be 1.0134x faster
   is-object-or-null-fold                             2.6797+-0.1223            2.6120+-0.0345          might be 1.0259x faster
   is-object-or-null-trickier-function                4.1699+-0.1331            4.1117+-0.0684          might be 1.0141x faster
   is-object-or-null-trickier-internal-function   
                                                     10.6138+-0.3444           10.5292+-0.2888        
   is-object-or-null-tricky-function                  4.2307+-0.2966            4.1019+-0.0637          might be 1.0314x faster
   is-object-or-null-tricky-internal-function   
                                                      7.8174+-0.2581     ?      8.5906+-2.1359        ? might be 1.0989x slower
   is-string-fold-tricky                              4.2686+-0.7137            4.1299+-0.1187          might be 1.0336x faster
   is-string-fold                                     2.5854+-0.0694     ?      2.6381+-0.1634        ? might be 1.0204x slower
   is-undefined-fold-tricky                           3.4951+-0.3749            3.3587+-0.0905          might be 1.0406x faster
   is-undefined-fold                                  2.6018+-0.0862     ?      2.6250+-0.0955        ?
   JSONP-negative-0                                   0.2514+-0.0090     ?      0.2579+-0.0235        ? might be 1.0257x slower
   large-int-captured                                 3.8084+-0.2222     ?      3.8542+-0.1353        ? might be 1.0120x slower
   large-int-neg                                     14.0278+-0.5693           13.5895+-0.3829          might be 1.0323x faster
   large-int                                         12.4813+-0.2336     ?     12.7831+-0.3524        ? might be 1.0242x slower
   load-varargs-elimination                          20.7061+-0.8469     ?     21.0043+-0.8834        ? might be 1.0144x slower
   logical-not-weird-types                            2.6637+-0.0192     ?      2.6911+-0.0351        ? might be 1.0103x slower
   logical-not                                        4.1590+-0.2461            4.0916+-0.1364          might be 1.0165x faster
   lots-of-fields                                    10.2944+-1.6454            9.5566+-0.2359          might be 1.0772x faster
   make-indexed-storage                               2.6433+-0.1729     ?      2.7324+-0.1178        ? might be 1.0337x slower
   make-rope-cse                                      3.6859+-0.0899            3.6395+-0.2302          might be 1.0127x faster
   marsaglia-larger-ints                             31.7635+-0.4725     ?     32.2146+-0.7850        ? might be 1.0142x slower
   marsaglia-osr-entry                               22.2211+-2.9282           21.2218+-0.7153          might be 1.0471x faster
   math-with-out-of-bounds-array-values              21.3253+-0.4844     ?     21.5705+-0.4415        ? might be 1.0115x slower
   max-boolean                                        2.6597+-0.0864            2.6149+-0.0679          might be 1.0171x faster
   method-on-number                                  16.0787+-1.0485           15.9700+-0.5457        
   min-boolean                                        2.5874+-0.1172            2.5415+-0.0532          might be 1.0181x faster
   minus-boolean-double                               3.0461+-0.0457     ?      3.0533+-0.0379        ?
   minus-boolean                                      2.2804+-0.0467     ?      2.2917+-0.0247        ?
   misc-strict-eq                                    28.4180+-1.0310           28.3671+-0.7922        
   mod-boolean-double                                11.2073+-0.3742           10.9893+-0.1543          might be 1.0198x faster
   mod-boolean                                        8.6429+-0.5867            8.3026+-0.2220          might be 1.0410x faster
   mul-boolean-double                                 3.6175+-0.1209     ?      3.9560+-0.5388        ? might be 1.0936x slower
   mul-boolean                                        2.7936+-0.0589            2.7797+-0.0382        
   neg-boolean                                        3.0441+-0.0328     ?      3.0559+-0.0425        ?
   negative-zero-divide                               0.3371+-0.0095     ?      0.3380+-0.0234        ?
   negative-zero-modulo                               0.3420+-0.0242     ?      0.3542+-0.0327        ? might be 1.0356x slower
   negative-zero-negate                               0.3214+-0.0144     ?      0.3223+-0.0140        ?
   nested-function-parsing                           44.4359+-1.6588     ?     46.4963+-2.9116        ? might be 1.0464x slower
   new-array-buffer-dead                             87.7211+-1.0492           87.5596+-0.7507        
   new-array-buffer-push                              5.9014+-0.3002     ?      6.0647+-0.4405        ? might be 1.0277x slower
   new-array-dead                                    14.5205+-0.9419     ?     14.9744+-1.1649        ? might be 1.0313x slower
   new-array-push                                     3.5582+-0.2737            3.4735+-0.1560          might be 1.0244x faster
   no-inline-constructor                             31.2822+-1.2011     ?     33.3830+-4.7277        ? might be 1.0672x slower
   number-test                                        2.8906+-0.0941     ?      2.9337+-0.1981        ? might be 1.0149x slower
   object-closure-call                                5.0316+-0.4912            4.8190+-0.3081          might be 1.0441x faster
   object-get-own-property-symbols-on-large-array   
                                                      4.0723+-0.1436     ?      4.2056+-0.3687        ? might be 1.0327x slower
   object-test                                        2.6448+-0.0757     ?      2.6869+-0.1066        ? might be 1.0159x slower
   obvious-sink-pathology-taken                      99.1552+-1.3639     ?     99.3629+-0.9643        ?
   obvious-sink-pathology                            93.4071+-1.0734           93.3363+-0.6060        
   obviously-elidable-new-object                     29.7225+-2.2985           28.4797+-0.6799          might be 1.0436x faster
   plus-boolean-arith                                 2.4332+-0.1265            2.3634+-0.0409          might be 1.0296x faster
   plus-boolean-double                                3.1152+-0.0503            3.0675+-0.0580          might be 1.0156x faster
   plus-boolean                                       2.4961+-0.0558     ?      2.5063+-0.1030        ?
   poly-chain-access-different-prototypes-simple   
                                                      3.5113+-0.7206            3.2413+-0.0626          might be 1.0833x faster
   poly-chain-access-different-prototypes             2.9697+-0.3438            2.8993+-0.1080          might be 1.0243x faster
   poly-chain-access-simpler                          3.2007+-0.0680     ?      3.2452+-0.1180        ? might be 1.0139x slower
   poly-chain-access                                  3.2317+-0.0489     ?      3.2959+-0.0997        ? might be 1.0199x slower
   poly-stricteq                                     47.2912+-0.5565     ?     47.8602+-0.4147        ? might be 1.0120x slower
   polymorphic-array-call                             1.2480+-0.1061            1.1735+-0.0396          might be 1.0635x faster
   polymorphic-get-by-id                              2.7797+-0.0430            2.7731+-0.0371        
   polymorphic-put-by-id                             24.4276+-0.6284           24.3406+-0.4597        
   polymorphic-put-by-val-with-string                25.6792+-1.0533           25.4634+-1.0017        
   polymorphic-put-by-val-with-symbol                24.8617+-0.4845     ?     25.3644+-0.6049        ? might be 1.0202x slower
   polymorphic-structure                             13.0024+-0.1861     ?     13.0531+-0.4380        ?
   polyvariant-monomorphic-get-by-id                  6.6196+-1.1573            6.4138+-0.6075          might be 1.0321x faster
   proto-getter-access                                8.2302+-0.1421     ?      8.9672+-1.5771        ? might be 1.0896x slower
   prototype-access-with-mutating-prototype           5.4181+-0.1497            5.3712+-0.1115        
   put-by-id-replace-and-transition                   7.6561+-0.4245     ?      7.9854+-0.9715        ? might be 1.0430x slower
   put-by-id-slightly-polymorphic                     2.7837+-0.2146            2.6364+-0.1422          might be 1.0559x faster
   put-by-id                                         10.1840+-1.2940            9.7111+-0.4632          might be 1.0487x faster
   put-by-val-direct                                  0.3206+-0.0069     ?      0.3333+-0.0302        ? might be 1.0395x slower
   put-by-val-large-index-blank-indexing-type   
                                                      5.2819+-0.2088            5.2507+-0.2071        
   put-by-val-machine-int                             2.3023+-0.1521     ?      2.3490+-0.0862        ? might be 1.0203x slower
   put-by-val-with-string-replace-and-transition   
                                                     10.1496+-0.4282            9.9844+-0.1575          might be 1.0165x faster
   put-by-val-with-string-slightly-polymorphic   
                                                      2.8447+-0.1062            2.7952+-0.0211          might be 1.0177x faster
   put-by-val-with-string                            10.5474+-0.6587           10.3524+-0.4086          might be 1.0188x faster
   put-by-val-with-symbol-replace-and-transition   
                                                     11.6381+-0.4671           11.5355+-0.2443        
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.1172+-0.0912     ?      3.1483+-0.0972        ?
   put-by-val-with-symbol                            10.0580+-0.2832     ?     10.1701+-0.4410        ? might be 1.0111x slower
   rare-osr-exit-on-local                            14.1603+-0.3410     ?     14.1604+-0.4242        ?
   register-pressure-from-osr                        16.6443+-0.4946           16.5781+-0.4884        
   repeat-multi-get-by-offset                        20.8521+-0.5735     ?     21.6330+-1.9230        ? might be 1.0375x slower
   setter-prototype                                   7.5528+-0.1029     ?      7.7215+-0.2001        ? might be 1.0223x slower
   setter                                             5.2326+-0.3558     ?      5.9583+-0.5629        ? might be 1.1387x slower
   simple-activation-demo                            24.3528+-0.6553     ?     24.4504+-0.4435        ?
   simple-getter-access                              10.8753+-0.4281           10.4796+-0.2014          might be 1.0378x faster
   simple-poly-call-nested                            8.6765+-1.0412     ?      9.3631+-0.5090        ? might be 1.0791x slower
   simple-poly-call                                   1.1212+-0.0196     ?      1.2576+-0.2744        ? might be 1.1216x slower
   sin-boolean                                       20.4859+-1.7820     ?     20.9945+-1.8863        ? might be 1.0248x slower
   singleton-scope                                   53.0163+-1.2516           52.6427+-0.8878        
   sink-function                                     10.3003+-1.0532     ?     10.5070+-0.5461        ? might be 1.0201x slower
   sink-huge-activation                              16.9080+-0.8660           16.3768+-0.7963          might be 1.0324x faster
   sinkable-new-object-dag                           54.4442+-0.9059     ?     55.0298+-0.6485        ? might be 1.0108x slower
   sinkable-new-object-taken                         43.4094+-1.3782           42.0123+-1.6915          might be 1.0333x faster
   sinkable-new-object                               29.6484+-0.5720     ?     30.5427+-1.3083        ? might be 1.0302x slower
   slow-array-profile-convergence                     2.3650+-0.1024     ?      2.3929+-0.1355        ? might be 1.0118x slower
   slow-convergence                                   2.2214+-0.0246     ?      2.2359+-0.0529        ?
   slow-ternaries                                    18.1325+-1.1397           17.2702+-0.3713          might be 1.0499x faster
   sorting-benchmark                                 16.4768+-0.4082     ?     16.8337+-0.3921        ? might be 1.0217x slower
   sparse-conditional                                 1.1369+-0.1518            1.1297+-0.0887        
   splice-to-remove                                  12.3974+-0.8007           12.3383+-0.2998        
   string-char-code-at                               13.9924+-0.4839     ?     14.2751+-0.5147        ? might be 1.0202x slower
   string-concat-object                               2.1864+-0.1560            2.1141+-0.1343          might be 1.0342x faster
   string-concat-pair-object                          2.1471+-0.1849            2.0631+-0.0908          might be 1.0407x faster
   string-concat-pair-simple                          9.2409+-0.4300     ?      9.2973+-0.3792        ?
   string-concat-simple                               9.4381+-0.6049     ?      9.6341+-0.5335        ? might be 1.0208x slower
   string-cons-repeat                                 6.2470+-0.0454     ?      6.4131+-0.2541        ? might be 1.0266x slower
   string-cons-tower                                  6.5632+-0.2500     ?      6.6432+-0.4472        ? might be 1.0122x slower
   string-equality                                   16.3187+-0.8874     ?     16.5627+-1.4339        ? might be 1.0150x slower
   string-get-by-val-big-char                         6.9669+-1.3179            6.5519+-0.2688          might be 1.0633x faster
   string-get-by-val-out-of-bounds-insane             3.0183+-0.0977     ?      3.0423+-0.0775        ?
   string-get-by-val-out-of-bounds                    4.0043+-0.0682     ?      4.2415+-0.4490        ? might be 1.0592x slower
   string-get-by-val                                  2.7704+-0.0273     ?      2.8263+-0.1131        ? might be 1.0202x slower
   string-hash                                        1.7859+-0.0329     ?      1.8269+-0.1059        ? might be 1.0230x slower
   string-long-ident-equality                        14.7103+-0.3051     ?     15.4852+-1.3370        ? might be 1.0527x slower
   string-out-of-bounds                              10.1689+-0.2418     ?     10.1823+-0.3285        ?
   string-repeat-arith                               26.7397+-0.5402     ?     28.1629+-0.9851        ? might be 1.0532x slower
   string-sub                                        52.4234+-1.5852           51.8136+-0.4588          might be 1.0118x faster
   string-test                                        2.7551+-0.0440     ?      2.7774+-0.0677        ?
   string-var-equality                               29.1540+-1.0039     ?     29.3730+-0.8973        ?
   structure-hoist-over-transitions                   2.4268+-0.1505            2.4218+-0.2639        
   substring-concat-weird                            35.7671+-0.7403     ?     37.9317+-4.7502        ? might be 1.0605x slower
   substring-concat                                  39.5142+-0.5607           39.1267+-0.7982        
   substring                                         44.8852+-1.1373     ?     48.7071+-7.0841        ? might be 1.0851x slower
   switch-char-constant                               2.5930+-0.0289     ?      2.5971+-0.0556        ?
   switch-char                                        5.9956+-0.7377            5.8699+-1.1085          might be 1.0214x faster
   switch-constant                                    7.7576+-1.0428     ?      7.9975+-0.8895        ? might be 1.0309x slower
   switch-string-basic-big-var                       13.9574+-0.4158           13.9044+-0.4535        
   switch-string-basic-big                           13.6468+-0.2031     ?     13.8070+-0.3169        ? might be 1.0117x slower
   switch-string-basic-var                           12.8400+-0.2184     ?     13.0650+-0.3643        ? might be 1.0175x slower
   switch-string-basic                               12.7203+-0.5427           12.4953+-0.2987          might be 1.0180x faster
   switch-string-big-length-tower-var                17.6189+-0.4625     ?     17.9969+-0.4089        ? might be 1.0215x slower
   switch-string-length-tower-var                    13.4920+-0.9118           13.0518+-0.2765          might be 1.0337x faster
   switch-string-length-tower                        12.1217+-0.7474           12.0416+-0.5625        
   switch-string-short                               11.7675+-0.3676     ?     12.1809+-0.5546        ? might be 1.0351x slower
   switch                                            11.6787+-0.6207           11.1982+-0.5296          might be 1.0429x faster
   tear-off-arguments-simple                          3.0134+-0.2680            2.9439+-0.0793          might be 1.0236x faster
   tear-off-arguments                                 3.9279+-0.2221     ?      4.0106+-0.1033        ? might be 1.0210x slower
   temporal-structure                                12.2393+-0.5064           11.7839+-0.1506          might be 1.0386x faster
   to-int32-boolean                                  13.0091+-0.5810           12.9203+-0.4864        
   try-catch-get-by-val-cloned-arguments             13.6583+-0.3942     ?     14.0560+-0.5566        ? might be 1.0291x slower
   try-catch-get-by-val-direct-arguments              6.1541+-0.3272     ?      6.3564+-0.1561        ? might be 1.0329x slower
   try-catch-get-by-val-scoped-arguments              7.5325+-0.4896            7.4619+-0.5662        
   typed-array-get-set-by-val-profiling              27.1625+-0.7645     ?     27.2411+-1.0885        ?
   undefined-property-access                        224.1822+-1.5829          223.0044+-1.0630        
   undefined-test                                     3.0242+-0.1764            2.8562+-0.0686          might be 1.0588x faster
   unprofiled-licm                                   14.1274+-0.6141           13.7770+-0.3394          might be 1.0254x faster
   varargs-call                                      12.5791+-0.2870           12.4433+-0.1516          might be 1.0109x faster
   varargs-construct-inline                          22.2394+-1.0877     ?     22.6574+-2.5270        ? might be 1.0188x slower
   varargs-construct                                 19.6937+-0.6464           19.0763+-0.9386          might be 1.0324x faster
   varargs-inline                                     8.0486+-0.1095            8.0170+-0.1735        
   varargs-strict-mode                                8.7612+-0.3523     ?      8.8880+-0.5059        ? might be 1.0145x slower
   varargs                                            8.6319+-0.2419     ?      9.1898+-1.0937        ? might be 1.0646x slower
   weird-inlining-const-prop                          2.4478+-0.1730     ?      2.5799+-0.4097        ? might be 1.0540x slower

   &lt;geometric&gt;                                        7.7777+-0.0272            7.7699+-0.0118          might be 1.0010x faster

                                                        TipOfTree                 LICMExitOK                                    
AsmBench:
   bigfib.cpp                                       452.6681+-4.6724          450.1464+-6.6048        
   cray.c                                           399.4457+-1.9967     ?    400.7615+-3.9915        ?
   dry.c                                            426.5624+-1.3225          425.9247+-7.4582        
   FloatMM.c                                        683.0990+-2.6670     ?    684.0347+-3.1727        ?
   gcc-loops.cpp                                   3420.1719+-14.3309        3419.7673+-14.4622       
   n-body.c                                         824.4468+-3.5530     ?    824.5863+-3.6038        ?
   Quicksort.c                                      404.7892+-4.0571     ?    405.8982+-2.9495        ?
   stepanov_container.cpp                          3562.1890+-42.5796    ?   3580.2854+-40.1212       ?
   Towers.c                                         232.7564+-2.5568     ?    232.8002+-2.8131        ?

   &lt;geometric&gt;                                      716.6302+-1.9917     ?    717.0625+-2.8266        ? might be 1.0006x slower

                                                        TipOfTree                 LICMExitOK                                    
CompressionBench:
   huffman                                           59.0444+-1.4586           58.6606+-0.9136        
   arithmetic-simple                                271.4443+-3.0042          269.1619+-1.4463        
   arithmetic-precise                               240.9840+-1.3747          240.4169+-1.2418        
   arithmetic-complex-precise                       246.0667+-4.5384          242.2635+-2.1866          might be 1.0157x faster
   arithmetic-precise-order-0                       282.0708+-2.9592          281.4317+-3.0668        
   arithmetic-precise-order-1                       304.4036+-3.2295          302.8774+-3.5922        
   arithmetic-precise-order-2                       352.5170+-2.9943          351.8609+-2.5276        
   arithmetic-simple-order-1                        326.2668+-2.1264          324.0742+-1.9934        
   arithmetic-simple-order-2                        383.0863+-5.8955     ?    384.6590+-8.1707        ?
   lz-string                                        310.6290+-2.8507          309.3830+-6.2463        

   &lt;geometric&gt;                                      253.9619+-1.4053          252.7262+-0.3865          might be 1.0049x faster

                                                        TipOfTree                 LICMExitOK                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                                   50.8679+-0.1490     ?     50.8985+-0.1924        ? might be 1.0006x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121856</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-28 15:39:22 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/189126</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260173</attachid>
            <date>2015-08-28 13:32:28 -0700</date>
            <delta_ts>2015-08-28 14:41:34 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16130</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5MTE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDE1LTA4LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TElDTSBzaG91bGQgYmUgc291bmQgZXZlbiBpZiB0aGUgQ0ZHIGhhcyBjaGFuZ2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgyNTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmlvciB0byB0aGlzIGNo
YW5nZSwgTElDTSBleHBlY3RlZCBhIGNlcnRhaW4gQ0ZHIHNoYXBlIGFyb3VuZCBhIGxvb3A6IGJy
b2tlbiBjcml0aWNhbCBlZGdlcywKKyAgICAgICAgYSBwcmUtaGVhZGVyLCBhbmQgdGhlIHByZS1o
ZWFkZXIncyB0ZXJtaW5hbCBoYXMgZXhpdE9LLiBMSUNNIHdvdWxkIGVpdGhlciBjcmFzaCBvbiBh
bgorICAgICAgICBhc3NlcnRpb24sIG9yIGdlbmVyYXRlIGNvZGUgdGhhdCBmYWlscyB2YWxpZGF0
aW9uLCBpZiB0aGVzZSBjb25kaXRpb25zIHdlcmVuJ3QgbWV0LgorCisgICAgICAgIFRoZSBicm9r
ZW4gY3JpdGljYWwgZWRnZSBhc3N1bXB0aW9uIGlzIGZpbmU7IHNvIGZhciB3ZSBhcmUgYXNzdW1p
bmcgdGhhdCBTU0EgbWVhbnMgYnJva2VuCisgICAgICAgIGNyaXRpY2FsIGVkZ2VzLiBXZSBtYXkg
cmV2aXNpdCB0aGlzLCBidXQgd2UgZG9uJ3QgaGF2ZSB0byByaWdodCBub3cuCisKKyAgICAgICAg
VGhlIG90aGVyIGFzc3VtcHRpb25zIGFyZSBub3QgZmluZSwgYmVjYXVzZSBpdCdzIGhhcmQgdG8g
Z3VhcmFudGVlIHRoYXQgZXZlcnkgcGhhc2Ugd2lsbAorICAgICAgICBwcmVzZXJ2ZSB0aGUgcHJl
c2VuY2Ugb2YgcHJlLWhlYWRlcnMuIEV2ZW4gaWYgd2UgcmVxdWlyZWQgdGhhdCBwcmUtaGVhZGVy
cyBhcmUgcmVnZW5lcmF0ZWQKKyAgICAgICAgYmVmb3JlIExJQ00sIHRoYXQgcmVnZW5lcmF0aW9u
IHdvdWxkbid0IGJlIGd1YXJhbnRlZWQgdG8gY3JlYXRlIHByZS1oZWFkZXJzIHRoYXQgaGF2ZSBl
eGl0T0sgYXQKKyAgICAgICAgdGhlIHRlcm1pbmFsLiBUaGF0J3MgYmVjYXVzZSBvbmNlIGluIFNT
QSwgdGhlIGxvb3AgaGVhZGVyIHByb2JhYmx5IGhhcyBleGl0T0s9ZmFsc2UgYXQgdGhlCisgICAg
ICAgIGhlYWQgYmVjYXVzZSBvZiBQaGkncy4gUHJlLWhlYWRlciBjcmVhdGlvbiBoYXMgbm8gY2hv
aWNlIGJ1dCB0byB1c2UgdGhlIE5vZGU6Om9yaWdpbiBmcm9tIHRoZQorICAgICAgICBsb29wIGhl
YWRlciwgd2hpY2ggbWVhbnMgY3JlYXRpbmcgYSBwcmUtaGVhZGVyIHRoYXQgaGFzIGV4aXRPSz1m
YWxzZS4gUmVnYXJkbGVzcyBvZiB3aGV0aGVyCisgICAgICAgIHRoYXQncyBhIGZpeGFibGUgcHJv
YmxlbSwgaXQgc2VlbXMgdGhhdCBvdXIgYmVzdCBzaG9ydC10ZXJtIGFwcHJvYWNoIGlzIGp1c3Qg
dG8gYmUgZGVmZW5zaXZlCisgICAgICAgIGFuZCB0dXJuIHVuZGVzaXJhYmxlIHBhdGhvbG9naWVz
IGludG8gcGVyZm9ybWFuY2UgYnVncyBhbmQgbm90IGNyYXNoZXMuCisKKyAgICAgICAgRm9yIHRo
ZSBmb3Jlc2VlYWJsZSBmdXR1cmUsIG9uY2UgcHJlLWhlYWRlcnMgYXJlIGNyZWF0ZWQgdGhleSB3
aWxsIHByb2JhYmx5IG5vdCBiZSByZW1vdmVkLiBPdXIKKyAgICAgICAgY3VycmVudCBDRkcgc2lt
cGxpZmljYXRpb24gcGhhc2UgZG9lc24ndCBoYXZlIGEgcnVsZSBmb3IgcmVtb3ZpbmcgcHJlLWhl
YWRlcnMgKHNpbmNlIGl0IGRvZXNuJ3QKKyAgICAgICAgaGF2ZSBhbnkganVtcCB0aHJlYWRpbmcp
LiBTbywgaXQgd291bGRuJ3QgYmUgcHJvZml0YWJsZSB0byBwdXQgZWZmb3J0IHRvd2FyZHMgcmVu
ZXJhdGlvbiBvZgorICAgICAgICBwcmUtaGVhZGVycyBmb3IgTElDTSdzIGJlbmVmaXQuCisKKyAg
ICAgICAgQWxzbywgd2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHNvbWUgc2VxdWVuY2Ugb2YgQ0ZH
IHRyYW5zZm9ybWF0aW9ucyB3aWxsIG5vdCBjcmVhdGUgYSBsb29wIHRoYXQKKyAgICAgICAgZG9l
c24ndCBoYXZlIGEgcHJlLWhlYWRlci4gVGhpcyB3b3VsZCBiZSBzdXBlciByYXJlLiBCdXQgeW91
IGNvdWxkIGltYWdpbmUgdGhhdCBzb21lIHByb2dyYW0KKyAgICAgICAgaGFzIGNvbnRyb2wgZmxv
dyBlbmNvZGVkIHVzaW5nIHJlbG9vcGluZyAobGlrZQorICAgICAgICBodHRwczovL2dpdGh1Yi5j
b20va3JpcGtlbi9SZWxvb3Blci9ibG9iL21hc3Rlci9wYXBlci5wZGYpLiBJZiB0aGF0IGhhcHBl
bnMsIG91ciBjb21waWxlciB3aWxsCisgICAgICAgIHByb2JhYmx5IGluY3JlbWVudGFsbHkgZGlz
Y292ZXIgdGhlICJvcmlnaW5hbCIgQ0ZHLiBUaGF0IG1heSBoYXBwZW4gb25seSBhZnRlciBTU0Eg
Y29udmVyc2lvbiwKKyAgICAgICAgYW5kIHNvIGFmdGVyIHByZS1oZWFkZXIgZ2VuZXJhdGlvbi4g
VGhpcyBpcyBzdXBlciB1bmxpa2VseSBmb3IgYSBidW5jaCBvZiByZWFzb25zLCBidXQgaXQKKyAg
ICAgICAgKmNvdWxkKiBoYXBwZW4uCisKKyAgICAgICAgU28sIHRoaXMgcGF0Y2gganVzdCBtYWtl
cyBzdXJlIHRoYXQgaWYgcHJlLWhlYWRlcnMgYXJlIG1pc3Npbmcgb3IgY2Fubm90IGJlIGV4aXRl
ZCBmcm9tLCBMSUNNCisgICAgICAgIHdpbGwgc2ltcGx5IGF2b2lkIGhvaXN0aW5nIG91dCBvZiB0
aGF0IGJsb2NrLiBBdCBzb21lIHBvaW50IGxhdGVyLCB3ZSBjYW4gd29ycnkgYWJvdXQgYSBtb3Jl
CisgICAgICAgIGNvbXByZWhlbnNpdmUgc29sdXRpb24gdG8gdGhlIHByZS1oZWFkZXIgcHJvYmxl
bS4gVGhhdCdzIGNvdmVyZWQgYnkgdGhpcyBidWc6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1ODYKKworICAgICAgICAqIGRmZy9ERkdMSUNNUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkxJQ01QaGFzZTo6cnVuKToKKyAgICAgICAgKEpT
Qzo6REZHOjpMSUNNUGhhc2U6OmF0dGVtcHRIb2lzdCk6CisgICAgICAgICogZGZnL0RGR1BsYW4u
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9saWNtLW5v
LXByZS1oZWFkZXIuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvbGljbS1wcmUtaGVhZGVyLWNhbm5vdC1leGl0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZv
byk6CisKIDIwMTUtMDgtMjggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTZXBhcmF0ZSBjcmVhdGluZyBhIHN0eWxlIHNoZWV0
IGZyb20gYWRkaW5nIGEgbmV3IHJ1bGUgaW4gdGhlIHByb3RvY29sCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDE4OTExOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAg
cHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbWFrZSB0aGlzIHdvcmsgaW4gU1NBLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4MjYwCisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0
ciwgbV9ncmFwaC5tX2Zvcm0gIT0gU1NBKTsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IGJvb2wg
ZXh0cmVtZUxvZ2dpbmcgPSBmYWxzZTsKIAogICAgICAgICBib29sIG91dGVyQ2hhbmdlZCA9IGZh
bHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAko
cmV2aXNpb24gMTg5MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSB7CiAKIHN0
cnVjdCBMb29wRGF0YSB7CiAgICAgTG9vcERhdGEoKQotICAgICAgICA6IHByZUhlYWRlcigwKQor
ICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQogICAgIHsKICAgICB9CiAgICAgCkBAIC0xMTIs
NiArMTEyLDcgQEAgcHVibGljOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMubnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7CiAgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMubG9v
cChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC5p
bmRleCgpXTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKICAgICAgICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy5p
bm5lck1vc3RPdXRlckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwpAQCAt
MTE5LDIzICsxMjAsNDUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fZGF0YVtvdXRlckxv
b3AtPmluZGV4KCldLndyaXRlcy5hZGRBbGwoZGF0YS53cml0ZXMpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBoZWFkZXIgPSBsb29wLmhlYWRlcigpOwotICAgICAgICAg
ICAgQmFzaWNCbG9jayogcHJlSGVhZGVyID0gMDsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIHBy
ZUhlYWRlciA9IG51bGxwdHI7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlByZUhlYWRl
cnMgPSAwOyAvLyBXZSdyZSBjb29sIGlmIHRoaXMgaXMgMS4KKworICAgICAgICAgICAgLy8gVGhp
cyBpcyBndWFyYW50ZWVkIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBDRkcgbm90IHRvIGhhdmUgdW5y
ZWFjaGFibGUgY29kZS4gVGhlcmVmb3JlLCBhCisgICAgICAgICAgICAvLyBsb29wIGhlYWRlciBt
dXN0IGhhdmUgYSBwcmVkZWNlc3Nvci4gKEFsc28sIHdlIGRvbid0IGFsbG93IHRoZSByb290IGJs
b2NrIHRvIGJlIGEgbG9vcCwKKyAgICAgICAgICAgIC8vIHdoaWNoIGN1dHMgb3V0IHRoZSBvbmUg
b3RoZXIgd2F5IG9mIGhhdmluZyBhIGxvb3AgaGVhZGVyIHdpdGggb25seSBvbmUgcHJlZGVjZXNz
b3IuKQorICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBoZWFkZXItPmF0KDApLCBoZWFk
ZXItPnByZWRlY2Vzc29ycy5zaXplKCkgPiAxKTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gaGVhZGVyLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBpLS07KSB7CiAg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBoZWFkZXItPnByZWRlY2Vz
c29yc1tpXTsKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMuZG9taW5h
dGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsICFwcmVIZWFkZXIg
fHwgcHJlSGVhZGVyID09IHByZWRlY2Vzc29yKTsKKwogICAgICAgICAgICAgICAgIHByZUhlYWRl
ciA9IHByZWRlY2Vzc29yOworICAgICAgICAgICAgICAgIG51bWJlck9mUHJlSGVhZGVycysrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8g
dmFsaWRhdGUgdGhlIHByZS1oZWFkZXIuIFRoZXJlIGFyZSBhIGJ1bmNoIG9mIHRoaW5ncyB0aGF0
IGNvdWxkIGJlIHdyb25nCisgICAgICAgICAgICAvLyBhYm91dCBpdDoKKyAgICAgICAgICAgIC8v
CisgICAgICAgICAgICAvLyAtIFRoZXJlIG1pZ2h0IGJlIG1vcmUgdGhhbiBvbmUuIFRoaXMgbWVh
bnMgdGhhdCBwcmUtaGVhZGVyIGNyZWF0aW9uIGVpdGhlciBkaWQgbm90IHJ1biwKKyAgICAgICAg
ICAgIC8vICAgb3Igc29tZSBDRkcgdHJhbnNmb3JtYXRpb24gZGVzdHJveWVkIHRoZSBwcmUtaGVh
ZGVycy4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAtIEl0IG1heSBub3QgYmUgbGVn
YWwgdG8gZXhpdCBhdCB0aGUgcHJlLWhlYWRlci4gVGhhdCB3b3VsZCBiZSBhIHJlYWwgYnVtbWVy
LiBDdXJyZW50bHksCisgICAgICAgICAgICAvLyAgIExJQ00gYXNzdW1lcyB0aGF0IGl0IGNhbiBh
bHdheXMgaG9pc3QgY2hlY2tzLiBTZWUKKyAgICAgICAgICAgIC8vICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU0NS4gVGhvdWdoIGV2ZW4gd2l0aCB0aGF0IGZp
eGVkLCB3ZSBhbnl3YXkKKyAgICAgICAgICAgIC8vICAgd291bGQgbmVlZCB0byBjaGVjayBpZiBp
dCdzIE9LIHRvIGV4aXQgYXQgdGhlIHByZS1oZWFkZXIgc2luY2UgaWYgd2UgY2FuJ3QgdGhlbiB3
ZQorICAgICAgICAgICAgLy8gICB3b3VsZCBoYXZlIHRvIHJlc3RyaWN0IGhvaXN0aW5nIHRvIG5v
bi1leGl0aW5nIG5vZGVzLgorCisgICAgICAgICAgICBpZiAobnVtYmVyT2ZQcmVIZWFkZXJzICE9
IDEpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMg
Z3VhcmFudGVlZCBiZWNhdXNlIHRoZSBoZWFkZXIgaGFzIG11bHRpcGxlIHByZWRlY2Vzc29ycyBh
bmQgY3JpdGljYWwgZWRnZXMgYXJlCisgICAgICAgICAgICAvLyBicm9rZW4uIFRoZXJlZm9yZSB0
aGUgcHJlZGVjZXNzb3JzIG11c3QgYWxsIGhhdmUgb25lIHN1Y2Nlc3Nvciwgd2hpY2ggaW1wbGll
cyB0aGF0IHRoZXkKKyAgICAgICAgICAgIC8vIG11c3QgZW5kIGluIGEgSnVtcC4KICAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgcHJlSGVhZGVyLT50ZXJtaW5hbCgpLCBwcmVIZWFkZXIt
PnRlcm1pbmFsKCktPm9wKCkgPT0gSnVtcCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8v
IFdlIHNob3VsZCB2YWxpZGF0ZSB0aGUgcHJlLWhlYWRlci4gVGhpcyBjdXJyZW50bHkgYXNzdW1l
cyB0aGF0IGl0J3MgdmFsaWQgdG8gT1NSIGV4aXQgYXQKLSAgICAgICAgICAgIC8vIHRoZSBKdW1w
IG9mIHRoZSBwcmUtaGVhZGVyLiBUaGF0IG1heSBub3QgYWx3YXlzIGJlIHRoZSBjYXNlLCBsaWtl
IGlmIHdlIGxvd2VyZWQgYSBOb2RlCi0gICAgICAgICAgICAvLyB0aGF0IHdhcyBFeGl0SW52YWxp
ZCB0byBhIGxvb3AuIFRoaXMgcGhhc2Ugc2hvdWxkIHNvbWVob3cgZGVmZW5kIGFnYWluc3QgdGhp
cyAtIGF0IHRoZQotICAgICAgICAgICAgLy8gdmVyeSBsZWFzdCB3aXRoIGFzc2VydGlvbnMsIGlm
IG5vdCB3aXRoIHNvbWV0aGluZyBiZXR0ZXIgKGxpa2Ugb25seSBob2lzdGluZyB0aGluZ3MgdGhh
dAotICAgICAgICAgICAgLy8gY2Fubm90IGV4aXQpLgotICAgICAgICAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgyNTkKKworICAgICAgICAg
ICAgaWYgKCFwcmVIZWFkZXItPnRlcm1pbmFsKCktPm9yaWdpbi5leGl0T0spCisgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRhdGEucHJlSGVhZGVy
ID0gcHJlSGVhZGVyOwogICAgICAgICB9CkBAIC0xNDYsNiArMTY5LDcgQEAgcHVibGljOgogICAg
ICAgICAvLyBXZSB0cnkgdG8gaG9pc3QgdG8gdGhlIG91dGVyLW1vc3QgbG9vcCB0aGF0IHBlcm1p
dHMgaXQuIEhvaXN0aW5nIGlzIHZhbGlkIGlmOgogICAgICAgICAvLyAtIFRoZSBub2RlIGRvZXNu
J3Qgd3JpdGUgYW55dGhpbmcuCiAgICAgICAgIC8vIC0gVGhlIG5vZGUgZG9lc24ndCByZWFkIGFu
eXRoaW5nIHRoYXQgdGhlIGxvb3Agd3JpdGVzLgorICAgICAgICAvLyAtIFRoZSBwcmVIZWFkZXIg
aXMgdmFsaWQgKGkuZS4gaXQgcGFzc2VkIHRoZSB2YWxpZGF0aW9uIGFib3ZlKS4KICAgICAgICAg
Ly8gLSBUaGUgcHJlSGVhZGVyJ3Mgc3RhdGUgYXQgdGFpbCBtYWtlcyB0aGUgbm9kZSBzYWZlIHRv
IGV4ZWN1dGUuCiAgICAgICAgIC8vIC0gVGhlIGxvb3AncyBjaGlsZHJlbiBhbGwgYmVsb25nIHRv
IG5vZGVzIHRoYXQgc3RyaWN0bHkgZG9taW5hdGUgdGhlIGxvb3AgaGVhZGVyLgogICAgICAgICAv
LyAtIFRoZSBwcmVIZWFkZXIncyBzdGF0ZSBhdCB0YWlsIGlzIHN0aWxsIHZhbGlkLiBUaGlzIGlz
IG1vc3RseSB0byBzYXZlIGNvbXBpbGUKQEAgLTIwNSw2ICsyMjksMTIgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBub2RlUmVmOwogICAgICAgICBMb29wRGF0YSYgZGF0
YSA9IG1fZGF0YVtsb29wLT5pbmRleCgpXTsKKworICAgICAgICBpZiAoIWRhdGEucHJlSGVhZGVy
KSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgTm90IGhvaXN0aW5nICIsIG5vZGUsICIgYmVjYXVzZSB0aGUgcHJlLWhlYWRlciBpcyBpbnZh
bGlkLlxuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGlmICghZGF0YS5wcmVIZWFkZXItPmNmYURpZEZpbmlzaCkgewogICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQ
cmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTg5
MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDU2IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBo
JiBncmFwaCwgQmxvY2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxv
Y2spCiB7CisgICAgLy8gRklYTUU6IElmIHdlIHJ1biB0aGlzIHV0aWxpdHkgb24gU1NBIElSLCB0
aGVuIHdlIG1heSBlbmQgdXAgd2l0aCBhIGJpemFycmUgYXJyYW5nZW1lbnQgb2YKKyAgICAvLyBV
cHNpbG9ucyBhbmQgUGhpcywgbGlrZToKKyAgICAvLworICAgIC8vIEJCIzE6CisgICAgLy8gICAg
IFVwc2lsb24oQGEsIF5wKQorICAgIC8vICAgICBKdW1wKCMzKQorICAgIC8vCisgICAgLy8gQkIj
MjoKKyAgICAvLyAgICAgVXBzaWxvbihAYiwgXnApCisgICAgLy8gICAgIEp1bXAoIzMpCisgICAg
Ly8KKyAgICAvLyBCQiMzOgorICAgIC8vICAgICBKdW1wKCM0KQorICAgIC8vCisgICAgLy8gQkIj
NDoKKyAgICAvLyAgICAgcDogUGhpKCkKKyAgICAvLworICAgIC8vIE5vdGljZSBob3cgdGhlIFVw
c2lsb25zIGFyZSBub3QgaW4gdGhlIHByZWRlY2Vzc29yIG9mIHRoZSBQaGkgYW55bW9yZS4gSXQn
cyBub3QgY2xlYXIgaWYgdGhpcworICAgIC8vIHdvdWxkIGJlIGJhZC4gUHJvYmFibHkgbm90LCBi
dXQgaXQncyB3ZWlyZCBhbnl3YXkuIFdlIHNob3VsZCBhZGQgYSB2YWxpZGF0aW9uIHJ1bGUsIGFu
ZCB3ZQorICAgIC8vIHNob3VsZCBpbXBsZW1lbnQgYSBVcHNpbG9uL1BoaSBjYW5vbmljYWxpemF0
aW9uIHRoYXQgaGFuZGxlcyB0aGlzIGJ5IGNhbGxpbmcgaW50byB0aGUKKyAgICAvLyBTU0FDYWxj
dWxhdG9yIGFuZCB0cmVhdGluZyB0aGUgVXBzaWxvbnMgYXMgRGVmcyBhbmQgcmVidWlsZGluZyB0
aGUgUGhpcyBmcm9tIHNjcmF0Y2guCisgICAgLy8KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTg3CisgICAgCiAgICAgLy8gRG9uJ3QgYm90aGVyIHRv
IHByZXNlcnZlIGV4ZWN1dGlvbiBmcmVxdWVuY2llcyBmb3Igbm93LgogICAgIEJhc2ljQmxvY2sq
IHByZUhlYWRlciA9IGluc2VydGlvblNldC5pbnNlcnRCZWZvcmUoYmxvY2ssIFBOYU4pOworCisg
ICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGdyZWF0IGlmIHdlIHB1dCBzb21lIGVmZm9ydCBpbnRv
IGVuYWJsaW5nIGV4aXRPSyBhdCB0aGlzIG9yaWdpbiwgaWYgaXQKKyAgICAvLyBoYXBwZW5zIHRv
IGJlIHVuc2V0LiBJdCBtaWdodCBub3QgYmUgc2V0IGJlY2F1c2UgdGhlIGxvb3AgaGVhZGVyIChp
LmUuICJibG9jayIpIGhhcyBQaGlzIGluIGl0LgorICAgIC8vIFBoaXMgaGF2ZSB0byBoYXZlIGV4
aXRPSz1mYWxzZS4gVGhlcmUgYXJlIGEgZmV3IHdheXMgdG8gdHJ5IHRvIHNldCBleGl0T0s6Cisg
ICAgLy8KKyAgICAvLyAtIFJlZ2VuZXJhdGUgYW4gZXhpdCBvcmlnaW4gYnkgcHJvdmluZyB0aGF0
IHdlIGFyZSBhdCBhbiBleGl0IG9yaWdpbiBib3VuZGFyeS4gSWYgYWxsIG9mIHRoZQorICAgIC8v
ICAgcHJlZGVjZXNzb3JzJyB0ZXJtaW5hbHMgaGF2ZSBkaWZmZXJlbnQgZXhpdCBvcmlnaW5zIHRo
YW4gdGhlIGV4aXQgb3JpZ2luIG9mIGhlYWQgb2YgYmxvY2ssCisgICAgLy8gICB0aGVuIHdlIGNh
biBsZXZlcmFnZSB0aGUgYXNzdW1wdGlvbiB0aGF0IGV4aXQgb3JpZ2luIGJvdW5kYXJpZXMgY2Fu
IGFsd2F5cyBleGl0LiBXZSBjb3VsZAorICAgIC8vICAgZXh0ZW5kIHRoaXMgZnVydGhlciwgYW5k
IHNheSB0aGF0IHdlIHdpbGwgc2V0IGV4aXRPSyBldmVuIGlmIGEgcHJlZGVjZXNzb3IncyB0ZXJt
aW5hbCBoYXMgdGhlCisgICAgLy8gICBzYW1lIGV4aXQgb3JpZ2luLCBidXQgc28gbG9uZyBpdCBo
YWRuJ3QgZG9uZSBhbnl0aGluZyB0aGF0IGNsb2JiZXJzIGV4aXQgc2luY2UgdGhlIHN0YXJ0IG9m
CisgICAgLy8gICB0aGUgb3JpZ2luLgorICAgIC8vCisgICAgLy8gLSBBbmFseXplIHRoZSBQaGkn
cyBhbmQgTW92SGludCdzIGF0IHRoZSBoZWFkIG9mIGJsb2NrLiBJZiBwcmlvciB0byB0aGUgRXhp
dE9LIHRoZXJlIGFyZSBvbmx5CisgICAgLy8gICBQaGkncyBhbmQgTW92SGludCdzLCB3ZSBjb3Vs
ZCAicm9sbCB0aGVtIGJhY2siIGJ5IHByb3ZpbmcgdGhhdCBmb3IgZWFjaCBvZiB0aGUgTW92SGlu
dHMsIHRoZQorICAgIC8vICAgcmVmZXJlbmNlZCBQaGkgaGFzIGEgY2hpbGQgdGhhdCBkb21pbmF0
ZXMgdGhlIHByZS1oZWFkZXIsIGFuZCB0aGF0IGNoaWxkIGlzIHRoZSBub2RlIHRoYXQgaXMKKyAg
ICAvLyAgIE9TUi1hdmFpbGFibGUgYXQgdGhlIGxvY2FsIGJlaW5nIE1vdkhpbnRlZC4KKyAgICAv
LworICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBvYnZpb3VzbHkgd3Jvbmcgd2F5cyB0
byB0cnkgdG8gc2V0IGV4aXRPSy4gRm9yIGV4YW1wbGUsIHdlIGNhbm5vdAorICAgIC8vIHNpbXBs
eSB1c2UgdGhlIG9yaWdpbiBvZiBvdXIgcHJlZGVjZXNzb3JzLCBzaW5jZSBpbiBieXRlY29kZSB0
aGF0IGNvdWxkIGJlICphbnkqIGtpbmQgb2YKKyAgICAvLyBpbnN0cnVjdGlvbi4gSXQgbWF5IG5v
dCBldmVuIGJlIGEgY29udHJvbCBmbG93IGNvbnN0cnVjdCwgaWYgd2UgaGFkIGxvd2VyZWQgc29t
ZSBub24tY29udHJvbAorICAgIC8vIGJ5dGVjb2RlIG9wZXJhdGlvbiBpbnRvIERGRyBJUiB0aGF0
IGhhcyBjb250cm9sIGZsb3cuIEhlbmNlLCB3ZSByZWFsbHkgZG8gbmVlZCB0byB0cnkgdG8gdXNl
IHRoZQorICAgIC8vIG9yaWdpbiBvZiB0aGUgaGVhZCBvZiB0aGUgbG9vcCBoZWFkZXIuCisgICAg
Ly8KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTg2
CiAgICAgcHJlSGVhZGVyLT5hcHBlbmROb2RlKAogICAgICAgICBncmFwaCwgU3BlY05vbmUsIEp1
bXAsIGJsb2NrLT5hdCgwKS0+b3JpZ2luLCBPcEluZm8oYmxvY2spKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMTg5MTE4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0
LDcgKzM3NCw4IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAg
ICAgICAgCiAgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7IC8vIFJlZHVjZSB0aGUgZ3JhcGgg
c2l6ZSBhIGJpdC4KICAgICAgICAgcGVyZm9ybUNyaXRpY2FsRWRnZUJyZWFraW5nKGRmZyk7Ci0g
ICAgICAgIHBlcmZvcm1Mb29wUHJlSGVhZGVyQ3JlYXRpb24oZGZnKTsKKyAgICAgICAgaWYgKE9w
dGlvbnM6OmNyZWF0ZVByZUhlYWRlcnMoKSkKKyAgICAgICAgICAgIHBlcmZvcm1Mb29wUHJlSGVh
ZGVyQ3JlYXRpb24oZGZnKTsKICAgICAgICAgcGVyZm9ybUNQU1JldGhyZWFkaW5nKGRmZyk7CiAg
ICAgICAgIHBlcmZvcm1TU0FDb252ZXJzaW9uKGRmZyk7CiAgICAgICAgIHBlcmZvcm1TU0FMb3dl
cmluZyhkZmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAko
cmV2aXNpb24gMTg5MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNiArMTk1LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFy
KiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFu
dHNGb3JJbmxpbmluZywgNSwgbnVsbHB0cikgXAogICAgIHYodW5zaWduZWQsIGZyZXF1ZW50Q2Fs
bFRocmVzaG9sZCwgMiwgbnVsbHB0cikgXAogICAgIHYoZG91YmxlLCBtaW5pbXVtQ2FsbFRvS25v
d25SYXRlLCAwLjUxLCBudWxscHRyKSBcCisgICAgdihib29sLCBjcmVhdGVQcmVIZWFkZXJzLCB0
cnVlLCBudWxscHRyKSBcCiAgICAgdihib29sLCBlbmFibGVNb3ZIaW50UmVtb3ZhbCwgdHJ1ZSwg
bnVsbHB0cikgXAogICAgIHYoYm9vbCwgZW5hYmxlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcsIHRy
dWUsIG51bGxwdHIpIFwKICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2xpY20tbm8tcHJlLWhlYWRlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2xpY20tbm8tcHJlLWhlYWRlci5qcwkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbGljbS1uby1wcmUtaGVhZGVy
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKy8vQCBydW5NaXNjRlRMTm9DSklU
VGVzdCgiLS1jcmVhdGVQcmVIZWFkZXJzPWZhbHNlIikKKworZnVuY3Rpb24gZm9vKGFycmF5KSB7
CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIGkgPSAwOworICAgIGlmICghYXJyYXkubGVu
Z3RoKQorICAgICAgICBhcnJheSA9IFsxXTsKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdCArPSBh
cnJheVtpKytdOworICAgIH0gd2hpbGUgKGkgPCBhcnJheS5sZW5ndGgpCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKQorICAgIGZvbyhbMSwgMiwgM10pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9saWNtLXByZS1oZWFkZXItY2Fubm90LWV4aXQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9saWNtLXByZS1oZWFkZXItY2Fubm90
LWV4aXQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2xpY20tcHJlLWhlYWRlci1jYW5ub3QtZXhpdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE5IEBACisvL0AgcnVuTWlzY0ZUTE5vQ0pJVFRlc3QoIi0tY3JlYXRlUHJlSGVhZGVycz1m
YWxzZSIpCisKK2Z1bmN0aW9uIGZvbyhvYmplY3QsIHByZWRpY2F0ZSkgeworICAgIHZhciByZXN1
bHQgPSAwOworICAgIHZhciBpID0gMDsKKyAgICBpZiAoREZHVHJ1ZSgpKQorICAgICAgICBwcmVk
aWNhdGUgPSA0MjsKKyAgICB3aGlsZSAocHJlZGljYXRlID49IDQyKSB7CisgICAgICAgIHJlc3Vs
dCArPSBvYmplY3QuYXJyYXlbaSsrXTsKKyAgICAgICAgaWYgKGkgPj0gb2JqZWN0LmFycmF5Lmxl
bmd0aCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCisgICAg
Zm9vKHthcnJheTogWzEsIDIsIDNdfSwge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4gNDI7
IH19KTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE4OTExOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE1LTA4LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTElDTSBzaG91bGQgYmUgc291bmQgZXZlbiBpZiB0aGUgQ0ZHIGhhcyBj
aGFuZ2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDgyNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSB1dGlsaXR5IGZvciBjcmVhdGluZyB0ZXN0cyB0aGF0IHNldCBzb21lIHVuY29tbW9uIG9w
dGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTUt
MDgtMjggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
TWFrZSB0aGUgQWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayBwcmVmZXJlbmNlIHdvcmsgaW4gV2Vi
S2l0IC8gV2ViS2l0Mi4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkocmV2aXNp
b24gMTg5MTE4KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkod29ya2lu
ZyBjb3B5KQpAQCAtNzYyLDYgKzc2MiwxNCBAQCBkZWYgcnVuRlRMTm9DSklUU21hbGxQb29sCiAg
ICAgcnVuKCJmdGwtbm8tY2ppdC1zbWFsbC1wb29sIiwgIi0taml0TWVtb3J5UmVzZXJ2YXRpb25T
aXplPTUwMDAwIiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUykpIGlmICRlbmFibGVG
VEwKIGVuZAogCitkZWYgcnVuTWlzY05vQ0pJVFRlc3QoKm9wdGlvbnMpCisgICAgcnVuKCJtaXNj
LW5vLWNqaXQiLCAqKE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbnMpKQorZW5kCisKK2RlZiBydW5N
aXNjRlRMTm9DSklUVGVzdCgqb3B0aW9ucykKKyAgICBydW4oIm1pc2MtZnRsLW5vLWNqaXQiLCAq
KEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TICsgb3B0aW9ucykpCitlbmQKKwogZGVmIGRl
ZmF1bHRSdW4KICAgICBydW5EZWZhdWx0CiAgICAgcnVuQWx3YXlzVHJpZ2dlckNvcHlQaGFzZQo=
</data>
<flag name="review"
          id="285370"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>