<?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>153544</bug_id>
          
          <creation_ts>2016-01-27 06:32:40 -0800</creation_ts>
          <short_desc>Should not predict OtherObj for ToThis with primitive types under strict mode</short_desc>
          <delta_ts>2016-01-31 15:05:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>143889</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1159280</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-27 06:32:40 -0800</bug_when>
    <thetext>Should not predict OtherObj for ToThis with primitive types under strict mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159297</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-27 09:29:45 -0800</bug_when>
    <thetext>This is found when implementing https://bugs.webkit.org/show_bug.cgi?id=143889,
in that case, even under strict mode, ToThis(StringIdent) DFG node predicts its result type as OtherObj. (And frequent BadType OSRExit occurs)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160572</commentid>
    <comment_count>2</comment_count>
      <attachid>270327</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-30 16:37:06 -0800</bug_when>
    <thetext>Created attachment 270327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160581</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-30 16:44:58 -0800</bug_when>
    <thetext>What is the performance impact?  It would be good to see a detailed report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160582</commentid>
    <comment_count>4</comment_count>
      <attachid>270327</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-30 16:46:00 -0800</bug_when>
    <thetext>Comment on attachment 270327
Patch

This looks sensible. We should do detailed perf tests before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160593</commentid>
    <comment_count>5</comment_count>
      <attachid>270327</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-30 17:18:26 -0800</bug_when>
    <thetext>Comment on attachment 270327
Patch

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

Thanks! I&apos;ll take the performance!

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1602
&gt; +            if (enableInt52() &amp;&amp; node-&gt;child1()-&gt;shouldSpeculateMachineInt()) {
&gt; +                fixEdge&lt;Int52RepUse&gt;(node-&gt;child1());
&gt; +                node-&gt;convertToIdentity();
&gt; +                node-&gt;setResult(NodeResultInt52);
&gt; +                return;
&gt; +            }
&gt; +
&gt; +            if (node-&gt;child1()-&gt;shouldSpeculateNumber()) {
&gt; +                fixEdge&lt;DoubleRepUse&gt;(node-&gt;child1());
&gt; +                node-&gt;convertToIdentity();
&gt; +                node-&gt;setResult(NodeResultDouble);
&gt; +                return;
&gt; +            }

I&apos;m not confident on this part. Identity requires that canonicalResultRepresentation(node) == canonicalResultRepresentation(node-&gt;child1()) because it just an alias node to the child1.
So, what is the best way to handle this here? Looking node-&gt;child1()-&gt;result() and setting it to node is the way to do that? Or just doing the above is OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160595</commentid>
    <comment_count>6</comment_count>
      <attachid>270327</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-30 17:22:27 -0800</bug_when>
    <thetext>Comment on attachment 270327
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1602
&gt;&gt; +            }
&gt; 
&gt; I&apos;m not confident on this part. Identity requires that canonicalResultRepresentation(node) == canonicalResultRepresentation(node-&gt;child1()) because it just an alias node to the child1.
&gt; So, what is the best way to handle this here? Looking node-&gt;child1()-&gt;result() and setting it to node is the way to do that? Or just doing the above is OK?

Maybe I think we need to transfer NodeResult types since prediction == SpecInt52, result == NodeResultJS case should exist, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160596</commentid>
    <comment_count>7</comment_count>
      <attachid>270327</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-30 17:22:29 -0800</bug_when>
    <thetext>Comment on attachment 270327
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1602
&gt;&gt; +            }
&gt; 
&gt; I&apos;m not confident on this part. Identity requires that canonicalResultRepresentation(node) == canonicalResultRepresentation(node-&gt;child1()) because it just an alias node to the child1.
&gt; So, what is the best way to handle this here? Looking node-&gt;child1()-&gt;result() and setting it to node is the way to do that? Or just doing the above is OK?

This should be OK because the last part of FixupPhase is conversion fix-up.  It will see this and insert a DoubleRep node to convert node-&gt;child1() into a double.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160598</commentid>
    <comment_count>8</comment_count>
      <attachid>270327</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-30 17:23:26 -0800</bug_when>
    <thetext>Comment on attachment 270327
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1602
&gt;&gt;&gt;&gt; +            }
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m not confident on this part. Identity requires that canonicalResultRepresentation(node) == canonicalResultRepresentation(node-&gt;child1()) because it just an alias node to the child1.
&gt;&gt;&gt; So, what is the best way to handle this here? Looking node-&gt;child1()-&gt;result() and setting it to node is the way to do that? Or just doing the above is OK?
&gt;&gt; 
&gt;&gt; Maybe I think we need to transfer NodeResult types since prediction == SpecInt52, result == NodeResultJS case should exist, right?
&gt; 
&gt; This should be OK because the last part of FixupPhase is conversion fix-up.  It will see this and insert a DoubleRep node to convert node-&gt;child1() into a double.

In the MachineInt case, it will already insert a Int52Rep node to perform the conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160599</commentid>
    <comment_count>9</comment_count>
      <attachid>270327</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-30 17:24:01 -0800</bug_when>
    <thetext>Comment on attachment 270327
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1602
&gt;&gt;&gt;&gt; +            }
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m not confident on this part. Identity requires that canonicalResultRepresentation(node) == canonicalResultRepresentation(node-&gt;child1()) because it just an alias node to the child1.
&gt;&gt;&gt; So, what is the best way to handle this here? Looking node-&gt;child1()-&gt;result() and setting it to node is the way to do that? Or just doing the above is OK?
&gt;&gt; 
&gt;&gt; Maybe I think we need to transfer NodeResult types since prediction == SpecInt52, result == NodeResultJS case should exist, right?
&gt; 
&gt; This should be OK because the last part of FixupPhase is conversion fix-up.  It will see this and insert a DoubleRep node to convert node-&gt;child1() into a double.

Oh! Great, I&apos;ve got it. Thanks so much for your pointing :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160608</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-30 18:54:05 -0800</bug_when>
    <thetext>Result is the following. Result looks not so bad.

Interesting result is the following.
   string-fasta                                     532.9790+-8.8987     ^    443.1105+-26.7987       ^ definitely 1.2028x faster

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on yusuke (MacBookPro8,2).

VMs tested:
&quot;Baseline&quot; at /Users/yusuke/dev/WebKit/WebKitBuild/master-for-to-this/Release/jsc
&quot;Mine&quot; at /Users/yusuke/dev/WebKit/WebKitBuild/to-this/Release/jsc

Collected 4 samples per benchmark/VM, with 4 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.

                                                         Baseline                    Mine                                       
SunSpider:
   3d-cube                                            6.8388+-0.2020     ?      6.8658+-0.2305        ?
   3d-morph                                           6.3539+-0.1499     ?      6.4283+-0.1092        ? might be 1.0117x slower
   3d-raytrace                                        7.8746+-0.3095            7.7234+-0.3293          might be 1.0196x faster
   access-binary-trees                                2.9196+-0.8561     ?      3.0106+-1.0100        ? might be 1.0312x slower
   access-fannkuch                                    7.4094+-0.4459            7.2355+-0.3741          might be 1.0240x faster
   access-nbody                                       3.4037+-0.0189     ?      3.4475+-0.1829        ? might be 1.0129x slower
   access-nsieve                                      3.8041+-0.8647            3.5676+-0.1024          might be 1.0663x faster
   bitops-3bit-bits-in-byte                           1.6743+-0.2596     ?      1.6902+-0.2946        ?
   bitops-bits-in-byte                                3.8563+-0.1178     ?      4.3156+-1.3097        ? might be 1.1191x slower
   bitops-bitwise-and                                 2.5339+-0.1882     ?      2.8043+-0.4439        ? might be 1.1067x slower
   bitops-nsieve-bits                                 4.0405+-1.1136     ?      4.0866+-1.2173        ? might be 1.0114x slower
   controlflow-recursive                              2.9171+-0.0481            2.8798+-0.0449          might be 1.0129x faster
   crypto-aes                                         5.6260+-1.1224            5.5887+-1.2017        
   crypto-md5                                         3.3235+-0.0312            3.3100+-0.0490        
   crypto-sha1                                        3.1762+-0.2238            3.1094+-0.1506          might be 1.0215x faster
   date-format-tofte                                 10.3273+-0.2686     ?     11.7130+-1.9988        ? might be 1.1342x slower
   date-format-xparb                                  6.4587+-1.3093            6.1612+-0.1655          might be 1.0483x faster
   math-cordic                                        3.7736+-0.3412            3.6602+-0.0483          might be 1.0310x faster
   math-partial-sums                                  6.2522+-0.0647     ?      6.2560+-0.1810        ?
   math-spectral-norm                                 2.8151+-0.0705     ?      2.8848+-0.2949        ? might be 1.0248x slower
   regexp-dna                                         7.6108+-0.0829     ?      7.9500+-1.3633        ? might be 1.0446x slower
   string-base64                                      5.5179+-0.1008     ?      6.6177+-2.9868        ? might be 1.1993x slower
   string-fasta                                       7.8203+-0.1965     ^      7.2189+-0.2588        ^ definitely 1.0833x faster
   string-tagcloud                                   11.3948+-2.2276           10.7035+-1.4312          might be 1.0646x faster
   string-unpack-code                                21.8558+-0.6278     ?     21.9362+-0.2834        ?
   string-validate-input                              5.5400+-0.2279            5.3936+-0.1118          might be 1.0271x faster

   &lt;arithmetic&gt;                                       5.9661+-0.1647     ?      6.0215+-0.1935        ? might be 1.0093x slower

                                                         Baseline                    Mine                                       
