<?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>224593</bug_id>
          
          <creation_ts>2021-04-14 23:51:21 -0700</creation_ts>
          <short_desc>[JSC] Remove CodeBlock::RareData::m_catchProfiles</short_desc>
          <delta_ts>2021-04-19 22:01:02 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1750505</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-14 23:51:21 -0700</bug_when>
    <thetext>[JSC] Remove CodeBlock::RareData::m_catchProfiles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750507</commentid>
    <comment_count>1</comment_count>
      <attachid>426078</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-14 23:53:29 -0700</bug_when>
    <thetext>Created attachment 426078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750542</commentid>
    <comment_count>2</comment_count>
      <attachid>426078</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-15 02:19:59 -0700</bug_when>
    <thetext>Comment on attachment 426078
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426078&amp;action=review

Nice work.  r=me

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        So we should just iterate metadata for that and destroy them in the destructor. Do not need to keep them separately.

/Do not need/No need/

&gt; Source/JavaScriptCore/bytecode/ValueProfile.h:210
&gt; +        return bitwise_cast&lt;ValueProfileAndVirtualRegister*&gt;(bitwise_cast&lt;uint8_t*&gt;(this) + sizeof(ValueProfileAndVirtualRegisterBuffer));

Would the following work?  It&apos;s shorter:
    return bitwise_cast&lt;ValueProfileAndVirtualRegister*&gt;(this + 1);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750701</commentid>
    <comment_count>3</comment_count>
      <attachid>426078</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-15 11:56:29 -0700</bug_when>
    <thetext>Comment on attachment 426078
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426078&amp;action=review

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        So we should just iterate metadata for that and destroy them in the destructor. Do not need to keep them separately.
&gt; 
&gt; /Do not need/No need/

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/ValueProfile.h:210
&gt;&gt; +        return bitwise_cast&lt;ValueProfileAndVirtualRegister*&gt;(bitwise_cast&lt;uint8_t*&gt;(this) + sizeof(ValueProfileAndVirtualRegisterBuffer));
&gt; 
&gt; Would the following work?  It&apos;s shorter:
&gt;     return bitwise_cast&lt;ValueProfileAndVirtualRegister*&gt;(this + 1);

It does not work since it is not guaranteed `sizeof(ValueProfileAndVirtualRegister)` == `alignof(ValueProfileAndVirtualRegisterBuffer)`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750704</commentid>
    <comment_count>4</comment_count>
      <attachid>426078</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-15 11:58:20 -0700</bug_when>
    <thetext>Comment on attachment 426078
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426078&amp;action=review

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/ValueProfile.h:210
&gt;&gt;&gt; +        return bitwise_cast&lt;ValueProfileAndVirtualRegister*&gt;(bitwise_cast&lt;uint8_t*&gt;(this) + sizeof(ValueProfileAndVirtualRegisterBuffer));
&gt;&gt; 
&gt;&gt; Would the following work?  It&apos;s shorter:
&gt;&gt;     return bitwise_cast&lt;ValueProfileAndVirtualRegister*&gt;(this + 1);
&gt; 
&gt; It does not work since it is not guaranteed `sizeof(ValueProfileAndVirtualRegister)` == `alignof(ValueProfileAndVirtualRegisterBuffer)`.

But `this` is a ValueProfileAndVirtualRegisterBuffer.  Hence, this + 1 adds sizeof(ValueProfileAndVirtualRegisterBuffer), no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750879</commentid>
    <comment_count>5</comment_count>
      <attachid>426078</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-15 18:28:47 -0700</bug_when>
    <thetext>Comment on attachment 426078
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426078&amp;action=review

