<?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>20993</bug_id>
          
          <creation_ts>2008-09-22 09:15:02 -0700</creation_ts>
          <short_desc>Array.push/pop need optimized cases for JSArray</short_desc>
          <delta_ts>2008-09-22 14:05:17 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92133</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-22 09:15:02 -0700</bug_when>
    <thetext>The deltablue benchmark uses Array.push/pop a lot, and we need faster versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92134</commentid>
    <comment_count>1</comment_count>
      <attachid>23652</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-22 09:15:38 -0700</bug_when>
    <thetext>Created attachment 23652
work in progress

Seems to be correct and fast on deltablue, but slows down SunSpider for some reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92172</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-22 13:01:12 -0700</bug_when>
    <thetext>Maciej tested it and said that it didn&apos;t slow SunSpider down for him. Hooray!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92189</commentid>
    <comment_count>3</comment_count>
      <attachid>23666</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-22 13:51:47 -0700</bug_when>
    <thetext>Created attachment 23666
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92195</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-22 14:05:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/36778</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23652</attachid>
            <date>2008-09-22 09:15:38 -0700</date>
            <delta_ts>2008-09-22 13:51:47 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>ArrayPushPopPatch.txt</filename>
            <type>text/plain</type>
            <size>5626</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMzY3NTIp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTEsNiArMjkxLDkgQEAgSlNWYWx1ZSogYXJyYXlQcm90b0Z1bmNDb25jYXQoRXhlY1N0