LongSpider:
   3d-cube                                          988.1898+-26.0637         976.0106+-35.9054         might be 1.0125x faster
   3d-morph                                         706.9565+-10.5345    ?    709.4516+-10.2146       ?
   3d-raytrace                                      798.2307+-2.5329     ?    801.4364+-11.4800       ?
   access-binary-trees                             1130.5771+-27.0389    ?   1141.3080+-13.4669       ?
   access-fannkuch                                  364.5560+-53.9827         350.1062+-57.4193         might be 1.0413x faster
   access-nbody                                     778.1685+-11.2663         753.1172+-55.4978         might be 1.0333x faster
   access-nsieve                                    513.6930+-5.6347     ?    530.6740+-30.5231       ? might be 1.0331x slower
   bitops-3bit-bits-in-byte                          39.7734+-0.3323           39.6630+-0.4639        
   bitops-bits-in-byte                              129.2963+-10.3004    ?    131.0593+-8.5711        ? might be 1.0136x slower
   bitops-nsieve-bits                               437.4865+-6.7785     ?    440.1103+-5.7066        ?
   controlflow-recursive                            541.0652+-5.1718     ?    550.2098+-25.3788       ? might be 1.0169x slower
   crypto-aes                                       870.6147+-17.3557    ?    883.8890+-26.1841       ? might be 1.0152x slower
   crypto-md5                                       787.7313+-17.2980         774.8337+-7.0612          might be 1.0166x faster
   crypto-sha1                                      922.9603+-21.9982         918.1735+-35.4824       
   date-format-tofte                                891.6646+-12.8235    !    927.7588+-19.6508       ! definitely 1.0405x slower
   date-format-xparb                                870.6762+-72.0739    ?    879.9855+-44.6304       ? might be 1.0107x slower
   hash-map                                         201.1562+-5.0322          200.7615+-5.3319        
   math-cordic                                      604.0203+-53.6081         584.9930+-8.1026          might be 1.0325x faster
   math-partial-sums                                599.5690+-1.5359     ?    601.3077+-10.1026       ?
   math-spectral-norm                               909.3830+-12.7690    ?    912.0120+-15.4944       ?
   string-base64                                    513.4621+-28.1601         508.7567+-5.9941        
   string-fasta                                     532.9790+-8.8987     ^    443.1105+-26.7987       ^ definitely 1.2028x faster
   string-tagcloud                                  216.3085+-4.5502     ^    208.9126+-2.5991        ^ definitely 1.0354x faster

   &lt;geometric&gt;                                      512.8830+-6.9203          508.0797+-4.8989          might be 1.0095x faster

                                                         Baseline                    Mine                                       
V8Spider:
   crypto                                            49.5096+-0.1318     ?     50.5564+-3.3336        ? might be 1.0211x slower
   deltablue                                         63.7818+-3.2704     ?     64.5628+-3.7463        ? might be 1.0122x slower
   earley-boyer                                      50.3643+-0.3734           50.3442+-1.3069        
   raytrace                                          33.7848+-2.6372           32.9717+-0.2099          might be 1.0247x faster
   regexp                                            81.9688+-5.8931           80.5159+-0.7365          might be 1.0180x faster
   richards                                          51.7880+-0.8524     ?     56.3846+-4.6152        ? might be 1.0888x slower
   splay                                             45.9706+-2.9395           45.9433+-2.9223        

   &lt;geometric&gt;                                       52.1275+-0.4657     ?     52.6932+-1.5753        ? might be 1.0109x slower

                                                         Baseline                    Mine                                       
Octane:
   encrypt                                           0.22116+-0.00826          0.22095+-0.00890       
   decrypt                                           3.85020+-0.07744    ?     3.87119+-0.11700       ?
   deltablue                                x2       0.19358+-0.01481          0.19130+-0.01829         might be 1.0119x faster
   earley                                            0.41245+-0.01678    ?     0.41448+-0.00811       ?
   boyer                                             6.28153+-0.12866          6.17070+-0.08765         might be 1.0180x faster
   navier-stokes                            x2       5.31805+-0.02438    ?     5.33414+-0.09184       ?
   raytrace                                 x2       1.30101+-0.01972          1.29602+-0.04470       
   richards                                 x2       0.10712+-0.00121    ?     0.10790+-0.00351       ?
   splay                                    x2       0.45931+-0.00823    ?     0.46245+-0.00770       ?
   regexp                                   x2      32.62361+-0.70076         32.05047+-0.66892         might be 1.0179x faster
   pdfjs                                    x2      48.31987+-0.79489    ?    48.65049+-1.20758       ?
   mandreel                                 x2      55.14015+-1.16230         54.38888+-0.28091         might be 1.0138x faster
   gbemu                                    x2      34.21716+-0.51567         34.21298+-0.57379       
   closure                                           0.73493+-0.01902    ?     0.73908+-0.00968       ?
   jquery                                            9.57622+-0.19237          9.52913+-0.06055       
   box2d                                    x2      12.27128+-0.20301         12.15191+-0.12725       
   zlib                                     x2     452.26192+-6.26119        452.20036+-1.88530       
   typescript                               x2     888.42780+-9.23000        884.01660+-9.01757       

   &lt;geometric&gt;                                       6.89714+-0.06617          6.87752+-0.06423         might be 1.0029x faster

                                                         Baseline                    Mine                                       
Kraken:
   ai-astar                                          110.429+-2.033      ?     114.811+-9.544         ? might be 1.0397x slower
   audio-beat-detection                               64.745+-0.686      ?      65.751+-6.172         ? might be 1.0155x slower
   audio-dft                                         110.252+-3.877      ?     110.887+-6.269         ?
   audio-fft                                          50.033+-4.642      ?      50.099+-4.139         ?
   audio-oscillator                                   68.635+-4.911      ?      68.693+-4.654         ?
   imaging-darkroom                                   74.385+-5.096             74.314+-5.173         
   imaging-desaturate                                 64.632+-0.429      ?      64.785+-0.970         ?
   imaging-gaussian-blur                             102.515+-5.065      ?     103.385+-7.620         ?
   json-parse-financial                               49.084+-0.479      ?      50.866+-4.657         ? might be 1.0363x slower
   json-stringify-tinderbox                           28.495+-0.441             28.384+-0.315         
   stanford-crypto-aes                                49.723+-4.850             48.464+-1.224           might be 1.0260x faster
   stanford-crypto-ccm                                48.608+-4.243             48.605+-4.624         
   stanford-crypto-pbkdf2                            123.113+-6.265      ?     125.059+-6.179         ? might be 1.0158x slower
   stanford-crypto-sha256-iterative                   47.237+-0.492      ?      49.022+-4.814         ? might be 1.0378x slower

   &lt;arithmetic&gt;                                       70.849+-0.936      ?      71.652+-1.229         ? might be 1.0113x slower

                                                         Baseline                    Mine                                       
