<?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>120179</bug_id>
          
          <creation_ts>2013-08-22 16:22:41 -0700</creation_ts>
          <short_desc>JSObject and JSArray code shouldn&apos;t have to tiptoe around garbage collection</short_desc>
          <delta_ts>2013-09-12 10:58:08 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>121074</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>920008</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-08-22 16:22:41 -0700</bug_when>
    <thetext>There are many places in the code for JSObject and JSArray where they are manipulating their Butterfly/Structure, e.g. after expanding their out-of-line backing storage via allocating. Within these places there are certain &quot;critical sections&quot; where a GC would be disastrous. Gen GC looks like it will make this dance even more intricate. To make everybody&apos;s lives easier we should use the DeferGC mechanism in these functions to make these GC critical sections both obvious in the code and trivially safe. Deferring collections will usually only last marginally longer, thus we should not incur any additional overhead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920009</commentid>
    <comment_count>1</comment_count>
      <attachid>209405</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-08-22 16:25:12 -0700</bug_when>
    <thetext>Created attachment 209405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920010</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-08-22 16:25:30 -0700</bug_when>
    <thetext>Still running benchmarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920016</commentid>
    <comment_count>3</comment_count>
      <attachid>209405</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-08-22 16:41:29 -0700</bug_when>
    <thetext>Comment on attachment 209405
Patch

If we used DeferGC when creating JS objects, we could remove the whole &quot;finishConstruction&quot; dance and switch back to normal C++ constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920043</commentid>
    <comment_count>4</comment_count>
      <attachid>209405</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-22 17:44:34 -0700</bug_when>
    <thetext>Comment on attachment 209405
Patch

Clearing flags on attachment: 209405

Committed r154471: &lt;http://trac.webkit.org/changeset/154471&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920044</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-22 17:44:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209405</attachid>
            <date>2013-08-22 16:25:12 -0700</date>
            <delta_ts>2013-08-22 17:44:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120179-20130822162505.patch</filename>
            <type>text/plain</type>
            <size>11073</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0NDY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDEzLTA4LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNPYmplY3QgYW5kIEpTQXJyYXkgY29kZSBzaG91bGRuJ3QgaGF2ZSB0byB0aXB0
