<?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>69906</bug_id>
          
          <creation_ts>2011-10-11 23:14:23 -0700</creation_ts>
          <short_desc>ValueProfile::computeUpdatedPrediction doesn&apos;t merge statistics correctly</short_desc>
          <delta_ts>2011-10-12 13:28:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>482245</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-11 23:14:23 -0700</bug_when>
    <thetext>computeUpdatedPrediction() will return PredictOther when a value profile has a mix of types.  PredictOther means Undefined or Null, so that&apos;s clearly wrong.

Currently this should be benign, in the sense that it should just cause speculation failures.  But that&apos;s not so great for performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482624</commentid>
    <comment_count>1</comment_count>
      <attachid>110724</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-12 12:46:49 -0700</bug_when>
    <thetext>Created attachment 110724
the patch

Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc
&quot;FixProfile&quot; at /Volumes/Data/pizlo/senary/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Used 1 benchmark iteration per VM
invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting
benchmark execution times with 95% confidence intervals in milliseconds.

                                            TipOfTree               FixProfile                                   
SunSpider:
   3d-cube                                7.3870+-0.1434          7.2386+-0.1102         might be 1.0205x faster
   3d-morph                               8.3775+-0.8625          7.7184+-0.1144         might be 1.0854x faster
   3d-raytrace                            7.6431+-0.2087    ?     7.7190+-0.2071       ?
   access-binary-trees                    1.6935+-0.0550          1.6806+-0.0443       
   access-fannkuch                        6.3731+-0.0945          6.3581+-0.0887       
   access-nbody                           3.3125+-0.0656          3.3009+-0.0592       
   access-nsieve                          2.5846+-0.0640    ?     2.6321+-0.0843       ? might be 1.0184x slower
   bitops-3bit-bits-in-byte               1.7253+-0.0274    ?     1.7582+-0.0381       ? might be 1.0191x slower
   bitops-bits-in-byte                    2.8091+-0.0514          2.7252+-0.0738         might be 1.0308x faster
   bitops-bitwise-and                     3.3941+-0.0747          3.3556+-0.1009         might be 1.0115x faster
   bitops-nsieve-bits                     5.5153+-0.0988          5.5105+-0.1199       
   controlflow-recursive                  2.1138+-0.0531    ?     2.1456+-0.0747       ? might be 1.0151x slower
   crypto-aes                             6.8299+-0.1630          6.7437+-0.1648         might be 1.0128x faster
   crypto-md5                             2.8610+-0.0692          2.8318+-0.0672         might be 1.0103x faster
   crypto-sha1                            2.5423+-0.0838          2.4897+-0.0638         might be 1.0211x faster
   date-format-tofte                      9.9869+-0.1586    ?    10.1792+-0.1745       ? might be 1.0192x slower
   date-format-xparb                      9.0433+-0.2143    ?     9.2611+-0.2927       ? might be 1.0241x slower
   math-cordic                            6.3837+-0.0624    ?     6.4447+-0.0731       ?
   math-partial-sums                      7.5753+-0.1140    ?     7.6394+-0.1411       ?
   math-spectral-norm                     2.8914+-0.0627          2.8819+-0.0647       
   regexp-dna                            10.7096+-0.1479    ?    10.7654+-0.1319       ?
   string-base64                          5.2383+-0.0718    ?     5.3516+-0.0729       ? might be 1.0216x slower
   string-fasta                           6.5073+-0.1150    ?     6.5156+-0.1362       ?
   string-tagcloud                       11.2380+-0.2166         11.1545+-0.2043       
   string-unpack-code                    20.6586+-0.2970    ?    20.9446+-0.7071       ? might be 1.0138x slower
   string-validate-input                  6.3705+-0.1253    ?     6.3803+-0.1194       ?

   &lt;arithmetic&gt; *                         6.2217+-0.0484          6.2202+-0.0301       
   &lt;geometric&gt;                            5.1214+-0.0359          5.1132+-0.0210       
   &lt;harmonic&gt;                             4.2060+-0.0348          4.1995+-0.0276       

                                            TipOfTree               FixProfile                                   
