<?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>64659</bug_id>
          
          <creation_ts>2011-07-16 16:20:13 -0700</creation_ts>
          <short_desc>DFG JIT does not optimize equal-null comparisons and branches</short_desc>
          <delta_ts>2011-07-18 14:05:07 -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>0</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438200</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-16 16:20:13 -0700</bug_when>
    <thetext>The DFG JIT bytecode parser converts equal-null compare/branch opcodes into a tree of JSConstant(null), an equality comparison, and a branch.  The backend never special-cases the equal-to-null case, and treats it as a normal equality comparison; this means that equal-null always takes slow path.  The DFG JIT backend should have a peephole optimization for this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438552</commentid>
    <comment_count>1</comment_count>
      <attachid>101170</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-18 10:29:42 -0700</bug_when>
    <thetext>Created attachment 101170
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438704</commentid>
    <comment_count>2</comment_count>
      <attachid>101170</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 14:05:03 -0700</bug_when>
    <thetext>Comment on attachment 101170
the patch

Clearing flags on attachment: 101170

Committed r91208: &lt;http://trac.webkit.org/changeset/91208&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438705</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 14:05:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101170</attachid>
            <date>2011-07-18 10:29:42 -0700</date>
            <delta_ts>2011-07-18 14:05:03 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>comparenull_patch_1.diff</filename>
            <type>text/plain</type>
            <size>10308</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTExNzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMTEtMDctMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGRvZXMgbm90IG9wdGltaXplIGVxdWFsLW51bGwgY29tcGFyaXNvbnMgYW5kIGJyYW5j
aGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ2
NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZGVkIGEgcGVlcGhvbGUtYXdhcmUgY29tcGFyZS10by1udWxsIGltcGxlbWVudGF0aW9u
IHRvIEpJVENvZGVHZW5lcmF0b3IsCisgICAgICAgIHdoaWNoIGlzIHVzZWQgYnkgYm90aCB0aGUg
c3BlY3VsYXRpdmUgYW5kIG5vbi1zcGVjdWxhdGl2ZSBKSVQuICBUaHJvdWdoCisgICAgICAgIHRo
ZSB1c2Ugb2YgdGhlIG5ldyBpc051bGxDb25zdGFudCBoZWxwZXIsIHRoZSB0d28gSklUcyBpbnZv
a2UgdGhlCisgICAgICAgIG5vblNwZWN1YWx0aXZlQ29tcGFyZU51bGwoKSBoZWxwZXIgaW5zdGVh
ZCBvZiB0aGVpciByZWd1bGFyIGNvbXBhcmlzb24KKyAgICAgICAgaGVscGVycyB3aGVuIGNvbXBp
bGluZyBDb21wYXJlRXEuICBUaHJvdWdoIHRoZSB1c2Ugb2YgdGhlIG5ldyBpc0tub3duQ2VsbAor
ICAgICAgICBoZWxwZXIsIHRoZSBjb21wYXJlLW51bGwgY29kZSB3aWxsIHNraXAgdGhlIGlzLWEt
Y2VsbCBjaGVjayBpZiB0aGUKKyAgICAgICAgc3BlY3VsYXRpdmUgSklUIGhhZCBiZWVuIHNwZWN1
bGF0aW5nIGNlbGwuCisKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29kZUdlbmVyYXRvcjo6aXNLbm93bkNlbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvZGVHZW5lcmF0b3I6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVD
b21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZUdlbmVyYXRvcjo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGwpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGVH
ZW5lcmF0b3I6Om5vblNwZWN1bGF0aXZlQ29tcGFyZU51bGwpOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZUdlbmVyYXRvcjo6
aXNOdWxsQ29uc3RhbnQpOgorICAgICAgICAqIGRmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwog
MjAxMS0wNy0xNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0VGTF0gUmVmYWN0b3Igc2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCB0
byBmaXggY3Jhc2guCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVH
ZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDkxMTcxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY1
LDYgKzM2NSwyMSBAQCBib29sIEpJVENvZGVHZW5lcmF0b3I6OmlzS25vd25OdW1lcmljKE5vCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEpJVENvZGVHZW5lcmF0b3I6OmlzS25vd25DZWxs
KE5vZGVJbmRleCBub2RlSW5kZXgpCit7CisgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dl
bmVyYXRpb25JbmZvW21faml0LmdyYXBoKClbbm9kZUluZGV4XS52aXJ0dWFsUmVnaXN0ZXIoKV07
CisgICAgCisgICAgRGF0YUZvcm1hdCByZWdpc3RlckZvcm1hdCA9IGluZm8ucmVnaXN0ZXJGb3Jt
YXQoKTsKKyAgICBpZiAocmVnaXN0ZXJGb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUpCisgICAgICAg
IHJldHVybiAocmVnaXN0ZXJGb3JtYXQgfCBEYXRhRm9ybWF0SlMpID09IERhdGFGb3JtYXRKU0Nl
bGw7CisgICAgCisgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQo
KTsKKyAgICBpZiAoc3BpbGxGb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUpCisgICAgICAgIHJldHVy
biAoc3BpbGxGb3JtYXQgfCBEYXRhRm9ybWF0SlMpID09IERhdGFGb3JtYXRKU0NlbGw7CisgICAg
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEpJVENvZGVHZW5lcmF0b3I6OmlzS25vd25O
b3RJbnRlZ2VyKE5vZGVJbmRleCBub2RlSW5kZXgpCiB7CiAgICAgTm9kZSYgbm9kZSA9IG1faml0
LmdyYXBoKClbbm9kZUluZGV4XTsKQEAgLTUxOSw2ICs1MzQsOTkgQEAgdm9pZCBKSVRDb2RlR2Vu
ZXJhdG9yOjpjYWNoZWRHZXRNZXRob2QoRwogICAgIG1faml0LmFkZE1ldGhvZEdldChzbG93Q2Fs
bCwgc3RydWN0VG9Db21wYXJlLCBwcm90b09iaiwgcHJvdG9TdHJ1Y3RUb0NvbXBhcmUsIHB1dEZ1
bmN0aW9uKTsKIH0KIAordm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpub25TcGVjdWxhdGl2ZU5vblBl
ZXBob2xlQ29tcGFyZU51bGwoTm9kZUluZGV4IG9wZXJhbmQsIGJvb2wgaW52ZXJ0KQoreworICAg
IEpTVmFsdWVPcGVyYW5kIGFyZyh0aGlzLCBvcGVyYW5kKTsKKyAgICBHUFJSZWcgYXJnR1BSID0g
YXJnLmdwcigpOworICAgIAorICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgYXJnKTsKKyAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIAorICAgIEpJVENvbXBpbGVy
OjpKdW1wIG5vdENlbGw7CisgICAgCisgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kKSkKKyAg
ICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIGFyZ0dQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAKKyAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlc3VsdEdQUik7CisgICAgbV9qaXQudGVzdDgoaW52ZXJ0ID8gSklUQ29tcGlsZXI6
Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIHJlc3VsdEdQUik7CisgICAgCisgICAg
aWYgKCFpc0tub3duQ2VsbChvcGVyYW5kKSkgeworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBk
b25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAKKyAgICAgICAgbm90Q2VsbC5saW5rKCZtX2pp
dCk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5tb3ZlKGFyZ0dQUiwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgbV9qaXQuYW5kUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVm
aW5lZCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmNvbXBhcmVQdHIoaW52ZXJ0ID8gSklU
Q29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpUcnVzdGVkSW1tMzIoVmFsdWVOdWxsKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgCisg
ICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgIH0KKyAgICAKKyAgICBtX2ppdC5vcjMyKFRy
dXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworfQorCit2b2lkIEpJVENvZGVHZW5lcmF0b3I6Om5v
blNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKE5vZGVJbmRleCBvcGVyYW5kLCBOb2RlSW5k
ZXggYnJhbmNoTm9kZUluZGV4LCBib29sIGludmVydCkKK3sKKyAgICBOb2RlJiBicmFuY2hOb2Rl
ID0gbV9qaXQuZ3JhcGgoKVticmFuY2hOb2RlSW5kZXhdOworICAgIEJsb2NrSW5kZXggdGFrZW4g
PSBtX2ppdC5ncmFwaCgpLmJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChicmFuY2hOb2RlLnRh
a2VuQnl0ZWNvZGVPZmZzZXQoKSk7CisgICAgQmxvY2tJbmRleCBub3RUYWtlbiA9IG1faml0Lmdy
YXBoKCkuYmxvY2tJbmRleEZvckJ5dGVjb2RlT2Zmc2V0KGJyYW5jaE5vZGUubm90VGFrZW5CeXRl
Y29kZU9mZnNldCgpKTsKKyAgICAKKyAgICBpZiAodGFrZW4gPT0gKG1fYmxvY2sgKyAxKSkgewor
ICAgICAgICBpbnZlcnQgPSAhaW52ZXJ0OworICAgICAgICBCbG9ja0luZGV4IHRtcCA9IHRha2Vu
OworICAgICAgICB0YWtlbiA9IG5vdFRha2VuOworICAgICAgICBub3RUYWtlbiA9IHRtcDsKKyAg
ICB9CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcodGhpcywgb3BlcmFuZCk7CisgICAgR1BSUmVn
IGFyZ0dQUiA9IGFyZy5ncHIoKTsKKyAgICAKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IGFyZyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RDZWxsOworICAgIAorICAgIGlmICghaXNLbm93bkNlbGwob3Bl
cmFuZCkpCisgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCBhcmdHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgCisg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOworICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hU
ZXN0OChpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCBK
SVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KSksIHRha2VuKTsKKyAgICAKKyAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQpKSB7CisgICAg
ICAgIGFkZEJyYW5jaChtX2ppdC5qdW1wKCksIG5vdFRha2VuKTsKKyAgICAgICAgCisgICAgICAg
IG5vdENlbGwubGluaygmbV9qaXQpOworICAgICAgICAKKyAgICAgICAgbV9qaXQubW92ZShhcmdH
UFIsIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6VHJ1c3Rl
ZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZXN1bHRHUFIpOworICAgICAgICBhZGRCcmFuY2go
bV9qaXQuYnJhbmNoUHRyKGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RFcXVhbCA6IEpJVENvbXBp
bGVyOjpFcXVhbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihWYWx1ZU51bGwpKSksIHRha2VuKTsKKyAgICB9CisgICAgCisgICAg
aWYgKG5vdFRha2VuICE9IChtX2Jsb2NrICsgMSkpCisgICAgICAgIGFkZEJyYW5jaChtX2ppdC5q
dW1wKCksIG5vdFRha2VuKTsKK30KKworYm9vbCBKSVRDb2RlR2VuZXJhdG9yOjpub25TcGVjdWxh
dGl2ZUNvbXBhcmVOdWxsKE5vZGUmIG5vZGUsIE5vZGVJbmRleCBvcGVyYW5kLCBib29sIGludmVy
dCkKK3sKKyAgICBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4ID0gZGV0ZWN0UGVlcEhvbGVCcmFu
Y2goKTsKKyAgICBpZiAoYnJhbmNoTm9kZUluZGV4ICE9IE5vTm9kZSkgeworICAgICAgICBBU1NF
UlQobm9kZS5hZGp1c3RlZFJlZkNvdW50KCkgPT0gMSk7CisgICAgICAgIAorICAgICAgICBub25T
cGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbChvcGVyYW5kLCBicmFuY2hOb2RlSW5kZXgsIGlu
dmVydCk7CisgICAgCisgICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgdXNlKG5v
ZGUuY2hpbGQyKCkpOworICAgICAgICBtX2NvbXBpbGVJbmRleCA9IGJyYW5jaE5vZGVJbmRleDsK
KyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBub25TcGVj
dWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwob3BlcmFuZCwgaW52ZXJ0KTsKKyAgICAKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6bm9uU3BlY3VsYXRp
dmVQZWVwaG9sZUJyYW5jaChOb2RlJiBub2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBaX0RGR09wZXJhdGlvbl9F
SkogaGVscGVyRnVuY3Rpb24pCiB7CiAgICAgTm9kZSYgYnJhbmNoTm9kZSA9IG1faml0LmdyYXBo
KClbYnJhbmNoTm9kZUluZGV4XTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA5MTE3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MTQsNiArNDE0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBpc0tub3duSW50ZWdlcihOb2Rl
SW5kZXgpOwogICAgIGJvb2wgaXNLbm93bk51bWVyaWMoTm9kZUluZGV4KTsKKyAgICBib29sIGlz
S25vd25DZWxsKE5vZGVJbmRleCk7CiAgICAgCiAgICAgYm9vbCBpc0tub3duTm90SW50ZWdlcihO
b2RlSW5kZXgpOwogCkBAIC00MjUsNiArNDI2LDEyIEBAIHByb3RlY3RlZDoKICAgICBpbnQzMl90
IHZhbHVlT2ZJbnQzMkNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0dXJuIG1faml0
LnZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGVJbmRleCk7IH0KICAgICBkb3VibGUgdmFsdWVPZkRv
dWJsZUNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0dXJuIG1faml0LnZhbHVlT2ZE
b3VibGVDb25zdGFudChub2RlSW5kZXgpOyB9CiAgICAgSlNWYWx1ZSB2YWx1ZU9mSlNDb25zdGFu
dChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBtX2ppdC52YWx1ZU9mSlNDb25zdGFudChu
b2RlSW5kZXgpOyB9CisgICAgYm9vbCBpc051bGxDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4
KQorICAgIHsKKyAgICAgICAgaWYgKCFpc0NvbnN0YW50KG5vZGVJbmRleCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB2YWx1ZU9mSlNDb25zdGFudChub2RlSW5k
ZXgpLmlzTnVsbCgpOworICAgIH0KIAogICAgIElkZW50aWZpZXIqIGlkZW50aWZpZXIodW5zaWdu
ZWQgaW5kZXgpCiAgICAgewpAQCAtNTU2LDYgKzU2MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBjYWNoZWRQdXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIsIEdQUlJlZyBz
Y3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogICAgIHZvaWQg
Y2FjaGVkR2V0TWV0aG9kKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJ
VENvbXBpbGVyOjpKdW1wKCkpOwogICAgIAorICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVOb25QZWVw
aG9sZUNvbXBhcmVOdWxsKE5vZGVJbmRleCBvcGVyYW5kLCBib29sIGludmVydCA9IGZhbHNlKTsK
KyAgICB2b2lkIG5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKE5vZGVJbmRleCBvcGVy
YW5kLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBib29sIGludmVydCA9IGZhbHNlKTsKKyAg
ICBib29sIG5vblNwZWN1bGF0aXZlQ29tcGFyZU51bGwoTm9kZSYsIE5vZGVJbmRleCBvcGVyYW5k
LCBib29sIGludmVydCA9IGZhbHNlKTsKKyAgICAKICAgICB2b2lkIG5vblNwZWN1bGF0aXZlUGVl
cGhvbGVCcmFuY2goTm9kZSYsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIE1hY3JvQXNzZW1i
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBaX0RGR09wZXJhdGlvbl9FSkogaGVscGVyRnVuY3Rp
b24pOwogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmUoTm9kZSYsIE1h
Y3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBaX0RGR09wZXJhdGlvbl9FSkogaGVs
cGVyRnVuY3Rpb24pOwogICAgIGJvb2wgbm9uU3BlY3VsYXRpdmVDb21wYXJlKE5vZGUmLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiwgWl9ERkdPcGVyYXRpb25fRUpKIGhlbHBl
ckZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9uU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiA5MTE3MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NzMsNiArNjczLDE2IEBAIHZvaWQgTm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoU3BlY3VsYXQK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgQ29tcGFyZUVxOgorICAgICAgICBp
ZiAoaXNOdWxsQ29uc3RhbnQobm9kZS5jaGlsZDEoKSkpIHsKKyAgICAgICAgICAgIGlmIChub25T
cGVjdWxhdGl2ZUNvbXBhcmVOdWxsKG5vZGUsIG5vZGUuY2hpbGQyKCkpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChp
c051bGxDb25zdGFudChub2RlLmNoaWxkMigpKSkgeworICAgICAgICAgICAgaWYgKG5vblNwZWN1
bGF0aXZlQ29tcGFyZU51bGwobm9kZSwgbm9kZS5jaGlsZDEoKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgaWYgKG5vblNw
ZWN1bGF0aXZlQ29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG9wZXJhdGlvbkNv
bXBhcmVFcSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlz
aW9uIDkxMTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2Nyw2ICs3NjcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ29t
cGFyZUVxOgorICAgICAgICBpZiAoaXNOdWxsQ29uc3RhbnQobm9kZS5jaGlsZDEoKSkpIHsKKyAg
ICAgICAgICAgIGlmIChub25TcGVjdWxhdGl2ZUNvbXBhcmVOdWxsKG5vZGUsIG5vZGUuY2hpbGQy
KCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGlmIChpc051bGxDb25zdGFudChub2RlLmNoaWxkMigpKSkgeworICAgICAg
ICAgICAgaWYgKG5vblNwZWN1bGF0aXZlQ29tcGFyZU51bGwobm9kZSwgbm9kZS5jaGlsZDEoKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgaWYgKGNvbXBhcmUobm9kZSwgSklUQ29tcGlsZXI6OkVxdWFsLCBvcGVyYXRpb25D
b21wYXJlRXEpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBicmVhazsK
</data>

          </attachment>
      

    </bug>

</bugzilla>