&gt;&gt;&gt;&gt; Source/JavaScriptCore/bytecode/ValueProfile.h:210
&gt;&gt;&gt;&gt; +        return bitwise_cast&lt;ValueProfileAndVirtualRegister*&gt;(bitwise_cast&lt;uint8_t*&gt;(this) + sizeof(ValueProfileAndVirtualRegisterBuffer));
&gt;&gt;&gt; 
&gt;&gt;&gt; Would the following work?  It&apos;s shorter:
&gt;&gt;&gt;     return bitwise_cast&lt;ValueProfileAndVirtualRegister*&gt;(this + 1);
&gt;&gt; 
&gt;&gt; It does not work since it is not guaranteed `sizeof(ValueProfileAndVirtualRegister)` == `alignof(ValueProfileAndVirtualRegisterBuffer)`.
&gt; 
&gt; But `this` is a ValueProfileAndVirtualRegisterBuffer.  Hence, this + 1 adds sizeof(ValueProfileAndVirtualRegisterBuffer), no?

Ah! Right. Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750884</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-15 18:37:53 -0700</bug_when>
    <thetext>Committed r276102 (236602@main): &lt;https://commits.webkit.org/236602@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752135</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-04-19 22:01:02 -0700</bug_when>
    <thetext>rdar://76735679</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426078</attachid>
            <date>2021-04-14 23:53:29 -0700</date>
            <delta_ts>2021-04-15 02:19:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224593-20210414235329.patch</filename>
            <type>text/plain</type>
            <size>10633</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NzFkODU1NDZlMTQxNmQyZjhjMDU3YTJmYzQ3YmU5MDJhY2VhMDZkLi40MTk3MGE0YmYzZDQ5MWI1
