<?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>4416</bug_id>
          
          <creation_ts>2005-08-13 22:41:29 -0700</creation_ts>
          <short_desc>speed up JavaScript with some improvements to the garbage collector</short_desc>
          <delta_ts>2005-08-14 09:15:10 -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>420+</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>Enhancement</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>16594</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-13 22:41:29 -0700</bug_when>
    <thetext>I did some analysis of JavaScript iBench performance, and found some speedups. This one is an 
improvement of the garbage collector code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16595</commentid>
    <comment_count>1</comment_count>
      <attachid>3364</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-13 22:42:40 -0700</bug_when>
    <thetext>Created attachment 3364
patch to improve inner loops in the garbage collector; use global variables less</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16596</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-13 22:44:40 -0700</bug_when>
    <thetext>I&apos;m seeing at least a 2% improvement with this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16633</commentid>
    <comment_count>3</comment_count>
      <attachid>3364</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-14 01:54:57 -0700</bug_when>
    <thetext>Comment on attachment 3364
patch to improve inner loops in the garbage collector; use global variables less

In my own copy of the patch, I changed MAX back to max.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3364</attachid>
            <date>2005-08-13 22:42:40 -0700</date>
            <delta_ts>2005-08-14 03:39:13 -0700</delta_ts>
            <desc>patch to improve inner loops in the garbage collector; use global variables less</desc>
            <filename>CollectorPatch.txt</filename>
            <type>text/plain</type>
            <size>11682</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">LS0tIGNvbGxlY3Rvci5jcHAJMjAwNS0wOC0wNyAyMDoxODo0NC4wMDAwMDAwMDAgLTA3MDAKKysr