V8:
   crypto                                72.8527+-0.4478         72.4592+-0.2900       
   deltablue                            225.1709+-2.3335        223.6545+-1.7005       
   earley-boyer                          91.8261+-0.3565    ?    92.0220+-0.4391       ?
   raytrace                              59.7300+-0.7757    ^    57.8942+-0.3434       ^ definitely 1.0317x faster
   regexp                               106.3592+-0.3718        105.3202+-0.9491       
   richards                             186.9082+-6.5842        182.6153+-0.3850         might be 1.0235x faster
   splay                                 95.6470+-0.8616         95.0531+-0.3847       

   &lt;arithmetic&gt;                         119.7849+-0.6726    ^   118.4312+-0.3341       ^ definitely 1.0114x faster
   &lt;geometric&gt; *                        107.9463+-0.4507    ^   106.7343+-0.3124       ^ definitely 1.0114x faster
   &lt;harmonic&gt;                            98.5508+-0.4177    ^    97.3485+-0.3249       ^ definitely 1.0123x faster

                                            TipOfTree               FixProfile                                   
Kraken:
   ai-astar                             501.1981+-3.1509        500.6884+-6.7670       
   audio-beat-detection                 192.4552+-0.6351    ?   192.6383+-0.8518       ?
   audio-dft                            271.7373+-6.4749        268.6449+-1.9443         might be 1.0115x faster
   audio-fft                            125.2747+-0.7431        124.7780+-0.7993       
   audio-oscillator                     252.5998+-2.1763    ?   254.1639+-2.6871       ?
   imaging-darkroom                     420.0759+-1.9578        417.9027+-1.5970       
   imaging-desaturate                   218.0847+-0.4997    !   219.9462+-0.8396       ! definitely 1.0085x slower
   imaging-gaussian-blur                557.8666+-1.8411        556.8822+-2.5415       
   json-parse-financial                  54.7763+-0.2994    ?    55.0612+-0.2650       ?
   json-stringify-tinderbox              68.9615+-1.0041         68.5430+-0.4149       
   stanford-crypto-aes                  130.8375+-1.5580    ?   132.8984+-1.7029       ? might be 1.0158x slower
   stanford-crypto-ccm                  104.6360+-0.6860    ?   104.6884+-1.2097       ?
   stanford-crypto-pbkdf2               194.7741+-0.7511    ^   192.6652+-0.5280       ^ definitely 1.0109x faster
   stanford-crypto-sha256-iterative      71.8618+-1.0272         71.0898+-0.4693         might be 1.0109x faster

   &lt;arithmetic&gt; *                       226.0814+-0.7470        225.7565+-0.7902       
   &lt;geometric&gt;                          177.4289+-0.7113        177.2551+-0.5811       
   &lt;harmonic&gt;                           139.1710+-0.7181        139.0418+-0.5170       

                                            TipOfTree               FixProfile                                   
All benchmarks:
   &lt;arithmetic&gt;                          88.6255+-0.3154         88.3263+-0.2447       
   &lt;geometric&gt;                           23.1825+-0.1145         23.1166+-0.0570       
   &lt;harmonic&gt;                             7.3978+-0.0599          7.3855+-0.0473       

                                            TipOfTree               FixProfile                                   
Geomean of preferred means:
   &lt;scaled-result&gt;                       53.3485+-0.2212         53.1184+-0.1106</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482662</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-12 13:28:04 -0700</bug_when>
    <thetext>Landed in r97294.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110724</attachid>
            <date>2011-10-12 12:46:49 -0700</date>
            <delta_ts>2011-10-12 12:47:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixprofile_patch_1.diff</filename>
            <type>text/plain</type>
            <size>12038</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTcyODcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTEtMTAtMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbiBkb2Vzbid0IG1lcmdlIHN0YXRp