OGY3MDFhMTMzZmU1NWNjMmQxYjg5M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wNC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NhdGNoUHJv
ZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NDU5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGFyZSBoYXZpbmcgdGhpcyBWZWN0b3IganVzdCBiZWNhdXNlIHdlIHdvdWxkIGxpa2UgdG8gZGVz
dHJveSB0aGVtIHdoZW4gZGVzdHJveWluZyB0aGUgb3duZXIgQmFzZWxpbmUgLyBMTEludCBDb2Rl
QmxvY2suCisgICAgICAgIEJ1dCB3ZSBhcmUgc2V0dGluZyBhIHBvaW50ZXIgaW4gT3BDYXRjaCdz
IG1ldGFkYXRhIGluIEJhc2VsaW5lIC8gTExJbnQuCisgICAgICAgIFNvIHdlIHNob3VsZCBqdXN0
IGl0ZXJhdGUgbWV0YWRhdGEgZm9yIHRoYXQgYW5kIGRlc3Ryb3kgdGhlbSBpbiB0aGUgZGVzdHJ1
Y3Rvci4gRG8gbm90IG5lZWQgdG8ga2VlcCB0aGVtIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1
dGVkRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlQ2F0
Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZUluZGV4U2xvdyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlZGljdGlvbnNBbmRDb3VudExpdmVu
ZXNzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBieXRlY29kZS9W
YWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lz
dGVyQnVmZmVyOjpWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXJCdWZmZXIpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXJCdWZmZXI6On5W
YWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXJCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXJCdWZmZXI6OmZvckVhY2gpOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorCiAyMDIxLTA0LTE0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRG8gbm90IGNvcHkg
U2ltcGxlSnVtcFRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDM3OWE4ZjdhM2IzODdjN2I4NmRlMWYwZTFkZTYzZWYzMTg2YzU3MTUuLjY4
MWI0NmY4M2I0OWI5MzM2NmIyMDNmNjM2NGI3ZWNlMWM1ZTllNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC04MDUsNiArODA1LDE1IEBAIENv
ZGVCbG9jazo6fkNvZGVCbG9jaygpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSgpKSkgeworICAgICAgICBpZiAobV9tZXRhZGF0YSkg
eworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcENhdGNoPihbJl0oYXV0byYgbWV0
YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9idWZmZXIpCisgICAgICAg
ICAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlcjo6ZGVzdHJv
eShzdGQ6OmV4Y2hhbmdlKG1ldGFkYXRhLm1fYnVmZmVyLCBudWxscHRyKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorICAgIH0KKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIFRo
ZSBKSVRDb2RlIChhbmQgaXRzIGNvcnJlc3BvbmRpbmcgREZHOjpDb21tb25EYXRhKSBtYXkgb3V0
bGl2ZSB0aGUgQ29kZUJsb2NrIGJ5CiAgICAgLy8gYSBzaG9ydCBhbW91bnQgb2YgdGltZSBhZnRl
ciB0aGUgQ29kZUJsb2NrIGlzIGRlc3RydWN0ZWQuIEZvciBleGFtcGxlLCB0aGUKQEAgLTE5ODEs
MjUgKzE5OTAsMTIgQEAgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdFeGNl
cHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmQKIAogdm9pZCBDb2RlQmxvY2s6
OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2Rl
KGppdFR5cGUoKSkpOwogICAgIGF1dG8mIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQo
Ynl0ZWNvZGVJbmRleCk7CiAgICAgT3BDYXRjaCBvcCA9IGluc3RydWN0aW9uLT5hczxPcENhdGNo
PigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gb3AubWV0YWRhdGEodGhpcyk7Ci0gICAgaWYgKCEh
bWV0YWRhdGEubV9idWZmZXIpIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsK
LSAgICAgICAgYXV0byogcmFyZURhdGEgPSBtX3JhcmVEYXRhLmdldCgpOwotICAgICAgICBBU1NF
UlQocmFyZURhdGEpOwotICAgICAgICBmb3IgKGF1dG8mIHByb2ZpbGUgOiByYXJlRGF0YS0+bV9j
YXRjaFByb2ZpbGVzKSB7Ci0gICAgICAgICAgICBpZiAocHJvZmlsZS5nZXQoKSA9PSBtZXRhZGF0
YS5tX2J1ZmZlcikgewotICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoZm91
bmQpOwotI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECisgICAgaWYgKCEhbWV0YWRhdGEubV9idWZm
ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBlbnN1cmVDYXRjaExpdmVuZXNzSXND
b21wdXRlZEZvckJ5dGVjb2RlSW5kZXhTbG93KG9wLCBieXRlY29kZUluZGV4KTsKIH0KQEAgLTIw
MjQsMjMgKzIwMjAsMTkgQEAgdm9pZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0Nv
bXB1dGVkRm9yQnl0ZWNvZGVJbmRleFNsb3coY29uc3QgT3BDYXRjaCYKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsgKytpKQogICAgICAgICBsaXZlT3BlcmFuZHMuYXBw
ZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CiAKLSAgICBh
dXRvIHByb2ZpbGVzID0gbWFrZVVuaXF1ZTxWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXJC
dWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVz
LT5tX3NpemUgPT0gbGl2ZU9wZXJhbmRzLnNpemUoKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsraSkKLSAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVy
LmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXTsKKyAgICBhdXRvKiBwcm9maWxl
cyA9IFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlcjo6Y3JlYXRlKGxpdmVPcGVy
YW5kcy5zaXplKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVzLT5zaXplKCkgPT0gbGl2
ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVz
LT5zaXplKCk7ICsraSkKKyAgICAgICAgcHJvZmlsZXMtPmRhdGEoKVtpXS5tX29wZXJhbmQgPSBs
aXZlT3BlcmFuZHNbaV07CiAKICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CiAKICAg
ICAvLyBUaGUgY29tcGlsZXIgdGhyZWFkIHdpbGwgcmVhZCB0aGlzIHBvaW50ZXIgdmFsdWUgYW5k
IHRoZW4gcHJvY2VlZCB0byBkZXJlZmVyZW5jZSBpdAogICAgIC8vIGlmIGl0IGlzIG5vdCBudWxs
LiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBhbGwgYWJvdmUgc3RvcmVzIGhhcHBlbiBiZWZvcmUgdGhp
cyBzdG9yZSBzbwogICAgIC8vIHRoZSBjb21waWxlciB0aHJlYWQgcmVhZHMgZnVsbHkgaW5pdGlh
bGl6ZWQgZGF0YS4KLSAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyAKKyAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOwogCi0gICAgb3AubWV0YWRhdGEodGhpcykubV9idWZmZXIgPSBwcm9maWxl
cy5nZXQoKTsKLSAgICB7Ci0gICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2Nr
KTsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHBy
b2ZpbGVzKSk7Ci0gICAgfQorICAgIG9wLm1ldGFkYXRhKHRoaXMpLm1fYnVmZmVyID0gcHJvZmls
ZXM7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpyZW1vdmVFeGNlcHRpb25IYW5kbGVyRm9yQ2FsbFNp
dGUoRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCkKQEAgLTI4OTksMTQgKzI4
OTEsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmUKICAgICAgICAgcHJvZmlsZS5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICB9KTsKIAotICAgIGlmIChhdXRvKiByYXJl
RGF0YSA9IG1fcmFyZURhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBwcm9maWxlQnVj
a2V0IDogcmFyZURhdGEtPm1fY2F0Y2hQcm9maWxlcykgewotICAgICAgICAgICAgcHJvZmlsZUJ1
Y2tldC0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlciYgcHJvZmls
ZSkgewotICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxv
Y2tlcik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQorICAgIGlmIChtX21ldGFkYXRhKSB7
CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BDYXRjaD4oWyZdKGF1dG8mIG1ldGFkYXRh
KSB7CisgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9idWZmZXIpIHsKKyAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX2J1ZmZlci0+Zm9yRWFjaChbJl0oVmFsdWVQcm9maWxlQW5kVmlydHVhbFJl
Z2lzdGVyJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOwogICAgIH0KLSAgICAKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAg
IGxhenlPcGVyYW5kVmFsdWVQcm9maWxlcyhsb2NrZXIpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bnMobG9ja2VyKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCmluZGV4IDMxMWY2NTQxYTNlYzA3Y2MwNWQwZWJjM2Y3YmIzNzgzYjU4N2UwZWQuLmI0
YmE3NzdmZTViMjg0ZDRhN2IyNTE2MjI0ZWExNGVjOThjNmQ5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTg4Miw4ICs4ODIsNiBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxI
YW5kbGVySW5mbz4gbV9leGNlcHRpb25IYW5kbGVyczsKIAotICAgICAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlcj4+IG1fY2F0Y2hQ
cm9maWxlczsKLQogICAgICAgICBEaXJlY3RFdmFsQ29kZUNhY2hlIG1fZGlyZWN0RXZhbENvZGVD
YWNoZTsKICAgICB9OwogCkBAIC05ODUsNyArOTgzLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKICAgICAgICAg
ICAgIGF1dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwotICAgICAgICAgICAg
V1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gbV9jYXRjaFByb2ZpbGVzIGNhbiBiZSB0b3VjaGVk
IGZyb20gY29tcGlsZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNl
KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGTW92ZShyYXJlRGF0YSk7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmgKaW5kZXggMjhhNzI3M2Y5NmIxMmUxZjhiNjgxMzE2MmM1ZjI2YzliM2Y0ZjBhMy4uOThhMTUz
ZTVhMWI0YTEwNmM0NzAyMjJhN2FhMThiMjZhZDU5OTk1YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaApAQCAtMTgwLDggKzE4MCwzNyBAQCBzdHJ1
Y3QgVmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fb3BlcmFuZDsKIH07CiAKLXN0cnVjdCBWYWx1ZVByb2Zp
bGVBbmRWaXJ0dWFsUmVnaXN0ZXJCdWZmZXIgewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdp
c3RlcikgPj0gc2l6ZW9mKHVuc2lnbmVkKSk7CitjbGFzcyBhbGlnbmFzKFZhbHVlUHJvZmlsZUFu
ZFZpcnR1YWxSZWdpc3RlcikgVmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyQnVmZmVyIGZp
bmFsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVn
aXN0ZXJCdWZmZXIpOworcHVibGljOgorCisgICAgc3RhdGljIFZhbHVlUHJvZmlsZUFuZFZpcnR1
YWxSZWdpc3RlckJ1ZmZlciogY3JlYXRlKHVuc2lnbmVkIHNpemUpCisgICAgeworICAgICAgICB2
b2lkKiBidWZmZXIgPSBWTU1hbGxvYzo6bWFsbG9jKHNpemVvZihWYWx1ZVByb2ZpbGVBbmRWaXJ0
dWFsUmVnaXN0ZXJCdWZmZXIpICsgc2l6ZSAqIHNpemVvZihWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFs
UmVnaXN0ZXIpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoYnVmZmVyKSBWYWx1ZVByb2ZpbGVBbmRW
aXJ0dWFsUmVnaXN0ZXJCdWZmZXIoc2l6ZSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZGVz
dHJveShWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXJCdWZmZXIqIGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIGJ1ZmZlci0+flZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlcigp
OworICAgICAgICBWTU1hbGxvYzo6ZnJlZShidWZmZXIpOworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAgICB2b2lkIGZvckVhY2goRnVuY3Rpb24gZnVuY3Rpb24p
CisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisg
ICAgICAgICAgICBmdW5jdGlvbihkYXRhKClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFs
UmVnaXN0ZXIqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXIqPihiaXR3aXNlX2Nhc3Q8dWludDhfdCo+
KHRoaXMpICsgc2l6ZW9mKFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlcikpOwor
ICAgIH0KKworcHJpdmF0ZToKIAogICAgIFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1
ZmZlcih1bnNpZ25lZCBzaXplKQogICAgICAgICA6IG1fc2l6ZShzaXplKQpAQCAtMTg5LDI2ICsy
MTgsMTcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlciB7CiAg
ICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUgaGFzIG1vcmUgc3R1ZmYgdGhhbiB3ZSBuZWVk
LiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGVzZSB2YWx1ZSBwcm9maWxlcwogICAgICAgICAvLyB0byBi
ZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMwotICAgICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0cjxW
YWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXIsIFZNTWFsbG9jPjo6bWFsbG9jKG1fc2l6ZSAq
IHNpemVvZihWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXIpKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQotICAgICAgICAgICAgbmV3ICgmbV9idWZm
ZXIuZ2V0KClbaV0pIFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlcigpOworICAgICAgICAg
ICAgbmV3ICgmZGF0YSgpW2ldKSBWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXIoKTsKICAg
ICB9CiAKICAgICB+VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyQnVmZmVyKCkKICAgICB7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAg
ICAgIG1fYnVmZmVyLmdldCgpW2ldLn5WYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXIoKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+Ci0gICAgdm9pZCBmb3JF
YWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fc2l6ZTsgKytpKQotICAgICAgICAgICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0KClb
aV0pOworICAgICAgICAgICAgZGF0YSgpW2ldLn5WYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0
ZXIoKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBtX3NpemU7Ci0gICAgTWFsbG9jUHRyPFZhbHVl
UHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlciwgVk1NYWxsb2M+IG1fYnVmZmVyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IGI3M2JlYTFjOTZjMmFjZDM2YWNhZmYyZTExMjgyNGRiNjY3NmUx
YWYuLjQ5MjkxYjQ2MDI4Y2JkMjhjMTNkMWIyZTZhNGE1OTAxY2U2ZjgwNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03MDMwLDcg
KzcwMzAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxS
ZWdpc3RlciwgTm9kZSo+PiBsb2NhbHNUb1NldDsKLSAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwg
cmVzZXJ2ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1
c2UgdGhlIGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisgICAgICAgICAgICBsb2NhbHNUb1Nl
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+c2l6ZSgpKTsgLy8gTm90ZTogVGhpcyB3
aWxsIHJlc2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxzIHdlIHNlZSBiZWxvdyBi
ZWNhdXNlIHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRzLgogCiAgICAgICAgICAgICAvLyBX
ZSdyZSBub3QgYWxsb3dlZCB0byBleGl0IGhlcmUgc2luY2Ugd2Ugd291bGQgbm90IHByb3Blcmx5
IHJlY292ZXIgdmFsdWVzLgogICAgICAgICAgICAgLy8gV2UgZmlyc3QgbmVlZCB0byBib290c3Ry
YXAgdGhlIGNhdGNoIGVudHJ5cG9pbnQgc3RhdGUuCg==
</data>
<flag name="review"
          id="446267"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>