<?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>192680</bug_id>
          
          <creation_ts>2018-12-13 14:08:29 -0800</creation_ts>
          <short_desc>clang-tidy: Fix unnecessary object copies in JavaScriptCore</short_desc>
          <delta_ts>2018-12-13 16:19:32 -0800</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>WebKit Local 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="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1487700</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-13 14:08:29 -0800</bug_when>
    <thetext>Running `clang-tidy -checks=&apos;-*,performance-*,-performance-noexcept-*&apos; ...` on JavaScriptCore source files found these unnecessary object copies:

Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6296:27: warning: the parameter &apos;fastTrue&apos; is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
    JITCompiler::JumpList fastTrue, JITCompiler::JumpList fastFalse)
                          ^
    const                &amp;
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6296:59: warning: the parameter &apos;fastFalse&apos; is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
    JITCompiler::JumpList fastTrue, JITCompiler::JumpList fastFalse)
                                                          ^
                                    const                &amp;

Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:190:166: warning: the parameter &apos;slowPathTarget&apos; is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
void SpeculativeJIT::cachedGetByIdWithThis(CodeOrigin codeOrigin, GPRReg baseGPR, GPRReg thisGPR, GPRReg resultGPR, unsigned identifierNumber, JITCompiler::JumpList slowPathTarget)
                                                                                                                                                                     ^
                                                                                                                                               const                &amp;

Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:11291:32: warning: the parameter &apos;set&apos; is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
        RegisteredStructureSet set, const Functor&amp; weakStructureDiscriminant)
                               ^
        const                 &amp;

Source/JavaScriptCore/jsc.cpp:820:10: warning: the variable &apos;referrer&apos; is copy-construct
ed from a const reference but is only used as const reference; consider making it a const reference [performance-unneces
sary-copy-initialization]
    auto referrer = sourceOrigin.string();
         ^
    const  &amp;
Source/JavaScriptCore/jsc.cpp:821:10: warning: the variable &apos;moduleName&apos; is copy-constructed from a const reference but is only used as const reference; consider making it a const reference [performance-unnecessary-copy-initialization]
    auto moduleName = moduleNameValue-&gt;value(exec);
         ^
    const  &amp;
Source/JavaScriptCore/jsc.cpp:1646:29: warning: the parameter &apos;string&apos; is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
void Workers::report(String string)
                            ^
                     const &amp;
Source/JavaScriptCore/jsc.cpp:1926:107: warning: the parameter #3 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
typename std::enable_if&lt;!std::is_fundamental&lt;ValueType&gt;::value&gt;::type addOption(VM&amp;, JSObject*, Identifier, ValueType) { }
                                                                                                          ^
                                                                                                const     &amp;
Source/JavaScriptCore/jsc.cpp:1929:124: warning: the parameter &apos;identifier&apos; is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
typename std::enable_if&lt;std::is_fundamental&lt;ValueType&gt;::value&gt;::type addOption(VM&amp; vm, JSObject* optionsObject, Identifier identifier, ValueType value)
                                                                                                                           ^
                                                                                                                const     &amp;
Source/JavaScriptCore/jsc.cpp:2762:24: warning: the parameter &apos;options&apos; is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
int runJSC(CommandLine options, bool isWorker, const Func&amp; func)
                       ^
           const      &amp;
Source/JavaScriptCore/jsc.cpp:2823:22: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (CString key : compileTimeKeys)
                     ^
             const  &amp;

Source/JavaScriptCore/assembler/testmasm.cpp:156:47: warning: the parameter &apos;code&apos; is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
T invoke(MacroAssemblerCodeRef&lt;JSEntryPtrTag&gt; code, Arguments... arguments)
                                              ^
         const                               &amp;

Source/JavaScriptCore/b3/testb3.cpp:167:75: warning: the parameter &apos;failText&apos; is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
void checkDisassembly(Compilation&amp; compilation, const Func&amp; func, CString failText)
                                                                          ^
                                                                  const  &amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487701</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-13 14:09:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/46708767&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487706</commentid>
    <comment_count>2</comment_count>
      <attachid>357253</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-13 14:21:53 -0800</bug_when>
    <thetext>Created attachment 357253
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487714</commentid>
    <comment_count>3</comment_count>
      <attachid>357253</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-13 14:29:15 -0800</bug_when>
    <thetext>Comment on attachment 357253
Patch v1

LGTM if EWS bots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487754</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-13 15:55:28 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #0)
&gt; Running `clang-tidy -checks=&apos;-*,performance-*,-performance-noexcept-*&apos; ...`
&gt; on JavaScriptCore source files found these unnecessary object copies:

It turns out that if the warning is in a header (such as a C++ template or inline function), then you need to add the &quot;-header-filter=.*&quot; command-line switch to clang-tidy to see warnings from headers.  (The reason they&apos;re apparently off by default is that they can be reported more than once.)

Also, it seems like clang-tidy might treat #included source files in UnifiedSource files as &quot;headers&quot; and not report issues in those, either, without the &quot;-header-filter=.*&quot; command-line switch.

TL;DR: There will be more fixes coming to JavaScriptCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487761</commentid>
    <comment_count>5</comment_count>
      <attachid>357253</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-13 16:19:30 -0800</bug_when>
    <thetext>Comment on attachment 357253
Patch v1

Clearing flags on attachment: 357253

Committed r239187: &lt;https://trac.webkit.org/changeset/239187&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487762</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-13 16:19:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357253</attachid>
            <date>2018-12-13 14:21:53 -0800</date>
            <delta_ts>2018-12-13 16:19:30 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-192680-20181213142152.patch</filename>
            <type>text/plain</type>
            <size>12258</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTUyMjQzNGQ3N2EzZmZhM2IxZWY0N2NhNTZkNTdjNTJkYjQzZDY2Li5kZmE4YzJmYjQ3MzJjNmJl
YzUyZjYwOTE4MGU5M2YyNzRhZTg5ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxOC0xMi0xMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIGNsYW5nLXRpZHk6IEZpeCB1bm5lY2Vzc2FyeSBvYmplY3QgY29waWVzIGlu
IEphdmFTY3JpcHRDb3JlCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xOTI2ODA+Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NjcwODc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAg
ICAgIChKU0M6Omludm9rZSk6CisgICAgICAgIC0gTWFrZSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gYXJndW1lbnQgYSBjb25zdAorICAgICAgICAgIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpjaGVja0Rpc2Fzc2Vt
Ymx5KToKKyAgICAgICAgLSBNYWtlIENTdHJpbmcgYXJndW1lbnQgYSBjb25zdCByZWZlcmVuY2Uu
CisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nRXF1YWxpdHkpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyk6Cisg
ICAgICAgIC0gTWFrZSBKSVRDb21waWxlcjo6SnVtcExpc3QgYXJndW1lbnRzIGEgY29uc3QgcmVm
ZXJlbmNlLgorCisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNoZWNrU3RydWN0dXJlKToKKyAgICAgICAgLSBN
YWtlIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYXJndW1lbnQgYSBjb25zdCByZWZlcmVuY2UuCisK
KyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJJ
bXBvcnRNb2R1bGUpOiBNYWtlIGxvY2FsIGF1dG8KKyAgICAgICAgdmFyaWFibGVzIGNvbnN0IHJl
ZmVyZW5jZXMuCisgICAgICAgIChXb3JrZXJzOjpyZXBvcnQpOiBNYWtlIFN0cmluZyBhcmd1bWVu
dCBhIGNvbnN0IHJlZmVyZW5jZS4KKyAgICAgICAgKGFkZE9wdGlvbik6IE1ha2UgSWRlbnRpZmll
ciBhcmd1bWVudCBhIGNvbnN0IHJlZmVyZW5jZS4KKyAgICAgICAgKHJ1bkpTQyk6IE1ha2UgQ1N0
cmluZyBsb29wIHZhcmlhYmxlIGEgY29uc3QgcmVmZXJlbmNlLgorCiAyMDE4LTEyLTExICBZdXN1
a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgW0JpZ0lu
dF0gU2ltcGxpZnkgYm9vbGVhbiBjb250ZXh0IGV2YWx1YXRpb24gYnkgbGV2ZXJhZ2luZyBKU1N0
cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSA9PSBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAzZTc1NTc0
YjIxZDBlMGQ3MmZlOGM4N2E2NWQ1NjcyOGU1NDgyNDA4Li44MjM5YTk0M2RhYmFmNDJkNzA5Yzdi
MDE5MTExZWQ0YzJjNzU1YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
U0VudHJ5UHRyVGFnPiBjb21waWxlKEdlbmVyYXRvciYmIGdlbmVyYXRlKQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci1UIGludm9rZShNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29kZSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykK
K1QgaW52b2tlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiYgY29k
ZSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKIHsKICAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVz
cyA9IHVudGFnQ0Z1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KGNvZGUuY29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpOwogICAgIFQgKCpmdW5jdGlvbikoQXJndW1lbnRzLi4uKSA9IGJpdHdpc2Vf
Y2FzdDxUKCopKEFyZ3VtZW50cy4uLik+KGV4ZWN1dGFibGVBZGRyZXNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAKaW5kZXggYjMzODk3OWJhNTEyYWUyZGRhYjYwOTY3OWEwODQyYWNm
ZjY0MmMwNS4uZjkwNDMxOTg5YmUwZDk5MjllMDNiOTBiYWE2MGE1MDM1Y2MwNTI2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIGxvd2Vy
VG9BaXJGb3JUZXN0aW5nKFByb2NlZHVyZSYgcHJvYykKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KLXZvaWQgY2hlY2tEaXNhc3NlbWJseShDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNv
bnN0IEZ1bmMmIGZ1bmMsIENTdHJpbmcgZmFpbFRleHQpCit2b2lkIGNoZWNrRGlzYXNzZW1ibHko
Q29tcGlsYXRpb24mIGNvbXBpbGF0aW9uLCBjb25zdCBGdW5jJiBmdW5jLCBjb25zdCBDU3RyaW5n
JiBmYWlsVGV4dCkKIHsKICAgICBDU3RyaW5nIGRpc2Fzc2VtYmx5ID0gY29tcGlsYXRpb24uZGlz
YXNzZW1ibHkoKTsKICAgICBpZiAoZnVuYyhkaXNhc3NlbWJseS5kYXRhKCkpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0NjViZjNm
YjBmZDg3YzRhMDhlNWY1ZDk2ZmE5OGYzMzM4YTRhYjYyLi5iYjYzNjNmNjIyZWMwOWE2OGRmYWE4
NTA0NDY2YjkzY2FjNWQ5NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtNjI5Myw3ICs2MjkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSogbm9kZSwgTm9kZSogYnJh
bmNoTm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdFcXVhbGl0eSgKICAg
ICBOb2RlKiBub2RlLCBHUFJSZWcgbGVmdEdQUiwgR1BSUmVnIHJpZ2h0R1BSLCBHUFJSZWcgbGVu
Z3RoR1BSLCBHUFJSZWcgbGVmdFRlbXBHUFIsCiAgICAgR1BSUmVnIHJpZ2h0VGVtcEdQUiwgR1BS
UmVnIGxlZnRUZW1wMkdQUiwgR1BSUmVnIHJpZ2h0VGVtcDJHUFIsCi0gICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IGZhc3RUcnVlLCBKSVRDb21waWxlcjo6SnVtcExpc3QgZmFzdEZhbHNlKQorICAg
IGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgZmFzdFRydWUsIGNvbnN0IEpJVENvbXBpbGVy
OjpKdW1wTGlzdCYgZmFzdEZhbHNlKQogewogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCB0cnVl
Q2FzZTsKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZmFsc2VDYXNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGEyMGUzOWE4M2FmZThj
YmIyOTI5MjcxZDNjZTI1YWZlMzNlN2VhODcuLjA4NmUyOWI0M2U1MDc0MDljNjFiYTVhMDUzZDYz
MjAzYTQ0NTk3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKQEAgLTcyNCwxMCArNzI0LDEwIEBAIHB1YmxpYzoKIAogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAg
ICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wTGlzdCgpKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhU
YXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9y
Tm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0g
ICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdH
UFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFJPck5vbmUs
IEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3Vs
dFBheWxvYWRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICB2b2lk
IGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9u
ZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BSUmVn
IHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBM
aXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbmRpZgog
CiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJZChOb2RlKik7CkBAIC0xMTk5LDggKzExOTksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlU3RyaW5nRXF1YWxpdHkoCiAgICAgICAgIE5vZGUq
LCBHUFJSZWcgbGVmdEdQUiwgR1BSUmVnIHJpZ2h0R1BSLCBHUFJSZWcgbGVuZ3RoR1BSLAogICAg
ICAgICBHUFJSZWcgbGVmdFRlbXBHUFIsIEdQUlJlZyByaWdodFRlbXBHUFIsIEdQUlJlZyBsZWZ0
VGVtcDJHUFIsCi0gICAgICAgIEdQUlJlZyByaWdodFRlbXAyR1BSLCBKSVRDb21waWxlcjo6SnVt
cExpc3QgZmFzdFRydWUsCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBmYXN0U2xvdyk7
CisgICAgICAgIEdQUlJlZyByaWdodFRlbXAyR1BSLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExp
c3QmIGZhc3RUcnVlLAorICAgICAgICBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIGZhc3RT
bG93KTsKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU3RyaW5nSWRlbnRFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU3RyaW5n
VG9VbnR5cGVkRXF1YWxpdHkoTm9kZSosIEVkZ2Ugc3RyaW5nRWRnZSwgRWRnZSB1bnR5cGVkRWRn
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAppbmRleCBiY2Y3YzcyNDg4ZTg3NjUwYWY2YmNmNDJhYjU3ZmNjMTczMjU4OTNi
Li5jMTIyOTA1MGIyODFmNDI3ZTg3YWMzNTMxM2FhNWJkMmMxMWE0ODc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAg
LTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoCiAgICAgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2Fk
R1BSLCBHUFJSZWcgdGhpc1RhZ0dQUiwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVz
dWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwKLSAgICB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGhUYXJnZXQpCisgICAgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93
UGF0aFRhcmdldCkKIHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNl
ZFJlZ2lzdGVycygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMDY2Mjc0NDkwMDkzZmVjMmIwZjJmODg2MzcyYWRj
MDQxZDA1ODc4Mi4uYzEwOTNjNjhiNTk0ZjMxYjFlOGRjYTMwMGQ3ZjFlMWM5OGNiZjU5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcKICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoVGFyZ2V0KQordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQ
YXRoVGFyZ2V0KQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRD
YWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9y
aWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9
IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCA3MmViOTM2M2VkYmJlNTc1ZGJiZWRjNmNjOGQ1YTMxZjA1
M2U3NDhiLi5jNzU2NzRkYTQ1OWQyMDkxZTY0MmIyYTg0MjcwZTdiYzUyYTk5ZjBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMTI4OCw3
ICsxMTI4OCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAg
ICB2b2lkIGNoZWNrU3RydWN0dXJlKAogICAgICAgICBMVmFsdWUgc3RydWN0dXJlRGlzY3JpbWlu
YW50LCBjb25zdCBGb3JtYXR0ZWRWYWx1ZSYgZm9ybWF0dGVkVmFsdWUsIEV4aXRLaW5kIGV4aXRL
aW5kLAotICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNldCwgY29uc3QgRnVuY3RvciYg
d2Vha1N0cnVjdHVyZURpc2NyaW1pbmFudCkKKyAgICAgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldCYgc2V0LCBjb25zdCBGdW5jdG9yJiB3ZWFrU3RydWN0dXJlRGlzY3JpbWluYW50KQog
ICAgIHsKICAgICAgICAgaWYgKHNldC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHRlcm1pbmF0
ZShleGl0S2luZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDZjNWE2MzhiZWIzN2MxZmIxNjE1
NmVmMWQzMGNhY2UxM2NmYjY4OTEuLmE0YTU3ZjhkZGMyZTRjM2JiNTc0NGQ5NTQ5YTM3MzlhYTY3
ZDgzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgY2xhc3MgR2xv
YmFsT2JqZWN0OwogY2xhc3MgV29ya2VyczsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLWlu
dCBydW5KU0MoQ29tbWFuZExpbmUsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmKTsKK2ludCBy
dW5KU0MoY29uc3QgQ29tbWFuZExpbmUmLCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5jJik7CiBz
dGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBHbG9iYWxPYmplY3QqLCBib29s
IGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVlLCBDb21tYW5kTGluZSYsIGJv
b2wmIHN1Y2Nlc3MpOwogCiBjbGFzcyBNZXNzYWdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPE1lc3NhZ2U+IHsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGJyb2FkY2FzdChjb25zdCBGdW5jJik7CiAgICAgCi0g
ICAgdm9pZCByZXBvcnQoU3RyaW5nKTsKKyAgICB2b2lkIHJlcG9ydChjb25zdCBTdHJpbmcmKTsK
ICAgICBTdHJpbmcgdHJ5R2V0UmVwb3J0KCk7CiAgICAgU3RyaW5nIGdldFJlcG9ydCgpOwogICAg
IApAQCAtODE3LDggKzgxNyw4IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1v
ZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKHNv
dXJjZU9yaWdpbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHJlamVjdChjcmVhdGVFcnJvcihl
eGVjLCAiQ291bGQgbm90IHJlc29sdmUgdGhlIG1vZHVsZSBzcGVjaWZpZXIuIl9zKSk7CiAKLSAg
ICBhdXRvIHJlZmVycmVyID0gc291cmNlT3JpZ2luLnN0cmluZygpOwotICAgIGF1dG8gbW9kdWxl
TmFtZSA9IG1vZHVsZU5hbWVWYWx1ZS0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgYXV0byYgcmVm
ZXJyZXIgPSBzb3VyY2VPcmlnaW4uc3RyaW5nKCk7CisgICAgY29uc3QgYXV0byYgbW9kdWxlTmFt
ZSA9IG1vZHVsZU5hbWVWYWx1ZS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNo
U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gcmVqZWN0KGNhdGNoU2NvcGUuZXhj
ZXB0aW9uKCkpOwogCkBAIC0xNjQzLDcgKzE2NDMsNyBAQCB2b2lkIFdvcmtlcnM6OmJyb2FkY2Fz
dChjb25zdCBGdW5jJiBmdW5jKQogICAgIG1fY29uZGl0aW9uLm5vdGlmeUFsbCgpOwogfQogCi12
b2lkIFdvcmtlcnM6OnJlcG9ydChTdHJpbmcgc3RyaW5nKQordm9pZCBXb3JrZXJzOjpyZXBvcnQo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xv
Y2spOwogICAgIG1fcmVwb3J0cy5hcHBlbmQoc3RyaW5nLmlzb2xhdGVkQ29weSgpKTsKQEAgLTE5
MjMsMTAgKzE5MjMsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRv
dGFsQ29tcGlsZVRpbWUoRXhlY1N0YXRlKikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVU
eXBlPgotdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfZnVuZGFtZW50YWw8VmFsdWVU
eXBlPjo6dmFsdWU+Ojp0eXBlIGFkZE9wdGlvbihWTSYsIEpTT2JqZWN0KiwgSWRlbnRpZmllciwg
VmFsdWVUeXBlKSB7IH0KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Z1bmRhbWVu
dGFsPFZhbHVlVHlwZT46OnZhbHVlPjo6dHlwZSBhZGRPcHRpb24oVk0mLCBKU09iamVjdCosIGNv
bnN0IElkZW50aWZpZXImLCBWYWx1ZVR5cGUpIHsgfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZVR5cGU+Ci10eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Z1bmRhbWVudGFsPFZhbHVl
VHlwZT46OnZhbHVlPjo6dHlwZSBhZGRPcHRpb24oVk0mIHZtLCBKU09iamVjdCogb3B0aW9uc09i
amVjdCwgSWRlbnRpZmllciBpZGVudGlmaWVyLCBWYWx1ZVR5cGUgdmFsdWUpCit0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Z1bmRhbWVudGFsPFZhbHVlVHlwZT46OnZhbHVlPjo6dHlw
ZSBhZGRPcHRpb24oVk0mIHZtLCBKU09iamVjdCogb3B0aW9uc09iamVjdCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgVmFsdWVUeXBlIHZhbHVlKQogewogICAgIG9wdGlvbnNPYmplY3Qt
PnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNWYWx1ZSh2YWx1ZSkpOwogfQpAQCAtMjc1OSw3
ICsyNzU5LDcgQEAgdm9pZCBDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMoaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW50IHJ1bkpTQyhDb21t
YW5kTGluZSBvcHRpb25zLCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQoraW50IHJ1
bkpTQyhjb25zdCBDb21tYW5kTGluZSYgb3B0aW9ucywgYm9vbCBpc1dvcmtlciwgY29uc3QgRnVu
YyYgZnVuYykKIHsKICAgICBXb3JrZXIgd29ya2VyKFdvcmtlcnM6OnNpbmdsZXRvbigpKTsKICAg
ICAKQEAgLTI4MjAsNyArMjgyMCw3IEBAIGludCBydW5KU0MoQ29tbWFuZExpbmUgb3B0aW9ucywg
Ym9vbCBpc1dvcmtlciwgY29uc3QgRnVuYyYgZnVuYykKICAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IGNvbXBpbGVUaW1lU3RhdHMpCiAgICAgICAgICAgICBjb21waWxlVGltZUtleXMuYXBwZW5k
KGVudHJ5LmtleSk7CiAgICAgICAgIHN0ZDo6c29ydChjb21waWxlVGltZUtleXMuYmVnaW4oKSwg
Y29tcGlsZVRpbWVLZXlzLmVuZCgpKTsKLSAgICAgICAgZm9yIChDU3RyaW5nIGtleSA6IGNvbXBp
bGVUaW1lS2V5cykKKyAgICAgICAgZm9yIChjb25zdCBDU3RyaW5nJiBrZXkgOiBjb21waWxlVGlt
ZUtleXMpCiAgICAgICAgICAgICBwcmludGYoIiU0MHM6ICUuM2xmIG1zXG4iLCBrZXkuZGF0YSgp
LCBjb21waWxlVGltZVN0YXRzLmdldChrZXkpLm1pbGxpc2Vjb25kcygpKTsKICAgICB9CiAjZW5k
aWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>