<?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>13388</bug_id>
          
          <creation_ts>2007-04-18 00:58:41 -0700</creation_ts>
          <short_desc>[js-collector-tweaks] Shrink FunctionImp / DeclaredFunctionImp by 4 bytes</short_desc>
          <delta_ts>2007-04-23 03:47:56 -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>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>
          
          <blocked>13389</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>14364</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 00:58:41 -0700</bug_when>
    <thetext>Shrink FunctionImp / DeclaredFunctionImp by 4 bytes, by moving parameter list to function body. This enables further optimizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14344</commentid>
    <comment_count>1</comment_count>
      <attachid>14069</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 00:59:25 -0700</bug_when>
    <thetext>Created attachment 14069
08-js-gc-function-shrink.patch.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14246</commentid>
    <comment_count>2</comment_count>
      <attachid>14069</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-18 11:27:14 -0700</bug_when>
    <thetext>Comment on attachment 14069
08-js-gc-function-shrink.patch.txt

+UString FunctionBodyNode::paramString() const
+{
+  UString s;

I think you want to start with an empty string here, rather than a null string.

+  for(ParameterNode *p = param.get(); p != 0L; p = p-&gt;nextParam())

Missing a space after for (I know this is copy and paste), and 0L is no better than 0.

+  for(ParameterNode *p = param.get(); p != 0L; p = p-&gt;nextParam())

Again.

+    Parameter() {};

No semicolon here. Do we really need a Parameter type? How about just using Vector&lt;Identifier&gt;?

+    Identifier paramName(int pos) const { return m_parameters[pos].name; }

Should be size_t rather than int.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14188</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 15:04:50 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt;
&gt; Do we really need a Parameter type? How about just using Vector&lt;Identifier&gt;?
&gt; 

I considered this, but Maks Orlovich&apos;s symbol table changes in the KDE version of KJS add more fields to Parameter.

Agreed on your other comments.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14069</attachid>
            <date>2007-04-18 00:59:25 -0700</date>
            <delta_ts>2007-04-18 11:27:14 -0700</delta_ts>
            <desc>08-js-gc-function-shrink.patch.txt</desc>
            <filename>08-js-gc-function-shrink.patch.txt</filename>
            <type>text/plain</type>
            <size>13511</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODE1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDgxNikKQEAgLTEsMyArMSwzNSBAQAorMjAwNy0wNC0wOSAgTWFjaWVq
IFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSBzaHJpbmsgRnVuY3Rpb25JbXAgLyBEZWNs
YXJlZEZ1bmN0aW9uSW1wIGJ5IDQgYnl0ZXMsIGJ5IG1vdmluZyBwYXJhbWV0ZXIgbGlzdCB0byBm
dW5jdGlvbiBib2R5CisgICAgICAgIAorICAgICAgICBJIHJlY29uY2lsZWQgdGhpcyB3aXRoIGEg
c2ltaWxhciBjaGFuZ2UgaW4gS0RFIGtqcyBieSBNYWtzIE9ybG92aWNoIDxtYWtzaW1Aa2RlLm9y
Zz4uCisKKyAgICAgICAgKiBranMvZnVuY3Rpb24uY3BwOgorICAgICAgICAoS0pTOjpGdW5jdGlv
bkltcDo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkltcDo6cGFzc0lu
UGFyYW1ldGVycyk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uSW1wOjpsZW5ndGhHZXR0ZXIpOgor
ICAgICAgICAoS0pTOjpGdW5jdGlvbkltcDo6Z2V0UGFyYW1ldGVyTmFtZSk6CisgICAgICAgICog
a2pzL2Z1bmN0aW9uLmg6CisgICAgICAgICoga2pzL2Z1bmN0aW9uX29iamVjdC5jcHA6CisgICAg
ICAgIChGdW5jdGlvblByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoRnVuY3Rp
b25PYmplY3RJbXA6OmNvbnN0cnVjdCk6CisgICAgICAgICoga2pzL25vZGVzLmNwcDoKKyAgICAg
ICAgKEZ1bmN0aW9uQm9keU5vZGU6OmFkZFBhcmFtKToKKyAgICAgICAgKEZ1bmN0aW9uQm9keU5v
ZGU6OnBhcmFtU3RyaW5nKToKKyAgICAgICAgKEZ1bmNEZWNsTm9kZTo6YWRkUGFyYW1zKToKKyAg
ICAgICAgKEZ1bmNEZWNsTm9kZTo6cHJvY2Vzc0Z1bmNEZWNsKToKKyAgICAgICAgKEZ1bmNFeHBy
Tm9kZTo6YWRkUGFyYW1zKToKKyAgICAgICAgKEZ1bmNFeHByTm9kZTo6ZXZhbHVhdGUpOgorICAg
ICAgICAqIGtqcy9ub2Rlcy5oOgorICAgICAgICAoS0pTOjpQYXJhbWV0ZXI6OlBhcmFtZXRlcik6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6Om51bVBhcmFtcyk6CisgICAgICAgIChL
SlM6OkZ1bmN0aW9uQm9keU5vZGU6OnBhcmFtTmFtZSk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9u
Qm9keU5vZGU6OnBhcmFtZXRlcnMpOgorICAgICAgICAoS0pTOjpGdW5jRXhwck5vZGU6OkZ1bmNF
eHByTm9kZSk6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKToKKwog
MjAwNy0wNC0wOCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAg
IE5vdCByZXZpZXdlZCwgZXhwZXJpbWVudGFsIGNoYW5nZS4KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9mdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlv
bi5oCShyZXZpc2lvbiAyMDgxNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5oCShy
ZXZpc2lvbiAyMDgxNikKQEAgLTMyLDcgKzMyLDYgQEAKIAogICBjbGFzcyBBY3RpdmF0aW9uSW1w
OwogICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlOwotICBjbGFzcyBQYXJhbWV0ZXI7CiAKICAgLyoq
CiAgICAqIEBzaG9ydCBJbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgaW50ZXJuYWwgRnVuY3Rpb25z
LgpAQCAtNDksMTAgKzQ4LDkgQEAKIAogICAgIHZpcnR1YWwgSlNWYWx1ZSogY2FsbEFzRnVuY3Rp
b24oRXhlY1N0YXRlKiwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3QmIGFyZ3MpOwogCi0g
ICAgdm9pZCBhZGRQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYgbik7CisgICAgLy8gTm90ZTog
dW5saWtlIGJvZHktPnBhcmFtTmFtZSwgdGhpcyByZXR1cm5zIElkZW50aWZpZXI6Om51bGwgZm9y
IHBhcmFtZXRlcnMgCisgICAgLy8gdGhhdCB3aWxsIG5ldmVyIGdldCBzZXQsIGR1ZSB0byBsYXRl
ciBwYXJhbSBoYXZpbmcgdGhlIHNhbWUgbmFtZQogICAgIElkZW50aWZpZXIgZ2V0UGFyYW1ldGVy
TmFtZShpbnQgaW5kZXgpOwotICAgIC8vIHBhcmFtZXRlcnMgaW4gc3RyaW5nIHJlcHJlc2VudGF0
aW9uLCBlLmcuIChhLCBiLCBjKQotICAgIFVTdHJpbmcgcGFyYW1ldGVyU3RyaW5nKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopID0gMDsKQEAgLTkyLDggKzkwLDYgQEAK
ICAgICB2b2lkIHNldFNjb3BlKGNvbnN0IFNjb3BlQ2hhaW4mIHMpIHsgX3Njb3BlID0gczsgfQog
CiAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKLSAgcHJvdGVjdGVkOgotICAgIE93blB0cjxWZWN0
b3I8UGFyYW1ldGVyPiA+IHBhcmFtZXRlcnM7CiAKICAgcHJpdmF0ZToKICAgICBTY29wZUNoYWlu
IF9zY29wZTsKQEAgLTEwMiw3ICs5OCw3IEBACiAgICAgc3RhdGljIEpTVmFsdWUqIGNhbGxlckdl
dHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSogbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogCi0g
ICAgdm9pZCBwcm9jZXNzUGFyYW1ldGVycyhFeGVjU3RhdGUqLCBjb25zdCBMaXN0Jik7CisgICAg
dm9pZCBwYXNzSW5QYXJhbWV0ZXJzKEV4ZWNTdGF0ZSosIGNvbnN0IExpc3QmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopOwogICB9OwogCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9mdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwODE1KQorKysgSmF2YVNjcmlwdENvcmUva2pz
L2Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjA4MTYpCkBAIC01MSwxMyArNTEsNiBAQAogCiBjb25z
dCBDbGFzc0luZm8gRnVuY3Rpb25JbXA6OmluZm8gPSB7IkZ1bmN0aW9uIiwgJkludGVybmFsRnVu
Y3Rpb25JbXA6OmluZm8sIDAsIDB9OwogCi0gIGNsYXNzIFBhcmFtZXRlciB7Ci0gIHB1YmxpYzoK
LSAgICBQYXJhbWV0ZXIoKSB7fTsKLSAgICBQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYgbikg
OiBuYW1lKG4pIHsgfQotICAgIElkZW50aWZpZXIgbmFtZTsKLSAgfTsKLQogRnVuY3Rpb25JbXA6
OkZ1bmN0aW9uSW1wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbiwgRnVuY3Rp
b25Cb2R5Tm9kZSogYikKICAgOiBJbnRlcm5hbEZ1bmN0aW9uSW1wKHN0YXRpY19jYXN0PEZ1bmN0
aW9uUHJvdG90eXBlKj4KICAgICAgICAgICAgICAgICAgICAgICAgIChleGVjLT5sZXhpY2FsSW50
ZXJwcmV0ZXIoKS0+YnVpbHRpbkZ1bmN0aW9uUHJvdG90eXBlKCkpLCBuKQpAQCAtODgsNyArODEs
NyBAQAogICBjdHguc2V0RXhlY1N0YXRlKCZuZXdFeGVjKTsKIAogICAvLyBhc3NpZ24gdXNlciBz
dXBwbGllZCBhcmd1bWVudHMgdG8gcGFyYW1ldGVycwotICBwcm9jZXNzUGFyYW1ldGVycygmbmV3
RXhlYywgYXJncyk7CisgIHBhc3NJblBhcmFtZXRlcnMoJm5ld0V4ZWMsIGFyZ3MpOwogICAvLyBh
ZGQgdmFyaWFibGUgZGVjbGFyYXRpb25zIChpbml0aWFsaXplZCB0byB1bmRlZmluZWQpCiAgIHBy
b2Nlc3NWYXJEZWNscygmbmV3RXhlYyk7CiAKQEAgLTE1MiwzNiArMTQ1LDEwIEBACiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLXZvaWQgRnVuY3Rpb25JbXA6OmFkZFBhcmFtZXRlcihj
b25zdCBJZGVudGlmaWVyJiBuKQotewotICAgIGlmICghcGFyYW1ldGVycykKLSAgICAgICAgcGFy
YW1ldGVycy5zZXQobmV3IFZlY3RvcjxQYXJhbWV0ZXI+KTsKLQotICAgIHBhcmFtZXRlcnMtPmFw
cGVuZChQYXJhbWV0ZXIobikpOwotfQotCi1VU3RyaW5nIEZ1bmN0aW9uSW1wOjpwYXJhbWV0ZXJT
dHJpbmcoKSBjb25zdAotewotICAgIFVTdHJpbmcgczsKLQotICAgIGlmICghcGFyYW1ldGVycykK
LSAgICAgICAgcmV0dXJuIHM7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRl
cnMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghcy5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBzICs9ICIsICI7Ci0gICAgICAgIHMgKz0gcGFyYW1ldGVycy0+YXQoaSkubmFtZS51c3RyaW5n
KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHM7Ci19Ci0KLQogLy8gRUNNQSAxMC4xLjNxCi12b2lk
IEZ1bmN0aW9uSW1wOjpwcm9jZXNzUGFyYW1ldGVycyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExp
c3QmIGFyZ3MpCitpbmxpbmUgdm9pZCBGdW5jdGlvbkltcDo6cGFzc0luUGFyYW1ldGVycyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmIGFyZ3MpCiB7Ci0gICAgaWYgKCFwYXJhbWV0ZXJzKQot
ICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPFBhcmFtZXRlcj4mIHBhcmFtZXRlcnMgPSBib2R5
LT5wYXJhbWV0ZXJzKCk7CiAKICAgICBKU09iamVjdCogdmFyaWFibGUgPSBleGVjLT5jb250ZXh0
KCktPnZhcmlhYmxlT2JqZWN0KCk7CiAKQEAgLTE5MSwyNiArMTU4LDE0IEBACiAgICAgICAgICAg
bmFtZSgpLmlzRW1wdHkoKSA/ICIoaW50ZXJuYWwpIiA6IG5hbWUoKS5hc2NpaSgpKTsKICNlbmRp
ZgogCi0gICAgTGlzdEl0ZXJhdG9yIGl0ID0gYXJncy5iZWdpbigpOwotCi0gICAgSlNWYWx1ZSAq
IHYgPSAqaXQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLT5zaXplKCk7
ICsraSkgewotICAgICAgaWYgKGl0ICE9IGFyZ3MuZW5kKCkpIHsKKyAgICBzaXplX3Qgc2l6ZSA9
IHBhcmFtZXRlcnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CiAjaWZkZWYgS0pTX1ZFUkJPU0UKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJzZXR0aW5n
IHBhcmFtZXRlciAlcyAiLCBwYXJhbWV0ZXJzLT5hdChpKS5uYW1lLmFzY2lpKCkpOwotICAgICAg
ICBwcmludEluZm8oZXhlYywgInRvIiwgKml0KTsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAic2V0
dGluZyBwYXJhbWV0ZXIgJXMgIiwgcGFyYW1ldGVycy0+YXQoaSkubmFtZS5hc2NpaSgpKTsKKyAg
ICAgIHByaW50SW5mbyhleGVjLCAidG8iLCBhcmdzW2ldKTsKICNlbmRpZgotICAgICAgICB2YXJp
YWJsZS0+cHV0KGV4ZWMsIHBhcmFtZXRlcnMtPmF0KGkpLm5hbWUsIHYpOwotICAgICAgICB2ID0g
KytpdDsKLSAgICAgIH0gZWxzZQotICAgICAgICB2YXJpYWJsZS0+cHV0KGV4ZWMsIHBhcmFtZXRl
cnMtPmF0KGkpLm5hbWUsIGpzVW5kZWZpbmVkKCkpOwotICB9Ci0jaWZkZWYgS0pTX1ZFUkJPU0UK
LSAgZWxzZSB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQotICAg
ICAgcHJpbnRJbmZvKGV4ZWMsInNldHRpbmcgYXJndW1lbnQiLCBhcmdzW2ldKTsKLSAgfQotI2Vu
ZGlmCisgICAgICB2YXJpYWJsZS0+cHV0KGV4ZWMsIHBhcmFtZXRlcnNbaV0ubmFtZSwgYXJnc1tp
XSk7CisgICAgfQogfQogCiB2b2lkIEZ1bmN0aW9uSW1wOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0
YXRlKikKQEAgLTI1Niw3ICsyMTEsNyBAQAogSlNWYWx1ZSogRnVuY3Rpb25JbXA6Omxlbmd0aEdl
dHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgRnVuY3Rpb25JbXAqIHRoaXNPYmogPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkltcCo+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKHRo
aXNPYmotPnBhcmFtZXRlcnMgPyB0aGlzT2JqLT5wYXJhbWV0ZXJzLT5zaXplKCkgOiAwKTsKKyAg
ICByZXR1cm4ganNOdW1iZXIodGhpc09iai0+Ym9keS0+bnVtUGFyYW1zKCkpOwogfQogCiBib29s
IEZ1bmN0aW9uSW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTMwNCwxNyAr
MjU5LDE3IEBACiAgKi8KIElkZW50aWZpZXIgRnVuY3Rpb25JbXA6OmdldFBhcmFtZXRlck5hbWUo
aW50IGluZGV4KQogewotICAgIGlmICghcGFyYW1ldGVycykKLSAgICAgICAgcmV0dXJuIENvbW1v
bklkZW50aWZpZXJzOjpzaGFyZWQoKS0+bnVsbElkZW50aWZpZXI7CisgICAgVmVjdG9yPFBhcmFt
ZXRlcj4mIHBhcmFtZXRlcnMgPSBib2R5LT5wYXJhbWV0ZXJzKCk7CiAKLSAgICBpZiAoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihpbmRleCkgPj0gcGFyYW1ldGVycy0+c2l6ZSgpKQorICAgIGlmIChzdGF0
aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA+PSBib2R5LT5udW1QYXJhbXMoKSkKICAgICAgICAgcmV0
dXJuIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+bnVsbElkZW50aWZpZXI7CiAgIAotICAg
IElkZW50aWZpZXIgbmFtZSA9IHBhcmFtZXRlcnMtPmF0KGluZGV4KS5uYW1lOworICAgIElkZW50
aWZpZXIgbmFtZSA9IHBhcmFtZXRlcnNbaW5kZXhdLm5hbWU7CiAKICAgICAvLyBBcmUgdGhlcmUg
YW55IHN1YnNlcXVlbnQgcGFyYW1ldGVycyB3aXRoIHRoZSBzYW1lIG5hbWU/Ci0gICAgZm9yIChz
aXplX3QgaSA9IGluZGV4ICsgMTsgaSA8IHBhcmFtZXRlcnMtPnNpemUoKTsgKytpKQotICAgICAg
ICBpZiAocGFyYW1ldGVycy0+YXQoaSkubmFtZSA9PSBuYW1lKQorICAgIHNpemVfdCBzaXplID0g
cGFyYW1ldGVycy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IGluZGV4ICsgMTsgaSA8IHNp
emU7ICsraSkKKyAgICAgICAgaWYgKHBhcmFtZXRlcnNbaV0ubmFtZSA9PSBuYW1lKQogICAgICAg
ICAgICAgcmV0dXJuIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+bnVsbElkZW50aWZpZXI7
CiAKICAgICByZXR1cm4gbmFtZTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAkocmV2aXNpb24gMjA4
MTUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCShyZXZpc2lvbiAyMDgxNikKQEAg
LTIzNTgsOCArMjM1OCwzMyBAQAogICAgICAgICBzb3VyY2UtPnByb2Nlc3NGdW5jRGVjbChleGVj
KTsKIH0KIAordm9pZCBGdW5jdGlvbkJvZHlOb2RlOjphZGRQYXJhbShjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKK3sKKyAgbV9wYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIoaWRlbnQpKTsKK30K
KworVVN0cmluZyBGdW5jdGlvbkJvZHlOb2RlOjpwYXJhbVN0cmluZygpIGNvbnN0Cit7CisgIFVT
dHJpbmcgczsKKyAgc2l6ZV90IGNvdW50ID0gbnVtUGFyYW1zKCk7CisgIGZvciAoc2l6ZV90IHBv
cyA9IDA7IHBvcyA8IGNvdW50OyArK3BvcykgeworICAgIGlmICghcy5pc0VtcHR5KCkpCisgICAg
ICAgIHMgKz0gIiwgIjsKKyAgICBzICs9IHBhcmFtTmFtZShwb3MpLnVzdHJpbmcoKTsKKyAgfQor
CisgIHJldHVybiBzOworfQorCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBG
dW5jRGVjbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK3ZvaWQgRnVu
Y0RlY2xOb2RlOjphZGRQYXJhbXMoKSAKK3sKKyAgZm9yKFBhcmFtZXRlck5vZGUgKnAgPSBwYXJh
bS5nZXQoKTsgcCAhPSAwTDsgcCA9IHAtPm5leHRQYXJhbSgpKQorICAgIGJvZHktPmFkZFBhcmFt
KHAtPmlkZW50KCkpOworfQorCiAvLyBFQ01BIDEzCiB2b2lkIEZ1bmNEZWNsTm9kZTo6cHJvY2Vz
c0Z1bmNEZWNsKEV4ZWNTdGF0ZSAqZXhlYykKIHsKQEAgLTIzNzIsMTIgKzIzOTcsOCBAQAogICBw
cm90by0+cHV0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZnVuYywg
UmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogICBmdW5jLT5wdXQoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG8sIEludGVybmFsfERvbnREZWxldGUp
OwogCi0gIGludCBwbGVuID0gMDsKLSAgZm9yKFBhcmFtZXRlck5vZGUgKnAgPSBwYXJhbS5nZXQo
KTsgcCAhPSAwTDsgcCA9IHAtPm5leHRQYXJhbSgpLCBwbGVuKyspCi0gICAgZnVuYy0+YWRkUGFy
YW1ldGVyKHAtPmlkZW50KCkpOworICBmdW5jLT5wdXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoYm9keS0+bnVtUGFyYW1zKCkpLCBSZWFkT25seXxEb250RGVs
ZXRlfERvbnRFbnVtKTsKIAotICBmdW5jLT5wdXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIocGxlbiksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOwot
CiAgIC8vIEVDTUEgMTAuMi4yCiAgIGNvbnRleHQtPnZhcmlhYmxlT2JqZWN0KCktPnB1dChleGVj
LCBpZGVudCwgZnVuYywgSW50ZXJuYWwgfCAoY29udGV4dC0+Y29kZVR5cGUoKSA9PSBFdmFsQ29k
ZSA/IDAgOiBEb250RGVsZXRlKSk7CiAKQEAgLTI0MDEsNiArMjQyMiwxMiBAQAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMwordm9pZCBGdW5jRXhwck5vZGU6OmFkZFBhcmFt
cygpCit7CisgIGZvcihQYXJhbWV0ZXJOb2RlICpwID0gcGFyYW0uZ2V0KCk7IHAgIT0gMEw7IHAg
PSBwLT5uZXh0UGFyYW0oKSkKKyAgICBib2R5LT5hZGRQYXJhbShwLT5pZGVudCgpKTsKK30KKwog
SlNWYWx1ZSAqRnVuY0V4cHJOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCiB7CiAgIENv
bnRleHQgKmNvbnRleHQgPSBleGVjLT5jb250ZXh0KCk7CkBAIC0yNDIwLDEwICsyNDQ3LDYgQEAK
ICAgcHJvdG8tPnB1dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGZ1
bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgZnVuYy0+cHV0KGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvLCBJbnRlcm5hbCB8IERvbnRE
ZWxldGUpOwogCi0gIGludCBwbGVuID0gMDsKLSAgZm9yKFBhcmFtZXRlck5vZGUgKnAgPSBwYXJh
bS5nZXQoKTsgcCAhPSAwTDsgcCA9IHAtPm5leHRQYXJhbSgpLCBwbGVuKyspCi0gICAgZnVuYy0+
YWRkUGFyYW1ldGVyKHAtPmlkZW50KCkpOwotCiAgIGlmIChuYW1lZCkgewogICAgIGZ1bmN0aW9u
U2NvcGVPYmplY3QtPnB1dChleGVjLCBpZGVudCwgZnVuYywgSW50ZXJuYWwgfCBSZWFkT25seSB8
IChjb250ZXh0LT5jb2RlVHlwZSgpID09IEV2YWxDb2RlID8gMCA6IERvbnREZWxldGUpKTsKICAg
ICBjb250ZXh0LT5wb3BTY29wZSgpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9u
X29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29i
amVjdC5jcHAJKHJldmlzaW9uIDIwODE1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9u
X29iamVjdC5jcHAJKHJldmlzaW9uIDIwODE2KQpAQCAtODMsNyArODMsNyBAQAogICAgIGlmICh0
aGlzT2JqLT5pbmhlcml0cygmRGVjbGFyZWRGdW5jdGlvbkltcDo6aW5mbykpIHsKICAgICAgICAg
RGVjbGFyZWRGdW5jdGlvbkltcCAqZmkgPSBzdGF0aWNfY2FzdDxEZWNsYXJlZEZ1bmN0aW9uSW1w
Kj4odGhpc09iaik7CiAgICAgICAgIHJldHVybiBqc1N0cmluZygiZnVuY3Rpb24gIiArIGZpLT5m
dW5jdGlvbk5hbWUoKS51c3RyaW5nKCkgKyAiKCIgKwotICAgICAgICAgICAgICAgICAgICAgICAg
ZmktPnBhcmFtZXRlclN0cmluZygpICsgIikgIiArIGZpLT5ib2R5LT50b1N0cmluZygpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZpLT5ib2R5LT5wYXJhbVN0cmluZygpICsgIikgIiArIGZp
LT5ib2R5LT50b1N0cmluZygpKTsKICAgICAgfSBlbHNlIGlmICh0aGlzT2JqLT5pbmhlcml0cygm
SW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbykgJiYKICAgICAgICAgICAgICAgICAhc3RhdGljX2Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbkltcCo+KHRoaXNPYmopLT5mdW5jdGlvbk5hbWUoKS5pc051bGwo
KSkgewogICAgICAgIHJlc3VsdCA9IGpzU3RyaW5nKCJcbmZ1bmN0aW9uICIgKyBzdGF0aWNfY2Fz
dDxJbnRlcm5hbEZ1bmN0aW9uSW1wKj4odGhpc09iaiktPmZ1bmN0aW9uTmFtZSgpLnVzdHJpbmco
KSArICIoKSB7XG4iCkBAIC0yMjgsMTEgKzIyOCwxMSBAQAogICAgICAgICAgIHdoaWxlIChpIDwg
bGVuICYmICpjID09ICcgJykKICAgICAgICAgICAgICAgYysrLCBpKys7CiAgICAgICAgICAgaWYg
KGkgPT0gbGVuKSB7Ci0gICAgICAgICAgICAgIGZpbXAtPmFkZFBhcmFtZXRlcihJZGVudGlmaWVy
KHBhcmFtKSk7CisgICAgICAgICAgICAgIGJvZHlOb2RlLT5hZGRQYXJhbShJZGVudGlmaWVyKHBh
cmFtKSk7CiAgICAgICAgICAgICAgIHBhcmFtcysrOwogICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcsJykgewotICAgICAgICAgICAgICBmaW1wLT5hZGRQ
YXJhbWV0ZXIoSWRlbnRpZmllcihwYXJhbSkpOworICAgICAgICAgICAgICBib2R5Tm9kZS0+YWRk
UGFyYW0oSWRlbnRpZmllcihwYXJhbSkpOwogICAgICAgICAgICAgICBwYXJhbXMrKzsKICAgICAg
ICAgICAgICAgYysrLCBpKys7CiAgICAgICAgICAgICAgIGNvbnRpbnVlOwpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL25vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25v
ZGVzLmgJKHJldmlzaW9uIDIwODE1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJKHJl
dmlzaW9uIDIwODE2KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlBhcnNlci5oIgogI2lu
Y2x1ZGUgImludGVybmFsLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBLSlMgewogCkBAIC05NzAsNiArOTcxLDEzIEBA
CiAgICAgTGlzdFJlZlB0cjxQYXJhbWV0ZXJOb2RlPiBuZXh0OwogICB9OwogCisgIGNsYXNzIFBh
cmFtZXRlciB7CisgIHB1YmxpYzoKKyAgICBQYXJhbWV0ZXIoKSB7fTsKKyAgICBQYXJhbWV0ZXIo
Y29uc3QgSWRlbnRpZmllciYgbikgOiBuYW1lKG4pIHsgfQorICAgIElkZW50aWZpZXIgbmFtZTsK
KyAgfTsKKwogICAvLyBpbmhlcml0ZWQgYnkgUHJvZ3JhbU5vZGUKICAgY2xhc3MgRnVuY3Rpb25C
b2R5Tm9kZSA6IHB1YmxpYyBCbG9ja05vZGUgewogICBwdWJsaWM6CkBAIC05NzcsMTggKzk4NSwy
NiBAQAogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlKik7CiAgICAg
aW50IHNvdXJjZUlkKCkgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQogICAgIGNvbnN0IFVTdHJpbmcm
IHNvdXJjZVVSTCgpIHsgcmV0dXJuIG1fc291cmNlVVJMOyB9CisKKyAgICB2b2lkIGFkZFBhcmFt
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KTsKKyAgICBzaXplX3QgbnVtUGFyYW1zKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNpemUoKTsgfQorICAgIElkZW50aWZpZXIgcGFyYW1OYW1l
KGludCBwb3MpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyc1twb3NdLm5hbWU7IH0KKyAgICBV
U3RyaW5nIHBhcmFtU3RyaW5nKCkgY29uc3Q7CisgICAgVmVjdG9yPFBhcmFtZXRlcj4mIHBhcmFt
ZXRlcnMoKSB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KICAgcHJpdmF0ZToKICAgICBVU3RyaW5n
IG1fc291cmNlVVJMOwogICAgIGludCBtX3NvdXJjZUlkOworICAgIFZlY3RvcjxQYXJhbWV0ZXI+
IG1fcGFyYW1ldGVyczsKICAgfTsKIAogICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgTm9k
ZSB7CiAgIHB1YmxpYzoKICAgICBGdW5jRXhwck5vZGUoY29uc3QgSWRlbnRpZmllciAmaSwgRnVu
Y3Rpb25Cb2R5Tm9kZSAqYiwgUGFyYW1ldGVyTm9kZSAqcCA9IDApCi0gICAgICA6IGlkZW50KGkp
LCBwYXJhbShwID8gcC0+bmV4dC5yZWxlYXNlKCkgOiAwKSwgYm9keShiKSB7IGlmIChwKSB7IFBh
cnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKHBhcmFtLmdldCgpKTsgfSB9CisgICAgICA6IGlkZW50KGkp
LCBwYXJhbShwID8gcC0+bmV4dC5yZWxlYXNlKCkgOiAwKSwgYm9keShiKSB7IGlmIChwKSB7IFBh
cnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKHBhcmFtLmdldCgpKTsgfSBhZGRQYXJhbXMoKTsgfQogICAg
IHZpcnR1YWwgSlNWYWx1ZSAqZXZhbHVhdGUoRXhlY1N0YXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0OwogICBwcml2YXRlOgorICAgIHZvaWQgYWRk
UGFyYW1zKCk7CiAgICAgLy8gVXNlZCBmb3Igc3RyZWFtVG8KICAgICBmcmllbmQgY2xhc3MgUHJv
cGVydHlOb2RlOwogICAgIElkZW50aWZpZXIgaWRlbnQ7CkBAIC05OTksMTMgKzEwMTUsMTQgQEAK
ICAgY2xhc3MgRnVuY0RlY2xOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICBwdWJsaWM6
CiAgICAgRnVuY0RlY2xOb2RlKGNvbnN0IElkZW50aWZpZXIgJmksIEZ1bmN0aW9uQm9keU5vZGUg
KmIpCi0gICAgICA6IGlkZW50KGkpLCBib2R5KGIpIHsgfQorICAgICAgOiBpZGVudChpKSwgYm9k
eShiKSB7IGFkZFBhcmFtcygpOyB9CiAgICAgRnVuY0RlY2xOb2RlKGNvbnN0IElkZW50aWZpZXIg
JmksIFBhcmFtZXRlck5vZGUgKnAsIEZ1bmN0aW9uQm9keU5vZGUgKmIpCi0gICAgICA6IGlkZW50
KGkpLCBwYXJhbShwLT5uZXh0LnJlbGVhc2UoKSksIGJvZHkoYikgeyBQYXJzZXI6OnJlbW92ZU5v
ZGVDeWNsZShwYXJhbS5nZXQoKSk7IH0KKyAgICAgIDogaWRlbnQoaSksIHBhcmFtKHAtPm5leHQu
cmVsZWFzZSgpKSwgYm9keShiKSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKHBhcmFtLmdldCgp
KTsgYWRkUGFyYW1zKCk7IH0KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3Rh
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdDsKICAgcHJpdmF0ZToK
KyAgICB2b2lkIGFkZFBhcmFtcygpOwogICAgIElkZW50aWZpZXIgaWRlbnQ7CiAgICAgUmVmUHRy
PFBhcmFtZXRlck5vZGU+IHBhcmFtOwogICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5
Owo=
</data>
<flag name="review"
          id="5684"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>