JSRegress:
   abc-forward-loop-equal                            46.1651+-3.3739           45.0609+-0.6837          might be 1.0245x faster
   abc-postfix-backward-loop                         59.8900+-4.9873           58.3672+-0.5227          might be 1.0261x faster
   abc-simple-backward-loop                          45.6028+-3.8654     ?     45.7128+-3.8959        ?
   abc-simple-forward-loop                           45.8312+-3.7861           45.8207+-4.2541        
   abc-skippy-loop                                   32.3862+-3.6200           30.5857+-0.1364          might be 1.0589x faster
   abs-boolean                                        3.3278+-0.1469     ?      3.3593+-0.1186        ?
   adapt-to-double-divide                            15.7523+-1.9522           15.2807+-0.3748          might be 1.0309x faster
   aliased-arguments-getbyval                         1.3865+-0.0287            1.3770+-0.0137        
   allocate-big-object                                2.9018+-0.1176     ?      3.0454+-0.8221        ? might be 1.0495x slower
   arguments-named-and-reflective                     9.5267+-0.1593     ?     10.9730+-3.4939        ? might be 1.1518x slower
   arguments-out-of-bounds                           10.7278+-0.2658     ?     12.3985+-4.3112        ? might be 1.1557x slower
   arguments-strict-mode                              8.8571+-0.1804     ?      9.3559+-1.1596        ? might be 1.0563x slower
   arguments                                          8.4475+-0.3709            8.2367+-0.1264          might be 1.0256x faster
   arity-mismatch-inlining                            1.2152+-0.3500            1.1855+-0.2429          might be 1.0250x faster
   array-access-polymorphic-structure                 9.1157+-0.1570     ?     10.3255+-4.3078        ? might be 1.1327x slower
   array-nonarray-polymorhpic-access                 29.1953+-0.9799     ?     30.3574+-2.8276        ? might be 1.0398x slower
   array-prototype-every                             88.1013+-0.5634     ^     85.2040+-0.9376        ^ definitely 1.0340x faster
   array-prototype-forEach                           87.4919+-2.9242     ?     87.9346+-2.8477        ?
   array-prototype-map                               98.9097+-3.6971           91.8150+-5.0288          might be 1.0773x faster
   array-prototype-reduce                            87.6442+-4.9214     ?     89.2727+-6.9987        ? might be 1.0186x slower
   array-prototype-reduceRight                      103.8035+-4.8637     ?    105.7334+-3.3303        ? might be 1.0186x slower
   array-prototype-some                              87.7402+-0.6509     ?     90.7748+-11.7664       ? might be 1.0346x slower
   array-splice-contiguous                           28.1000+-0.6010     ?     28.2710+-0.2916        ?
   array-with-double-add                              5.1816+-1.4970            5.0557+-1.4886          might be 1.0249x faster
   array-with-double-increment                        4.4128+-1.8163            4.3653+-1.3570          might be 1.0109x faster
   array-with-double-mul-add                          6.3787+-1.4916            5.8991+-1.4557          might be 1.0813x faster
   array-with-double-sum                              4.2357+-1.8537            4.1400+-1.5085          might be 1.0231x faster
   array-with-int32-add-sub                           8.4885+-0.6723            7.9946+-0.1956          might be 1.0618x faster
   array-with-int32-or-double-sum                     3.7485+-0.2477            3.7109+-0.1913          might be 1.0101x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     38.6818+-1.0953     ?     44.7883+-9.3367        ? might be 1.1579x slower
   ArrayBuffer-DataView-alloc-long-lived             16.2362+-0.4893     ?     17.4698+-2.8687        ? might be 1.0760x slower
   ArrayBuffer-Int32Array-byteOffset                  4.4567+-0.1506     ?      4.6092+-0.2619        ? might be 1.0342x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     37.4602+-1.4383     ?     38.2050+-3.6939        ? might be 1.0199x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     24.5803+-1.0530     ?     26.4618+-4.5511        ? might be 1.0765x slower
   ArrayBuffer-Int8Array-alloc-long-lived            14.3605+-0.4475     ?     14.7531+-0.7330        ? might be 1.0273x slower
   ArrayBuffer-Int8Array-alloc                       12.0576+-0.2794     ?     13.8566+-4.9631        ? might be 1.1492x slower
   arrowfunction-call                                12.1545+-0.2426     ?     13.7935+-3.0901        ? might be 1.1349x slower
   asmjs_bool_bug                                     8.8403+-0.2244     ?      8.9186+-0.3785        ?
   assign-custom-setter-polymorphic                   3.2007+-0.0335     ?      3.2182+-0.1256        ?
   assign-custom-setter                               4.7502+-0.0902     ?      4.7749+-0.1757        ?
   basic-set                                         11.0048+-2.3512            9.3782+-0.3818          might be 1.1734x faster
   big-int-mul                                        4.0527+-0.1557     ?      4.0640+-0.1701        ?
   boolean-test                                       4.5742+-1.4919            3.9860+-0.0789          might be 1.1476x faster
   branch-fold                                        4.6299+-0.6500            4.3855+-0.1280          might be 1.0557x faster
   branch-on-string-as-boolean                       16.8831+-0.1922     ?     17.0259+-0.1393        ?
   by-val-generic                                     5.5139+-0.1637            5.3060+-0.2190          might be 1.0392x faster
   call-spread-apply                                 32.5884+-3.0871           32.0340+-4.6919          might be 1.0173x faster
   call-spread-call                                  24.4427+-0.1446     ?     26.4528+-3.3693        ? might be 1.0822x slower
   captured-assignments                               0.7960+-0.2982     ?      0.8557+-0.8314        ? might be 1.0750x slower
   cast-int-to-double                                 5.8567+-0.0751     ?      6.5308+-1.7826        ? might be 1.1151x slower
   cell-argument                                      4.9905+-1.5821            4.5148+-0.0903          might be 1.1054x faster
   cfg-simplify                                       3.4468+-0.3226            3.3914+-0.1137          might be 1.0163x faster
   chain-getter-access                               12.4240+-0.1133     ?     14.3965+-3.7543        ? might be 1.1588x slower
   cmpeq-obj-to-obj-other                            10.7814+-0.0854     ?     13.8245+-4.2099        ? might be 1.2823x slower
   constant-test                                      5.5397+-1.0272            5.3552+-0.6600          might be 1.0345x faster
   create-lots-of-functions                          10.2815+-1.7671     ?     10.8793+-2.1718        ? might be 1.0581x slower
   cse-new-array-buffer                               3.3260+-0.9877            2.8995+-0.1901          might be 1.1471x faster
   cse-new-array                                      3.1662+-0.2950            3.0685+-0.1875          might be 1.0318x faster
   custom-setter-getter-as-put-get-by-id              0.8149+-0.3110     ?      0.8185+-0.3405        ?
   DataView-custom-properties                        49.6578+-3.0656           45.8035+-3.0211          might be 1.0841x faster
   delay-tear-off-arguments-strictmode               15.8316+-0.5717     ?     16.7841+-3.4407        ? might be 1.0602x slower
   deltablue-varargs                                221.5305+-5.2778     ?    226.4680+-5.5356        ? might be 1.0223x slower
   destructuring-arguments                          208.5494+-21.6456         207.3817+-14.6011       
   destructuring-parameters-overridden-by-function   
                                                      0.7919+-0.3012            0.6904+-0.2605          might be 1.1470x faster
   destructuring-swap                                 5.4163+-0.1037            5.3585+-0.0158          might be 1.0108x faster
   direct-arguments-getbyval                          1.4514+-0.1514     ?      1.6965+-0.6056        ? might be 1.1689x slower
   div-boolean-double                                 5.1420+-0.1810     ?      5.1479+-0.3085        ?
   div-boolean                                        7.8936+-0.1296            7.8007+-0.0404          might be 1.0119x faster
   double-get-by-val-out-of-bounds                    5.3330+-0.2900     ?      5.7855+-1.3548        ? might be 1.0849x slower
   double-pollution-getbyval                          8.9156+-0.1545     ?      8.9324+-0.2776        ?
   double-pollution-putbyoffset                       4.3958+-0.0932     ?      4.4062+-0.0195        ?
   double-real-use                                   31.1784+-0.3230     ?     32.1596+-3.7970        ? might be 1.0315x slower
   double-to-int32-typed-array-no-inline              2.6868+-0.0246     ?      2.8895+-0.6857        ? might be 1.0755x slower
   double-to-int32-typed-array                        2.6298+-0.3018            2.5336+-0.0248          might be 1.0380x faster
   double-to-uint32-typed-array-no-inline             2.7438+-0.0227     ?      2.8412+-0.2624        ? might be 1.0355x slower
   double-to-uint32-typed-array                       2.9548+-1.3933            2.6699+-0.2933          might be 1.1067x faster
   elidable-new-object-dag                           46.3948+-6.8081           46.1916+-6.2773        
   elidable-new-object-roflcopter                    50.2988+-5.7401           50.1989+-2.9945        
   elidable-new-object-then-call                     39.4120+-4.1388     ?     40.6298+-3.5316        ? might be 1.0309x slower
   elidable-new-object-tree                          51.6711+-1.1488     ?     52.4647+-0.8698        ? might be 1.0154x slower
   empty-string-plus-int                              6.1923+-0.1050     ?      6.2415+-0.1601        ?
   emscripten-cube2hash                              41.5179+-0.9265           40.9946+-0.4253          might be 1.0128x faster
   exit-length-on-plain-object                       21.9051+-3.8422           21.3364+-4.6929          might be 1.0267x faster
   external-arguments-getbyval                        1.5055+-0.1898     ?      1.5887+-0.1408        ? might be 1.0553x slower
   external-arguments-putbyval                        2.8115+-0.1081     ?      2.8284+-0.0684        ?
   fixed-typed-array-storage-var-index                1.6165+-0.1993            1.5394+-0.0154          might be 1.0501x faster
   fixed-typed-array-storage                          1.2570+-0.2799     ?      1.3673+-0.5234        ? might be 1.0878x slower
   Float32Array-matrix-mult                           5.3273+-0.1776            5.2071+-0.0256          might be 1.0231x faster
   Float32Array-to-Float64Array-set                  59.1118+-4.7975     ?     62.4603+-0.3046        ? might be 1.0566x slower
   Float64Array-alloc-long-lived                     88.0073+-7.4488           86.5102+-3.9882          might be 1.0173x faster
   Float64Array-to-Int16Array-set                    71.2655+-1.7263           70.8859+-0.5933        
   fold-double-to-int                                16.6020+-0.3375     ?     18.5142+-5.2461        ? might be 1.1152x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.4069+-0.6961     ?     11.0452+-1.6412        ? might be 1.0613x slower
   fold-get-by-id-to-multi-get-by-offset              8.8661+-0.3990     ?      9.0004+-0.2102        ? might be 1.0151x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      6.8760+-0.0407     ?      8.6407+-3.1645        ? might be 1.2566x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.1189+-3.2368            8.1530+-2.8804          might be 1.1185x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.1741+-2.2840     ?     10.7327+-3.4347        ? might be 1.0549x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      8.3908+-2.2128     ?      8.4092+-2.2050        ?
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     12.8370+-0.5198     ?     13.5784+-2.4184        ? might be 1.0578x slower
   fold-put-by-id-to-multi-put-by-offset             10.2604+-0.3381     ?     10.8140+-1.7448        ? might be 1.0539x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     11.0826+-0.9469           10.7903+-0.3514          might be 1.0271x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.7443+-0.5822           10.6407+-0.2300        
   fold-put-structure                                 6.6414+-0.7204            6.5153+-0.4410          might be 1.0194x faster
   for-of-iterate-array-entries                      12.3881+-0.0860     ?     12.8290+-1.1048        ? might be 1.0356x slower
   for-of-iterate-array-keys                          4.4352+-0.4127            4.3264+-0.1095          might be 1.0252x faster
   for-of-iterate-array-values                        4.2401+-0.1189     ?      4.8185+-1.5160        ? might be 1.1364x slower
   fround                                            13.1311+-0.2652     ?     14.5497+-4.5034        ? might be 1.1080x slower
   ftl-library-inlining-dataview                     73.9306+-4.7832     ?     86.6100+-34.8283       ? might be 1.1715x slower
   ftl-library-inlining                              28.3233+-0.3026     ?     28.3365+-0.2100        ?
   ftl-polymorphic-bitand                           156.3112+-5.1481          151.9550+-2.1918          might be 1.0287x faster
   ftl-polymorphic-bitor                            153.7802+-0.2427     ?    157.0833+-16.0217       ? might be 1.0215x slower
   ftl-polymorphic-bitxor                           153.6791+-1.1191     ?    154.5665+-10.5545       ?
   ftl-polymorphic-div                              483.5452+-5.0148          482.3288+-7.2633        
   ftl-polymorphic-lshift                           162.9845+-4.4508          159.9066+-3.8164          might be 1.0192x faster
   ftl-polymorphic-mul                              243.2489+-4.8224     ?    243.2552+-7.2128        ?
   ftl-polymorphic-rshift                           162.7777+-3.1946          159.7105+-2.4094          might be 1.0192x faster
   ftl-polymorphic-StringFromCharCode               231.1320+-4.8460          230.6172+-2.2563        
   ftl-polymorphic-sub                              185.3167+-1.3070          184.3026+-0.7561        
   ftl-polymorphic-urshift                          179.5978+-4.0237     ?    181.4268+-8.0723        ? might be 1.0102x slower
   function-call                                     13.6907+-3.7189     ?     15.0410+-4.6529        ? might be 1.0986x slower
   function-dot-apply                                 2.7674+-0.1592            2.7255+-0.0832          might be 1.0154x faster
   function-test                                      3.9076+-0.1847     ?      3.9078+-0.1078        ?
   function-with-eval                               125.0468+-3.8522          120.8160+-9.8030          might be 1.0350x faster
   gcse-poly-get-less-obvious                        19.8920+-0.3712     ?     20.2592+-1.0424        ? might be 1.0185x slower
   gcse-poly-get                                     20.5544+-0.3366     ?     22.3874+-5.3696        ? might be 1.0892x slower
   gcse                                               4.9607+-1.3318     ?      4.9731+-1.2726        ?
   generator-create                                   1.0319+-0.2168     ?      1.1572+-0.3963        ? might be 1.1214x slower
   generator-fib                                    132.3182+-3.4792          128.0569+-4.8986          might be 1.0333x faster
   generator-function-create                          5.3197+-1.8464     ?      5.5192+-0.9349        ? might be 1.0375x slower
   generator-sunspider-access-nsieve                  7.0984+-0.1001            7.0760+-0.1834        
   generator-with-several-types                     432.4028+-16.7524         429.0331+-11.1702       
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.0207+-0.0907     ?      3.4750+-1.5471        ? might be 1.1504x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.9897+-0.0274     ?      6.5924+-1.6180        ? might be 1.1006x slower
   get-by-id-chain-from-try-block                     2.9133+-0.2904     ?      3.1160+-0.7717        ? might be 1.0696x slower
   get-by-id-check-structure-elimination              5.3560+-1.3635            4.9410+-0.2073          might be 1.0840x faster
   get-by-id-proto-or-self                           15.0875+-4.7729           13.5242+-0.5476          might be 1.1156x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.3096+-0.1241     ?      3.4034+-0.4244        ? might be 1.0284x slower
   get-by-id-self-or-proto                           14.8101+-2.2734           14.3361+-0.7091          might be 1.0331x faster
   get-by-val-out-of-bounds                           5.4796+-1.3247            5.1347+-0.0892          might be 1.0672x faster
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      3.5957+-0.1497     ?      4.0560+-1.3297        ? might be 1.1280x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      7.7115+-0.1585     ?      8.0984+-0.3159        ? might be 1.0502x slower
   get-by-val-with-string-chain-from-try-block   
                                                      2.8752+-0.0840     ?      2.8772+-0.0861        ?
   get-by-val-with-string-check-structure-elimination   
                                                      7.6452+-1.4534            6.7739+-0.0765          might be 1.1286x faster
   get-by-val-with-string-proto-or-self              14.4621+-0.4466     ?     15.0972+-2.7848        ? might be 1.0439x slower
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      4.1245+-0.2645            3.9735+-0.3185          might be 1.0380x faster
   get-by-val-with-string-self-or-proto              16.3563+-1.6604     ?     16.7083+-3.6831        ? might be 1.0215x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      3.8293+-0.0381            3.8093+-0.0215        
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     14.4648+-0.6509     ?     15.1508+-2.2941        ? might be 1.0474x slower
   get-by-val-with-symbol-chain-from-try-block   
                                                      3.0056+-0.3838            2.8813+-0.1030          might be 1.0432x faster
   get-by-val-with-symbol-check-structure-elimination   
                                                     14.1335+-1.1465           13.6451+-0.2931          might be 1.0358x faster
   get-by-val-with-symbol-proto-or-self              14.6721+-1.0741     ?     15.0543+-1.2999        ? might be 1.0260x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      4.7496+-0.0624     ?      4.7584+-0.1593        ?
   get-by-val-with-symbol-self-or-proto              15.4861+-1.6919     ?     16.1745+-3.5770        ? might be 1.0444x slower
   get_callee_monomorphic                             2.9810+-0.1291     ?      3.0275+-0.0908        ? might be 1.0156x slower
   get_callee_polymorphic                             4.0681+-0.1447     ?      4.3637+-1.0749        ? might be 1.0727x slower
   getter-no-activation                               4.4637+-0.0453     ?      4.5422+-0.1833        ? might be 1.0176x slower
   getter-prototype                                   8.1490+-0.5727     ?      8.8707+-2.9118        ? might be 1.0886x slower
   getter-richards-try-catch                       1164.6748+-21.7167    ?   1212.6561+-57.3471       ? might be 1.0412x slower
   getter-richards                                   88.8886+-6.9736           86.2110+-3.1479          might be 1.0311x faster
   getter                                             5.1589+-0.2123     ?      5.4144+-0.4250        ? might be 1.0495x slower
   global-object-access-with-mutating-structure   
                                                      5.7413+-0.1285            5.7195+-0.3035        
   global-var-const-infer-fire-from-opt               1.1769+-0.6304            0.9471+-0.0671          might be 1.2426x faster
   global-var-const-infer                             0.9419+-0.3830     ?      1.0321+-0.3634        ? might be 1.0958x slower
   hard-overflow-check-equal                         36.1635+-0.1364     ?     36.4109+-0.2835        ?
   hard-overflow-check                               36.4514+-1.2256     ?     37.4879+-4.6632        ? might be 1.0284x slower
   HashMap-put-get-iterate-keys                      28.1237+-0.1211     ?     28.1982+-0.5132        ?
   HashMap-put-get-iterate                           29.6027+-4.5335           28.9892+-2.8022          might be 1.0212x faster
   HashMap-string-put-get-iterate                    31.2901+-0.6733           31.1957+-0.3004        
   hoist-make-rope                                    5.4417+-0.3225            5.3862+-0.2088          might be 1.0103x faster
   hoist-poly-check-structure-effectful-loop   
                                                      4.9212+-1.0276            4.8033+-0.8354          might be 1.0245x faster
   hoist-poly-check-structure                         3.1372+-0.1193            3.0811+-0.0678          might be 1.0182x faster
   imul-double-only                                   4.1161+-0.4524     ?      4.3577+-1.2471        ? might be 1.0587x slower
   imul-int-only                                      6.0278+-0.1157            5.9752+-0.0554        
   imul-mixed                                         4.4622+-0.4638     ?      4.5051+-0.5053        ?
   in-four-cases                                     19.4003+-0.3947     ?     19.6183+-0.9089        ? might be 1.0112x slower
   in-one-case-false                                 11.0588+-0.1841     ?     12.3152+-3.6290        ? might be 1.1136x slower
   in-one-case-true                                  11.6660+-1.7876           11.0403+-0.3978          might be 1.0567x faster
   in-two-cases                                      11.2403+-0.5844     ?     11.3948+-1.0468        ? might be 1.0137x slower
   indexed-properties-in-objects                      3.3480+-0.2576     ?      3.9105+-1.7566        ? might be 1.1680x slower
   infer-closure-const-then-mov-no-inline             3.7755+-1.0363     ?      3.8710+-1.3839        ? might be 1.0253x slower
   infer-closure-const-then-mov                      10.9255+-1.4092           10.3409+-0.1813          might be 1.0565x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     14.4137+-4.0044     ?     14.4311+-3.5778        ?
   infer-closure-const-then-put-to-scope             24.1342+-0.3624     ?     24.1663+-0.3694        ?
   infer-closure-const-then-reenter-no-inline   
                                                     66.1669+-1.4240     ?     66.9810+-4.6599        ? might be 1.0123x slower
   infer-closure-const-then-reenter                  24.4434+-0.3047     ?     25.5297+-4.1058        ? might be 1.0444x slower
   infer-constant-global-property                     4.4652+-1.4413            3.9130+-0.3433          might be 1.1411x faster
   infer-constant-property                            3.2239+-0.3660            3.2112+-0.2941        
   infer-one-time-closure-ten-vars                    8.2723+-0.3534            8.2168+-0.5569        
   infer-one-time-closure-two-vars                    8.0271+-1.1544     ?      9.2097+-4.5738        ? might be 1.1473x slower
   infer-one-time-closure                             7.5496+-0.1920     ?      7.6200+-0.1392        ?
   infer-one-time-deep-closure                       15.7490+-5.9301           13.8420+-0.3179          might be 1.1378x faster
   inline-arguments-access                            4.7004+-0.0755            4.6858+-0.0827        
   inline-arguments-aliased-access                    4.7245+-0.0438            4.6763+-0.0682          might be 1.0103x faster
   inline-arguments-local-escape                      4.7028+-0.0618     ?      4.9263+-0.5514        ? might be 1.0475x slower
   inline-get-scoped-var                              4.0543+-0.5190     ?      4.0809+-0.1973        ?
   inlined-put-by-id-transition                      12.8069+-0.4650     ?     13.0810+-1.0695        ? might be 1.0214x slower
   inlined-put-by-val-with-string-transition   
                                                     58.1575+-3.1184     ?     58.2598+-1.8814        ?
   inlined-put-by-val-with-symbol-transition   
                                                     56.7093+-4.0280     ?     59.0997+-5.1286        ? might be 1.0422x slower
   instanceof-bound                                  23.8514+-2.6936     ?     25.6821+-5.4889        ? might be 1.0768x slower
   int-or-other-abs-then-get-by-val                   5.5740+-0.2454     ?      6.0342+-1.3495        ? might be 1.0826x slower
   int-or-other-abs-zero-then-get-by-val             19.8278+-0.4306     ?     21.1009+-4.1856        ? might be 1.0642x slower
   int-or-other-add-then-get-by-val                   5.8424+-0.4573            5.7867+-0.1118        
   int-or-other-add                                   5.6306+-0.1170     ?      5.7445+-0.2628        ? might be 1.0202x slower
   int-or-other-div-then-get-by-val                   4.4137+-0.0249     ?      4.4532+-0.2007        ?
   int-or-other-max-then-get-by-val                   4.9277+-0.9171            4.6212+-0.1300          might be 1.0663x faster
   int-or-other-min-then-get-by-val                   4.8937+-0.7244            4.6845+-0.0755          might be 1.0447x faster
   int-or-other-mod-then-get-by-val                   4.2890+-0.1520     ?      4.3394+-0.2884        ? might be 1.0117x slower
   int-or-other-mul-then-get-by-val                   4.6657+-1.3131            4.2897+-0.1089          might be 1.0876x faster
   int-or-other-neg-then-get-by-val                   4.9713+-0.2448            4.8538+-0.0456          might be 1.0242x faster
   int-or-other-neg-zero-then-get-by-val             22.9631+-5.7714           20.9240+-3.9854          might be 1.0975x faster
   int-or-other-sub-then-get-by-val                   6.0132+-0.0352            5.9899+-0.0957        
   int-or-other-sub                                   4.5778+-0.1486     ?      4.6680+-0.3254        ? might be 1.0197x slower
   int-overflow-local                                 5.1345+-0.1359            5.1320+-0.0819        
   Int16Array-alloc-long-lived                       61.6947+-2.7677           59.3102+-2.9719          might be 1.0402x faster
   Int16Array-bubble-sort-with-byteLength            23.1073+-1.7147     ?     24.0831+-1.0819        ? might be 1.0422x slower
   Int16Array-bubble-sort                            20.5265+-1.0238           20.1733+-0.1905          might be 1.0175x faster
   Int16Array-load-int-mul                            2.0530+-0.3627            1.9629+-0.0677          might be 1.0459x faster
   Int16Array-to-Int32Array-set                      58.4327+-0.2905     ^     57.4477+-0.3447        ^ definitely 1.0171x faster
   Int32Array-alloc-large                            29.4740+-2.4366           26.2855+-0.8653          might be 1.1213x faster
   Int32Array-alloc-long-lived                       67.9485+-8.0484           66.9293+-5.4537          might be 1.0152x faster
   Int32Array-alloc                                   3.9185+-0.0845     ?      4.6503+-2.4165        ? might be 1.1867x slower
   Int32Array-Int8Array-view-alloc                    7.4820+-0.2059     ?      7.5504+-0.3376        ?
   int52-spill                                        6.2779+-1.1266            5.8351+-0.1684          might be 1.0759x faster
   Int8Array-alloc-long-lived                        54.3631+-3.0843           52.9403+-3.0358          might be 1.0269x faster
   Int8Array-load-with-byteLength                     3.9717+-0.0302     ?      4.0898+-0.2016        ? might be 1.0297x slower
   Int8Array-load                                     4.1197+-0.1703            4.0713+-0.1932          might be 1.0119x faster
   integer-divide                                    13.2458+-2.7231     ?     15.2903+-3.9109        ? might be 1.1544x slower
   integer-modulo                                     2.4343+-0.2108     ?      2.5415+-0.4319        ? might be 1.0441x slower
   is-boolean-fold-tricky                             4.5695+-0.1805            4.5582+-0.2218        
   is-boolean-fold                                    3.5250+-0.0468     ?      4.0130+-1.2173        ? might be 1.1384x slower
   is-function-fold-tricky-internal-function   
                                                     12.2498+-0.3125     ?     13.2418+-3.0284        ? might be 1.0810x slower
   is-function-fold-tricky                            4.5772+-0.0317     ?      5.0398+-1.4789        ? might be 1.1011x slower
   is-function-fold                                   3.6056+-0.0699     ?      4.1495+-1.3818        ? might be 1.1508x slower
   is-number-fold-tricky                              4.9999+-1.3319     ?      5.0075+-1.5379        ?
   is-number-fold                                     3.5710+-0.1262     ?      3.7209+-0.2481        ? might be 1.0420x slower
   is-object-or-null-fold-functions                   3.8123+-0.4375            3.6973+-0.1235          might be 1.0311x faster
   is-object-or-null-fold-less-tricky                 4.6497+-0.1350     ?      5.8677+-2.2489        ? might be 1.2620x slower
   is-object-or-null-fold-tricky                      6.5237+-1.4167            6.1857+-0.2695          might be 1.0546x faster
   is-object-or-null-fold                             4.1453+-1.3455            3.6573+-0.1524          might be 1.1334x faster
   is-object-or-null-trickier-function                5.6162+-1.8196            5.1793+-1.4898          might be 1.0844x faster
   is-object-or-null-trickier-internal-function   
                                                     17.7695+-0.4792     ?     18.5690+-1.7372        ? might be 1.0450x slower
   is-object-or-null-tricky-function                  4.6691+-0.1447     ?      5.0555+-1.3633        ? might be 1.0828x slower
   is-object-or-null-tricky-internal-function   
                                                      9.6163+-1.6158            9.0823+-0.2886          might be 1.0588x faster
   is-string-fold-tricky                              5.3931+-1.7055            4.9414+-1.5379          might be 1.0914x faster
   is-string-fold                                     3.6551+-0.3129            3.5745+-0.1527          might be 1.0225x faster
   is-undefined-fold-tricky                           3.8282+-0.1950     ?      4.0364+-0.3160        ? might be 1.0544x slower
   is-undefined-fold                                  3.6118+-0.0993     ?      3.7197+-0.3045        ? might be 1.0299x slower
   JSONP-negative-0                                   0.3517+-0.0083     ?      0.4917+-0.1425        ? might be 1.3979x slower
   large-int-captured                                 3.7211+-0.2989     ?      4.0057+-0.2720        ? might be 1.0765x slower
   large-int-neg                                     15.4839+-0.3302     ?     15.5735+-0.1806        ?
   large-int                                         16.1016+-4.6627           16.0425+-4.7941        
   load-varargs-elimination                          22.8818+-0.7240     ?     24.2017+-3.8531        ? might be 1.0577x slower
   logical-not-weird-types                            3.8527+-1.3337            3.7756+-1.2873          might be 1.0204x faster
   logical-not                                        4.6882+-0.0387     ?      4.7233+-0.1486        ?
   lots-of-fields                                    13.9108+-2.8854     ?     15.5230+-4.1346        ? might be 1.1159x slower
   make-indexed-storage                               3.6508+-0.4479     ?      3.8781+-0.6549        ? might be 1.0622x slower
   make-rope-cse                                      5.9417+-1.4824            5.8217+-1.4968          might be 1.0206x faster
   map-for-each                                       6.3323+-0.2299     ?      6.3521+-0.1861        ?
   map-for-of                                        20.7924+-1.3359     ?     23.1824+-4.9935        ? might be 1.1149x slower
   marsaglia-larger-ints                             43.6826+-0.2416     ?     43.9312+-0.5426        ?
   marsaglia-osr-entry                               22.5484+-3.3521           22.2520+-3.7891          might be 1.0133x faster
   math-random                                       16.3193+-0.3305     ?     19.4192+-5.7369        ? might be 1.1899x slower
   math-with-out-of-bounds-array-values              33.3232+-0.4660     ?     35.3173+-6.3384        ? might be 1.0598x slower
   max-boolean                                        3.7318+-1.7466            3.7235+-1.7438        
   method-on-number                                  19.5373+-0.7489           18.8823+-0.2969          might be 1.0347x faster
   min-boolean                                        4.3577+-1.4755            3.6487+-1.2842          might be 1.1943x faster
   minus-boolean-double                               3.4778+-0.1002            3.4704+-0.0723        
   minus-boolean                                      3.0880+-0.3372     ?      3.2997+-0.7574        ? might be 1.0686x slower
   misc-strict-eq                                    27.7247+-2.2888           26.5265+-0.6017          might be 1.0452x faster
   mod-boolean-double                                10.2841+-0.1909     ?     10.6675+-1.6069        ? might be 1.0373x slower
   mod-boolean                                        7.6715+-0.1310     ?      7.6923+-0.1934        ?
   mul-boolean-double                                 4.1125+-0.3914     ?      4.5187+-1.2493        ? might be 1.0988x slower
   mul-boolean                                        3.2811+-0.3546     ?      4.1976+-1.7574        ? might be 1.2793x slower
   neg-boolean                                        3.4562+-0.1266     ?      3.5859+-0.1795        ? might be 1.0375x slower
   negative-zero-divide                               0.6310+-0.2011            0.4673+-0.0052          might be 1.3504x faster
   negative-zero-modulo                               0.5446+-0.2039     ?      0.5478+-0.2032        ?
   negative-zero-negate                               0.4681+-0.0243     ?      0.5117+-0.1827        ? might be 1.0930x slower
   nested-function-parsing                           43.3522+-0.7818     ?     45.4155+-4.2638        ? might be 1.0476x slower
   new-array-buffer-dead                            126.4517+-14.4072         126.3300+-4.8367        
   new-array-buffer-push                              8.0037+-0.3652     ?      8.1511+-0.2840        ? might be 1.0184x slower
   new-array-dead                                    12.4084+-0.6225           12.3423+-0.7123        
   new-array-push                                     5.1072+-0.2989            4.9572+-0.1167          might be 1.0303x faster
   no-inline-constructor                             43.8755+-7.3234           42.7833+-7.4295          might be 1.0255x faster
   number-test                                        3.9652+-0.1295     ?      4.0478+-0.1781        ? might be 1.0208x slower
   object-closure-call                                6.5798+-0.3480            6.4698+-0.2910          might be 1.0170x faster
   object-get-own-property-symbols-on-large-array   
                                                      3.6021+-0.1564            3.5439+-0.1304          might be 1.0164x faster
   object-test                                        3.8364+-0.0323     ?      3.9052+-0.1376        ? might be 1.0179x slower
   obvious-sink-pathology-taken                     180.6387+-7.7682          179.2584+-3.4870        
   obvious-sink-pathology                            35.9012+-3.3804     ?     40.1134+-5.8442        ? might be 1.1173x slower
   obviously-elidable-new-object                     32.8003+-3.1714     ?     34.4510+-4.6261        ? might be 1.0503x slower
   plus-boolean-arith                                 2.9675+-0.0267            2.9670+-0.0126        
   plus-boolean-double                                3.5007+-0.1313     ?      3.9582+-1.2665        ? might be 1.1307x slower
   plus-boolean                                       3.1815+-0.1357     ?      3.2459+-0.0333        ? might be 1.0202x slower
   poly-chain-access-different-prototypes-simple   
                                                      3.7944+-1.3374            3.3771+-0.4628          might be 1.1236x faster
   poly-chain-access-different-prototypes             3.1333+-0.0904     ?      3.1396+-0.0954        ?
   poly-chain-access-simpler                          3.8157+-1.3095            3.3300+-0.1167          might be 1.1459x faster
   poly-chain-access                                  3.6393+-1.5275            3.2452+-0.1752          might be 1.1214x faster
   poly-stricteq                                     67.1759+-0.5303           67.0428+-0.4958        
   polymorphic-array-call                             1.7400+-0.3495            1.7088+-0.3440          might be 1.0183x faster
   polymorphic-get-by-id                              2.7263+-0.0705     ?      2.8226+-0.3748        ? might be 1.0353x slower
   polymorphic-put-by-id                             39.9305+-3.3895           38.7471+-0.0811          might be 1.0305x faster
   polymorphic-put-by-val-with-string                39.9471+-0.4803     ?     41.3531+-3.8769        ? might be 1.0352x slower
   polymorphic-put-by-val-with-symbol                41.6265+-4.7801           40.0350+-0.2082          might be 1.0398x faster
   polymorphic-structure                             16.4135+-5.3465     ?     19.2656+-5.1211        ? might be 1.1738x slower
   polyvariant-monomorphic-get-by-id                  6.5341+-0.4675     ?      6.7368+-1.2522        ? might be 1.0310x slower
   proto-getter-access                               12.3158+-0.3316     ?     13.3411+-3.4287        ? might be 1.0833x slower
   prototype-access-with-mutating-prototype           5.6939+-1.0250            5.3767+-0.3946          might be 1.0590x faster
   put-by-id-replace-and-transition                  11.1661+-3.1679            9.9658+-0.2776          might be 1.1204x faster
   put-by-id-slightly-polymorphic                     3.8104+-1.7474            3.7346+-1.0761          might be 1.0203x faster
   put-by-id                                         14.4199+-0.2703     ?     15.6075+-2.6253        ? might be 1.0824x slower
   put-by-val-direct                                  0.5930+-0.2371            0.5372+-0.0371          might be 1.1040x faster
   put-by-val-large-index-blank-indexing-type   
                                                      7.5857+-3.5179            6.5258+-0.1514          might be 1.1624x faster
   put-by-val-machine-int                             3.1400+-0.1385     ?      3.1412+-0.1308        ?
   put-by-val-with-string-replace-and-transition   
                                                     15.5178+-0.2407           15.3887+-0.2680        
   put-by-val-with-string-slightly-polymorphic   
                                                      4.4189+-1.2916            3.6038+-0.1421          might be 1.2262x faster
   put-by-val-with-string                            16.5367+-3.1231           15.1545+-0.8601          might be 1.0912x faster
   put-by-val-with-symbol-replace-and-transition   
                                                     15.8486+-0.7397           15.6663+-0.8234          might be 1.0116x faster
   put-by-val-with-symbol-slightly-polymorphic   
                                                      4.7633+-1.1432            4.4086+-0.0540          might be 1.0805x faster
   put-by-val-with-symbol                            15.6645+-2.2399     ?     15.9658+-2.9785        ? might be 1.0192x slower
   rare-osr-exit-on-local                            15.3105+-0.1956           15.3012+-0.8336        
   raytrace-with-empty-try-catch                      8.0278+-0.3121     ?      8.3785+-1.1792        ? might be 1.0437x slower
   raytrace-with-try-catch                           12.9399+-0.8081           12.6443+-0.4406          might be 1.0234x faster
   register-pressure-from-osr                        22.3047+-2.9728           21.2069+-0.2895          might be 1.0518x faster
   repeat-multi-get-by-offset                        23.5850+-2.6275           22.5500+-0.6201          might be 1.0459x faster
   richards-empty-try-catch                          58.7188+-3.5167           58.3573+-4.4533        
   richards-try-catch                               257.0297+-2.0833     ?    258.0800+-4.5105        ?
   set-for-each                                       6.3321+-1.3459            5.7692+-0.1349          might be 1.0976x faster
   set-for-of                                         9.6815+-0.2603     ?     10.4075+-0.7892        ? might be 1.0750x slower
   setter-prototype                                   5.3187+-0.0225     ?      5.5297+-0.2154        ? might be 1.0397x slower
   setter                                             4.8859+-0.1081     ?      4.9217+-0.2127        ?
   simple-activation-demo                            26.1995+-3.6598           25.2715+-0.6665          might be 1.0367x faster
   simple-getter-access                              18.8245+-0.1341     ?     20.1454+-3.7671        ? might be 1.0702x slower
   simple-poly-call-nested                            6.4501+-0.1688     ?      7.0026+-1.4664        ? might be 1.0857x slower
   simple-poly-call                                   1.8655+-0.3796     ?      1.9112+-0.5588        ? might be 1.0245x slower
   sin-boolean                                       15.6932+-0.5690     ?     19.3079+-4.5070        ? might be 1.2303x slower
   singleton-scope                                   69.4395+-3.9628           68.0745+-0.4618          might be 1.0201x faster
   sink-function                                      7.7264+-0.2739     ?      7.9872+-1.0125        ? might be 1.0338x slower
   sink-huge-activation                              13.6045+-0.5676     ?     15.8838+-6.8740        ? might be 1.1675x slower
   sinkable-new-object-dag                           73.0187+-5.0948     ?     76.2288+-7.2382        ? might be 1.0440x slower
   sinkable-new-object-taken                         52.5903+-2.2579     ?     52.7161+-4.4342        ?
   sinkable-new-object                               35.7292+-5.7231     ?     42.8521+-3.9729        ? might be 1.1994x slower
   slow-array-profile-convergence                     3.1956+-0.1694     ?      3.5724+-0.7134        ? might be 1.1179x slower
   slow-convergence                                   3.2862+-0.1178            3.2042+-0.1611          might be 1.0256x faster
   slow-ternaries                                    21.9963+-0.6626     ?     22.7493+-1.9351        ? might be 1.0342x slower
   sorting-benchmark                                 22.0198+-0.2106     ?     22.1254+-0.3924        ?
   sparse-conditional                                 1.8445+-0.4403            1.8080+-0.4386          might be 1.0202x faster
   splice-to-remove                                  19.1860+-3.0973     ?     20.5285+-3.8682        ? might be 1.0700x slower
   string-char-code-at                               16.4811+-0.1245     ?     17.9492+-3.4444        ? might be 1.0891x slower
   string-concat-object                               3.2568+-1.5310            2.7701+-0.0334          might be 1.1757x faster
   string-concat-pair-object                          2.7024+-0.0437     ?      2.7042+-0.0129        ?
   string-concat-pair-simple                         15.0850+-3.3275           14.9020+-3.2059          might be 1.0123x faster
   string-concat-simple                              15.5145+-3.3192     ?     16.3742+-4.5347        ? might be 1.0554x slower
   string-cons-repeat                                 9.0660+-0.5086     ?     11.0522+-3.9633        ? might be 1.2191x slower
   string-cons-tower                                 10.6822+-3.7585            9.6222+-1.9797          might be 1.1102x faster
   string-equality                                   22.6831+-1.1387     ?     23.8308+-5.1127        ? might be 1.0506x slower
   string-get-by-val-big-char                         8.4782+-0.6503            8.3351+-0.0741          might be 1.0172x faster
   string-get-by-val-out-of-bounds-insane             4.2906+-0.1197     ?      4.4055+-0.1940        ? might be 1.0268x slower
   string-get-by-val-out-of-bounds                    6.7435+-1.4317            6.3022+-0.0313          might be 1.0700x faster
   string-get-by-val                                  4.7283+-1.6192            4.2365+-1.1504          might be 1.1161x faster
   string-hash                                        2.5840+-0.2269            2.5547+-0.2403          might be 1.0114x faster
   string-long-ident-equality                        19.6692+-4.9378           18.2817+-0.6614          might be 1.0759x faster
   string-out-of-bounds                              11.2960+-1.6247           10.7092+-0.2393          might be 1.0548x faster
   string-repeat-arith                               27.5391+-1.9109     ?     28.1527+-3.7653        ? might be 1.0223x slower
   string-rope-with-object                           18.6521+-0.3489     ?     19.1541+-0.6626        ? might be 1.0269x slower
   string-sub                                        42.6467+-0.5155           42.6039+-0.5949        
   string-test                                        4.2801+-1.4018            4.1918+-1.1617          might be 1.0211x faster
   string-var-equality                               38.8900+-4.0058           37.6405+-0.1231          might be 1.0332x faster
   structure-hoist-over-transitions                   3.0292+-0.1974     ?      3.3814+-1.1046        ? might be 1.1163x slower
   substring-concat-weird                            49.4692+-3.8404     ?     51.2240+-4.6757        ? might be 1.0355x slower
   substring-concat                                  54.3423+-5.2059           52.5309+-2.2165          might be 1.0345x faster
   substring                                         58.0132+-2.2126           57.8923+-4.9299        
   switch-char-constant                               3.1810+-0.0443            3.1597+-0.0167        
   switch-char                                        6.6553+-0.2347            6.6276+-0.0368        
   switch-constant                                    7.3944+-0.7979     ?      7.5482+-0.8993        ? might be 1.0208x slower
   switch-string-basic-big-var                       18.9204+-5.3080           17.9753+-2.7495          might be 1.0526x faster
   switch-string-basic-big                           18.0866+-5.4019           17.5972+-5.3051          might be 1.0278x faster
   switch-string-basic-var                           18.3762+-3.1430     ?     21.3322+-4.6701        ? might be 1.1609x slower
   switch-string-basic                               16.5362+-5.1309           16.5222+-5.0624        
   switch-string-big-length-tower-var                23.3515+-3.1379           22.4139+-1.0163          might be 1.0418x faster
   switch-string-length-tower-var                    19.9737+-1.3367           19.2047+-0.2160          might be 1.0400x faster
   switch-string-length-tower                        17.4189+-4.1119           16.1301+-7.7999          might be 1.0799x faster
   switch-string-short                               15.1048+-4.4699     ?     15.4943+-3.8785        ? might be 1.0258x slower
   switch                                            12.0580+-0.6427     ?     12.1437+-0.9935        ?
   symbol-tostringtag                                 4.0046+-0.2030     ?      4.0290+-0.1059        ?
   tear-off-arguments-simple                          3.2958+-0.3581     ?      3.4103+-0.1020        ? might be 1.0347x slower
   tear-off-arguments                                 4.1748+-0.1211     ?      4.3221+-0.5012        ? might be 1.0353x slower
   temporal-structure                                16.0685+-3.3455     ?     18.5682+-4.4115        ? might be 1.1556x slower
   to-int32-boolean                                  17.5165+-0.3005     ?     18.8663+-4.9237        ? might be 1.0771x slower
   try-catch-get-by-val-cloned-arguments              9.3058+-2.3436     ?     11.0297+-4.1756        ? might be 1.1852x slower
   try-catch-get-by-val-direct-arguments              2.6248+-0.0157     !      2.8850+-0.1473        ! definitely 1.0992x slower
   try-catch-get-by-val-scoped-arguments              5.3662+-0.3458     ?      5.3768+-0.1001        ?
   typed-array-get-set-by-val-profiling              22.9412+-0.4525     ?     23.6550+-1.8879        ? might be 1.0311x slower
   undefined-property-access                        362.0250+-8.8046          356.6633+-5.9710          might be 1.0150x faster
   undefined-test                                     4.0873+-0.1296     ?      4.0973+-0.0842        ?
   unprofiled-licm                                   13.1047+-4.2298           10.7418+-0.4653          might be 1.2200x faster
   v8-raytrace-with-empty-try-catch                  64.9070+-1.5935           64.5674+-0.8632        
   v8-raytrace-with-try-catch-high-frequency-throws   
                                                    484.6123+-6.8688     ?    487.7638+-11.8701       ?
   v8-raytrace-with-try-catch                        82.5383+-0.9324     ?     85.5640+-6.8692        ? might be 1.0367x slower
   varargs-call                                      15.0967+-0.3952     ?     16.6340+-5.0543        ? might be 1.1018x slower
   varargs-construct-inline                          26.9190+-3.7036           25.7452+-0.4398          might be 1.0456x faster
   varargs-construct                                 23.8963+-2.9078           23.5998+-3.0649          might be 1.0126x faster
   varargs-inline                                    10.3049+-2.0158     ?     11.3207+-2.6863        ? might be 1.0986x slower
   varargs-strict-mode                               11.5182+-0.3448           11.2585+-0.1278          might be 1.0231x faster
   varargs                                           11.2456+-0.1749     ?     12.6624+-2.4528        ? might be 1.1260x slower
   weird-inlining-const-prop                          2.6307+-0.0553     ?      3.1155+-0.9818        ? might be 1.1843x slower

   &lt;geometric&gt;                                       10.7213+-0.0477     ?     10.8419+-0.0995        ? might be 1.0112x slower

                                                         Baseline                    Mine                                       
