<?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>238263</bug_id>
          
          <creation_ts>2022-03-23 08:56:12 -0700</creation_ts>
          <short_desc>Avoid unnecessary String constructor under FunctionExecutable::toStringSlow()</short_desc>
          <delta_ts>2022-03-23 11:39:46 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238235</see_also>
          <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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>darin</cc>
    
    <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>1854190</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 08:56:12 -0700</bug_when>
    <thetext>Avoid unnecessary String constructor under FunctionExecutable::toStringSlow().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854191</commentid>
    <comment_count>1</comment_count>
      <attachid>455505</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 08:57:12 -0700</bug_when>
    <thetext>Created attachment 455505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854194</commentid>
    <comment_count>2</comment_count>
      <attachid>455505</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-23 09:02:40 -0700</bug_when>
    <thetext>Comment on attachment 455505
Patch

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

&gt; Source/JavaScriptCore/runtime/FunctionExecutable.cpp:144
&gt; -    String functionHeader;
&gt; +    ASCIILiteral functionHeader = ASCIILiteral::null();

A few other thoughts: Why ASCIILiteral::null() here, but &quot;&quot;_s below? I’m not familiar with the variadic jsMakeNontrivialString. Does jsMakeNontrivialString benefit from this being an ASCIILiteral rather than a const char* or a StringView? Since src is a StringView I get the impression that we don’t need to make a String so not sure why ASCIILiteral is better than const char*. I’m sort of surprised that this idiom is jsMakeNontrivialString instead of just jsNontrivialString(makeString()).

I think I would have done:

    auto functionHeader = &quot;&quot;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854200</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 09:10:17 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 455505 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455505&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/FunctionExecutable.cpp:144
&gt; &gt; -    String functionHeader;
&gt; &gt; +    ASCIILiteral functionHeader = ASCIILiteral::null();
&gt; 
&gt; A few other thoughts: Why ASCIILiteral::null() here, but &quot;&quot;_s below? I’m not
&gt; familiar with the variadic jsMakeNontrivialString. Does
&gt; jsMakeNontrivialString benefit from this being an ASCIILiteral rather than a
&gt; const char* or a StringView? Since src is a StringView I get the impression
&gt; that we don’t need to make a String so not sure why ASCIILiteral is better
&gt; than const char*. I’m sort of surprised that this idiom is
&gt; jsMakeNontrivialString instead of just jsNontrivialString(makeString()).
&gt; 
&gt; I think I would have done:
&gt; 
&gt;     auto functionHeader = &quot;&quot;;

Technically, the initialization value doesn&apos;t matter much since the switch below handles all enum values. Previously, the initialization value was a null string, not an empty string. ASCIILiteral::null() thus seemed closer to pre-existing code than &quot;&quot;_s.

That said, I don&apos;t mind initializing to _&quot;&quot;s.

jsMakeNontrivialString() doesn&apos;t benefit from using an ASCIILiteral here. Using an ASCIILiteral also doesn&apos;t hurt as far as I can tell. Using ASCIILiteral also could be helpful for perf if we ever decide to store the string length as a data member in ASCIILiteral.

I think it is best practice to use _s for all String literals in WebKit. It should always be as good or faster than &quot;&quot;. If we have API that is slower with an ASCIILiteral, I think that API would need to be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854219</commentid>
    <comment_count>4</comment_count>
      <attachid>455509</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 09:53:15 -0700</bug_when>
    <thetext>Created attachment 455509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854303</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-23 11:38:32 -0700</bug_when>
    <thetext>Committed r291755 (248786@main): &lt;https://commits.webkit.org/248786@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455509.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854304</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-23 11:39:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/90713418&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455505</attachid>
            <date>2022-03-23 08:57:12 -0700</date>
            <delta_ts>2022-03-23 09:53:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238263-20220323085711.patch</filename>
            <type>text/plain</type>
            <size>1792</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OGVlYjIwODc1NjkzZGM2ZmNjODdjZWUwMTUzNzAyMzM1MjVmNDY5Li45OTY4Njc0MTJkNDZiOGIw
MmZmYzZhMzk4NGJlZDE5NWMwMzMyNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IFN0cmluZyBjb25zdHJ1Y3RvciB1bmRlciBGdW5j
dGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3cpOgorCiAyMDIy
LTAzLTIzICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQg
RG9Ob3RIYXZlVGFnUmVnaXN0ZXJzIG1vZGUgdG8gdW5ib3hEb3VibGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGYx
NDlkNGU1OWE3MjRhODQyNTdmYjY4Nzg0OTJjMmFhM2IxNjJlOGIuLmJlMDIxMDMwN2FhYWY0YWFi
YjBiMTg0ZDhjZGYyOTQwZDQ2OWJhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIEpT
U3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIGlmIChpc0NsYXNzKCkpCiAgICAgICAgIHJldHVybiBjYWNoZShq
c1N0cmluZyh2bSwgY2xhc3NTb3VyY2UoKS52aWV3KCkudG9TdHJpbmcoKSkpOwogCi0gICAgU3Ry
aW5nIGZ1bmN0aW9uSGVhZGVyOworICAgIEFTQ0lJTGl0ZXJhbCBmdW5jdGlvbkhlYWRlciA9IEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOwogICAgIHN3aXRjaCAocGFyc2VNb2RlKCkpIHsKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CkBAIC0xNjQsNyAr
MTY0LDcgQEAgSlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkNsYXNzRmllbGRJbml0
aWFsaXplck1vZGU6Ci0gICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gIiI7CisgICAgICAgIGZ1bmN0
aW9uSGVhZGVyID0gIiJfczsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455509</attachid>
            <date>2022-03-23 09:53:15 -0700</date>
            <delta_ts>2022-03-23 11:38:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238263-20220323095314.patch</filename>
            <type>text/plain</type>
            <size>1741</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OGVlYjIwODc1NjkzZGM2ZmNjODdjZWUwMTUzNzAyMzM1MjVmNDY5Li41NWI5YmM3NjA3MTljMjQ0
OGExNjcwMzYxOWM3Y2JmMzViZjViMjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMi0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IFN0cmluZyBjb25zdHJ1Y3RvciB1bmRlciBGdW5j
dGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3cpOgorCiAyMDIyLTAz
LTIzICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQgRG9O
b3RIYXZlVGFnUmVnaXN0ZXJzIG1vZGUgdG8gdW5ib3hEb3VibGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGYxNDlk
NGU1OWE3MjRhODQyNTdmYjY4Nzg0OTJjMmFhM2IxNjJlOGIuLjIzMDdhY2VjYzUwNGRlYTc1OTQx
MDk5MjQ3NGJiYmNhNTllYjEwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIEpTU3Ry
aW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIGlmIChpc0NsYXNzKCkpCiAgICAgICAgIHJldHVybiBjYWNoZShqc1N0
cmluZyh2bSwgY2xhc3NTb3VyY2UoKS52aWV3KCkudG9TdHJpbmcoKSkpOwogCi0gICAgU3RyaW5n
IGZ1bmN0aW9uSGVhZGVyOworICAgIEFTQ0lJTGl0ZXJhbCBmdW5jdGlvbkhlYWRlciA9ICIiX3M7
CiAgICAgc3dpdGNoIChwYXJzZU1vZGUoKSkgewogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKQEAgLTE2NCw3ICsxNjQsNiBAQCBKU1N0cmluZyog
RnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZToKLSAgICAg
ICAgZnVuY3Rpb25IZWFkZXIgPSAiIjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>