YXRlKgogCiBKU1ZhbHVlKiBhcnJheVByb3RvRnVuY1BvcChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiwgSlNWYWx1ZSogdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JikKIHsKKyAgICBpZiAoZXhl
Yy0+bWFjaGluZSgpLT5pc0pTQXJyYXkodGhpc1ZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEpTQXJyYXkqPih0aGlzVmFsdWUpLT5wb3AoKTsKKwogICAgIEpTT2JqZWN0KiB0aGlz
T2JqID0gdGhpc1ZhbHVlLT50b1RoaXNPYmplY3QoZXhlYyk7CiAgICAgSlNWYWx1ZSogcmVzdWx0
ID0gMDsKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCktPnRvVUludDMyKGV4ZWMpOwpAQCAtMzA3LDYgKzMxMCwxMiBA
QCBKU1ZhbHVlKiBhcnJheVByb3RvRnVuY1BvcChFeGVjU3RhdGUqIGV4CiAKIEpTVmFsdWUqIGFy
cmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSogdGhp
c1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIGlmIChleGVjLT5tYWNoaW5lKCkt
PmlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGFyZ3Muc2l6ZSgpID09IDEpIHsKKyAgICAgICAgSlNB
cnJheSogYXJyYXkgPSBzdGF0aWNfY2FzdDxKU0FycmF5Kj4odGhpc1ZhbHVlKTsKKyAgICAgICAg
YXJyYXktPnB1c2goZXhlYywgYXJncy5iZWdpbigpLT5qc1ZhbHVlKGV4ZWMpKTsKKyAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKGV4ZWMsIGFycmF5LT5sZW5ndGgoKSk7CisgICAgfQorCiAgICAgSlNP
YmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUtPnRvVGhpc09iamVjdChleGVjKTsKICAgICB1bnNp
Z25lZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCktPnRvVUludDMyKGV4ZWMpOwogICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBhcmdz
LnNpemUoKTsgbisrKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTQXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU0FycmF5LmNwcAkocmV2aXNpb24gMzY3NTIp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
MSw4ICszMTEsOSBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXRTbG93Q2FzZShFCiAg
ICAgaWYgKCFtYXAgfHwgbWFwLT5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGluY3JlYXNlVmVj
dG9yTGVuZ3RoKGkgKyAxKSkgewogICAgICAgICAgICAgc3RvcmFnZSA9IG1fc3RvcmFnZTsKLSAg
ICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgICAgIHN0
b3JhZ2UtPm1fdmVjdG9yW2ldID0gdmFsdWU7CisgICAgICAgICAgICBpZiAoKytzdG9yYWdlLT5t
X251bVZhbHVlc0luVmVjdG9yID09IHN0b3JhZ2UtPm1fbGVuZ3RoKQorICAgICAgICAgICAgICAg
IG1fZmFzdEFjY2Vzc0N1dG9mZiA9IHN0b3JhZ2UtPm1fbGVuZ3RoOwogICAgICAgICAgICAgY2hl
Y2tDb25zaXN0ZW5jeSgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjKTsKQEAgLTUwOCw2ICs1MDksODcgQEAgdm9pZCBKU0FycmF5OjpzZXRM
ZW5ndGgodW5zaWduZWQgbmV3TGVuZwogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIH0KIAorSlNW
YWx1ZSogSlNBcnJheTo6cG9wKCkKK3sKKyAgICBjaGVja0NvbnNpc3RlbmN5KCk7CisKKyAgICB1
bnNpZ25lZCBsZW5ndGggPSBtX3N0b3JhZ2UtPm1fbGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIC0tbGVuZ3RoOworCisgICAgSlNW
YWx1ZSogcmVzdWx0OworCisgICAgaWYgKG1fZmFzdEFjY2Vzc0N1dG9mZiA+IGxlbmd0aCkgewor
ICAgICAgICBKU1ZhbHVlKiYgdmFsdWVTbG90ID0gbV9zdG9yYWdlLT5tX3ZlY3RvcltsZW5ndGhd
OworICAgICAgICByZXN1bHQgPSB2YWx1ZVNsb3Q7CisgICAgICAgIEFTU0VSVChyZXN1bHQpOwor
ICAgICAgICB2YWx1ZVNsb3QgPSAwOworICAgICAgICAtLW1fc3RvcmFnZS0+bV9udW1WYWx1ZXNJ
blZlY3RvcjsKKyAgICAgICAgbV9mYXN0QWNjZXNzQ3V0b2ZmID0gbGVuZ3RoOworICAgIH0gZWxz
ZSBpZiAobGVuZ3RoIDwgbV9zdG9yYWdlLT5tX3ZlY3Rvckxlbmd0aCkgeworICAgICAgICBKU1Zh
bHVlKiYgdmFsdWVTbG90ID0gbV9zdG9yYWdlLT5tX3ZlY3RvcltsZW5ndGhdOworICAgICAgICBy
ZXN1bHQgPSB2YWx1ZVNsb3Q7CisgICAgICAgIHZhbHVlU2xvdCA9IDA7CisgICAgICAgIGlmIChy
ZXN1bHQpCisgICAgICAgICAgICAtLW1fc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKKyAgICB9IGVs
c2UgeworICAgICAgICByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOworICAgICAgICBpZiAoU3BhcnNl
QXJyYXlWYWx1ZU1hcCogbWFwID0gbV9zdG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFwKSB7CisgICAg
ICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciBpdCA9IG1hcC0+ZmluZChsZW5n
dGgpOworICAgICAgICAgICAgaWYgKGl0ICE9IG1hcC0+ZW5kKCkpIHsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgICAgIG1hcC0+cmVtb3ZlKGl0KTsK
KyAgICAgICAgICAgICAgICBpZiAobWFwLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZGVsZXRlIG1hcDsKKyAgICAgICAgICAgICAgICAgICAgbV9zdG9yYWdlLT5tX3NwYXJzZVZh
bHVlTWFwID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBtX3N0b3JhZ2UtPm1fbGVuZ3RoID0gbGVuZ3RoOworCisgICAgY2hlY2tD
b25zaXN0ZW5jeSgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU0FycmF5Ojpw
dXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsdWUpCit7CisgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOworCisgICAgaWYgKG1fc3RvcmFnZS0+bV9sZW5ndGggPCBtX3N0b3JhZ2UtPm1fdmVj
dG9yTGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVCghbV9zdG9yYWdlLT5tX3ZlY3RvclttX3N0b3Jh
Z2UtPm1fbGVuZ3RoXSk7CisgICAgICAgIG1fc3RvcmFnZS0+bV92ZWN0b3JbbV9zdG9yYWdlLT5t
X2xlbmd0aF0gPSB2YWx1ZTsKKyAgICAgICAgaWYgKCsrbV9zdG9yYWdlLT5tX251bVZhbHVlc0lu
VmVjdG9yID09ICsrbV9zdG9yYWdlLT5tX2xlbmd0aCkKKyAgICAgICAgICAgIG1fZmFzdEFjY2Vz
c0N1dG9mZiA9IG1fc3RvcmFnZS0+bV9sZW5ndGg7CisgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0b3JhZ2UtPm1fbGVuZ3Ro
IDwgTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkgeworICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFw
KiBtYXAgPSBtX3N0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXA7CisgICAgICAgIGlmICghbWFwIHx8
IG1hcC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoaW5jcmVhc2VWZWN0b3JMZW5ndGgo
bV9zdG9yYWdlLT5tX2xlbmd0aCArIDEpKSB7CisgICAgICAgICAgICAgICAgbV9zdG9yYWdlLT5t
X3ZlY3RvclttX3N0b3JhZ2UtPm1fbGVuZ3RoXSA9IHZhbHVlOworICAgICAgICAgICAgICAgIGlm
ICgrK21fc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciA9PSArK21fc3RvcmFnZS0+bV9sZW5n
dGgpCisgICAgICAgICAgICAgICAgICAgIG1fZmFzdEFjY2Vzc0N1dG9mZiA9IG1fc3RvcmFnZS0+
bV9sZW5ndGg7CisgICAgICAgICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKKyAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1dFNsb3dDYXNlKGV4ZWMsIG1f
c3RvcmFnZS0+bV9sZW5ndGgrKywgdmFsdWUpOworfQorCiB2b2lkIEpTQXJyYXk6Om1hcmsoKQog
ewogICAgIEpTT2JqZWN0OjptYXJrKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNBcnJh
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU0FycmF5LmgJKHJldmlzaW9u
IDM2NzUyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNiArNTcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzb3J0KEV4ZWNT
dGF0ZSopOwogICAgICAgICB2b2lkIHNvcnQoRXhlY1N0YXRlKiwgSlNWYWx1ZSogY29tcGFyZUZ1
bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmKTsKIAorICAgICAgICB2b2lkIHB1c2go
RXhlY1N0YXRlKiwgSlNWYWx1ZSopOworICAgICAgICBKU1ZhbHVlKiBwb3AoKTsKKwogICAgICAg
ICBib29sIGNhbkdldEluZGV4KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkgPCBtX2Zhc3RBY2Nlc3ND
dXRvZmY7IH0KICAgICAgICAgSlNWYWx1ZSogZ2V0SW5kZXgodW5zaWduZWQgaSkKICAgICAgICAg
ewpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL29wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9vcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMzY3NTIpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvb3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3
ICsxMTUsNyBAQCBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2UoSlNWYWx1ZSogdjEsIEpTCiAgICAg
cmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUodjEsIHYyKTsKIH0KIAotSlNWYWx1ZSog
dGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK05FVkVSX0lOTElORSBKU1Zh
bHVlKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2Jq
ZWN0KiBlcnJvciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2VuZXJhbEVycm9yLCAiT3V0IG9mIG1l
bW9yeSIpOwogICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihlcnJvcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23666</attachid>
            <date>2008-09-22 13:51:47 -0700</date>
            <delta_ts>2008-09-22 14:02:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ArrayPushPopPatch.txt</filename>
            <type>text/plain</type>
            <size>6752</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2Nzc2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDgtMDktMjIgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTkzCisgICAgICAgICAgQXJyYXkucHVzaC9wb3AgbmVlZCBvcHRpbWl6ZWQgY2FzZXMgZm9y