Geomean of preferred means:
   &lt;scaled-result&gt;                                   30.6895+-0.0238     ?     30.8440+-0.2743        ? might be 1.0050x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160609</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-30 18:58:57 -0800</bug_when>
    <thetext>The perf numbers look good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160613</commentid>
    <comment_count>12</comment_count>
      <attachid>270327</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-30 19:22:37 -0800</bug_when>
    <thetext>Comment on attachment 270327
Patch

yay, so i&apos;ve added r? ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160676</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-31 15:05:24 -0800</bug_when>
    <thetext>Committed r195938: &lt;http://trac.webkit.org/changeset/195938&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270327</attachid>
            <date>2016-01-30 16:37:06 -0800</date>
            <delta_ts>2016-01-31 14:16:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153544-20160131093641.patch</filename>
            <type>text/plain</type>
            <size>16244</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1OTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjU1ZjIzMDA3ZDk5MDM5YzFiM2I3YjY4NGIyNTg3NzcxZmFkNmIyLi4wMThlMzJhOThkNDliZGFm
MWYzYjI1Y2ZmMGI1NTc5YjllMzlhNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NCBAQAogMjAxNi0wMS0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBTaG91bGQgbm90IHByZWRpY3QgT3RoZXJPYmogZm9yIFRvVGhpcyB3
aXRoIHByaW1pdGl2ZSB0eXBlcyB1bmRlciBzdHJpY3QgbW9kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBUb1RoaXMgcHJlZGljYXRl
cyBPdGhlck9iaiBmb3IgcHJpbWl0aXZlIHZhbHVlcy4KKyAgICAgICAgQnV0IGl0J3Mgbm90IHRy
dWUgaW4gc3RyaWN0IG1vZGUuCisgICAgICAgIEluIHN0cmljdCBtb2RlLCBUb1RoaXMgZG9lcyBu
b3RoaW5nIG9uIHByaW1pdGl2ZSB2YWx1ZXMuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgd2UK
KworICAgICAgICAxLiBmaXggcHJlZGljdGlvbi4gSGFuZGxlcyBwcmltaXRpdmUgdHlwZXMgaW4g
c3RyaWN0IG1vZGUuIEFuZCB3ZSBhbHNvIGhhbmRsZXMgU3RyaW5nT2JqZWN0LgorICAgICAgICAy
LiBjb252ZXJ0IGl0IHRvIElkZW50aXR5IGlmIHRoZSBhcmd1bWVudCBzaG91bGQgYmUgcHJlZGlj
dGVkIGFzIHByaW1pdGl2ZSB0eXBlcy4KKworICAgICAgICBUaGlzIG9wdGltaXphdGlvbiBpcyBp
bXBvcnRhbnQgdG8gaW1wbGVtZW50IFByaW1pdGl2ZS5wcm90b3R5cGUubWV0aG9kc1sxXS4KKyAg
ICAgICAgT3RoZXJ3aXNlLCB3ZSBhbHdheXMgZ290IEJhZFR5cGUgT1NSIGV4aXRzLgorCisgICAg
ICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzg4OQor
CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToK
KyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4
dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cFRvVGhpcyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFn
YXRlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdG8tdGhpcy1ib29sZWFuLmpzOiBBZGRlZC4K
KyAgICAgICAgKEJvb2xlYW4ucHJvdG90eXBlLm5lZ2F0ZSk6CisgICAgICAgIChCb29sZWFuLnBy
b3RvdHlwZS5uZWdhdGUyKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdG8tdGhpcy1kb3VibGUu
anM6IEFkZGVkLgorICAgICAgICAoTnVtYmVyLnByb3RvdHlwZS5uZWdhdGUpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy90by10aGlzLWludDMyLmpzOiBBZGRlZC4KKyAgICAgICAgKE51bWJlci5w
cm90b3R5cGUubmVnYXRlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdG8tdGhpcy1pbnQ1Mi5q
czogQWRkZWQuCisgICAgICAgIChOdW1iZXIucHJvdG90eXBlLm5lZ2F0ZSk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL3RvLXRoaXMtbnVtYmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKE51bWJlci5w
cm90b3R5cGUubmVnYXRlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdG8tdGhpcy1zdHJpbmcu
anM6IEFkZGVkLgorICAgICAgICAoU3RyaW5nLnByb3RvdHlwZS5wcmVmaXgpOgorICAgICAgICAo
U3RyaW5nLnByb3RvdHlwZS5maXJzdCk6CisgICAgICAgIChTdHJpbmcucHJvdG90eXBlLnNlY29u
ZCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3RvLXRoaXMtc3ltYm9sLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFN5bWJvbC5wcm90b3R5cGUuaWRlbnRpdHkpOgorICAgICAgICAoU3ltYm9sLnByb3Rv
dHlwZS5pZGVudGl0eTIpOgorCisyMDE2LTAxLTMwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFtCM10gSmV0U3RyZWFtL3F1aWNrc29ydC5jIGZhaWxz
L2hhbmdzIG9uIExpbnV4IHdpdGggR0NDCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTM2NDcKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDllZWM2M2Nl
YjA3MWJjMTQ4NmEwMTJjMjg1MDFkYjYyNDI2YmRlN2IuLmQ3YzFiZmY4NDNjZTQ4NTkzNjVjNWEx
NDg0ZmZiYTY2YjZlOTM0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2OTEsMTAgKzE2OTEs
MjEgQEAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGlu
YXRpb24gPSBmb3JOb2RlKG5vZGUpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmIChtX2dyYXBo
LmV4ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+aXNTdHJpY3RNb2RlKCkpCisK
KyAgICAgICAgaWYgKHNvdXJjZS5tX3R5cGUgPT0gU3BlY1N0cmluZ09iamVjdCkgeworICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAgICAgICAgIGRlc3Rp
bmF0aW9uID0gc291cmNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmlzU3Ry
aWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAoIShzb3VyY2UubV90eXBlICYgfihTcGVjRnVs
bE51bWJlciB8IFNwZWNCb29sZWFuIHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wpKSkgeworICAg
ICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAg
ICAgICAgZGVzdGluYXRpb24gPSBzb3VyY2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBkZXN0aW5hdGlvbi5tYWtlSGVhcFRvcCgpOwotICAgICAg
ICBlbHNlIHsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291
cmNlOwogICAgICAgICAgICAgZGVzdGluYXRpb24ubWVyZ2UoU3BlY09iamVjdCk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKaW5kZXggM2E1NmUzNWI3MzIyNDJiNDEzMTc0NDM2MTQ3MjFkNjkwNjllZGZj
OS4uZTViZThlZmI1NTZkMTdmMzA0Y2EyZmUxNWJlZTNhOWY2N2ZmMzBiZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
QEAgLTU1Miw3ICs1NTIsNyBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGNh
c2UgQ2hlY2s6IHsKICAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBjOWQ1YWJmYjQ5NDgx
YjkwNTg5ZWM0ZmJhNTk1YTJjZThlNzBkZjY3Li4yZjIzNWFkZWUxMzBkMmEyZDc1Mjc1ZDZjZmFl
YmM3NWI1MDE5MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTEwMDMsMzAgKzEwMDMsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9UaGlzOiB7Ci0g
ICAgICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJp
Y3RNb2RlOwotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZU90aGVyKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkg
ewotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE90aGVyVXNlPihub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICAg
ICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE90aGVyVXNlKSk7Ci0gICAgICAgICAgICAg
ICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8T3RoZXJVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7
Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudCgKLSAgICAgICAgICAg
ICAgICAgICAgbm9kZSwgbV9ncmFwaC5nbG9iYWxUaGlzT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAoaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKG5vZGUtPmNo
aWxkMSgpLT5wcmVkaWN0aW9uKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxGaW5hbE9i
amVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKKyAgICAgICAgICAgIGZpeHVwVG9UaGlzKG5vZGUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTU5Miw2ICsxNTY5LDg1IEBAIGNsYXNz
IEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
SWRlbnRpdHkoKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgZml4dXBUb1RoaXMoTm9k
ZSogbm9kZSkKKyAgICB7CisgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbV9ncmFwaC5leGVj
dXRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0
TW9kZSA6IE5vdFN0cmljdE1vZGU7CisKKyAgICAgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1v
ZGUpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9v
bGVhbigpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgbm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9JZGVudGl0eSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0
SW50NTIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgeworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKKyAgICAgICAgICAgICAgICBu
b2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZVN5bWJvbCgpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0
eSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKSB7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxT
dHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9JZGVudGl0eSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT3Ro
ZXIoKSkgeworICAgICAgICAgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpIHsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPE90aGVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+
b3JpZ2luLAorICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBPdGhl
clVzZSkpOworICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8T3RoZXJVc2U+KG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50
KAorICAgICAgICAgICAgICAgIG5vZGUsIG1fZ3JhcGguZ2xvYmFsVGhpc09iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nT2JqZWN0KCkp
IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nT2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzRmluYWxPYmplY3RTcGVjdWxhdGlvbihu
b2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgZml4RWRnZTxGaW5h
bE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
SWRlbnRpdHkoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICAK
ICAgICB2b2lkIGZpeHVwVG9QcmltaXRpdmUoTm9kZSogbm9kZSkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDU3OTk4Y2ZlMTgxYThmY2Y5Y2M2NTE0MzUxYWM1ODBiODBlN2ZiOGEu
LmZhNDgyNDg0MjlhYjNjZDIxM2Y3NTYzZmI0YmY3NDczYmYxMDI5MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC00ODksMTEgKzQ4OSw1OCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFRvVGhp
czogeworICAgICAgICAgICAgLy8gVG9UaGlzIGluIG1ldGhvZHMgZm9yIHByaW1pdGl2ZSB0eXBl
cyBzaG91bGQgc3BlY3VsYXRlIHByaW1pdGl2ZSB0eXBlcyBpbiBzdHJpY3QgbW9kZS4KKyAgICAg
ICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyktPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1v
ZGU7CisgICAgICAgICAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgeworICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCb29sZWFu
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQz
Mik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY01hY2hpbmVJbnQpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNNYWNoaW5lSW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkgeworICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3ltYm9sKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmdJZGVudCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZyk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihTcGVjU3RyaW5nT2JqZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKTsKICAgICAg
ICAgICAgIGlmIChwcmVkaWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24g
JiB+U3BlY09iamVjdCkgewotICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uICY9IFNwZWNP
YmplY3Q7Ci0gICAgICAgICAgICAgICAgICAgIHByZWRpY3Rpb24gPSBtZXJnZVNwZWN1bGF0aW9u
cyhwcmVkaWN0aW9uLCBTcGVjT2JqZWN0T3RoZXIpOworICAgICAgICAgICAgICAgICAgICAvLyBX
cmFwcGVyIG9iamVjdHMgYXJlIGNyZWF0ZWQgb25seSBpbiBzbG9wcHkgbW9kZS4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGVjbWFNb2RlICE9IFN0cmljdE1vZGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHByZWRpY3Rpb24gJj0gU3BlY09iamVjdDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHByZWRpY3Rpb24gPSBtZXJnZVNwZWN1bGF0aW9ucyhwcmVkaWN0aW9uLCBTcGVjT2JqZWN0
T3RoZXIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90
by10aGlzLWJvb2xlYW4uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Rv
LXRoaXMtYm9vbGVhbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWIzYjc2YmViMmI2MDk5MDZhNmU1NTZmOGYy
MjY4N2I0NjAzZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy90by10aGlzLWJvb2xlYW4uanMKQEAgLTAsMCArMSwyMiBAQAorQm9vbGVhbi5w
cm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAg
cmV0dXJuICF0aGlzOworfTsKK25vSW5saW5lKEJvb2xlYW4ucHJvdG90eXBlLm5lZ2F0ZSk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgKGkgJSA0ID09PSAwKS5uZWdhdGUo
KTsKK0Jvb2xlYW4ucHJvdG90eXBlLm5lZ2F0ZS5jYWxsKHRydWUpOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlNDsgKytpKQorICAgIEJvb2xlYW4ucHJvdG90eXBlLm5lZ2F0ZS5jYWxsKGkpOwor
CitCb29sZWFuLnByb3RvdHlwZS5uZWdhdGUyID0gZnVuY3Rpb24gKCkKK3sKKyAgICAidXNlIHN0
cmljdCI7CisgICAgcmV0dXJuICF0aGlzOworfTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7
ICsraSkKKyAgICAodHJ1ZSkubmVnYXRlMigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy90by10aGlzLWRvdWJsZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvdG8tdGhpcy1kb3VibGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRiMTcyODYx
MzI4OTJhODEwOGY4MDdmMmMwMWY4MjEwM2ZlMDgwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG8tdGhpcy1kb3VibGUuanMKQEAgLTAsMCAr
MSw4IEBACitOdW1iZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpCit7CisgICAgInVz
ZSBzdHJpY3QiOworICAgIHJldHVybiAtdGhpczsKK307CisKK2ZvciAodmFyIGkgPSAxOyBpIDwg
MWU0OyArK2kpCisgICAgKDQuMjQyNDIpLm5lZ2F0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90by10aGlzLWludDMyLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90by10aGlzLWludDMyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZjBj
MmFkOTM0MjQwMmVkNjA2ZjI4NjczY2ZkZjMxZGI1YjczYjYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RvLXRoaXMtaW50MzIuanMKQEAgLTAs
MCArMSw4IEBACitOdW1iZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpCit7CisgICAg
InVzZSBzdHJpY3QiOworICAgIHJldHVybiAtdGhpczsKK307CisKK2ZvciAodmFyIGkgPSAxOyBp
IDwgMWU0OyArK2kpCisgICAgKDB4NDI0MjQyKS5uZWdhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG8tdGhpcy1pbnQ1Mi5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG8tdGhpcy1pbnQ1Mi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NDVmN2E5ZDk1ODMyYTNhNTQwZTg5NjZkZDgwYzZlMTA4MGFjZTNhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90by10aGlzLWludDUyLmpzCkBA
IC0wLDAgKzEsOCBAQAorTnVtYmVyLnByb3RvdHlwZS5uZWdhdGUgPSBmdW5jdGlvbiAoKQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKyAgICByZXR1cm4gLXRoaXM7Cit9OworCitmb3IgKHZhciBpID0g
MTsgaSA8IDFlNDsgKytpKQorICAgICgweGZmZmZmZmYgKiAxMDAwMDApLm5lZ2F0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90by10aGlzLW51bWJl
ci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG8tdGhpcy1udW1iZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmYxM2E5ZmNmYWRjNjVmNDg4OTI0NTY2YmQ1MWQzNzBmZWZjMzA0NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG8t
dGhpcy1udW1iZXIuanMKQEAgLTAsMCArMSwyMCBAQAorTnVtYmVyLnByb3RvdHlwZS5uZWdhdGUg
PSBmdW5jdGlvbiAoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICByZXR1cm4gLXRoaXM7Cit9
Oworbm9JbmxpbmUoTnVtYmVyLnByb3RvdHlwZS5uZWdhdGUpOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDFlNDsgKytpKQorICAgIChpICUgMyA9PT0gMCA/IC1pIDogaSkubmVnYXRlKCk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgKChpICUgMyA9PT0gMCA/IC1pIDogaSkg
KiAwLjIpLm5lZ2F0ZSgpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICgo
aSAlIDMgPT09IDAgPyAtaSA6IGkpICogMTAwMDAwMCkubmVnYXRlKCk7CisKK051bWJlci5wcm90
b3R5cGUubmVnYXRlLmNhbGwoLTIwMDAwKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkKKyAgICBOdW1iZXIucHJvdG90eXBlLm5lZ2F0ZS5jYWxsKGkgJSAyID09PSAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG8tdGhpcy1zdHJpbmcu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RvLXRoaXMtc3RyaW5nLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBkNGY5YjFjODE2Y2JiM2JjM2IyODM4OThkYzgwYzhkNmVkNWYxNDYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RvLXRo
aXMtc3RyaW5nLmpzCkBAIC0wLDAgKzEsMjcgQEAKK1N0cmluZy5wcm90b3R5cGUucHJlZml4ID0g
ZnVuY3Rpb24gKHN0cmluZykKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgLy8gVG9UaGlzIHNo
b3VsZCBiZSBjb252ZXJ0ZWQgdG8gSWRlbnRpdHkuCisgICAgcmV0dXJuIHN0cmluZyArIHRoaXM7
Cit9Oworbm9JbmxpbmUoU3RyaW5nLnByb3RvdHlwZS5wcmVmaXgpOworCitTdHJpbmcucHJvdG90
eXBlLmZpcnN0ID0gZnVuY3Rpb24gKHN0cmluZykKK3sKKyAgICByZXR1cm4gdGhpcy5zZWNvbmQo
c3RyaW5nKTsKK307CisKK1N0cmluZy5wcm90b3R5cGUuc2Vjb25kID0gZnVuY3Rpb24gKHN0cmlu
ZykKK3sKKyAgICAvLyBEdXBsaWNhdGUgVG9UaGlzKGluIGZpcnN0KSBzaG91bGQgYmUgY29udmVy
dGVkIHRvIElkZW50aXR5LgorICAgIHJldHVybiB0aGlzICsgc3RyaW5nOworfTsKK25vSW5saW5l
KFN0cmluZy5wcm90b3R5cGUuZmlyc3QpOworCisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyAr
K2kpCisgICAgU3RyaW5nKGkpLnByZWZpeCgiSGVsbG8iKTsKKworCitmb3IgKHZhciBpID0gMDsg
aSA8IDFlNDsgKytpKQorICAgIFN0cmluZyhpKS5maXJzdCgiSGVsbG8iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG8tdGhpcy1zeW1ib2wuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RvLXRoaXMtc3ltYm9sLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU0NTIwYWJjYzQ0MmQzZjVhYzgzZDA4ODUwZmEwNDMxMmYyYjJhOTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RvLXRoaXMtc3lt
Ym9sLmpzCkBAIC0wLDAgKzEsMTggQEAKK1N5bWJvbC5wcm90b3R5cGUuaWRlbnRpdHkgPSBmdW5j
dGlvbiAoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICByZXR1cm4gdGhpczsKK307Citub0lu
bGluZShTeW1ib2wucHJvdG90eXBlLmlkZW50aXR5KTsKKworU3ltYm9sLnByb3RvdHlwZS5pZGVu
dGl0eTIgPSBmdW5jdGlvbiAoKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICByZXR1cm4gdGhp
czsKK307CisKK2ZvciAodmFyIGkgPSAxOyBpIDwgMWU0OyArK2kpCisgICAgU3ltYm9sLnByb3Rv
dHlwZS5pZGVudGl0eS5jYWxsKFN5bWJvbChpKSk7CisKK2ZvciAodmFyIGkgPSAxOyBpIDwgMWU0
OyArK2kpCisgICAgU3ltYm9sLnByb3RvdHlwZS5pZGVudGl0eTIuY2FsbChTeW1ib2woaSkpOwo=
</data>
<flag name="review"
          id="295174"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>