b2UgYXJvdW5kIGdhcmJhZ2UgY29sbGVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIG1hbnkgcGxhY2VzIGluIHRoZSBjb2RlIGZv
ciBKU09iamVjdCBhbmQgSlNBcnJheSB3aGVyZSB0aGV5IGFyZSBtYW5pcHVsYXRpbmcgdGhlaXIg
CisgICAgICAgIEJ1dHRlcmZseS9TdHJ1Y3R1cmUsIGUuZy4gYWZ0ZXIgZXhwYW5kaW5nIHRoZWly
IG91dC1vZi1saW5lIGJhY2tpbmcgc3RvcmFnZSB2aWEgYWxsb2NhdGluZy4gV2l0aGluIAorICAg
ICAgICB0aGVzZSBwbGFjZXMgdGhlcmUgYXJlIGNlcnRhaW4gImNyaXRpY2FsIHNlY3Rpb25zIiB3
aGVyZSBhIEdDIHdvdWxkIGJlIGRpc2FzdHJvdXMuIEdlbiBHQyBsb29rcyAKKyAgICAgICAgbGlr
ZSBpdCB3aWxsIG1ha2UgdGhpcyBkYW5jZSBldmVuIG1vcmUgaW50cmljYXRlLiBUbyBtYWtlIGV2
ZXJ5Ym9keSdzIGxpdmVzIGVhc2llciB3ZSBzaG91bGQgdXNlIAorICAgICAgICB0aGUgRGVmZXJH
QyBtZWNoYW5pc20gaW4gdGhlc2UgZnVuY3Rpb25zIHRvIG1ha2UgdGhlc2UgR0MgY3JpdGljYWwg
c2VjdGlvbnMgYm90aCBvYnZpb3VzIGluIHRoZSAKKyAgICAgICAgY29kZSBhbmQgdHJpdmlhbGx5
IHNhZmUuIERlZmVycmluZyBjb2xsZWN0aW9ucyB3aWxsIHVzdWFsbHkgb25seSBsYXN0IG1hcmdp
bmFsbHkgbG9uZ2VyLCB0aHVzIHdlIAorICAgICAgICBzaG91bGQgbm90IGluY3VyIGFueSBhZGRp
dGlvbmFsIG92ZXJoZWFkLgorCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50U2xv
d0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlV2hlbkFycmF5U3RvcmFnZUFscmVh
ZHlFeGlzdHMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlSW5pdGlhbFVuZGVjaWRl
ZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0aWFsSW50MzIpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlSW5pdGlhbERvdWJsZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjcmVhdGVJbml0aWFsQ29udGlndW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpjcmVhdGVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydFVu
ZGVjaWRlZFRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJ
bnQzMlRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnREb3Vi
bGVUb0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0Q29udGln
dW91c1RvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluY3JlYXNlVmVj
dG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFu
ZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorCiAyMDEzLTA4LTIyICBHYXZpbiBCYXJyYWNs
b3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMTI4CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCShyZXZpc2lvbiAxNTQ0NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw5ICsyMzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSlNTdGFjayYgc3RhY2soKTsKICAgICAgICAgQmxvY2tBbGxvY2F0b3ImIGJsb2Nr
QWxsb2NhdG9yKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluY3JlbWVudERlZmVycmFsRGVw
dGgoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbmNyZW1lbnREZWZlcnJhbERl
cHRoKCk7CiAgICAgICAgIHZvaWQgZGVjcmVtZW50RGVmZXJyYWxEZXB0aCgpOwotICAgICAgICB2
b2lkIGRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQoKTsK
IAogICAgICAgICBjb25zdCBIZWFwVHlwZSBtX2hlYXBUeXBlOwogICAgICAgICBjb25zdCBzaXpl
X3QgbV9yYW1TaXplOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAJKHJldmlzaW9uIDE1NDQ2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNiArMjY5LDcgQEAgYm9vbCBKU0Fy
cmF5Ojp1bnNoaWZ0Q291bnRTbG93Q2FzZShWTSYgdgogICAgIC8vIFN0ZXAgMjoKICAgICAvLyBX
ZSdyZSBlaXRoZXIgZ29pbmcgdG8gY2hvb3NlIHRvIGFsbG9jYXRlIGEgbmV3IEFycmF5U3RvcmFn
ZSwgb3Igd2UncmUgZ29pbmcgdG8gcmV1c2UgdGhlIGV4aXN0aW5nIG9uZS4KIAorICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICB2b2lkKiBuZXdBbGxvY0Jhc2UgPSAwOwogICAgIHVu
c2lnbmVkIG5ld1N0b3JhZ2VDYXBhY2l0eTsKICAgICAvLyBJZiB0aGUgY3VycmVudCBzdG9yYWdl
IGFycmF5IGlzIHN1ZmZpY2llbnRseSBsYXJnZSAoYnV0IG5vdCB0b28gbGFyZ2UhKSB0aGVuIGp1
c3Qga2VlcCB1c2luZyBpdC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAJKHJldmlzaW9uIDE1NDQ2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2LDYgKzU0Niw3IEBAIEFy
cmF5U3RvcmFnZSogSlNPYmplY3Q6OmVudGVyRGljdGlvbmFyeUkKICAgICAgICAgICAgIG1hcC0+
YWRkKHRoaXMsIGkpLml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICB9
CiAKKyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0
ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+cmVzaXplQXJyYXkodm0sIHRoaXMsIHN0cnVj
dHVyZSgpLCAwLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IoMCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KG5ld0J1dHRlcmZseSk7CiAgICAgCkBAIC02MDksNiArNjEwLDcgQEAgQnV0dGVyZmx5KiBKU09i
amVjdDo6Y3JlYXRlSW5pdGlhbEluZGV4ZQogCiBCdXR0ZXJmbHkqIEpTT2JqZWN0OjpjcmVhdGVJ
bml0aWFsVW5kZWNpZGVkKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIERlZmVyR0Mg
ZGVmZXJHQyh2bS5oZWFwKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUlu
aXRpYWxJbmRleGVkU3RvcmFnZSh2bSwgbGVuZ3RoLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsK
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFu
c2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVVbmRlY2lkZWQpOwogICAgIHNldFN0cnVj
dHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwpAQCAtNjE3
LDYgKzYxOSw3IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxVbmRlY2kKIAog
Q29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsSW50MzIoVk0mIHZtLCB1
bnNpZ25lZCBsZW5ndGgpCiB7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEJ1
dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdlKHZtLCBs
ZW5ndGgsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBB
bGxvY2F0ZUludDMyKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0cnVj
dHVyZSwgbmV3QnV0dGVyZmx5KTsKQEAgLTYyNSw2ICs2MjgsNyBAQCBDb250aWd1b3VzSlNWYWx1
ZXMgSlNPYmplY3Q6OmNyZWF0ZUluaXRpCiAKIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0Ojpj
cmVhdGVJbml0aWFsRG91YmxlKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0
ZUluaXRpYWxJbmRleGVkU3RvcmFnZSh2bSwgbGVuZ3RoLCBzaXplb2YoZG91YmxlKSk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbmV3QnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKICAg
ICAgICAgbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwpAQCAtNjM1
LDYgKzYzOSw3IEBAIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aWEKIAog
Q29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsQ29udGlndW91cyhWTSYg
dm0sIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAg
ICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3JhZ2Uo
dm0sIGxlbmd0aCwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CiAgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJl
KCksIEFsbG9jYXRlQ29udGlndW91cyk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZt
LCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CkBAIC02NDMsNiArNjQ4LDcgQEAgQ29udGln
dW91c0pTVmFsdWVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aQogCiBBcnJheVN0b3JhZ2UqIEpTT2Jq
ZWN0OjpjcmVhdGVBcnJheVN0b3JhZ2UoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVk
IHZlY3Rvckxlbmd0aCkKIHsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgSW5k
ZXhpbmdUeXBlIG9sZFR5cGUgPSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgQVNT
RVJUX1VOVVNFRChvbGRUeXBlLCAhaGFzSW5kZXhlZFByb3BlcnRpZXMob2xkVHlwZSkpOwogICAg
IEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVPckdyb3dBcnJheVJp
Z2h0KApAQCAtNzE3LDYgKzcyMyw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnN0cnVj
dENvbnZlcnQKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQXJy
YXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2ln
bmVkIG5lZWRlZExlbmd0aCkKIHsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAg
QVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAK
ICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3Jh
Z2VXaXRob3V0Q29weWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRMZW5ndGgpOwpAQCAtNzY5LDYgKzc3
Niw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQXIKIHsKICAgICBB
U1NFUlQoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgCisgICAg
RGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEFycmF5U3RvcmFnZSogbmV3U3RvcmFnZSA9
IGNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0s
IG5lZWRlZExlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1Ymxp
Y0xlbmd0aCgpOyBpLS07KSB7CiAgICAgICAgIEpTVmFsdWUgdiA9IG1fYnV0dGVyZmx5LT5jb250
aWd1b3VzKClbaV0uZ2V0KCk7CkBAIC04MzUsNiArODQzLDcgQEAgQ29udGlndW91c0pTVmFsdWVz
IEpTT2JqZWN0OjpyYWdlQ29udmVydAogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0
RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNp
dGlvbiwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogeworICAgIERlZmVyR0MgZGVmZXJHQyh2bS5o
ZWFwKTsKICAgICBBU1NFUlQoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkp
OwogICAgIAogICAgIEFycmF5U3RvcmFnZSogbmV3U3RvcmFnZSA9IGNvbnN0cnVjdENvbnZlcnRl
ZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5lZWRlZExlbmd0aCk7CkBA
IC04NjMsNiArODcyLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJsZVRv
QQogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9y
YWdlKFZNJiB2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5l
ZWRlZExlbmd0aCkKIHsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQVNTRVJU
KGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAg
QXJyYXlTdG9yYWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdl
V2l0aG91dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKQEAgLTIzMTAsNiArMjMy
MCw3IEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiAKIAogICAgIC8v
IEZhc3QgY2FzZSAtIHRoZXJlIGlzIG5vIHByZWNhcGFjaXR5LiBJbiB0aGVzZSBjYXNlcyBhIHJl
YWxsb2MgbWFrZXMgc2Vuc2UuCiAgICAgaWYgKExJS0VMWSghaW5kZXhCaWFzKSkgeworICAgICAg
ICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVy
Zmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPmdyb3dBcnJheVJpZ2h0KAogICAgICAgICAgICAg
dm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwg
dHJ1ZSwKICAgICAgICAgICAgIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpLCBB
cnJheVN0b3JhZ2U6OnNpemVGb3IobmV3VmVjdG9yTGVuZ3RoKSk7CkBAIC0yMzIxLDYgKzIzMzIs
NyBAQCBib29sIEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiAgICAgfQogICAg
IAogICAgIC8vIFJlbW92ZSBzb21lLCBidXQgbm90IGFsbCBvZiB0aGUgcHJlY2FwYWNpdHkuIEF0
b21pYyBkZWNheSwgJiBjYXBwZWQgdG8gbm90IG92ZXJmbG93IGFycmF5IGxlbmd0aC4KKyAgICBE
ZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgdW5zaWduZWQgbmV3SW5kZXhCaWFzID0gc3Rk
OjptaW4oaW5kZXhCaWFzID4+IDEsIE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEggLSBuZXdWZWN0
b3JMZW5ndGgpOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVy
Zmx5KCktPnJlc2l6ZUFycmF5KAogICAgICAgICB2bSwgdGhpcywKQEAgLTIzNDUsNiArMjM1Nyw3
IEBAIHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNsb3coVk0mIHZtLCAKICAgICAgICAgbGVu
Z3RoIDw8IDEsCiAgICAgICAgIE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpOwogICAgIHVuc2ln
bmVkIG9sZFZlY3Rvckxlbmd0aCA9IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKKyAgICBE
ZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgbV9idXR0ZXJmbHkgPSBtX2J1dHRlcmZseS0+
Z3Jvd0FycmF5UmlnaHQoCiAgICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsCiAgICAgICAgIG9sZFZlY3Rvckxlbmd0aCAq
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE1NDQ2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVN0b3Jh
Z2UuaCIKQEAgLTEyOTAsNiArMTI5MSw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbnRlcm5hbCgKICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc0V4dGVu
c2libGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICBEZWZlckdDIGRl
ZmVyR0Modm0uaGVhcCk7CiAgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gbV9idXR0
ZXJmbHk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9y
YWdlKCkpCiAgICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2
bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0
ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CkBAIC0xMzEwLDYgKzEzMTIsNyBAQCBp
bmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0OwogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUodGhpcy0+c3RydWN0
dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0
KSkgeworICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgICAgIEJ1dHRlcmZs
eSogbmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHk7CiAgICAgICAgIGlmIChjdXJyZW50Q2FwYWNp
dHkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQogICAgICAgICAgICAgbmV3QnV0
dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKQEAgLTEzODQsNyArMTM4Nyw4IEBAIGlubGluZSB2
b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWEKICAgICAgICAgc2V0U3RydWN0dXJlKHZt
LCBuZXdTdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCisgICAgRGVm
ZXJHQyBkZWZlckdDKHZtLmhlYXApOyAKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGdy
b3dPdXRPZkxpbmVTdG9yYWdlKAogICAgICAgICB2bSwgb2xkQ2FwYWNpdHksIG5ld1N0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZt
LCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CkBAIC0xNDIwLDYgKzE0MjQsNyBAQCBpbmxp
bmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgCiAKIGlubGluZSB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CisgICAgRGVm
ZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIo
KSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVy
Zmx5ID0gbV9idXR0ZXJmbHk7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd091dE9m
TGluZVN0b3JhZ2UoKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>