IEpTQXJyYXkKKworICAgICAgICAzJSBvciBzbyBzcGVlZHVwIG9uIERlbHRhQmx1ZSBiZW5jaG1h
cmsuCisKKyAgICAgICAgKiBranMvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjph
cnJheVByb3RvRnVuY1BvcCk6IENhbGwgSlNBcnJheTo6cG9wIHdoZW4gYXBwcm9wcmlhdGUuCisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6IENhbGwgSlNBcnJheTo6cHVzaCB3aGVu
IGFwcHJvcHJpYXRlLgorCisgICAgICAgICoga2pzL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpwdXRTbG93Q2FzZSk6IFNldCBtX2Zhc3RBY2Nlc3NDdXRvZmYgd2hlbiBhcHBy
b3ByaWF0ZSwgZ2V0dGluZworICAgICAgICB1cyBpbnRvIHRoZSBmYXN0IGNvZGUgcGF0aC4KKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKTogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXJyYXk6
OnB1c2gpOiBBZGRlZC4KKyAgICAgICAgKiBranMvSlNBcnJheS5oOiBBZGRlZCBwdXNoIGFuZCBw
b3AuCisKKyAgICAgICAgKiBranMvb3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnRocm93
T3V0T2ZNZW1vcnlFcnJvcik6IERvbid0IGlubGluZSB0aGlzLiBIZWxwcyB1cyBhdm9pZCBQSUMg
YnJhbmNoZXMuCisKIDIwMDgtMDktMjIgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2guCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDM2NzczKQorKysgSmF2YVNjcmlw
dENvcmUva2pzL0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDYgKzI5
MSw5IEBAIEpTVmFsdWUqIGFycmF5UHJvdG9GdW5jQ29uY2F0KEV4ZWNTdGF0ZSoKIAogSlNWYWx1
ZSogYXJyYXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUq
IHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpCiB7CisgICAgaWYgKGV4ZWMtPm1hY2hpbmUoKS0+
aXNKU0FycmF5KHRoaXNWYWx1ZSkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0FycmF5
Kj4odGhpc1ZhbHVlKS0+cG9wKCk7CisKICAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1
ZS0+dG9UaGlzT2JqZWN0KGV4ZWMpOwogICAgIEpTVmFsdWUqIHJlc3VsdCA9IDA7CiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgpLT50b1VJbnQzMihleGVjKTsKQEAgLTMwNyw2ICszMTAsMTIgQEAgSlNWYWx1ZSogYXJy
YXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKiBleAogCiBKU1ZhbHVlKiBhcnJheVByb3RvRnVuY1B1
c2goRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3Qg
QXJnTGlzdCYgYXJncykKIHsKKyAgICBpZiAoZXhlYy0+bWFjaGluZSgpLT5pc0pTQXJyYXkodGhp
c1ZhbHVlKSAmJiBhcmdzLnNpemUoKSA9PSAxKSB7CisgICAgICAgIEpTQXJyYXkqIGFycmF5ID0g
c3RhdGljX2Nhc3Q8SlNBcnJheSo+KHRoaXNWYWx1ZSk7CisgICAgICAgIGFycmF5LT5wdXNoKGV4
ZWMsIGFyZ3MuYmVnaW4oKS0+anNWYWx1ZShleGVjKSk7CisgICAgICAgIHJldHVybiBqc051bWJl
cihleGVjLCBhcnJheS0+bGVuZ3RoKCkpOworICAgIH0KKwogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ID0gdGhpc1ZhbHVlLT50b1RoaXNPYmplY3QoZXhlYyk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
dGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLT50b1VJbnQz
MihleGVjKTsKICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgYXJncy5zaXplKCk7IG4rKykK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvSlNBcnJheS5jcHAJKHJldmlzaW9uIDM2NzczKQorKysgSmF2YVNjcmlw
dENvcmUva2pzL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsOCArMzExLDkgQEAg
TkVWRVJfSU5MSU5FIHZvaWQgSlNBcnJheTo6cHV0U2xvd0Nhc2UoRQogICAgIGlmICghbWFwIHx8
IG1hcC0+aXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChpbmNyZWFzZVZlY3Rvckxlbmd0aChpICsg
MSkpIHsKICAgICAgICAgICAgIHN0b3JhZ2UgPSBtX3N0b3JhZ2U7Ci0gICAgICAgICAgICArK3N0
b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAgICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3Rv
cltpXSA9IHZhbHVlOworICAgICAgICAgICAgaWYgKCsrc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZl
Y3RvciA9PSBzdG9yYWdlLT5tX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBtX2Zhc3RBY2Nlc3ND
dXRvZmYgPSBzdG9yYWdlLT5tX2xlbmd0aDsKICAgICAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CkBAIC01MDgsNiArNTA5LDg3IEBAIHZvaWQgSlNBcnJheTo6c2V0TGVuZ3RoKHVuc2lnbmVk
IG5ld0xlbmcKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiB9CiAKK0pTVmFsdWUqIEpTQXJyYXk6
OnBvcCgpCit7CisgICAgY2hlY2tDb25zaXN0ZW5jeSgpOworCisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbV9zdG9yYWdlLT5tX2xlbmd0aDsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisKKyAgICAtLWxlbmd0aDsKKworICAgIEpTVmFsdWUqIHJlc3VsdDsK
KworICAgIGlmIChtX2Zhc3RBY2Nlc3NDdXRvZmYgPiBsZW5ndGgpIHsKKyAgICAgICAgSlNWYWx1
ZSomIHZhbHVlU2xvdCA9IG1fc3RvcmFnZS0+bV92ZWN0b3JbbGVuZ3RoXTsKKyAgICAgICAgcmVz
dWx0ID0gdmFsdWVTbG90OworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgdmFsdWVT
bG90ID0gMDsKKyAgICAgICAgLS1tX3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CisgICAg
ICAgIG1fZmFzdEFjY2Vzc0N1dG9mZiA9IGxlbmd0aDsKKyAgICB9IGVsc2UgaWYgKGxlbmd0aCA8
IG1fc3RvcmFnZS0+bV92ZWN0b3JMZW5ndGgpIHsKKyAgICAgICAgSlNWYWx1ZSomIHZhbHVlU2xv
dCA9IG1fc3RvcmFnZS0+bV92ZWN0b3JbbGVuZ3RoXTsKKyAgICAgICAgcmVzdWx0ID0gdmFsdWVT
bG90OworICAgICAgICB2YWx1ZVNsb3QgPSAwOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAg
ICAgICAgLS1tX3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
cmVzdWx0ID0ganNVbmRlZmluZWQoKTsKKyAgICAgICAgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAq
IG1hcCA9IG1fc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCkgeworICAgICAgICAgICAgU3BhcnNl
QXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmZpbmQobGVuZ3RoKTsKKyAgICAgICAg
ICAgIGlmIChpdCAhPSBtYXAtPmVuZCgpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gaXQt
PnNlY29uZDsKKyAgICAgICAgICAgICAgICBtYXAtPnJlbW92ZShpdCk7CisgICAgICAgICAgICAg
ICAgaWYgKG1hcC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBtYXA7
CisgICAgICAgICAgICAgICAgICAgIG1fc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCA9IDA7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
bV9zdG9yYWdlLT5tX2xlbmd0aCA9IGxlbmd0aDsKKworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsK
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQoreworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKworICAg
IGlmIChtX3N0b3JhZ2UtPm1fbGVuZ3RoIDwgbV9zdG9yYWdlLT5tX3ZlY3Rvckxlbmd0aCkgewor
ICAgICAgICBBU1NFUlQoIW1fc3RvcmFnZS0+bV92ZWN0b3JbbV9zdG9yYWdlLT5tX2xlbmd0aF0p
OworICAgICAgICBtX3N0b3JhZ2UtPm1fdmVjdG9yW21fc3RvcmFnZS0+bV9sZW5ndGhdID0gdmFs
dWU7CisgICAgICAgIGlmICgrK21fc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciA9PSArK21f
c3RvcmFnZS0+bV9sZW5ndGgpCisgICAgICAgICAgICBtX2Zhc3RBY2Nlc3NDdXRvZmYgPSBtX3N0
b3JhZ2UtPm1fbGVuZ3RoOworICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdG9yYWdlLT5tX2xlbmd0aCA8IE1JTl9TUEFSU0Vf
QVJSQVlfSU5ERVgpIHsKKyAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gbV9zdG9y
YWdlLT5tX3NwYXJzZVZhbHVlTWFwOworICAgICAgICBpZiAoIW1hcCB8fCBtYXAtPmlzRW1wdHko
KSkgeworICAgICAgICAgICAgaWYgKGluY3JlYXNlVmVjdG9yTGVuZ3RoKG1fc3RvcmFnZS0+bV9s
ZW5ndGggKyAxKSkgeworICAgICAgICAgICAgICAgIG1fc3RvcmFnZS0+bV92ZWN0b3JbbV9zdG9y
YWdlLT5tX2xlbmd0aF0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAoKyttX3N0b3JhZ2Ut
Pm1fbnVtVmFsdWVzSW5WZWN0b3IgPT0gKyttX3N0b3JhZ2UtPm1fbGVuZ3RoKQorICAgICAgICAg
ICAgICAgICAgICBtX2Zhc3RBY2Nlc3NDdXRvZmYgPSBtX3N0b3JhZ2UtPm1fbGVuZ3RoOworICAg
ICAgICAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CisgICAgICAg
ICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBwdXRTbG93Q2FzZShleGVjLCBtX3N0b3JhZ2UtPm1fbGVu
Z3RoKyssIHZhbHVlKTsKK30KKwogdm9pZCBKU0FycmF5OjptYXJrKCkKIHsKICAgICBKU09iamVj
dDo6bWFyaygpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTQXJyYXkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNBcnJheS5oCShyZXZpc2lvbiAzNjc3MykKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc29ydChFeGVjU3RhdGUqKTsKICAgICAg
ICAgdm9pZCBzb3J0KEV4ZWNTdGF0ZSosIEpTVmFsdWUqIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5
cGUsIGNvbnN0IENhbGxEYXRhJik7CiAKKyAgICAgICAgdm9pZCBwdXNoKEV4ZWNTdGF0ZSosIEpT
VmFsdWUqKTsKKyAgICAgICAgSlNWYWx1ZSogcG9wKCk7CisKICAgICAgICAgYm9vbCBjYW5HZXRJ
bmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9mYXN0QWNjZXNzQ3V0b2ZmOyB9CiAgICAg
ICAgIEpTVmFsdWUqIGdldEluZGV4KHVuc2lnbmVkIGkpCiAgICAgICAgIHsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9vcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvb3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDM2NzczKQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL29wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgYm9v
bCBzdHJpY3RFcXVhbFNsb3dDYXNlKEpTVmFsdWUqIHYxLCBKUwogICAgIHJldHVybiBzdHJpY3RF
cXVhbFNsb3dDYXNlSW5saW5lKHYxLCB2Mik7CiB9CiAKLUpTVmFsdWUqIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitORVZFUl9JTkxJTkUgSlNWYWx1ZSogdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogZXJyb3IgPSBF
cnJvcjo6Y3JlYXRlKGV4ZWMsIEdlbmVyYWxFcnJvciwgIk91dCBvZiBtZW1vcnkiKTsKICAgICBl
eGVjLT5zZXRFeGNlcHRpb24oZXJyb3IpOwo=
</data>
<flag name="review"
          id="10614"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>