<?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>65334</bug_id>
          
          <creation_ts>2011-07-28 12:15:26 -0700</creation_ts>
          <short_desc>DFG JIT does not have any way of undoing double speculation</short_desc>
          <delta_ts>2011-07-29 15:40:21 -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>443603</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-28 12:15:26 -0700</bug_when>
    <thetext>The DFG JIT may speculate that a value is double if it has no evidence that it is an integer, but it has evidence that it should be a number.  But doing so means that integers will turn into doubles.  Doubles are less efficient than integers in certain cases, such as for performing GetByVal accesses.  The DFG JIT should have some way of undoing double speculation when jumping to non-speculative code - that is, attempting to convert doubles back to integers so as to prevent the non-speculative code does not have to take even deeper slow paths when doing array accesses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443605</commentid>
    <comment_count>1</comment_count>
      <attachid>102284</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-28 12:19:26 -0700</bug_when>
    <thetext>Created attachment 102284
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444146</commentid>
    <comment_count>2</comment_count>
      <attachid>102284</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 15:40:17 -0700</bug_when>
    <thetext>Comment on attachment 102284
the patch

Clearing flags on attachment: 102284

Committed r92024: &lt;http://trac.webkit.org/changeset/92024&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444147</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 15:40:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102284</attachid>
            <date>2011-07-28 12:19:26 -0700</date>
            <delta_ts>2011-07-29 15:40:16 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>undodouble_patch_1.diff</filename>
            <type>text/plain</type>
            <size>13625</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE5NDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTEtMDctMjggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGRvZXMgbm90IGhhdmUgYW55IHdheSBvZiB1bmRvaW5nIGRvdWJsZSBzcGVjdWxhdGlv
bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MzM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBUaGlzIGFkZHMgY29kZSB0byBkbyBhIGJyYW5jaENvbnZlcnREb3VibGVUb0ludCBvbiBzcGVj
dWFsdGlvbiBmYWlsdXJlLgorICAgICAgICBUaGlzIGlzIHBlcmZvcm1hbmNlLW5ldXRyYWwgb24g
bW9zdCBiZW5jaG1hcmtzIGJ1dCBkb2VzIHJlc3VsdCBpbgorICAgICAgICBhIHNsaWdodCBpbXBy
b3ZlbWVudCBpbiBLcmFrZW4uCisKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdlbmVyYWxpemVkUmVnaXN0ZXI6Om1vdmVUbyk6CisgICAgICAg
IChKU0M6OkRGRzo6R2VuZXJhbGl6ZWRSZWdpc3Rlcjo6c3dhcFdpdGgpOgorICAgICAgICAoSlND
OjpERkc6OlNodWZmbGVkUmVnaXN0ZXI6OmhhbmRsZU5vbkN5Y2xpbmdQZXJtdXRhdGlvbik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U2h1ZmZsZWRSZWdpc3Rlcjo6aGFuZGxlQ3ljbGluZ1Blcm11dGF0
aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6anVtcEZyb21TcGVjdWxhdGl2
ZVRvTm9uU3BlY3VsYXRpdmUpOgorCiAyMDExLTA3LTI4ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJh
cnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjUzMjUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHZvaWQgbW92
ZVRvKEdlbmVyYWxpemVkUmVnaXN0ZXImIG90aGVyLCBEYXRhRm9ybWF0IG15RGF0YUZvcm1hdCwg
RGF0YUZvcm1hdCBvdGhlckRhdGFGb3JtYXQsIEpJVENvbXBpbGVyJiBqaXQpCisgICAgdm9pZCBt
b3ZlVG8oR2VuZXJhbGl6ZWRSZWdpc3RlciYgb3RoZXIsIERhdGFGb3JtYXQgbXlEYXRhRm9ybWF0
LCBEYXRhRm9ybWF0IG90aGVyRGF0YUZvcm1hdCwgSklUQ29tcGlsZXImIGppdCwgRlBSUmVnIHNj
cmF0Y2hGUFIpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoaXNGUFIoKSkpIHsKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShvdGhlci5pc0ZQUigpKSkgewpAQCAtMTg2LDggKzE4NiwyMiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lOworICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAoc2NyYXRjaEZQUiAhPSBJbnZhbGlkRlBSUmVnKSB7CisgICAgICAg
ICAgICAgICAgLy8gd2UgaGF2ZSBhIHNjcmF0Y2ggRlBSLCBzbyBhdHRlbXB0IGEgY29udmVyc2lv
biB0byBpbnQKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgbm90SW50Owor
ICAgICAgICAgICAgICAgIGppdC5icmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihmcHIoKSwgb3Ro
ZXIuZ3ByKCksIG5vdEludCwgc2NyYXRjaEZQUik7CisgICAgICAgICAgICAgICAgaml0Lm9yUHRy
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwgb3RoZXIuZ3ByKCkpOworICAgICAgICAg
ICAgICAgIGRvbmUgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgIG5vdEludC5saW5rKCZq
aXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBqaXQubW92ZURv
dWJsZVRvUHRyKGZwcigpLCBvdGhlci5ncHIoKSk7CiAgICAgICAgICAgICBqaXQuc3ViUHRyKEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwgb3RoZXIuZ3ByKCkpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQorICAgICAgICAgICAgICAgIGRvbmUubGlu
aygmaml0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIy
OSw5ICsyNDMsMjIgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBqaXQubW92
ZShvdGhlci5ncHIoKSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGRvbmU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY3Jh
dGNoRlBSICE9IEludmFsaWRGUFJSZWcpIHsKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
SnVtcExpc3Qgbm90SW50OworICAgICAgICAgICAgICAgIGppdC5icmFuY2hDb252ZXJ0RG91Ymxl
VG9JbnQzMihmcHIoKSwgb3RoZXIuZ3ByKCksIG5vdEludCwgc2NyYXRjaEZQUik7CisgICAgICAg
ICAgICAgICAgaml0Lm9yUHRyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwgb3RoZXIu
Z3ByKCkpOworICAgICAgICAgICAgICAgIGRvbmUgPSBqaXQuanVtcCgpOworICAgICAgICAgICAg
ICAgIG5vdEludC5saW5rKCZqaXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAg
ICAgICAgICBqaXQubW92ZURvdWJsZVRvUHRyKGZwcigpLCBvdGhlci5ncHIoKSk7CiAgICAgICAg
ICAgICBqaXQuc3ViUHRyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwgb3RoZXIuZ3By
KCkpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQorICAgICAg
ICAgICAgICAgIGRvbmUubGluaygmaml0KTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgaml0
LmFkZFB0cihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHNjcmF0Y2hHUFIpOwogICAg
ICAgICAgICAgaml0Lm1vdmVQdHJUb0RvdWJsZShzY3JhdGNoR1BSLCBmcHIoKSk7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0yOTAsMjIgKzMxNywzMCBAQCBzdHJ1Y3QgU2h1ZmZsZWRSZWdpc3Rl
ciB7CiAgICAgICAgIHJldHVybiBoYXNUbyAmJiAhaGFzRnJvbTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBoYW5kbGVOb25DeWNsaW5nUGVybXV0YXRpb24oY29uc3QgU3BlY3VsYXRpb25DaGVjayYg
Y2hlY2ssIGNvbnN0IEVudHJ5TG9jYXRpb24mIGVudHJ5LCBKSVRDb21waWxlciYgaml0LCBGUFJS
ZWcmIHNjcmF0Y2hGUFIpCisgICAgdm9pZCBoYW5kbGVOb25DeWNsaW5nUGVybXV0YXRpb24oY29u
c3QgU3BlY3VsYXRpb25DaGVjayYgY2hlY2ssIGNvbnN0IEVudHJ5TG9jYXRpb24mIGVudHJ5LCBK
SVRDb21waWxlciYgaml0LCBGUFJSZWcmIHNjcmF0Y2hGUFIxLCBGUFJSZWcmIHNjcmF0Y2hGUFIy
KQogICAgIHsKICAgICAgICAgU2h1ZmZsZWRSZWdpc3RlciogY3VyID0gdGhpczsKICAgICAgICAg
d2hpbGUgKGN1ci0+cHJldmlvdXMpIHsKLSAgICAgICAgICAgIGN1ci0+cHJldmlvdXMtPnJlZy5t
b3ZlVG8oY3VyLT5yZWcsIGN1ci0+cHJldmlvdXMtPnJlZy5wcmV2aW91c0RhdGFGb3JtYXQoY2hl
Y2spLCBjdXItPnJlZy5uZXh0RGF0YUZvcm1hdChlbnRyeSksIGppdCk7CisgICAgICAgICAgICBj
dXItPnByZXZpb3VzLT5yZWcubW92ZVRvKGN1ci0+cmVnLCBjdXItPnByZXZpb3VzLT5yZWcucHJl
dmlvdXNEYXRhRm9ybWF0KGNoZWNrKSwgY3VyLT5yZWcubmV4dERhdGFGb3JtYXQoZW50cnkpLCBq
aXQsIHNjcmF0Y2hGUFIxKTsKICAgICAgICAgICAgIGN1ci0+aGFuZGxlZCA9IHRydWU7Ci0gICAg
ICAgICAgICBpZiAoY3VyLT5yZWcuaXNGUFIoKSkKLSAgICAgICAgICAgICAgICBzY3JhdGNoRlBS
ID0gY3VyLT5yZWcuZnByKCk7CisgICAgICAgICAgICBpZiAoY3VyLT5yZWcuaXNGUFIoKSkgewor
ICAgICAgICAgICAgICAgIGlmIChzY3JhdGNoRlBSMSA9PSBJbnZhbGlkRlBSUmVnKQorICAgICAg
ICAgICAgICAgICAgICBzY3JhdGNoRlBSMSA9IGN1ci0+cmVnLmZwcigpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc2NyYXRjaEZQUjIgPSBjdXItPnJlZy5mcHIo
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGN1ciA9IGN1ci0+cHJldmlvdXM7CiAgICAg
ICAgIH0KICAgICAgICAgY3VyLT5oYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKGN1ci0+cmVn
LmlzRlBSKCkpCi0gICAgICAgICAgICBzY3JhdGNoRlBSID0gY3VyLT5yZWcuZnByKCk7CisgICAg
ICAgIGlmIChjdXItPnJlZy5pc0ZQUigpKSB7CisgICAgICAgICAgICBpZiAoc2NyYXRjaEZQUjEg
PT0gSW52YWxpZEZQUlJlZykKKyAgICAgICAgICAgICAgICBzY3JhdGNoRlBSMSA9IGN1ci0+cmVn
LmZwcigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNjcmF0Y2hGUFIyID0g
Y3VyLT5yZWcuZnByKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBoYW5kbGVD
eWNsaW5nUGVybXV0YXRpb24oY29uc3QgU3BlY3VsYXRpb25DaGVjayYgY2hlY2ssIGNvbnN0IEVu
dHJ5TG9jYXRpb24mIGVudHJ5LCBKSVRDb21waWxlciYgaml0LCBHUFJSZWcgc2NyYXRjaEdQUiwg
RlBSUmVnIHNjcmF0Y2hGUFIpCisgICAgdm9pZCBoYW5kbGVDeWNsaW5nUGVybXV0YXRpb24oY29u
c3QgU3BlY3VsYXRpb25DaGVjayYgY2hlY2ssIGNvbnN0IEVudHJ5TG9jYXRpb24mIGVudHJ5LCBK
SVRDb21waWxlciYgaml0LCBHUFJSZWcgc2NyYXRjaEdQUiwgRlBSUmVnIHNjcmF0Y2hGUFIxLCBG
UFJSZWcgc2NyYXRjaEZQUjIpCiAgICAgewogICAgICAgICAvLyBmaXJzdCBkZXRlcm1pbmUgdGhl
IGN5Y2xlIGxlbmd0aAogICAgICAgICAKQEAgLTMzMywzOCArMzY4LDM4IEBAIHN0cnVjdCBTaHVm
ZmxlZFJlZ2lzdGVyIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgMjoKLSAgICAgICAgICAgIHJlZy5zd2FwV2l0aChwcmV2aW91cy0+cmVnLCByZWcucHJl
dmlvdXNEYXRhRm9ybWF0KGNoZWNrKSwgcmVnLm5leHREYXRhRm9ybWF0KGVudHJ5KSwgcHJldmlv
dXMtPnJlZy5wcmV2aW91c0RhdGFGb3JtYXQoY2hlY2spLCBwcmV2aW91cy0+cmVnLm5leHREYXRh
Rm9ybWF0KGVudHJ5KSwgaml0LCBzY3JhdGNoR1BSLCBzY3JhdGNoRlBSKTsKKyAgICAgICAgICAg
IHJlZy5zd2FwV2l0aChwcmV2aW91cy0+cmVnLCByZWcucHJldmlvdXNEYXRhRm9ybWF0KGNoZWNr
KSwgcmVnLm5leHREYXRhRm9ybWF0KGVudHJ5KSwgcHJldmlvdXMtPnJlZy5wcmV2aW91c0RhdGFG
b3JtYXQoY2hlY2spLCBwcmV2aW91cy0+cmVnLm5leHREYXRhRm9ybWF0KGVudHJ5KSwgaml0LCBz
Y3JhdGNoR1BSLCBzY3JhdGNoRlBSMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgR2VuZXJhbGl6ZWRSZWdpc3RlciBzY3Jh
dGNoOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHJlZy5pc0ZQUigpICYmIG5leHQtPnJlZy5p
c0ZQUigpKSkgewotICAgICAgICAgICAgICAgIGlmIChzY3JhdGNoRlBSID09IEludmFsaWRGUFJS
ZWcpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2NyYXRjaEZQUjIgPT0gSW52YWxpZEZQUlJlZykg
ewogICAgICAgICAgICAgICAgICAgICBzY3JhdGNoID0gR2VuZXJhbGl6ZWRSZWdpc3Rlcjo6Y3Jl
YXRlR1BSKHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgICAgICAgICByZWcubW92ZVRvKHNjcmF0
Y2gsIERhdGFGb3JtYXREb3VibGUsIERhdGFGb3JtYXRKU0RvdWJsZSwgaml0KTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVnLm1vdmVUbyhzY3JhdGNoLCBEYXRhRm9ybWF0RG91YmxlLCBEYXRhRm9y
bWF0SlNEb3VibGUsIGppdCwgc2NyYXRjaEZQUjEpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIHNjcmF0Y2ggPSBHZW5lcmFsaXplZFJlZ2lzdGVyOjpjcmVh
dGVGUFIoc2NyYXRjaEZQUik7Ci0gICAgICAgICAgICAgICAgICAgIHJlZy5tb3ZlVG8oc2NyYXRj
aCwgRGF0YUZvcm1hdERvdWJsZSwgRGF0YUZvcm1hdERvdWJsZSwgaml0KTsKKyAgICAgICAgICAg
ICAgICAgICAgc2NyYXRjaCA9IEdlbmVyYWxpemVkUmVnaXN0ZXI6OmNyZWF0ZUZQUihzY3JhdGNo
RlBSMik7CisgICAgICAgICAgICAgICAgICAgIHJlZy5tb3ZlVG8oc2NyYXRjaCwgRGF0YUZvcm1h
dERvdWJsZSwgRGF0YUZvcm1hdERvdWJsZSwgaml0LCBzY3JhdGNoRlBSMSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBzY3JhdGNoID0g
R2VuZXJhbGl6ZWRSZWdpc3Rlcjo6Y3JlYXRlR1BSKHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAg
ICAgIHJlZy5tb3ZlVG8oc2NyYXRjaCwgcmVnLnByZXZpb3VzRGF0YUZvcm1hdChjaGVjayksIG5l
eHQtPnJlZy5uZXh0RGF0YUZvcm1hdChlbnRyeSksIGppdCk7CisgICAgICAgICAgICAgICAgcmVn
Lm1vdmVUbyhzY3JhdGNoLCByZWcucHJldmlvdXNEYXRhRm9ybWF0KGNoZWNrKSwgbmV4dC0+cmVn
Lm5leHREYXRhRm9ybWF0KGVudHJ5KSwgaml0LCBzY3JhdGNoRlBSMSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGN1ciA9IHRoaXM7CiAgICAgICAgICAgICB3aGls
ZSAoY3VyLT5wcmV2aW91cyAhPSB0aGlzKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGN1cik7
Ci0gICAgICAgICAgICAgICAgY3VyLT5wcmV2aW91cy0+cmVnLm1vdmVUbyhjdXItPnJlZywgY3Vy
LT5wcmV2aW91cy0+cmVnLnByZXZpb3VzRGF0YUZvcm1hdChjaGVjayksIGN1ci0+cmVnLm5leHRE
YXRhRm9ybWF0KGVudHJ5KSwgaml0KTsKKyAgICAgICAgICAgICAgICBjdXItPnByZXZpb3VzLT5y
ZWcubW92ZVRvKGN1ci0+cmVnLCBjdXItPnByZXZpb3VzLT5yZWcucHJldmlvdXNEYXRhRm9ybWF0
KGNoZWNrKSwgY3VyLT5yZWcubmV4dERhdGFGb3JtYXQoZW50cnkpLCBqaXQsIHNjcmF0Y2hGUFIx
KTsKICAgICAgICAgICAgICAgICBjdXIgPSBjdXItPnByZXZpb3VzOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkocmVnLmlzRlBSKCkgJiYgbmV4
dC0+cmVnLmlzRlBSKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNjcmF0Y2hGUFIgPT0gSW52
YWxpZEZQUlJlZykKLSAgICAgICAgICAgICAgICAgICAgc2NyYXRjaC5tb3ZlVG8obmV4dC0+cmVn
LCBEYXRhRm9ybWF0SlNEb3VibGUsIERhdGFGb3JtYXREb3VibGUsIGppdCk7CisgICAgICAgICAg
ICAgICAgaWYgKHNjcmF0Y2hGUFIyID09IEludmFsaWRGUFJSZWcpCisgICAgICAgICAgICAgICAg
ICAgIHNjcmF0Y2gubW92ZVRvKG5leHQtPnJlZywgRGF0YUZvcm1hdEpTRG91YmxlLCBEYXRhRm9y
bWF0RG91YmxlLCBqaXQsIHNjcmF0Y2hGUFIxKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHNjcmF0Y2gubW92ZVRvKG5leHQtPnJlZywgRGF0YUZvcm1hdERvdWJs
ZSwgRGF0YUZvcm1hdERvdWJsZSwgaml0KTsKKyAgICAgICAgICAgICAgICAgICAgc2NyYXRjaC5t
b3ZlVG8obmV4dC0+cmVnLCBEYXRhRm9ybWF0RG91YmxlLCBEYXRhRm9ybWF0RG91YmxlLCBqaXQs
IHNjcmF0Y2hGUFIxKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNjcmF0
Y2gubW92ZVRvKG5leHQtPnJlZywgbmV4dC0+cmVnLm5leHREYXRhRm9ybWF0KGVudHJ5KSwgbmV4
dC0+cmVnLm5leHREYXRhRm9ybWF0KGVudHJ5KSwgaml0KTsKKyAgICAgICAgICAgICAgICBzY3Jh
dGNoLm1vdmVUbyhuZXh0LT5yZWcsIG5leHQtPnJlZy5uZXh0RGF0YUZvcm1hdChlbnRyeSksIG5l
eHQtPnJlZy5uZXh0RGF0YUZvcm1hdChlbnRyeSksIGppdCwgc2NyYXRjaEZQUjEpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzAsMzMgKzUwNSw0MSBAQCB2b2lk
IEpJVENvbXBpbGVyOjpqdW1wRnJvbVNwZWN1bGF0aXZlVG9OCiAgICAgLy8gdGhhdCBub2RlIGlz
IGluLgogICAgIAogICAgIGNoZWNrTm9kZVRvUmVnaXN0ZXJNYXAuY2xlYXIoKTsKLSAgICAKLSAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVyczsgKytpbmRleCkgewotICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gY2hlY2subV9n
cHJJbmZvW2luZGV4XS5ub2RlSW5kZXg7Ci0gICAgICAgIGlmIChub2RlSW5kZXggIT0gTm9Ob2Rl
KQotICAgICAgICAgICAgY2hlY2tOb2RlVG9SZWdpc3Rlck1hcC5zZXQobm9kZUluZGV4LCBHZW5l
cmFsaXplZFJlZ2lzdGVyOjpjcmVhdGVHUFIoR1BSSW5mbzo6dG9SZWdpc3RlcihpbmRleCkpKTsK
LSAgICB9Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgRlBSSW5m
bzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraW5kZXgpIHsKLSAgICAgICAgTm9kZUluZGV4IG5vZGVJ
bmRleCA9IGNoZWNrLm1fZnBySW5mb1tpbmRleF0ubm9kZUluZGV4OwotICAgICAgICBpZiAobm9k
ZUluZGV4ICE9IE5vTm9kZSkKLSAgICAgICAgICAgIGNoZWNrTm9kZVRvUmVnaXN0ZXJNYXAuc2V0
KG5vZGVJbmRleCwgR2VuZXJhbGl6ZWRSZWdpc3Rlcjo6Y3JlYXRlRlBSKEZQUkluZm86OnRvUmVn
aXN0ZXIoaW5kZXgpKSk7Ci0gICAgfQotICAgIAogICAgIGVudHJ5Tm9kZVRvUmVnaXN0ZXJNYXAu
Y2xlYXIoKTsKICAgICAKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgRlBSUmVnIHNjcmF0Y2hGUFIxID0gSW52YWxpZEZQUlJlZzsKKyAgICBGUFJSZWcgc2NyYXRj
aEZQUjIgPSBJbnZhbGlkRlBSUmVnOworICAgIGJvb2wgbmVlZFRvUmVzdG9yZVRhZ01hc2tSZWdp
c3RlciA9IGZhbHNlOworICAgIAogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2luZGV4KSB7Ci0gICAgICAgIE5vZGVJbmRl
eCBub2RlSW5kZXggPSBlbnRyeS5tX2dwckluZm9baW5kZXhdLm5vZGVJbmRleDsKLSAgICAgICAg
aWYgKG5vZGVJbmRleCAhPSBOb05vZGUpCi0gICAgICAgICAgICBlbnRyeU5vZGVUb1JlZ2lzdGVy
TWFwLnNldChub2RlSW5kZXgsIEdlbmVyYWxpemVkUmVnaXN0ZXI6OmNyZWF0ZUdQUihHUFJJbmZv
Ojp0b1JlZ2lzdGVyKGluZGV4KSkpOworICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4SW5DaGVj
ayA9IGNoZWNrLm1fZ3BySW5mb1tpbmRleF0ubm9kZUluZGV4OworICAgICAgICBpZiAobm9kZUlu
ZGV4SW5DaGVjayAhPSBOb05vZGUpCisgICAgICAgICAgICBjaGVja05vZGVUb1JlZ2lzdGVyTWFw
LnNldChub2RlSW5kZXhJbkNoZWNrLCBHZW5lcmFsaXplZFJlZ2lzdGVyOjpjcmVhdGVHUFIoR1BS
SW5mbzo6dG9SZWdpc3RlcihpbmRleCkpKTsKKyAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleElu
RW50cnkgPSBlbnRyeS5tX2dwckluZm9baW5kZXhdLm5vZGVJbmRleDsKKyAgICAgICAgaWYgKG5v
ZGVJbmRleEluRW50cnkgIT0gTm9Ob2RlKQorICAgICAgICAgICAgZW50cnlOb2RlVG9SZWdpc3Rl
ck1hcC5zZXQobm9kZUluZGV4SW5FbnRyeSwgR2VuZXJhbGl6ZWRSZWdpc3Rlcjo6Y3JlYXRlR1BS
KEdQUkluZm86OnRvUmVnaXN0ZXIoaW5kZXgpKSk7CisgICAgICAgIGVsc2UgaWYgKG5vZGVJbmRl
eEluQ2hlY2sgPT0gTm9Ob2RlKQorICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnRv
UmVnaXN0ZXIoaW5kZXgpOwogICAgIH0KICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpbmRleCkgewotICAgICAg
ICBOb2RlSW5kZXggbm9kZUluZGV4ID0gZW50cnkubV9mcHJJbmZvW2luZGV4XS5ub2RlSW5kZXg7
Ci0gICAgICAgIGlmIChub2RlSW5kZXggIT0gTm9Ob2RlKQotICAgICAgICAgICAgZW50cnlOb2Rl
VG9SZWdpc3Rlck1hcC5zZXQobm9kZUluZGV4LCBHZW5lcmFsaXplZFJlZ2lzdGVyOjpjcmVhdGVG
UFIoRlBSSW5mbzo6dG9SZWdpc3RlcihpbmRleCkpKTsKKyAgICAgICAgTm9kZUluZGV4IG5vZGVJ
bmRleEluQ2hlY2sgPSBjaGVjay5tX2ZwckluZm9baW5kZXhdLm5vZGVJbmRleDsKKyAgICAgICAg
aWYgKG5vZGVJbmRleEluQ2hlY2sgIT0gTm9Ob2RlKQorICAgICAgICAgICAgY2hlY2tOb2RlVG9S
ZWdpc3Rlck1hcC5zZXQobm9kZUluZGV4SW5DaGVjaywgR2VuZXJhbGl6ZWRSZWdpc3Rlcjo6Y3Jl
YXRlRlBSKEZQUkluZm86OnRvUmVnaXN0ZXIoaW5kZXgpKSk7CisgICAgICAgIE5vZGVJbmRleCBu
b2RlSW5kZXhJbkVudHJ5ID0gZW50cnkubV9mcHJJbmZvW2luZGV4XS5ub2RlSW5kZXg7CisgICAg
ICAgIGlmIChub2RlSW5kZXhJbkVudHJ5ICE9IE5vTm9kZSkKKyAgICAgICAgICAgIGVudHJ5Tm9k
ZVRvUmVnaXN0ZXJNYXAuc2V0KG5vZGVJbmRleEluRW50cnksIEdlbmVyYWxpemVkUmVnaXN0ZXI6
OmNyZWF0ZUZQUihGUFJJbmZvOjp0b1JlZ2lzdGVyKGluZGV4KSkpOworICAgICAgICBlbHNlIGlm
IChub2RlSW5kZXhJbkNoZWNrID09IE5vTm9kZSkgeworICAgICAgICAgICAgaWYgKHNjcmF0Y2hG
UFIxID09IEludmFsaWRGUFJSZWcpCisgICAgICAgICAgICAgICAgc2NyYXRjaEZQUjEgPSBGUFJJ
bmZvOjp0b1JlZ2lzdGVyKGluZGV4KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBzY3JhdGNoRlBSMiA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaW5kZXgpOworICAgICAgICB9CiAg
ICAgfQogICAgIAorICAgIEFTU0VSVCgoc2NyYXRjaEZQUjEgPT0gSW52YWxpZEZQUlJlZyAmJiBz
Y3JhdGNoRlBSMiA9PSBJbnZhbGlkRlBSUmVnKSB8fCAoc2NyYXRjaEZQUjEgIT0gc2NyYXRjaEZQ
UjIpKTsKKyAgICAKICAgICAvLyBIb3cgdGhpcyB3b3JrczoKICAgICAvLyAxKSBTcGlsbCBhbnkg
dmFsdWVzIHRoYXQgYXJlIG5vdCBzcGlsbGVkIG9uIHNwZWN1bGF0aXZlLCBidXQgYXJlIHNwaWxs
ZWQKICAgICAvLyAgICBvbiBub24tc3BlY3VsYXRpdmUuCkBAIC01MDgsMTAgKzU1MSw2IEBAIHZv
aWQgSklUQ29tcGlsZXI6Omp1bXBGcm9tU3BlY3VsYXRpdmVUb04KICAgICAvLyBJZiB3ZSBmaW5k
IHJlZ2lzdGVycyB0aGF0IGNhbiBiZSB1c2VkIGFzIHNjcmF0Y2ggcmVnaXN0ZXJzIGFsb25nIHRo
ZSB3YXksCiAgICAgLy8gc2F2ZSB0aGVtLgogICAgIAotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
SW52YWxpZEdQUlJlZzsKLSAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IEludmFsaWRGUFJSZWc7Ci0g
ICAgYm9vbCBuZWVkVG9SZXN0b3JlVGFnTWFza1JlZ2lzdGVyID0gZmFsc2U7Ci0gICAgCiAgICAg
Ly8gUGFydCAxOiBzcGlsbCBhbnkgdmFsdWVzIHRoYXQgYXJlIG5vdCBzcGlsbGVkIG9uIHNwZWN1
bGF0aXZlLCBidXQgYXJlCiAgICAgLy8gICAgICAgICBzcGlsbGVkIG9uIG5vbi1zcGVjdWxhdGl2
ZS4KICAgICAKQEAgLTU4Miw4ICs2MjEsMTIgQEAgdm9pZCBKSVRDb21waWxlcjo6anVtcEZyb21T
cGVjdWxhdGl2ZVRvTgogICAgICAgICBtb3ZlRG91YmxlVG9QdHIoRlBSSW5mbzo6dG9SZWdpc3Rl
cihpbmRleCksIHNjcmF0Y2hHUFIpOwogICAgICAgICBzdWJQdHIoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3RvcmVQdHIoc2NyYXRjaEdQUiwg
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpKTsKLSAgICAgICAgCi0gICAgICAgIHNjcmF0Y2hG
UFIgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGluZGV4KTsKKworICAgICAgICBpZiAoc2NyYXRjaEZQ
UjEgPT0gSW52YWxpZEZQUlJlZykKKyAgICAgICAgICAgIHNjcmF0Y2hGUFIxID0gRlBSSW5mbzo6
dG9SZWdpc3RlcihpbmRleCk7CisgICAgICAgIGVsc2UgaWYgKHNjcmF0Y2hGUFIyKQorICAgICAg
ICAgICAgc2NyYXRjaEZQUjIgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGluZGV4KTsKKyAgICAgICAg
QVNTRVJUKChzY3JhdGNoRlBSMSA9PSBJbnZhbGlkRlBSUmVnICYmIHNjcmF0Y2hGUFIyID09IElu
dmFsaWRGUFJSZWcpIHx8IChzY3JhdGNoRlBSMSAhPSBzY3JhdGNoRlBSMikpOwogICAgIH0KICAg
ICAKICAgICAvLyBQYXJ0IDI6IEZvciB0aGUgc2V0IG9mIG5vZGVzIHRoYXQgYXJlIGluIHJlZ2lz
dGVycyBvbiBib3RoIHBhdGhzLApAQCAtNTk0LDcgKzYzNyw4IEBAIHZvaWQgSklUQ29tcGlsZXI6
Omp1bXBGcm9tU3BlY3VsYXRpdmVUb04KICAgICAgICAgaWYgKCFyZWcuaXNFbmRPZk5vbkN5Y2xp
bmdQZXJtdXRhdGlvbigpIHx8IHJlZy5oYW5kbGVkIHx8ICghcmVnLmhhc0Zyb20gJiYgIXJlZy5o
YXNUbykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIHJlZy5oYW5k
bGVOb25DeWNsaW5nUGVybXV0YXRpb24oY2hlY2ssIGVudHJ5LCAqdGhpcywgc2NyYXRjaEZQUik7
CisgICAgICAgIHJlZy5oYW5kbGVOb25DeWNsaW5nUGVybXV0YXRpb24oY2hlY2ssIGVudHJ5LCAq
dGhpcywgc2NyYXRjaEZQUjEsIHNjcmF0Y2hGUFIyKTsKKyAgICAgICAgQVNTRVJUKChzY3JhdGNo
RlBSMSA9PSBJbnZhbGlkRlBSUmVnICYmIHNjcmF0Y2hGUFIyID09IEludmFsaWRGUFJSZWcpIHx8
IChzY3JhdGNoRlBSMSAhPSBzY3JhdGNoRlBSMikpOwogICAgIH0KICAgICAKICAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIEZQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2luZGV4KSB7CkBAIC02MDIsNyArNjQ2LDggQEAg
dm9pZCBKSVRDb21waWxlcjo6anVtcEZyb21TcGVjdWxhdGl2ZVRvTgogICAgICAgICBpZiAocmVn
LmhhbmRsZWQgfHwgKCFyZWcuaGFzRnJvbSAmJiAhcmVnLmhhc1RvKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAKLSAgICAgICAgcmVnLmhhbmRsZUN5Y2xpbmdQZXJtdXRhdGlvbihj
aGVjaywgZW50cnksICp0aGlzLCBzY3JhdGNoR1BSLCBzY3JhdGNoRlBSKTsKKyAgICAgICAgcmVn
LmhhbmRsZUN5Y2xpbmdQZXJtdXRhdGlvbihjaGVjaywgZW50cnksICp0aGlzLCBzY3JhdGNoR1BS
LCBzY3JhdGNoRlBSMSwgc2NyYXRjaEZQUjIpOworICAgICAgICBBU1NFUlQoKHNjcmF0Y2hGUFIx
ID09IEludmFsaWRGUFJSZWcgJiYgc2NyYXRjaEZQUjIgPT0gSW52YWxpZEZQUlJlZykgfHwgKHNj
cmF0Y2hGUFIxICE9IHNjcmF0Y2hGUFIyKSk7CiAgICAgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>