c3RpY3MgY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02OTkwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgSXQgdHVybnMgb3V0IHRoYXQgdGhlIHNpbXBsZXN0IGZpeCBpcyB0byBz
d2l0Y2ggY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucygpCisgICAgICAgIHRvIHVzaW5nIHByZWRp
Y3Rpb25Gcm9tVmFsdWUoKSBjb21iaW5lZCB3aXRoIG1lcmdlUHJlZGljdGlvbigpLiBEb2luZyBz
bworICAgICAgICBhbGxvd2VkIG1lIHRvIGtpbGwgb2ZmIHdlYWtCdWNrZXRzIGFuZCB2aXNpdFdl
YWtSZWZlcmVuY2VzKCkuIEhlbmNlIHRoaXMKKyAgICAgICAgbm90IG9ubHkgZml4ZXMgYSBwZXJm
b3JtYW5jZSBidWcgYnV0IGtpbGxzIG9mZiBhIGxvdCBvZiBjb2RlIHRoYXQgSSBuZXZlcgorICAg
ICAgICBsaWtlZCB0byBiZWdpbiB3aXRoLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhcHBlYXJz
IHRvIGJlIGEgMSUgd2luIG9uIFY4LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5j
cHA6CisgICAgICAgIChKU0M6OnByZWRpY3Rpb25Gcm9tVmFsdWUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1ZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6Y29tcHV0
ZVN0YXRpc3RpY3MpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6CisgICAgICAg
IChKU0M6OlZhbHVlUHJvZmlsZTo6Y2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9m
aWxlOjpudW1iZXJPZlNhbXBsZXMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OmlzTGl2
ZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6ZHVtcCk6CisKIDIwMTEtMTAtMTIgIFl1
cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBpbnRlbC5jb20+CiAKICAgICAgICAgREZHIEpJVCAz
Ml82NCAtIEZpeCBBcnJheVBvcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDk3Mjg3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MjcsOCArMTUy
Nyw2IEBAIHZvaWQgRXZhbENvZGVDYWNoZTo6dmlzaXRBZ2dyZWdhdGUoU2xvdFYKIAogdm9pZCBD
b2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGJv
b2wgaGFuZGxlV2Vha1JlZmVyZW5jZXMgPSBmYWxzZTsKLSAgICAKICAgICBpZiAoISFtX2FsdGVy
bmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0aXZlLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOwpAQCAtMTU4MCw2MSArMTU3OCw4
IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXQKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIGZvciAodW5zaWduZWQgcHJvZmlsZUluZGV4
ID0gMDsgcHJvZmlsZUluZGV4IDwgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsrcHJvZmlsZUlu
ZGV4KSB7Ci0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHZhbHVlUHJvZmlsZShwcm9m
aWxlSW5kZXgpOwotICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7ICsraW5kZXgpIHsKLSAgICAgICAg
ICAgIGlmICghcHJvZmlsZS0+bV9idWNrZXRzW2luZGV4XSkgewotICAgICAgICAgICAgICAgIGlm
ICghIXByb2ZpbGUtPm1fd2Vha0J1Y2tldHNbaW5kZXhdKQotICAgICAgICAgICAgICAgICAgICBo
YW5kbGVXZWFrUmVmZXJlbmNlcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghSlNWYWx1ZTo6ZGVj
b2RlKHByb2ZpbGUtPm1fYnVja2V0c1tpbmRleF0pLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAg
ICAgcHJvZmlsZS0+bV93ZWFrQnVja2V0c1tpbmRleF0gPSBWYWx1ZVByb2ZpbGU6OldlYWtCdWNr
ZXQoKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgaGFuZGxlV2Vha1JlZmVyZW5jZXMgPSB0cnVlOwotICAgICAgICB9
Ci0gICAgfQotI2VuZGlmCi0gICAgCi0gICAgaWYgKGhhbmRsZVdlYWtSZWZlcmVuY2VzKQotICAg
ICAgICB2aXNpdG9yLmFkZFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIodGhpcyk7Ci19Ci0KLXZvaWQg
Q29kZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikKLXsKLSNpZiBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCi0gICAgZm9yICh1bnNpZ25lZCBwcm9maWxlSW5kZXggPSAwOyBw
cm9maWxlSW5kZXggPCBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytwcm9maWxlSW5kZXgpIHsK
LSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxlKHByb2ZpbGVJbmRl
eCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBW
YWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgKytpbmRleCkgewotICAgICAgICAgICAgaWYg
KCEhcHJvZmlsZS0+bV9idWNrZXRzW2luZGV4XSkgewotICAgICAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUocHJvZmlsZS0+bV9idWNrZXRzW2luZGV4XSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0g
dmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNlbGwp
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBwcm9maWxlLT5tX2J1Y2tldHNbaW5kZXhdID0gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS0+bV93ZWFrQnVja2V0c1tpbmRleF0g
PSBjZWxsLT5zdHJ1Y3R1cmUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgVmFsdWVQcm9maWxlOjpXZWFrQnVja2V0IHdlYWsgPSBwcm9maWxlLT5tX3dlYWtCdWNr
ZXRzW2luZGV4XTsKLSAgICAgICAgICAgIGlmICghd2VhayB8fCB3ZWFrLmlzQ2xhc3NJbmZvKCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEFT
U0VSVCh3ZWFrLmlzU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2Vk
KHdlYWsuYXNTdHJ1Y3R1cmUoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fd2Vha0J1Y2tldHNbaW5kZXhdID0gd2Vhay5h
c1N0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBmb3IgKHVu
c2lnbmVkIHByb2ZpbGVJbmRleCA9IDA7IHByb2ZpbGVJbmRleCA8IG51bWJlck9mVmFsdWVQcm9m
aWxlcygpOyArK3Byb2ZpbGVJbmRleCkKKyAgICAgICAgdmFsdWVQcm9maWxlKHByb2ZpbGVJbmRl
eCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDk3Mjg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKICNp
bmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCi0jaW5jbHVkZSAi
V2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIgogI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
QEAgLTIzMiw3ICsyMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAjZW5kaWYKIAotICAg
IGNsYXNzIENvZGVCbG9jazogcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgeworICAgIGNs
YXNzIENvZGVCbG9jayB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwogICAgIHByb3RlY3RlZDoKQEAgLTI0OCw3ICsyNDcsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUGFzc093blB0cjxDb2RlQmxvY2s+IHJlbGVhc2VBbHRl
cm5hdGl2ZSgpIHsgcmV0dXJuIG1fYWx0ZXJuYXRpdmUucmVsZWFzZSgpOyB9CiAgICAgICAgIAog
ICAgICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7Ci0gICAgICAgIHZvaWQg
dmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyB2b2lk
IGR1bXBTdGF0aXN0aWNzKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVkaWN0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAJKHJldmlzaW9uIDk3Mjg3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzcsNiArMTM3LDcgQEAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uRnJvbVZhbHVlKEpTVmFs
dQogICAgICAgICByZXR1cm4gcHJlZGljdGlvbkZyb21DZWxsKHZhbHVlLmFzQ2VsbCgpKTsKICAg
ICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCiAgICAgICAgIHJldHVybiBQcmVkaWN0Qm9vbGVhbjsK
KyAgICBBU1NFUlQodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgcmV0dXJuIFByZWRp
Y3RPdGhlcjsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVl
UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDk3Mjg3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDE1ICs2
MSw4IEBAIHZvaWQgVmFsdWVQcm9maWxlOjpjb21wdXRlU3RhdGlzdGljcyhTdGEKIHsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbaV0pOwotICAgICAgICBp
ZiAoIXZhbHVlKSB7Ci0gICAgICAgICAgICBXZWFrQnVja2V0IHdlYWtCdWNrZXQgPSBtX3dlYWtC
dWNrZXRzW2ldOwotICAgICAgICAgICAgaWYgKCEhd2Vha0J1Y2tldCkgewotICAgICAgICAgICAg
ICAgIHN0YXRpc3RpY3Muc2FtcGxlcysrOwotICAgICAgICAgICAgICAgIGNvbXB1dGVTdGF0aXN0
aWNzKHdlYWtCdWNrZXQuZ2V0Q2xhc3NJbmZvKCksIHN0YXRpc3RpY3MpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgCisgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGlzdGljcy5zYW1wbGVzKys7CiAg
ICAgICAgIApAQCAtODYsNDAgKzc5LDE3IEBAIHZvaWQgVmFsdWVQcm9maWxlOjpjb21wdXRlU3Rh
dGlzdGljcyhTdGEKIAogUHJlZGljdGVkVHlwZSBWYWx1ZVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbigpCiB7Ci0gICAgVmFsdWVQcm9maWxlOjpTdGF0aXN0aWNzIHN0YXRpc3RpY3M7
Ci0gICAgY29tcHV0ZVN0YXRpc3RpY3Moc3RhdGlzdGljcyk7Ci0gICAgCi0gICAgUHJlZGljdGVk
VHlwZSBwcmVkaWN0aW9uOwotICAgIAotICAgIGlmICghc3RhdGlzdGljcy5zYW1wbGVzKQotICAg
ICAgICBwcmVkaWN0aW9uID0gUHJlZGljdE5vbmU7Ci0gICAgZWxzZSBpZiAoc3RhdGlzdGljcy5p
bnQzMnMgPT0gc3RhdGlzdGljcy5zYW1wbGVzKQotICAgICAgICBwcmVkaWN0aW9uID0gUHJlZGlj
dEludDMyOwotICAgIGVsc2UgaWYgKHN0YXRpc3RpY3MuZG91YmxlcyA9PSBzdGF0aXN0aWNzLnNh
bXBsZXMpCi0gICAgICAgIHByZWRpY3Rpb24gPSBQcmVkaWN0RG91YmxlOwotICAgIGVsc2UgaWYg
KHN0YXRpc3RpY3MuaW50MzJzICsgc3RhdGlzdGljcy5kb3VibGVzID09IHN0YXRpc3RpY3Muc2Ft
cGxlcykKLSAgICAgICAgcHJlZGljdGlvbiA9IFByZWRpY3ROdW1iZXI7Ci0gICAgZWxzZSBpZiAo
c3RhdGlzdGljcy5hcnJheXMgPT0gc3RhdGlzdGljcy5zYW1wbGVzKQotICAgICAgICBwcmVkaWN0
aW9uID0gUHJlZGljdEFycmF5OwotICAgIGVsc2UgaWYgKHN0YXRpc3RpY3MuZmluYWxPYmplY3Rz
ID09IHN0YXRpc3RpY3Muc2FtcGxlcykKLSAgICAgICAgcHJlZGljdGlvbiA9IFByZWRpY3RGaW5h
bE9iamVjdDsKLSAgICBlbHNlIGlmIChzdGF0aXN0aWNzLnN0cmluZ3MgPT0gc3RhdGlzdGljcy5z
YW1wbGVzKQotICAgICAgICBwcmVkaWN0aW9uID0gUHJlZGljdFN0cmluZzsKLSAgICBlbHNlIGlm
IChzdGF0aXN0aWNzLm9iamVjdHMgPT0gc3RhdGlzdGljcy5zYW1wbGVzKQotICAgICAgICBwcmVk
aWN0aW9uID0gUHJlZGljdE9iamVjdE90aGVyOwotICAgIGVsc2UgaWYgKHN0YXRpc3RpY3MuY2Vs
bHMgPT0gc3RhdGlzdGljcy5zYW1wbGVzKQotICAgICAgICBwcmVkaWN0aW9uID0gUHJlZGljdENl
bGxPdGhlcjsKLSAgICBlbHNlIGlmIChzdGF0aXN0aWNzLmJvb2xlYW5zID09IHN0YXRpc3RpY3Mu
c2FtcGxlcykKLSAgICAgICAgcHJlZGljdGlvbiA9IFByZWRpY3RCb29sZWFuOwotICAgIGVsc2UK
LSAgICAgICAgcHJlZGljdGlvbiA9IFByZWRpY3RPdGhlcjsKLQotICAgIG1fbnVtYmVyT2ZTYW1w
bGVzSW5QcmVkaWN0aW9uICs9IHN0YXRpc3RpY3Muc2FtcGxlczsKLSAgICBtZXJnZVByZWRpY3Rp
b24obV9wcmVkaWN0aW9uLCBwcmVkaWN0aW9uKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShtX2J1Y2tldHNbaV0pOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBtX251bWJlck9mU2FtcGxlc0luUHJlZGlj
dGlvbisrOworICAgICAgICBtZXJnZVByZWRpY3Rpb24obV9wcmVkaWN0aW9uLCBwcmVkaWN0aW9u
RnJvbVZhbHVlKHZhbHVlKSk7CisgICAgICAgIAogICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICAgICAgbV93ZWFrQnVja2V0c1tpXSA9IFdlYWtC
dWNrZXQoKTsKICAgICB9CisgICAgCiAgICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiA5NzI4NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjEsMTQgKzYxLDE0IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+
Y2xhc3NJbmZvKCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fd2Vha0J1Y2tldHNbYnVj
a2V0XS5nZXRDbGFzc0luZm8oKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIG51bWJlck9mU2FtcGxlcygpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25l
ZCByZXN1bHQgPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZC
dWNrZXRzOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghIUpTVmFsdWU6OmRlY29kZShtX2J1Y2tl
dHNbaV0pIHx8ICEhbV93ZWFrQnVja2V0c1tpXSkKKyAgICAgICAgICAgIGlmICghIUpTVmFsdWU6
OmRlY29kZShtX2J1Y2tldHNbaV0pKQogICAgICAgICAgICAgICAgIHJlc3VsdCsrOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04Miw3ICs4Miw3IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGUgewogICAgIGJvb2wgaXNMaXZlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgewotICAgICAgICAgICAg
aWYgKCEhSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSkgfHwgISFtX3dlYWtCdWNrZXRzW2ld
KQorICAgICAgICAgICAgaWYgKCEhSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjM5LDE5ICsyMzksMTQgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgICAgIGJv
b2wgZmlyc3QgPSB0cnVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZCdWNrZXRzOyArK2kpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUobV9idWNrZXRzW2ldKTsKLSAgICAgICAgICAgIGlmICghIXZhbHVlIHx8ICEhbV93ZWFr
QnVja2V0c1tpXSkgeworICAgICAgICAgICAgaWYgKCEhdmFsdWUpIHsKICAgICAgICAgICAgICAg
ICBpZiAoZmlyc3QpIHsKICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihvdXQsICI6ICIpOwog
ICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dCwgIiwgIik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghIXZhbHVlKQogICAgICAgICAgICAgICAg
IGZwcmludGYob3V0LCAiJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKCEhbV93ZWFrQnVja2V0c1tpXSkKLSAgICAgICAgICAgICAgICBmcHJp
bnRmKG91dCwgIkRlYWRDZWxsIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAj
ZW5kaWYKQEAgLTI5MCw3MCArMjg1LDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZSB7CiAgICAgdW5z
aWduZWQgbV9udW1iZXJPZlNhbXBsZXNJblByZWRpY3Rpb247CiAgICAgCiAgICAgRW5jb2RlZEpT
VmFsdWUgbV9idWNrZXRzW251bWJlck9mQnVja2V0c107Ci0gICAgCi0gICAgY2xhc3MgV2Vha0J1
Y2tldCB7Ci0gICAgcHVibGljOgotICAgICAgICBXZWFrQnVja2V0KCkKLSAgICAgICAgICAgIDog
bV92YWx1ZSgwKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFdlYWtC
dWNrZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IG1fdmFsdWUocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkpCi0gICAgICAgIHsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgV2Vha0J1Y2tldChjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykK
LSAgICAgICAgICAgIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2xhc3NJ
bmZvKSB8IDEpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIW1fdmFsdWU7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhbV92YWx1ZTsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgYm9vbCBpc0NsYXNzSW5mbygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAhIShtX3ZhbHVlICYgMSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJv
b2wgaXNTdHJ1Y3R1cmUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIWlz
RW1wdHkoKSAmJiAhaXNDbGFzc0luZm8oKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
U3RydWN0dXJlKiBhc1N0cnVjdHVyZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChpc1N0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFN0cnVjdHVyZSo+KG1fdmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25z
dCBDbGFzc0luZm8qIGFzQ2xhc3NJbmZvKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
QVNTRVJUKGlzQ2xhc3NJbmZvKCkpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Q2xhc3NJbmZvKj4obV92YWx1ZSAmIH5zdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBnZXRDbGFzc0luZm8o
KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgaWYgKGlzQ2xhc3NJbmZvKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGFzQ2xhc3NJbmZvKCk7Ci0gICAgICAgICAgICByZXR1cm4gYXNTdHJ1
Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgdWludHB0cl90IG1fdmFsdWU7Ci0gICAgfTsKLSAgICAKLSAgICBXZWFrQnVja2V0
IG1fd2Vha0J1Y2tldHNbbnVtYmVyT2ZCdWNrZXRzXTsgLy8gdGhpcyBpcyBub3QgY292ZXJlZCBi
eSBhIHdyaXRlIGJhcnJpZXIgYmVjYXVzZSBpdCBpcyBvbmx5IHNldCBmcm9tIEdDCiB9OwogCiBp
bmxpbmUgaW50IGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFZhbHVlUHJvZmlsZSogdmFs
dWVQcm9maWxlKQo=
</data>
<flag name="review"
          id="108314"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>