<?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>142661</bug_id>
          
          <creation_ts>2015-03-13 00:42:10 -0700</creation_ts>
          <short_desc>Introduce WTF::Atomic to wrap std::atomic for a friendlier CAS</short_desc>
          <delta_ts>2015-03-13 14:32:55 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1076888</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-13 00:42:10 -0700</bug_when>
    <thetext>The CAS functions provided by std::atomic takes a reference to the expected value and modifies it if the CAS fails.  However, in a lot of our CAS usage, we don&apos;t want the expected value to change.  The solution to this is to provide a WTF::Atomic struct that wraps std::atomic, and provide CAS methods that won&apos;t alter the expected value if the CAS fails.

Also change CodeBlock, ByteSpinLock, and the DFG&apos;s crashLock to use WTF::Atomic instead of std::atomic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076892</commentid>
    <comment_count>1</comment_count>
      <attachid>248577</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-13 00:54:53 -0700</bug_when>
    <thetext>Created attachment 248577
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076893</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 00:59:21 -0700</bug_when>
    <thetext>Attachment 248577 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:89:  compare_exchange_weak is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Atomics.h:95:  compare_exchange_strong is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076965</commentid>
    <comment_count>3</comment_count>
      <attachid>248577</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-13 10:59:09 -0700</bug_when>
    <thetext>Comment on attachment 248577
the patch.

Thanks for the review.  I&apos;ll land this manually so that I can get on with the next step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076968</commentid>
    <comment_count>4</comment_count>
      <attachid>248577</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-13 11:04:09 -0700</bug_when>
    <thetext>Comment on attachment 248577
the patch.

Landed in r181481: &lt;http://trac.webkit.org/r181481&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077019</commentid>
    <comment_count>5</comment_count>
      <attachid>248577</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-13 13:51:27 -0700</bug_when>
    <thetext>Comment on attachment 248577
the patch.

I think we should add helper functions of our own that work on a std::atomic rather than introducing WTF::Atomic, a slightly-different-behavior derived class. I understand that we are more used to a different design for compare/exchange, but long term we can expect people to be familiar with the standard classes and it would be nice to use them rather than subtle variations on them. Even though this class was the quickest way to fix the problems caused by our misunderstanding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077034</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-13 14:32:55 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 248577 [details]
&gt; the patch.
&gt; 
&gt; I think we should add helper functions of our own that work on a std::atomic
&gt; rather than introducing WTF::Atomic, a slightly-different-behavior derived
&gt; class. I understand that we are more used to a different design for
&gt; compare/exchange, but long term we can expect people to be familiar with the
&gt; standard classes and it would be nice to use them rather than subtle
&gt; variations on them. Even though this class was the quickest way to fix the
&gt; problems caused by our misunderstanding.

I don&apos;t really think it was a misunderstanding as much as a disagreement.  The fact that the standard specified CAS to mutate expected is pretty bad.  WTF has precedent for having our own classes that replace standard classes, in cases where we don&apos;t believe that the standard class gives us what we need.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248577</attachid>
            <date>2015-03-13 00:54:53 -0700</date>
            <delta_ts>2015-03-13 11:04:09 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-142661.patch</filename>
            <type>text/plain</type>
            <size>9293</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNDc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE1LTAzLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bnRyb2R1Y2UgV1RGOjpBdG9taWMgdG8gd3JhcCBzdGQ6OmF0b21pYyBmb3IgYSBmcmllbmRsaWVy