IC9Wb2x1bWVzL0hvbWUvZGFyaW4vRGVza3RvcC9QYXRjaGVzL3NhdmVkIHNwZWVkdXBzL2NvbGxl
Y3Rvci5jcHAJMjAwNS0wNy0yNSAyMzozMzoxNC4wMDAwMDAwMDAgLTA3MDAKQEAgLTEwNCwxNCAr
MTAwLDE5IEBACiAgIAogICBpZiAocyA+IHN0YXRpY19jYXN0PHNpemVfdD4oQ0VMTF9TSVpFKSkg
ewogICAgIC8vIG92ZXJzaXplIGFsbG9jYXRvcgotICAgIGlmIChoZWFwLnVzZWRPdmVyc2l6ZUNl
bGxzID09IGhlYXAubnVtT3ZlcnNpemVDZWxscykgewotICAgICAgaGVhcC5udW1PdmVyc2l6ZUNl
bGxzID0gbWF4KE1JTl9BUlJBWV9TSVpFLCBoZWFwLm51bU92ZXJzaXplQ2VsbHMgKiBHUk9XVEhf
RkFDVE9SKTsKLSAgICAgIGhlYXAub3ZlcnNpemVDZWxscyA9IChDb2xsZWN0b3JDZWxsICoqKWtq
c19mYXN0X3JlYWxsb2MoaGVhcC5vdmVyc2l6ZUNlbGxzLCBoZWFwLm51bU92ZXJzaXplQ2VsbHMg
KiBzaXplb2YoQ29sbGVjdG9yQ2VsbCAqKSk7CisKKyAgICBpbnQgdXNlZE92ZXJzaXplQ2VsbHMg
PSBoZWFwLnVzZWRPdmVyc2l6ZUNlbGxzOworICAgIGludCBudW1PdmVyc2l6ZUNlbGxzID0gaGVh
cC5udW1PdmVyc2l6ZUNlbGxzOworCisgICAgaWYgKHVzZWRPdmVyc2l6ZUNlbGxzID09IG51bU92
ZXJzaXplQ2VsbHMpIHsKKyAgICAgIG51bU92ZXJzaXplQ2VsbHMgPSBNQVgoTUlOX0FSUkFZX1NJ
WkUsIG51bU92ZXJzaXplQ2VsbHMgKiBHUk9XVEhfRkFDVE9SKTsKKyAgICAgIGhlYXAubnVtT3Zl
cnNpemVDZWxscyA9IG51bU92ZXJzaXplQ2VsbHM7CisgICAgICBoZWFwLm92ZXJzaXplQ2VsbHMg
PSBzdGF0aWNfY2FzdDxDb2xsZWN0b3JDZWxsICoqPihranNfZmFzdF9yZWFsbG9jKGhlYXAub3Zl
cnNpemVDZWxscywgbnVtT3ZlcnNpemVDZWxscyAqIHNpemVvZihDb2xsZWN0b3JDZWxsICopKSk7
CiAgICAgfQogICAgIAogICAgIHZvaWQgKm5ld0NlbGwgPSBranNfZmFzdF9tYWxsb2Mocyk7Ci0g
ICAgaGVhcC5vdmVyc2l6ZUNlbGxzW2hlYXAudXNlZE92ZXJzaXplQ2VsbHNdID0gKENvbGxlY3Rv
ckNlbGwgKiluZXdDZWxsOwotICAgIGhlYXAudXNlZE92ZXJzaXplQ2VsbHMrKzsKKyAgICBoZWFw
Lm92ZXJzaXplQ2VsbHNbdXNlZE92ZXJzaXplQ2VsbHNdID0gc3RhdGljX2Nhc3Q8Q29sbGVjdG9y
Q2VsbCAqPihuZXdDZWxsKTsKKyAgICBoZWFwLnVzZWRPdmVyc2l6ZUNlbGxzID0gdXNlZE92ZXJz
aXplQ2VsbHMgKyAxOwogICAgIGhlYXAubnVtTGl2ZU9iamVjdHMgPSBudW1MaXZlT2JqZWN0cyAr
IDE7CiAKICAgICByZXR1cm4gbmV3Q2VsbDsKQEAgLTExOSwzMCArMTIwLDQwIEBACiAgIAogICAv
LyBzbGFiIGFsbG9jYXRvcgogICAKLSAgQ29sbGVjdG9yQmxvY2sgKnRhcmdldEJsb2NrID0gTlVM
TDsKLSAgCi0gIGludCBpOwotICBmb3IgKGkgPSBoZWFwLmZpcnN0QmxvY2tXaXRoUG9zc2libGVT
cGFjZTsgaSA8IGhlYXAudXNlZEJsb2NrczsgaSsrKSB7Ci0gICAgaWYgKGhlYXAuYmxvY2tzW2ld
LT51c2VkQ2VsbHMgPCBDRUxMU19QRVJfQkxPQ0spIHsKKyAgaW50IHVzZWRCbG9ja3MgPSBoZWFw
LnVzZWRCbG9ja3M7CisKKyAgaW50IGkgPSBoZWFwLmZpcnN0QmxvY2tXaXRoUG9zc2libGVTcGFj
ZTsKKyAgQ29sbGVjdG9yQmxvY2sgKnRhcmdldEJsb2NrOworICBpbnQgdGFyZ2V0QmxvY2tVc2Vk
Q2VsbHM7CisgIGlmIChpICE9IHVzZWRCbG9ja3MpIHsKKyAgICB0YXJnZXRCbG9jayA9IGhlYXAu
YmxvY2tzW2ldOworICAgIHRhcmdldEJsb2NrVXNlZENlbGxzID0gdGFyZ2V0QmxvY2stPnVzZWRD
ZWxsczsKKyAgICBhc3NlcnQodGFyZ2V0QmxvY2tVc2VkQ2VsbHMgPD0gQ0VMTFNfUEVSX0JMT0NL
KTsKKyAgICB3aGlsZSAodGFyZ2V0QmxvY2tVc2VkQ2VsbHMgPT0gQ0VMTFNfUEVSX0JMT0NLKSB7
CisgICAgICBpZiAoKytpID09IHVzZWRCbG9ja3MpCisgICAgICAgIGdvdG8gYWxsb2NhdGVOZXdC
bG9jazsKICAgICAgIHRhcmdldEJsb2NrID0gaGVhcC5ibG9ja3NbaV07Ci0gICAgICBicmVhazsK
KyAgICAgIHRhcmdldEJsb2NrVXNlZENlbGxzID0gdGFyZ2V0QmxvY2stPnVzZWRDZWxsczsKKyAg
ICAgIGFzc2VydCh0YXJnZXRCbG9ja1VzZWRDZWxscyA8PSBDRUxMU19QRVJfQkxPQ0spOwogICAg
IH0KLSAgfQotCi0gIGhlYXAuZmlyc3RCbG9ja1dpdGhQb3NzaWJsZVNwYWNlID0gaTsKLSAgCi0g
IGlmICh0YXJnZXRCbG9jayA9PSBOVUxMKSB7CisgICAgaGVhcC5maXJzdEJsb2NrV2l0aFBvc3Np
YmxlU3BhY2UgPSBpOworICB9IGVsc2UgeworYWxsb2NhdGVOZXdCbG9jazoKICAgICAvLyBkaWRu
J3QgZmluZCBvbmUsIG5lZWQgdG8gYWxsb2NhdGUgYSBuZXcgYmxvY2sKLSAgICAKLSAgICBpZiAo
aGVhcC51c2VkQmxvY2tzID09IGhlYXAubnVtQmxvY2tzKSB7Ci0gICAgICBoZWFwLm51bUJsb2Nr
cyA9IG1heChNSU5fQVJSQVlfU0laRSwgaGVhcC5udW1CbG9ja3MgKiBHUk9XVEhfRkFDVE9SKTsK
LSAgICAgIGhlYXAuYmxvY2tzID0gKENvbGxlY3RvckJsb2NrICoqKWtqc19mYXN0X3JlYWxsb2Mo
aGVhcC5ibG9ja3MsIGhlYXAubnVtQmxvY2tzICogc2l6ZW9mKENvbGxlY3RvckJsb2NrICopKTsK
KworICAgIGludCBudW1CbG9ja3MgPSBoZWFwLm51bUJsb2NrczsKKyAgICBpZiAodXNlZEJsb2Nr
cyA9PSBoZWFwLm51bUJsb2NrcykgeworICAgICAgbnVtQmxvY2tzID0gTUFYKE1JTl9BUlJBWV9T
SVpFLCBudW1CbG9ja3MgKiBHUk9XVEhfRkFDVE9SKTsKKyAgICAgIGhlYXAubnVtQmxvY2tzID0g
bnVtQmxvY2tzOworICAgICAgaGVhcC5ibG9ja3MgPSBzdGF0aWNfY2FzdDxDb2xsZWN0b3JCbG9j
ayAqKj4oa2pzX2Zhc3RfcmVhbGxvYyhoZWFwLmJsb2NrcywgbnVtQmxvY2tzICogc2l6ZW9mKENv
bGxlY3RvckJsb2NrICopKSk7CiAgICAgfQotICAgIAotICAgIHRhcmdldEJsb2NrID0gKENvbGxl
Y3RvckJsb2NrICopa2pzX2Zhc3RfY2FsbG9jKDEsIHNpemVvZihDb2xsZWN0b3JCbG9jaykpOwor
CisgICAgdGFyZ2V0QmxvY2sgPSBzdGF0aWNfY2FzdDxDb2xsZWN0b3JCbG9jayAqPihranNfZmFz
dF9jYWxsb2MoMSwgc2l6ZW9mKENvbGxlY3RvckJsb2NrKSkpOwogICAgIHRhcmdldEJsb2NrLT5m
cmVlTGlzdCA9IHRhcmdldEJsb2NrLT5jZWxsczsKLSAgICBoZWFwLmJsb2Nrc1toZWFwLnVzZWRC
bG9ja3NdID0gdGFyZ2V0QmxvY2s7Ci0gICAgaGVhcC51c2VkQmxvY2tzKys7CisgICAgdGFyZ2V0
QmxvY2tVc2VkQ2VsbHMgPSAwOworICAgIGhlYXAuYmxvY2tzW3VzZWRCbG9ja3NdID0gdGFyZ2V0
QmxvY2s7CisgICAgaGVhcC51c2VkQmxvY2tzID0gdXNlZEJsb2NrcyArIDE7CisgICAgaGVhcC5m
aXJzdEJsb2NrV2l0aFBvc3NpYmxlU3BhY2UgPSB1c2VkQmxvY2tzOwogICB9CiAgIAogICAvLyBm
aW5kIGEgZnJlZSBzcG90IGluIHRoZSBibG9jayBhbmQgZGV0YWNoIGl0IGZyb20gdGhlIGZyZWUg
bGlzdApAQCAtMTUyLDcgKzE2Myw3IEBACiAgIC8vIGNvdWxkIGF2b2lkIHRoZSBjYXN0cyBieSB1
c2luZyBhIGNlbGwgb2Zmc2V0LCBidXQgdGhpcyBhdm9pZHMgYSByZWxhdGl2ZWx5LXNsb3cgbXVs
dGlwbHkKICAgdGFyZ2V0QmxvY2stPmZyZWVMaXN0ID0gcmVpbnRlcnByZXRfY2FzdDxDb2xsZWN0
b3JDZWxsICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPihuZXdDZWxsICsgMSkgKyBuZXdDZWxs
LT51LmZyZWVDZWxsLm5leHQpOwogCi0gIHRhcmdldEJsb2NrLT51c2VkQ2VsbHMrKzsKKyAgdGFy
Z2V0QmxvY2stPnVzZWRDZWxscyA9IHRhcmdldEJsb2NrVXNlZENlbGxzICsgMTsKICAgaGVhcC5u
dW1MaXZlT2JqZWN0cyA9IG51bUxpdmVPYmplY3RzICsgMTsKIAogICByZXR1cm4gbmV3Q2VsbDsK
QEAgLTIyNywzMyArMjM4LDMxIEBACiAgIGNoYXIgKipwID0gKGNoYXIgKiopc3RhcnQ7CiAgIGNo
YXIgKiplID0gKGNoYXIgKiopZW5kOwogICAKKyAgaW50IHVzZWRCbG9ja3MgPSBoZWFwLnVzZWRC
bG9ja3M7CisgIENvbGxlY3RvckJsb2NrICoqYmxvY2tzID0gaGVhcC5ibG9ja3M7CisgIGludCB1
c2VkT3ZlcnNpemVDZWxscyA9IGhlYXAudXNlZE92ZXJzaXplQ2VsbHM7CisgIENvbGxlY3RvckNl
bGwgKipvdmVyc2l6ZUNlbGxzID0gaGVhcC5vdmVyc2l6ZUNlbGxzOworCisgIGNvbnN0IHNpemVf
dCBsYXN0Q2VsbE9mZnNldCA9IHNpemVvZihDb2xsZWN0b3JDZWxsKSAqIChDRUxMU19QRVJfQkxP
Q0sgLSAxKTsKKwogICB3aGlsZSAocCAhPSBlKSB7CiAgICAgY2hhciAqeCA9ICpwKys7CiAgICAg
aWYgKElTX0NFTExfQUxJR05FRCh4KSAmJiB4KSB7Ci0gICAgICBib29sIGdvb2QgPSBmYWxzZTsK
LSAgICAgIGZvciAoaW50IGJsb2NrID0gMDsgYmxvY2sgPCBoZWFwLnVzZWRCbG9ja3M7IGJsb2Nr
KyspIHsKLQlzaXplX3Qgb2Zmc2V0ID0geCAtIChjaGFyICopaGVhcC5ibG9ja3NbYmxvY2tdOwot
CWNvbnN0IHNpemVfdCBsYXN0Q2VsbE9mZnNldCA9IHNpemVvZihDb2xsZWN0b3JDZWxsKSAqIChD
RUxMU19QRVJfQkxPQ0sgLSAxKTsKLQlpZiAob2Zmc2V0IDw9IGxhc3RDZWxsT2Zmc2V0ICYmIG9m
ZnNldCAlIHNpemVvZihDb2xsZWN0b3JDZWxsKSA9PSAwKSB7Ci0JICBnb29kID0gdHJ1ZTsKLQkg
IGJyZWFrOwotCX0KKyAgICAgIGZvciAoaW50IGJsb2NrID0gMDsgYmxvY2sgPCB1c2VkQmxvY2tz
OyBibG9jaysrKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSB4IC0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyICo+KGJsb2Nrc1tibG9ja10pOworCWlmIChvZmZzZXQgPD0gbGFzdENlbGxPZmZzZXQg
JiYgb2Zmc2V0ICUgc2l6ZW9mKENvbGxlY3RvckNlbGwpID09IDApCisgICAgICAgICAgZ290byBn
b3RHb29kUG9pbnRlcjsKICAgICAgIH0KLSAgICAgIAotICAgICAgaWYgKCFnb29kKSB7Ci0JaW50
IG4gPSBoZWFwLnVzZWRPdmVyc2l6ZUNlbGxzOwotCWZvciAoaW50IGkgPSAwOyBpICE9IG47IGkr
KykgewotCSAgaWYgKHggPT0gKGNoYXIgKiloZWFwLm92ZXJzaXplQ2VsbHNbaV0pIHsKLQkgICAg
Z29vZCA9IHRydWU7Ci0JICAgIGJyZWFrOwotCSAgfQotCX0KLSAgICAgIH0KLSAgICAgIAotICAg
ICAgaWYgKGdvb2QgJiYgKChDb2xsZWN0b3JDZWxsICopeCktPnUuZnJlZUNlbGwuemVyb0lmRnJl
ZSAhPSAwKSB7Ci0JQWxsb2NhdGVkVmFsdWVJbXAgKmltcCA9IChBbGxvY2F0ZWRWYWx1ZUltcCAq
KXg7Ci0JaWYgKCFpbXAtPm1hcmtlZCgpKQotCSAgaW1wLT5tYXJrKCk7CisgICAgICBmb3IgKGlu
dCBpID0gMDsgaSAhPSB1c2VkT3ZlcnNpemVDZWxsczsgaSsrKQorICAgICAgICBpZiAoeCA9PSBy
ZWludGVycHJldF9jYXN0PGNoYXIgKj4ob3ZlcnNpemVDZWxsc1tpXSkpCisgICAgICAgICAgZ290
byBnb3RHb29kUG9pbnRlcjsKKyAgICAgIGNvbnRpbnVlOworCitnb3RHb29kUG9pbnRlcjoKKyAg
ICAgIGlmICgoKENvbGxlY3RvckNlbGwgKil4KS0+dS5mcmVlQ2VsbC56ZXJvSWZGcmVlICE9IDAp
IHsKKyAgICAgICAgQWxsb2NhdGVkVmFsdWVJbXAgKmltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8QWxs
b2NhdGVkVmFsdWVJbXAgKj4oeCk7CisgICAgICAgIGlmICghaW1wLT5tYXJrZWQoKSkKKyAgICAg
ICAgICBpbXAtPm1hcmsoKTsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTMyMywxMCArMzMyLDEx
IEBACiAKIHZvaWQgQ29sbGVjdG9yOjptYXJrUHJvdGVjdGVkT2JqZWN0cygpCiB7Ci0gIGludCBz
aXplID0gUHJvdGVjdGVkVmFsdWVzOjpfdGFibGVTaXplOwotICBQcm90ZWN0ZWRWYWx1ZXM6Oktl
eVZhbHVlICp0YWJsZSA9IFByb3RlY3RlZFZhbHVlczo6X3RhYmxlOwotICBmb3IgKGludCBpID0g
MDsgaSA8IHNpemU7IGkrKykgewotICAgIFZhbHVlSW1wICp2YWwgPSB0YWJsZVtpXS5rZXk7Cisg
IHR5cGVkZWYgUHJvdGVjdGVkVmFsdWVzOjpLZXlWYWx1ZSBFbnRyeTsKKyAgRW50cnkgKnRhYmxl
ID0gUHJvdGVjdGVkVmFsdWVzOjpfdGFibGU7CisgIEVudHJ5ICplbmQgPSB0YWJsZSArIFByb3Rl
Y3RlZFZhbHVlczo6X3RhYmxlU2l6ZTsKKyAgZm9yIChFbnRyeSAqZW50cnkgPSB0YWJsZTsgZW50
cnkgIT0gZW5kOyArK2VudHJ5KSB7CisgICAgQWxsb2NhdGVkVmFsdWVJbXAgKnZhbCA9IGVudHJ5
LT5rZXk7CiAgICAgaWYgKHZhbCAmJiAhdmFsLT5tYXJrZWQoKSkgewogICAgICAgdmFsLT5tYXJr
KCk7CiAgICAgfQpAQCAtMzM3LDggKzM0Nyw2IEBACiB7CiAgIGFzc2VydChJbnRlcnByZXRlcjo6
bG9ja0NvdW50KCkgPiAwKTsKIAotICBib29sIGRlbGV0ZWQgPSBmYWxzZTsKLQogICBpZiAoSW50
ZXJwcmV0ZXJJbXA6OnNfaG9vaykgewogICAgIEludGVycHJldGVySW1wICpzY3IgPSBJbnRlcnBy
ZXRlckltcDo6c19ob29rOwogICAgIGRvIHsKQEAgLTM2Miw0NiArMzcwLDU5IEBACiAgIGZvciAo
aW50IGJsb2NrID0gMDsgYmxvY2sgPCBoZWFwLnVzZWRCbG9ja3M7IGJsb2NrKyspIHsKICAgICBD
b2xsZWN0b3JCbG9jayAqY3VyQmxvY2sgPSBoZWFwLmJsb2Nrc1tibG9ja107CiAKLSAgICBpbnQg
bWluaW11bUNlbGxzVG9Qcm9jZXNzID0gY3VyQmxvY2stPnVzZWRDZWxsczsKKyAgICBpbnQgdXNl
ZENlbGxzID0gY3VyQmxvY2stPnVzZWRDZWxsczsKKyAgICBDb2xsZWN0b3JDZWxsICpmcmVlTGlz
dCA9IGN1ckJsb2NrLT5mcmVlTGlzdDsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ0VMTFNf
UEVSX0JMT0NLOyBpKyspIHsKLSAgICAgIGlmIChtaW5pbXVtQ2VsbHNUb1Byb2Nlc3MgPCBpKSB7
Ci0JZ290byBza2lwX2Jsb2NrX3N3ZWVwOworICAgIGlmICh1c2VkQ2VsbHMgPT0gQ0VMTFNfUEVS
X0JMT0NLKSB7CisgICAgICAvLyBzcGVjaWFsIGNhc2Ugd2l0aCBhIGJsb2NrIHdoZXJlIGFsbCBj
ZWxscyBhcmUgdXNlZCAtLSB0ZXN0aW5nIGluZGljYXRlcyB0aGlzIGhhcHBlbnMgb2Z0ZW4KKyAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ0VMTFNfUEVSX0JMT0NLOyBpKyspIHsKKyAgICAgICAg
Q29sbGVjdG9yQ2VsbCAqY2VsbCA9IGN1ckJsb2NrLT5jZWxscyArIGk7CisgICAgICAgIEFsbG9j
YXRlZFZhbHVlSW1wICppbXAgPSByZWludGVycHJldF9jYXN0PEFsbG9jYXRlZFZhbHVlSW1wICo+
KGNlbGwpOworICAgICAgICBpZiAoaW1wLT5tX21hcmtlZCkgeworICAgICAgICAgIGltcC0+bV9t
YXJrZWQgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBpbXAtPn5BbGxvY2F0
ZWRWYWx1ZUltcCgpOworICAgICAgICAgIC0tdXNlZENlbGxzOworICAgICAgICAgIC0tbnVtTGl2
ZU9iamVjdHM7CisKKyAgICAgICAgICAvLyBwdXQgY2VsbCBvbiB0aGUgZnJlZSBsaXN0CisgICAg
ICAgICAgY2VsbC0+dS5mcmVlQ2VsbC56ZXJvSWZGcmVlID0gMDsKKyAgICAgICAgICBjZWxsLT51
LmZyZWVDZWxsLm5leHQgPSByZWludGVycHJldF9jYXN0PGNoYXIgKj4oZnJlZUxpc3QpIC0gcmVp
bnRlcnByZXRfY2FzdDxjaGFyICo+KGNlbGwgKyAxKTsKKyAgICAgICAgICBmcmVlTGlzdCA9IGNl
bGw7CisgICAgICAgIH0KICAgICAgIH0KLQotICAgICAgQ29sbGVjdG9yQ2VsbCAqY2VsbCA9IGN1
ckJsb2NrLT5jZWxscyArIGk7Ci0gICAgICBBbGxvY2F0ZWRWYWx1ZUltcCAqaW1wID0gcmVpbnRl
cnByZXRfY2FzdDxBbGxvY2F0ZWRWYWx1ZUltcCAqPihjZWxsKTsKLQotICAgICAgaWYgKGNlbGwt
PnUuZnJlZUNlbGwuemVyb0lmRnJlZSAhPSAwKSB7Ci0JaWYgKCFpbXAtPm1fbWFya2VkKQotCXsK
LQkgIC8vZnByaW50ZihzdGRlcnIsICJDb2xsZWN0b3I6OmRlbGV0aW5nIEFsbG9jYXRlZFZhbHVl
SW1wICVwICglcylcbiIsIGltcCwgY2xhc3NOYW1lKGltcCkpOwotCSAgLy8gZW11bGF0ZSBkZXN0
cnVjdGluZyBwYXJ0IG9mICdvcGVyYXRvciBkZWxldGUoKScKLQkgIGltcC0+fkFsbG9jYXRlZFZh
bHVlSW1wKCk7Ci0JICBjdXJCbG9jay0+dXNlZENlbGxzLS07Ci0JICBudW1MaXZlT2JqZWN0cy0t
OwotCSAgZGVsZXRlZCA9IHRydWU7Ci0KLQkgIC8vIHB1dCBpdCBvbiB0aGUgZnJlZSBsaXN0Ci0J
ICBjZWxsLT51LmZyZWVDZWxsLnplcm9JZkZyZWUgPSAwOwotCSAgY2VsbC0+dS5mcmVlQ2VsbC5u
ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyICo+KGN1ckJsb2NrLT5mcmVlTGlzdCkgLSByZWlu
dGVycHJldF9jYXN0PGNoYXIgKj4oY2VsbCArIDEpOwotCSAgY3VyQmxvY2stPmZyZWVMaXN0ID0g
Y2VsbDsKLQotCX0gZWxzZSB7Ci0JICBpbXAtPm1fbWFya2VkID0gZmFsc2U7Ci0JfQotICAgICAg
fSBlbHNlIHsKLQltaW5pbXVtQ2VsbHNUb1Byb2Nlc3MrKzsKKyAgICB9IGVsc2UgeworICAgICAg
aW50IG1pbmltdW1DZWxsc1RvUHJvY2VzcyA9IHVzZWRDZWxsczsKKyAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbWluaW11bUNlbGxzVG9Qcm9jZXNzOyBpKyspIHsKKyAgICAgICAgQ29sbGVjdG9y
Q2VsbCAqY2VsbCA9IGN1ckJsb2NrLT5jZWxscyArIGk7CisgICAgICAgIGlmIChjZWxsLT51LmZy
ZWVDZWxsLnplcm9JZkZyZWUgPT0gMCkgeworICAgICAgICAgICsrbWluaW11bUNlbGxzVG9Qcm9j
ZXNzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIEFsbG9jYXRlZFZhbHVlSW1wICppbXAg
PSByZWludGVycHJldF9jYXN0PEFsbG9jYXRlZFZhbHVlSW1wICo+KGNlbGwpOworCSAgaWYgKGlt
cC0+bV9tYXJrZWQpIHsKKwkgICAgaW1wLT5tX21hcmtlZCA9IGZhbHNlOworCSAgfSBlbHNlIHsK
KwkgICAgaW1wLT5+QWxsb2NhdGVkVmFsdWVJbXAoKTsKKwkgICAgLS11c2VkQ2VsbHM7CisJICAg
IC0tbnVtTGl2ZU9iamVjdHM7CisKKwkgICAgLy8gcHV0IGNlbGwgb24gdGhlIGZyZWUgbGlzdAor
CSAgICBjZWxsLT51LmZyZWVDZWxsLnplcm9JZkZyZWUgPSAwOworCSAgICBjZWxsLT51LmZyZWVD
ZWxsLm5leHQgPSByZWludGVycHJldF9jYXN0PGNoYXIgKj4oZnJlZUxpc3QpIC0gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyICo+KGNlbGwgKyAxKTsKKwkgICAgZnJlZUxpc3QgPSBjZWxsOworICAgICAg
ICAgIH0KKyAgICAgICAgfQogICAgICAgfQogICAgIH0KKyAgICAKKyAgICBjdXJCbG9jay0+dXNl
ZENlbGxzID0gdXNlZENlbGxzOworICAgIGN1ckJsb2NrLT5mcmVlTGlzdCA9IGZyZWVMaXN0Owog
Ci0gIHNraXBfYmxvY2tfc3dlZXA6Ci0KLSAgICBpZiAoaGVhcC5ibG9ja3NbYmxvY2tdLT51c2Vk
Q2VsbHMgPT0gMCkgeworICAgIGlmICh1c2VkQ2VsbHMgPT0gMCkgewogICAgICAgZW1wdHlCbG9j
a3MrKzsKICAgICAgIGlmIChlbXB0eUJsb2NrcyA+IFNQQVJFX0VNUFRZX0JMT0NLUykgewogI2lm
ICFERUJVR19DT0xMRUNUT1IKLQlranNfZmFzdF9mcmVlKGhlYXAuYmxvY2tzW2Jsb2NrXSk7CisJ
a2pzX2Zhc3RfZnJlZShjdXJCbG9jayk7CiAjZW5kaWYKIAkvLyBzd2FwIHdpdGggdGhlIGxhc3Qg
YmxvY2sgc28gd2UgY29tcGFjdCBhcyB3ZSBnbwogCWhlYXAuYmxvY2tzW2Jsb2NrXSA9IGhlYXAu
YmxvY2tzW2hlYXAudXNlZEJsb2NrcyAtIDFdOwpAQCAtNDEyLDEzICs0MzMsMTIgQEAKIAkgIGhl
YXAubnVtQmxvY2tzID0gaGVhcC5udW1CbG9ja3MgLyBHUk9XVEhfRkFDVE9SOyAKIAkgIGhlYXAu
YmxvY2tzID0gKENvbGxlY3RvckJsb2NrICoqKWtqc19mYXN0X3JlYWxsb2MoaGVhcC5ibG9ja3Ms
IGhlYXAubnVtQmxvY2tzICogc2l6ZW9mKENvbGxlY3RvckJsb2NrICopKTsKIAl9Ci0gICAgICB9
IAorICAgICAgfQogICAgIH0KICAgfQogCi0gIGlmIChkZWxldGVkKSB7CisgIGlmIChoZWFwLm51
bUxpdmVPYmplY3RzICE9IG51bUxpdmVPYmplY3RzKQogICAgIGhlYXAuZmlyc3RCbG9ja1dpdGhQ
b3NzaWJsZVNwYWNlID0gMDsKLSAgfQogICAKICAgaW50IGNlbGwgPSAwOwogICB3aGlsZSAoY2Vs
bCA8IGhlYXAudXNlZE92ZXJzaXplQ2VsbHMpIHsKQEAgLTQyOSwyNyArNDQ5LDI3IEBACiAjaWYg
REVCVUdfQ09MTEVDVE9SCiAgICAgICBoZWFwLm92ZXJzaXplQ2VsbHNbY2VsbF0tPnUuZnJlZUNl
bGwuemVyb0lmRnJlZSA9IDA7CiAjZWxzZQotICAgICAga2pzX2Zhc3RfZnJlZSgodm9pZCAqKWlt
cCk7CisgICAgICBranNfZmFzdF9mcmVlKGltcCk7CiAjZW5kaWYKIAogICAgICAgLy8gc3dhcCB3
aXRoIHRoZSBsYXN0IG92ZXJzaXplIGNlbGwgc28gd2UgY29tcGFjdCBhcyB3ZSBnbwogICAgICAg
aGVhcC5vdmVyc2l6ZUNlbGxzW2NlbGxdID0gaGVhcC5vdmVyc2l6ZUNlbGxzW2hlYXAudXNlZE92
ZXJzaXplQ2VsbHMgLSAxXTsKIAogICAgICAgaGVhcC51c2VkT3ZlcnNpemVDZWxscy0tOwotICAg
ICAgZGVsZXRlZCA9IHRydWU7CiAgICAgICBudW1MaXZlT2JqZWN0cy0tOwogCiAgICAgICBpZiAo
aGVhcC5udW1PdmVyc2l6ZUNlbGxzID4gTUlOX0FSUkFZX1NJWkUgJiYgaGVhcC51c2VkT3ZlcnNp
emVDZWxscyA8IGhlYXAubnVtT3ZlcnNpemVDZWxscyAvIExPV19XQVRFUl9GQUNUT1IpIHsKIAlo
ZWFwLm51bU92ZXJzaXplQ2VsbHMgPSBoZWFwLm51bU92ZXJzaXplQ2VsbHMgLyBHUk9XVEhfRkFD
VE9SOyAKIAloZWFwLm92ZXJzaXplQ2VsbHMgPSAoQ29sbGVjdG9yQ2VsbCAqKilranNfZmFzdF9y
ZWFsbG9jKGhlYXAub3ZlcnNpemVDZWxscywgaGVhcC5udW1PdmVyc2l6ZUNlbGxzICogc2l6ZW9m
KENvbGxlY3RvckNlbGwgKikpOwogICAgICAgfQotCiAgICAgfSBlbHNlIHsKICAgICAgIGltcC0+
bV9tYXJrZWQgPSBmYWxzZTsKICAgICAgIGNlbGwrKzsKICAgICB9CiAgIH0KICAgCisgIGJvb2wg
ZGVsZXRlZCA9IGhlYXAubnVtTGl2ZU9iamVjdHMgIT0gbnVtTGl2ZU9iamVjdHM7CisKICAgaGVh
cC5udW1MaXZlT2JqZWN0cyA9IG51bUxpdmVPYmplY3RzOwogICBoZWFwLm51bUxpdmVPYmplY3Rz
QXRMYXN0Q29sbGVjdCA9IG51bUxpdmVPYmplY3RzOwogICAKQEAgLTQ5NCw3ICs1MTQsNyBAQAog
ICBpbnQgc2l6ZSA9IFByb3RlY3RlZFZhbHVlczo6X3RhYmxlU2l6ZTsKICAgUHJvdGVjdGVkVmFs
dWVzOjpLZXlWYWx1ZSAqdGFibGUgPSBQcm90ZWN0ZWRWYWx1ZXM6Ol90YWJsZTsKICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICBWYWx1ZUltcCAqdmFsID0gdGFibGVbaV0u
a2V5OworICAgIEFsbG9jYXRlZFZhbHVlSW1wICp2YWwgPSB0YWJsZVtpXS5rZXk7CiAgICAgaWYg
KHZhbCkgewogICAgICAgKytjb3VudDsKICAgICB9CkBAIC01MDUsNyArNTI1LDcgQEAKIAogI2lm
IEFQUExFX0NIQU5HRVMKIAotc3RhdGljIGNvbnN0IGNoYXIgKmNsYXNzTmFtZShWYWx1ZUltcCAq
dmFsKQorc3RhdGljIGNvbnN0IGNoYXIgKmNsYXNzTmFtZShBbGxvY2F0ZWRWYWx1ZUltcCAqdmFs
KQogewogICBjb25zdCBjaGFyICpuYW1lID0gIj8/PyI7CiAgIHN3aXRjaCAodmFsLT50eXBlKCkp
IHsKQEAgLTU0Miw3ICs1NjIsNyBAQAogICBpbnQgc2l6ZSA9IFByb3RlY3RlZFZhbHVlczo6X3Rh
YmxlU2l6ZTsKICAgUHJvdGVjdGVkVmFsdWVzOjpLZXlWYWx1ZSAqdGFibGUgPSBQcm90ZWN0ZWRW
YWx1ZXM6Ol90YWJsZTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICBW
YWx1ZUltcCAqdmFsID0gdGFibGVbaV0ua2V5OworICAgIEFsbG9jYXRlZFZhbHVlSW1wICp2YWwg
PSB0YWJsZVtpXS5rZXk7CiAgICAgaWYgKHZhbCkgewogICAgICAgQ0ZTdHJpbmdSZWYgbmFtZSA9
IENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgY2xhc3NOYW1lKHZhbCksIGtDRlN0cmlu
Z0VuY29kaW5nQVNDSUkpOwogICAgICAgQ0ZTZXRBZGRWYWx1ZShjbGFzc2VzLCBuYW1lKTsK
</data>
<flag name="review"
          id="358"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>