<?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>68138</bug_id>
          
          <creation_ts>2011-09-14 20:58:47 -0700</creation_ts>
          <short_desc>DFG does not speculate aggressively enough on comparisons</short_desc>
          <delta_ts>2011-09-15 09:13:33 -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>
          <cc>aroben</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>467580</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-14 20:58:47 -0700</bug_when>
    <thetext>DFG will emit slow-path code for peephole comparisons even if we have a double prediction.  For non-peephole double comparisons, we always take a slow path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467606</commentid>
    <comment_count>1</comment_count>
      <attachid>107451</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-14 21:35:32 -0700</bug_when>
    <thetext>Created attachment 107451
the patch

75% speed-up on Kraken/ai-astar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467683</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-15 00:28:03 -0700</bug_when>
    <thetext>Landed in r95172</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467842</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-09-15 09:13:33 -0700</bug_when>
    <thetext>Clang build fix in http://trac.webkit.org/changeset/95194</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107451</attachid>
            <date>2011-09-14 21:35:32 -0700</date>
            <delta_ts>2011-09-14 21:51:17 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>compareopt_patch_1.diff</filename>
            <type>text/plain</type>
            <size>13577</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTUxNjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTEtMDktMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgZG9lcyBub3Qgc3BlY3VsYXRlIGFnZ3Jlc3NpdmVseSBlbm91Z2ggb24gY29tcGFyaXNvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MTM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBU
aGlzIGlzIGEgNzUlIHNwZWVkLXVwIG9uIEtyYWtlbi9haS1hc3Rhci4gIEl0J3MgYSAxJSB3aW4g
b24KKyAgICAgICAgVjggYW5kIGFuIDguNSUgd2luIG9uIEtyYWtlbi4gIE5ldXRyYWwgb24gU3Vu
U3BpZGVyLgorCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaG91bGRTcGVjdWxhdGVBcnJheSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNob3VsZFNwZWN1bGF0ZU9iamVjdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNob3VsZFNwZWN1bGF0ZUNlbGwpOgorCiAy
MDExLTA5LTE0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTUxNDUuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTUx
NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTU1LDg0ICs1NTUsNzMgQEAgSklUQ29tcGlsZXI6Okp1bXAgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbnZlcgogICAgIHJldHVybiBub3ROdW1iZXI7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChOb2RlJiBub2RlLCBOb2Rl
SW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uIGNvbmRp
dGlvbiwgWl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChOb2RlJiBub2RlLCBOb2RlSW5kZXggYnJhbmNo
Tm9kZUluZGV4LCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKICAg
ICBOb2RlJiBicmFuY2hOb2RlID0gbV9qaXQuZ3JhcGgoKVticmFuY2hOb2RlSW5kZXhdOwogICAg
IEJsb2NrSW5kZXggdGFrZW4gPSBtX2ppdC5ncmFwaCgpLmJsb2NrSW5kZXhGb3JCeXRlY29kZU9m
ZnNldChicmFuY2hOb2RlLnRha2VuQnl0ZWNvZGVPZmZzZXQoKSk7CiAgICAgQmxvY2tJbmRleCBu
b3RUYWtlbiA9IG1faml0LmdyYXBoKCkuYmxvY2tJbmRleEZvckJ5dGVjb2RlT2Zmc2V0KGJyYW5j
aE5vZGUubm90VGFrZW5CeXRlY29kZU9mZnNldCgpKTsKICAgICAKLSAgICBib29sIG9wMU51bWVy
aWMgPSBpc0tub3duTnVtZXJpYyhub2RlLmNoaWxkMSgpKTsKLSAgICBib29sIG9wMk51bWVyaWMg
PSBpc0tub3duTnVtZXJpYyhub2RlLmNoaWxkMigpKTsKKyAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAKLSAgICBpZiAob3AxTnVtZXJpYyAmJiBv
cDJOdW1lcmljKSB7Ci0gICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOwotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBu
b2RlLmNoaWxkMigpKTsKLSAgICAgICAgCi0gICAgICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hE
b3VibGUoY29uZGl0aW9uLCBvcDEuZnByKCksIG9wMi5mcHIoKSksIHRha2VuKTsKLSAgICB9IGVs
c2UgaWYgKG9wMU51bWVyaWMpIHsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEo
dGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCBu
b2RlLmNoaWxkMigpKTsKLSAgICAgICAgCi0gICAgICAgIEZQUlRlbXBvcmFyeSBmcHJUbXAodGhp
cyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBncHJUbXAodGhpcyk7Ci0gICAgICAgIAotICAgICAg
ICBGUFJSZWcgb3AxRlBSID0gb3AxLmZwcigpOwotICAgICAgICBHUFJSZWcgb3AyR1BSID0gb3Ay
LmdwcigpOwotICAgICAgICBGUFJSZWcgb3AyRlBSID0gZnByVG1wLmZwcigpOwotICAgICAgICBH
UFJSZWcgZ3ByID0gZ3ByVG1wLmdwcigpOwotICAgICAgICAKLSAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd1BhdGggPSBjb252ZXJ0VG9Eb3VibGUob3AyR1BSLCBvcDJGUFIsIGdwcik7Ci0g
ICAgICAgIAotICAgICAgICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoRG91YmxlKGNvbmRpdGlvbiwg
b3AxRlBSLCBvcDJGUFIpLCB0YWtlbik7Ci0gICAgICAgIGFkZEJyYW5jaChtX2ppdC5qdW1wKCks
IG5vdFRha2VuKTsKLSAgICAgICAgCi0gICAgICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKLSAg
ICAgICAgCi0gICAgICAgIGJveERvdWJsZShvcDFGUFIsIGdwcik7Ci0gICAgICAgIAotICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhncHIpOwotICAgICAgICBzZXR1cFN0dWJBcmd1bWVu
dHMoZ3ByLCBvcDJHUFIpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIGdwcik7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoZ3ByKTsK
LSAgICAgICAgCi0gICAgICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxl
cjo6Tm9uWmVybywgZ3ByKSwgdGFrZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEpTVmFsdWVP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7Ci0gICAgICAgIAotICAgICAgICBGUFJU
ZW1wb3JhcnkgZnByVG1wKHRoaXMpOwotICAgICAgICBHUFJUZW1wb3JhcnkgZ3ByVG1wKHRoaXMp
OwotICAgICAgICAKLSAgICAgICAgRlBSUmVnIG9wMkZQUiA9IG9wMi5mcHIoKTsKLSAgICAgICAg
R1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKLSAgICAgICAgRlBSUmVnIG9wMUZQUiA9IGZwclRt
cC5mcHIoKTsKLSAgICAgICAgR1BSUmVnIGdwciA9IGdwclRtcC5ncHIoKTsKLSAgICAgICAgCi0g
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoID0gY29udmVydFRvRG91YmxlKG9wMUdQ
Uiwgb3AxRlBSLCBncHIpOwotICAgICAgICAKLSAgICAgICAgYWRkQnJhbmNoKG1faml0LmJyYW5j
aERvdWJsZShjb25kaXRpb24sIG9wMUZQUiwgb3AyRlBSKSwgdGFrZW4pOworICAgIGFkZEJyYW5j
aChtX2ppdC5icmFuY2hEb3VibGUoY29uZGl0aW9uLCBvcDEuZnByKCksIG9wMi5mcHIoKSksIHRh
a2VuKTsKKyAgICAKKyAgICBpZiAobm90VGFrZW4gIT0gKG1fYmxvY2sgKyAxKSkKICAgICAgICAg
YWRkQnJhbmNoKG1faml0Lmp1bXAoKSwgbm90VGFrZW4pOwotICAgICAgICAKLSAgICAgICAgc2xv
d1BhdGgubGluaygmbV9qaXQpOwotICAgICAgICAKLSAgICAgICAgYm94RG91YmxlKG9wMkZQUiwg
Z3ByKTsKLSAgICAgICAgCi0gICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKGdwcik7Ci0g
ICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhvcDFHUFIsIGdwcik7Ci0gICAgICAgIG1faml0Lm1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKLSAgICAgICAg
bV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZ3ByKTsKLSAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycyhncHIpOwotICAgICAgICAKLSAgICAgICAgYWRkQnJhbmNoKG1faml0
LmJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpOb25aZXJvLCBncHIpLCB0YWtlbik7Cit9CisKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5v
ZGUsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIHZvaWQqIHZwdHIpCit7CisgICAgTm9kZSYg
YnJhbmNoTm9kZSA9IG1faml0LmdyYXBoKClbYnJhbmNoTm9kZUluZGV4XTsKKyAgICBCbG9ja0lu
ZGV4IHRha2VuID0gbV9qaXQuZ3JhcGgoKS5ibG9ja0luZGV4Rm9yQnl0ZWNvZGVPZmZzZXQoYnJh
bmNoTm9kZS50YWtlbkJ5dGVjb2RlT2Zmc2V0KCkpOworICAgIEJsb2NrSW5kZXggbm90VGFrZW4g
PSBtX2ppdC5ncmFwaCgpLmJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChicmFuY2hOb2RlLm5v
dFRha2VuQnl0ZWNvZGVPZmZzZXQoKSk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbiBjb25kaXRpb24gPSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWw7CisgICAgCisgICAg
aWYgKHRha2VuID09IChtX2Jsb2NrICsgMSkpIHsKKyAgICAgICAgY29uZGl0aW9uID0gTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsOworICAgICAgICBCbG9ja0luZGV4IHRtcCA9IHRha2VuOworICAg
ICAgICB0YWtlbiA9IG5vdFRha2VuOworICAgICAgICBub3RUYWtlbiA9IHRtcDsKICAgICB9CisK
KyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAgIAorICAg
IEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5ncHIo
KTsKKyAgICAKKyAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CisgICAgc3BlY3VsYXRpb25DaGVjayhtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhvcDJHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAg
IAorICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hQdHIoY29uZGl0aW9uLCBvcDFHUFIsIG9wMkdQ
UiksIHRha2VuKTsKICAgICBpZiAobm90VGFrZW4gIT0gKG1fYmxvY2sgKyAxKSkKICAgICAgICAg
YWRkQnJhbmNoKG1faml0Lmp1bXAoKSwgbm90VGFrZW4pOwogfQogCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgdm9pZCogdnB0cikKK3sKKyAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgb3AxKTsKKyAgICAKKyAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdw
cigpOworICAgIEdQUlJlZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKKyAgICAKKyAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CisgICAgc3BlY3Vs
YXRpb25DaGVjayhtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cih2cHRyKSkpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhbHNlQ2FzZSA9IG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG9wMUdQUiwgb3AyR1BSKTsK
KyAgICBtX2ppdC5tb3ZlKEltbTMyKFZhbHVlVHJ1ZSksIHJlc3VsdEdQUik7CisgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICBmYWxzZUNhc2UubGluaygm
bV9qaXQpOworICAgIG1faml0Lm1vdmUoSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7Cisg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CisKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9j
b21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOworfQorCiAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlIGNvbXBhcmUgaXMgZnVzZWQgd2l0aCBhIHN1YnNlcXVlbnQgYnJhbmNoLgogYm9vbCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlJiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbiBjb25kaXRpb24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24g
ZG91YmxlQ29uZGl0aW9uLCBaX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uKQogewpAQCAtNjQ3
LDggKzYzNiwxNiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21wYXJlKE5vZGUmIG5vZGUsCiAg
ICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnRlZ2VyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGVJ
bmRleCwgY29uZGl0aW9uKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIHVzZShub2RlLmNoaWxkMigpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0tub3duTnVt
ZXJpYyhub2RlLmNoaWxkMSgpKSB8fCBpc0tub3duTnVtZXJpYyhub2RlLmNoaWxkMigpKSkgewot
ICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGVJ
bmRleCwgZG91YmxlQ29uZGl0aW9uLCBvcGVyYXRpb24pOworICAgICAgICB9IGVsc2UgaWYgKHNo
b3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLmNoaWxkMSgpLCBub2RlLmNoaWxkMigpKSkgeworICAg
ICAgICAgICAgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGVJbmRl
eCwgZG91YmxlQ29uZGl0aW9uKTsKKyAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIHVzZShub2RlLmNoaWxkMigpKTsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLm9w
ID09IENvbXBhcmVFcSAmJiBzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChub2RlLmNoaWxkMSgp
LCBub2RlLmNoaWxkMigpKSkgeworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1
YWxpdHkobm9kZSwgYnJhbmNoTm9kZUluZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxP
YmplY3RWUHRyKTsKKyAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IHVzZShub2RlLmNoaWxkMigpKTsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLm9wID09IENvbXBh
cmVFcSAmJiBzaG91bGRTcGVjdWxhdGVBcnJheShub2RlLmNoaWxkMSgpLCBub2RlLmNoaWxkMigp
KSkgeworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJh
bmNoTm9kZUluZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKTsKICAgICAgICAg
ICAgIHVzZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMigpKTsK
ICAgICAgICAgfSBlbHNlCkBAIC02NTcsMTAgKzY1NCwyNiBAQCBib29sIFNwZWN1bGF0aXZlSklU
Ojpjb21wYXJlKE5vZGUmIG5vZGUsCiAgICAgICAgIG1fY29tcGlsZUluZGV4ID0gYnJhbmNoTm9k
ZUluZGV4OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KLSAgICBpZiAoaXNLbm93bk5v
dEludGVnZXIobm9kZS5jaGlsZDEoKSkgfHwgaXNLbm93bk5vdEludGVnZXIobm9kZS5jaGlsZDIo
KSkpCisgICAgCisgICAgaWYgKHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KG5vZGUuY2hpbGQx
KCksIG5vZGUuY2hpbGQyKCkpKQorICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwg
bV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0cik7CisgICAgZWxzZSBpZiAoc2hv
dWxkU3BlY3VsYXRlQXJyYXkobm9kZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIoKSkpCisgICAgICAg
IGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlW
UHRyKTsKKyAgICBlbHNlIGlmICghc2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUuY2hpbGQxKCkp
ICYmICFzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS5jaGlsZDIoKSkpCiAgICAgICAgIG5vblNw
ZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlKG5vZGUsIGNvbmRpdGlvbiwgb3BlcmF0aW9uKTsK
LSAgICBlbHNlIHsKKyAgICBlbHNlIGlmICgoc2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUuY2hp
bGQxKCkpIHx8IHNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLmNoaWxkMigpKSkgJiYgIXNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIobm9kZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIoKSkpIHsKKyAgICAg
ICAgLy8gTm9ybWFsIGNhc2UsIG5vdCBmdXNlZCB0byBicmFuY2guCisgICAgICAgIFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbTMyKFZhbHVlVHJ1ZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHRydWVDYXNlID0gbV9qaXQuYnJhbmNoRG91YmxlKGRvdWJsZUNvbmRpdGlvbiwgb3Ax
LmZwcigpLCBvcDIuZnByKCkpOworICAgICAgICBtX2ppdC54b3JQdHIoSW1tMzIodHJ1ZSksIHJl
c3VsdC5ncHIoKSk7CisgICAgICAgIHRydWVDYXNlLmxpbmsoJm1faml0KTsKKworICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jv
b2xlYW4pOworICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE5vcm1hbCBjYXNlLCBub3QgZnVzZWQg
dG8gYnJhbmNoLgogICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBu
b2RlLmNoaWxkMigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDk1MTU2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjcsNiArNDI3LDU4
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisgICAgYm9v
bCBzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIHsK
KyAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uOworICAgICAgICBpZiAoaXNKU0NvbnN0
YW50KG5vZGVJbmRleCkpCisgICAgICAgICAgICBwcmVkaWN0aW9uID0gcHJlZGljdGlvbkZyb21W
YWx1ZSh2YWx1ZU9mSlNDb25zdGFudChub2RlSW5kZXgpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcHJlZGljdGlvbiA9IG1faml0LmdyYXBoKCkuZ2V0UHJlZGljdGlvbihtX2ppdC5ncmFw
aCgpW25vZGVJbmRleF0pOworICAgICAgICByZXR1cm4gaXNGaW5hbE9iamVjdFByZWRpY3Rpb24o
cHJlZGljdGlvbik7CisgICAgfQorICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQXJyYXko
Tm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbjsKKyAgICAgICAgaWYgKGlzSlNDb25zdGFudChub2RlSW5kZXgpKQorICAgICAgICAgICAg
cHJlZGljdGlvbiA9IHByZWRpY3Rpb25Gcm9tVmFsdWUodmFsdWVPZkpTQ29uc3RhbnQobm9kZUlu
ZGV4KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByZWRpY3Rpb24gPSBtX2ppdC5ncmFw
aCgpLmdldFByZWRpY3Rpb24obV9qaXQuZ3JhcGgoKVtub2RlSW5kZXhdKTsKKyAgICAgICAgcmV0
dXJuIGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pOworICAgIH0KKyAgICAKKyAgICBib29s
IHNob3VsZFNwZWN1bGF0ZU9iamVjdChOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIHsKKyAgICAg
ICAgTm9kZSYgbm9kZSA9IG1faml0LmdyYXBoKClbbm9kZUluZGV4XTsKKyAgICAgICAgaWYgKG5v
ZGUub3AgPT0gQ29udmVydFRoaXMpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
UHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uOworICAgICAgICBpZiAoaXNKU0NvbnN0YW50KG5vZGVJ
bmRleCkpCisgICAgICAgICAgICBwcmVkaWN0aW9uID0gcHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1
ZU9mSlNDb25zdGFudChub2RlSW5kZXgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJl
ZGljdGlvbiA9IG1faml0LmdyYXBoKCkuZ2V0UHJlZGljdGlvbihtX2ppdC5ncmFwaCgpW25vZGVJ
bmRleF0pOworICAgICAgICByZXR1cm4gaXNPYmplY3RQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwor
ICAgIH0KKyAgICAKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZUNlbGwoTm9kZUluZGV4IG5vZGVJ
bmRleCkKKyAgICB7CisgICAgICAgIGlmIChpc0pTQ29uc3RhbnQobm9kZUluZGV4KSAmJiB2YWx1
ZU9mSlNDb25zdGFudChub2RlSW5kZXgpLmlzQ2VsbCgpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIAorICAgICAgICBOb2RlJiBub2RlID0gbV9qaXQuZ3JhcGgoKVtub2RlSW5k
ZXhdOworCisgICAgICAgIGlmIChpc0NlbGxQcmVkaWN0aW9uKG1faml0LmdyYXBoKCkuZ2V0UHJl
ZGljdGlvbihub2RlKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAg
ICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdp
c3Rlcl07CisgICAgICAgIAorICAgICAgICBpZiAoaW5mby5pc0pTQ2VsbCgpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlSW50ZWdlcihOb2RlSW5kZXggb3AxLCBOb2Rl
SW5kZXggb3AyKQogICAgIHsKICAgICAgICAgcmV0dXJuICEoc2hvdWxkTm90U3BlY3VsYXRlSW50
ZWdlcihvcDEpIHx8IHNob3VsZE5vdFNwZWN1bGF0ZUludGVnZXIob3AyKSkgJiYgKHNob3VsZFNw
ZWN1bGF0ZUludGVnZXIob3AxKSB8fCBzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG9wMikpOwpAQCAt
NDM2LDEwICs0ODgsMjQgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBzaG91bGRT
cGVjdWxhdGVOdW1iZXIob3AxKSAmJiBzaG91bGRTcGVjdWxhdGVOdW1iZXIob3AyKTsKICAgICB9
CisgICAgCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChOb2RlSW5kZXggb3Ax
LCBOb2RlSW5kZXggb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNob3VsZFNwZWN1bGF0ZUZp
bmFsT2JqZWN0KG9wMSkgJiYgc2hvdWxkU3BlY3VsYXRlT2JqZWN0KG9wMikKKyAgICAgICAgICAg
IHx8IHNob3VsZFNwZWN1bGF0ZU9iamVjdChvcDEpICYmIHNob3VsZFNwZWN1bGF0ZUZpbmFsT2Jq
ZWN0KG9wMik7CisgICAgfQogCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVBcnJheShOb2RlSW5k
ZXggb3AxLCBOb2RlSW5kZXggb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNob3VsZFNwZWN1
bGF0ZUFycmF5KG9wMSkgJiYgc2hvdWxkU3BlY3VsYXRlT2JqZWN0KG9wMikKKyAgICAgICAgICAg
IHx8IHNob3VsZFNwZWN1bGF0ZU9iamVjdChvcDEpICYmIHNob3VsZFNwZWN1bGF0ZUFycmF5KG9w
Mik7CisgICAgfQorICAgIAogICAgIGJvb2wgY29tcGFyZShOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6
OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFpf
REZHT3BlcmF0aW9uX0VKSik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnRlZ2VyQnJhbmNo
KE5vZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRDb21waWxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7Ci0gICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2goTm9kZSYs
IE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24s
IFpfREZHT3BlcmF0aW9uX0VKSik7CisgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFu
Y2goTm9kZSYsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIEpJVENvbXBpbGVyOjpEb3VibGVD
b25kaXRpb24pOworICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSYs
IE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIHZvaWQqIHZwdHIpOworICAgIHZvaWQgY29tcGls
ZU9iamVjdEVxdWFsaXR5KE5vZGUmLCB2b2lkKiB2cHRyKTsKICAgICAKICAgICBKSVRDb21waWxl
cjo6SnVtcCBjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgdG1wKTsKIAo=
</data>
<flag name="review"
          id="104155"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>