IENBUy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0MjY2MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIENvZGVCbG9jaywg
YW5kIHRoZSBERkcncyBjcmFzaExvY2sgdG8gdXNlIFdURjo6QXRvbWljIGluc3RlYWQgb2YKKyAg
ICAgICAgc3RkOjphdG9taWMuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAqIGRmZy9ERkdDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OnN0YXJ0Q3Jh
c2hpbmcpOgorCiAyMDE1LTAzLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDaGFuZ2UgdGhlIERGRyBjcmFzaExvY2sgdG8gdXNlIHN0ZDo6YXRvbWljLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDE4MTQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQ1LDcgKzE2NDUsNiBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiAgICAgLCBtX2lzU3RyaWN0TW9kZShvdGhlci5tX2lz
U3RyaWN0TW9kZSkKICAgICAsIG1fbmVlZHNBY3RpdmF0aW9uKG90aGVyLm1fbmVlZHNBY3RpdmF0
aW9uKQogICAgICwgbV9tYXlCZUV4ZWN1dGluZyhmYWxzZSkKLSAgICAsIG1fdmlzaXRBZ2dyZWdh
dGVIYXNCZWVuQ2FsbGVkKGZhbHNlKQogICAgICwgbV9zb3VyY2Uob3RoZXIubV9zb3VyY2UpCiAg
ICAgLCBtX3NvdXJjZU9mZnNldChvdGhlci5tX3NvdXJjZU9mZnNldCkKICAgICAsIG1fZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0KG90aGVyLm1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQpAQCAtMTY2Miw2
ICsxNjYxLDggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogICAg
ICwgbV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZShERkc6OkNhcGFiaWxpdHlMZXZlbE5vdFNldCkKICNl
bmRpZgogeworICAgIG1fdmlzaXRBZ2dyZWdhdGVIYXNCZWVuQ2FsbGVkLnN0b3JlKGZhbHNlLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKwogICAgIEFTU0VSVChtX2hlYXAtPmlzRGVmZXJy
ZWQoKSk7CiAgICAgQVNTRVJUKG1fc2NvcGVSZWdpc3Rlci5pc0xvY2FsKCkpOwogCkBAIC0xNzA3
LDcgKzE3MDgsNiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAg
ICAgLCBtX2lzU3RyaWN0TW9kZSh1bmxpbmtlZENvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCiAg
ICAgLCBtX25lZWRzQWN0aXZhdGlvbih1bmxpbmtlZENvZGVCbG9jay0+aGFzQWN0aXZhdGlvblJl
Z2lzdGVyKCkgJiYgdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2Rl
KQogICAgICwgbV9tYXlCZUV4ZWN1dGluZyhmYWxzZSkKLSAgICAsIG1fdmlzaXRBZ2dyZWdhdGVI
YXNCZWVuQ2FsbGVkKGZhbHNlKQogICAgICwgbV9zb3VyY2Uoc291cmNlUHJvdmlkZXIpCiAgICAg
LCBtX3NvdXJjZU9mZnNldChzb3VyY2VPZmZzZXQpCiAgICAgLCBtX2ZpcnN0TGluZUNvbHVtbk9m
ZnNldChmaXJzdExpbmVDb2x1bW5PZmZzZXQpCkBAIC0xNzE5LDYgKzE3MTksOCBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgLCBtX2NhcGFiaWxpdHlMZXZl
bFN0YXRlKERGRzo6Q2FwYWJpbGl0eUxldmVsTm90U2V0KQogI2VuZGlmCiB7CisgICAgbV92aXNp
dEFnZ3JlZ2F0ZUhhc0JlZW5DYWxsZWQuc3RvcmUoZmFsc2UsIHN0ZDo6bWVtb3J5X29yZGVyX3Jl
bGF4ZWQpOworCiAgICAgQVNTRVJUKG1faGVhcC0+aXNEZWZlcnJlZCgpKTsKICAgICBBU1NFUlQo
bV9zY29wZVJlZ2lzdGVyLmlzTG9jYWwoKSk7CiAKQEAgLTIyMDIsOCArMjIwNCw3IEBAIHZvaWQg
Q29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXQKICAgICAvLyBJIG1heSBiZSBhc2tl
ZCB0byBzY2FuIG15c2VsZiBtb3JlIHRoYW4gb25jZSwgYW5kIGl0IG1heSBldmVuIGhhcHBlbiBj
b25jdXJyZW50bHkuCiAgICAgLy8gVG8gdGhpcyBlbmQsIHVzZSBhbiBhdG9taWMgb3BlcmF0aW9u
IHRvIGNoZWNrIChhbmQgc2V0KSBpZiBJJ3ZlIGJlZW4gY2FsbGVkIGFscmVhZHkuCiAgICAgLy8g
T25seSBvbmUgdGhyZWFkIG1heSBwcm9jZWVkIHBhc3QgdGhpcyBwb2ludCAtIHdoaWNoZXZlciBv
bmUgd2lucyB0aGUgYXRvbWljIHNldCByYWNlLgotICAgIGJvb2wgZXhwZWN0ZWQgPSBmYWxzZTsK
LSAgICBib29sIHNldEJ5TWUgPSBtX3Zpc2l0QWdncmVnYXRlSGFzQmVlbkNhbGxlZC5jb21wYXJl
X2V4Y2hhbmdlX3N0cm9uZyhleHBlY3RlZCwgdHJ1ZSwgc3RkOjptZW1vcnlfb3JkZXJfYWNxdWly
ZSk7CisgICAgYm9vbCBzZXRCeU1lID0gbV92aXNpdEFnZ3JlZ2F0ZUhhc0JlZW5DYWxsZWQuY29t
cGFyZV9leGNoYW5nZV9zdHJvbmcoZmFsc2UsIHRydWUsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVp
cmUpOwogICAgIGlmICghc2V0QnlNZSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmIC8vIEVOQUJM
RShQQVJBTExFTF9HQykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDE4MTQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTA2NSw3ICsxMDY1LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlOwogICAgIGJvb2wgbV9uZWVkc0FjdGl2YXRp
b247CiAgICAgYm9vbCBtX21heUJlRXhlY3V0aW5nOwotICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1f
dmlzaXRBZ2dyZWdhdGVIYXNCZWVuQ2FsbGVkOworICAgIEF0b21pYzxib29sPiBtX3Zpc2l0QWdn
cmVnYXRlSGFzQmVlbkNhbGxlZDsKIAogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3Vy
Y2U7CiAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb24uY3BwCShyZXZpc2lvbiAxODE0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE1ICszNCwx
MiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0YXRpYyBzdGQ6OmF0
b21pYzx1bnNpZ25lZD4gY3Jhc2hMb2NrOworc3RhdGljIEF0b21pYzx1bnNpZ25lZD4gY3Jhc2hM
b2NrOwogCiB2b2lkIHN0YXJ0Q3Jhc2hpbmcoKQogewotICAgIHVuc2lnbmVkIGV4cGVjdGVkID0g
MDsKLSAgICB3aGlsZSAoIWNyYXNoTG9jay5jb21wYXJlX2V4Y2hhbmdlX3dlYWsoZXhwZWN0ZWQs
IDEsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKSB7CisgICAgd2hpbGUgKCFjcmFzaExvY2su
Y29tcGFyZV9leGNoYW5nZV93ZWFrKDAsIDEsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKQog
ICAgICAgICBzdGQ6OnRoaXNfdGhyZWFkOjp5aWVsZCgpOwotICAgICAgICBleHBlY3RlZCA9IDA7
Ci0gICAgfQogfQogCiBib29sIGlzQ3Jhc2hpbmcoKQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTQ3NCkK
KysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMTUtMDMtMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIElu
dHJvZHVjZSBXVEY6OkF0b21pYyB0byB3cmFwIHN0ZDo6YXRvbWljIGZvciBhIGZyaWVuZGxpZXIg
Q0FTLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQyNjYxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBDQVMgZnVuY3Rpb25zIHBy
b3ZpZGVkIGJ5IHN0ZDo6YXRvbWljIHRha2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBleHBlY3RlZAor
ICAgICAgICB2YWx1ZSBhbmQgbW9kaWZpZXMgaXQgaWYgdGhlIENBUyBmYWlscy4gIEhvd2V2ZXIs
IGluIGEgbG90IG9mIG91ciBDQVMgdXNhZ2UsCisgICAgICAgIHdlIGRvbid0IHdhbnQgdGhlIGV4
cGVjdGVkIHZhbHVlIHRvIGNoYW5nZS4gIFRoZSBzb2x1dGlvbiB0byB0aGlzIGlzIHRvCisgICAg
ICAgIHByb3ZpZGUgYSBXVEY6OkF0b21pYyBzdHJ1Y3QgdGhhdCB3cmFwcyBzdGQ6OmF0b21pYywg
YW5kIHByb3ZpZGUgQ0FTCisgICAgICAgIG1ldGhvZHMgdGhhdCB3b24ndCBhbHRlciB0aGUgZXhw
ZWN0ZWQgdmFsdWUgaWYgdGhlIENBUyBmYWlscy4KKworICAgICAgICBUaGUgbWV0aG9kIG5hbWVz
IGluIFdURjo6QXRvbWljIGFyZSBjaG9zZW4gdG8gYmUgaWRlbnRpY2FsIHRvIHRob3NlCisgICAg
ICAgIGluIHN0ZDo6YXRvbWljIHNvIHRoYXQgV1RGOjpBdG9taWMgY2FuIGJlIGEgc2ltcGxlIGRy
b3AgaW4gcmVwbGFjZW1lbnQKKyAgICAgICAgZm9yIHN0ZDo6YXRvbWljLgorCisgICAgICAgIEFs
c28gY2hhbmdlZCBCeXRlU3BpbkxvY2sgdG8gdXNlIFdURjo6QXRvbWljIGluc3RlYWQgb2Ygc3Rk
OjphdG9taWMuCisKKyAgICAgICAgKiB3dGYvQXRvbWljcy5oOgorICAgICAgICAoV1RGOjpBdG9t
aWM6OmxvYWQpOgorICAgICAgICAoV1RGOjpBdG9taWM6OnN0b3JlKToKKyAgICAgICAgKFdURjo6
QXRvbWljOjpjb21wYXJlX2V4Y2hhbmdlX3dlYWspOgorICAgICAgICAoV1RGOjpBdG9taWM6OmNv
bXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKToKKyAgICAgICAgKiB3dGYvQnl0ZVNwaW5Mb2NrLmg6Cisg
ICAgICAgIChXVEY6OkJ5dGVTcGluTG9jazo6Qnl0ZVNwaW5Mb2NrKToKKyAgICAgICAgKFdURjo6
Qnl0ZVNwaW5Mb2NrOjpsb2NrKToKKwogMjAxNS0wMy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIEJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHNob3VsZCBo
YXZlIG1vcmUgbGFtYmRhcyBhbmQgZmV3ZXIgc2V0cwpJbmRleDogU291cmNlL1dURi93dGYvQXRv
bWljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAkocmV2aXNpb24g
MTgxNDczKQorKysgU291cmNlL1dURi93dGYvQXRvbWljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMCwgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAwOCwgMjAxMCwgMjAxMi0yMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBKdXN0aW4gSGF5Z29vZCAoamhheWdvb2RAcmVh
a3RpeC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01OSw2ICs1OSw3IEBACiAjaWZuZGVmIEF0
b21pY3NfaAogI2RlZmluZSBBdG9taWNzX2gKIAorI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBPUyhXSU5ET1dTKQpAQCAtNzEsNiArNzIsMzUg
QEAgZXh0ZXJuICJDIiB2b2lkIF9SZWFkV3JpdGVCYXJyaWVyKHZvaWQpOwogCiBuYW1lc3BhY2Ug
V1RGIHsKIAorLy8gQXRvbWljIHdyYXBzIGFyb3VuZCBzdGQ6OmF0b21pYyB3aXRoIHRoZSBzb2xl
IHB1cnBvc2Ugb2YgbWFraW5nIHRoZSBjb21wYXJlX2V4Y2hhbmdlCisvLyBvcGVyYXRpb25zIG5v
dCBhbHRlciB0aGUgZXhwZWN0ZWQgdmFsdWUuIFRoaXMgaXMgbW9yZSBpbiBsaW5lIHdpdGggaG93
IHdlIHR5cGljYWxseQorLy8gdXNlIENBUyBpbiBvdXIgY29kZS4KKy8vCisvLyBBdG9taWMgaXMg
YSBzdHJ1Y3Qgd2l0aG91dCBleHBsaWNpdGx5IGRlZmluZWQgY29uc3RydWN0b3JzIHNvIHRoYXQg
aXQgY2FuIGJlCisvLyBpbml0aWFsaXplZCBhdCBjb21waWxlIHRpbWUuCisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitzdHJ1Y3QgQXRvbWljIHsKKworICAgIFQgbG9hZChzdGQ6Om1lbW9yeV9vcmRl
ciBvcmRlcikgY29uc3QgeyByZXR1cm4gdmFsdWUubG9hZChvcmRlcik7IH0KKworICAgIHZvaWQg
c3RvcmUoVCBkZXNpcmVkLCBzdGQ6Om1lbW9yeV9vcmRlciBvcmRlcikgeyB2YWx1ZS5zdG9yZShk
ZXNpcmVkLCBvcmRlcik7IH0KKworICAgIGJvb2wgY29tcGFyZV9leGNoYW5nZV93ZWFrKFQgZXhw
ZWN0ZWQsIFQgZGVzaXJlZCwgc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIpCisgICAgeworICAgICAg
ICBUIGV4cGVjdGVkT3JBY3R1YWwgPSBleHBlY3RlZDsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmNv
bXBhcmVfZXhjaGFuZ2Vfd2VhayhleHBlY3RlZE9yQWN0dWFsLCBkZXNpcmVkLCBvcmRlcik7Cisg
ICAgfQorCisgICAgYm9vbCBjb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhUIGV4cGVjdGVkLCBUIGRl
c2lyZWQsIHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyKQorICAgIHsKKyAgICAgICAgVCBleHBlY3Rl
ZE9yQWN0dWFsID0gZXhwZWN0ZWQ7CisgICAgICAgIHJldHVybiB2YWx1ZS5jb21wYXJlX2V4Y2hh
bmdlX3N0cm9uZyhleHBlY3RlZE9yQWN0dWFsLCBkZXNpcmVkLCBvcmRlcik7CisgICAgfQorCisg
ICAgc3RkOjphdG9taWM8VD4gdmFsdWU7Cit9OworCiAjaWYgT1MoV0lORE9XUykKIGlubGluZSBi
b29sIHdlYWtDb21wYXJlQW5kU3dhcCh2b2xhdGlsZSB1bnNpZ25lZCogbG9jYXRpb24sIHVuc2ln
bmVkIGV4cGVjdGVkLCB1bnNpZ25lZCBuZXdWYWx1ZSkKIHsKQEAgLTM0NSw0ICszNzUsNiBAQCBp
bmxpbmUgYm9vbCB3ZWFrQ29tcGFyZUFuZFN3YXAodWludDhfdCogCiAKIH0gLy8gbmFtZXNwYWNl
IFdURgogCit1c2luZyBXVEY6OkF0b21pYzsKKwogI2VuZGlmIC8vIEF0b21pY3NfaApJbmRleDog
U291cmNlL1dURi93dGYvQnl0ZVNwaW5Mb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvQnl0ZVNwaW5Mb2NrLmgJKHJldmlzaW9uIDE4MTQ3MykKKysrIFNvdXJjZS9XVEYvd3RmL0J5
dGVTcGluTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw5ICsyNiw5IEBACiAjaWZuZGVmIEJ5dGVT
cGluTG9ja19oCiAjZGVmaW5lIEJ5dGVTcGluTG9ja19oCiAKLSNpbmNsdWRlIDxhdG9taWM+CiAj
aW5jbHVkZSA8dGhyZWFkPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAKQEAgLTM4LDE3ICszOCwxNCBAQCBjbGFzcyBCeXRlU3BpbkxvY2sgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVTcGluTG9jayk7CiBwdWJsaWM6CiAgICAgQnl0
ZVNwaW5Mb2NrKCkKLSAgICAgICAgOiBtX2xvY2soZmFsc2UpCiAgICAgeworICAgICAgICBtX2xv
Y2suc3RvcmUoZmFsc2UsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogICAgIH0KIAogICAg
IHZvaWQgbG9jaygpCiAgICAgewotICAgICAgICBib29sIGV4cGVjdGVkID0gZmFsc2U7Ci0gICAg
ICAgIHdoaWxlICghbV9sb2NrLmNvbXBhcmVfZXhjaGFuZ2Vfd2VhayhleHBlY3RlZCwgdHJ1ZSwg
c3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkpIHsKKyAgICAgICAgd2hpbGUgKCFtX2xvY2suY29t
cGFyZV9leGNoYW5nZV93ZWFrKGZhbHNlLCB0cnVlLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJl
KSkKICAgICAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7Ci0gICAgICAgICAgICBl
eHBlY3RlZCA9IGZhbHNlOwotICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHZvaWQgdW5sb2Nr
KCkKQEAgLTU5LDcgKzU2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNIZWxkKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NrLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7IH0KICAgICAKIHBy
aXZhdGU6Ci0gICAgc3RkOjphdG9taWM8Ym9vbD4gbV9sb2NrOworICAgIEF0b21pYzxib29sPiBt
X2xvY2s7CiB9OwogCiB0eXBlZGVmIExvY2tlcjxCeXRlU3BpbkxvY2s+IEJ5dGVTcGluTG9ja2Vy
Owo=
</data>
<flag name="review"
          id="273459"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>