<?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>159528</bug_id>
          
          <creation_ts>2016-07-07 15:31:06 -0700</creation_ts>
          <short_desc>Use Array.forEach in Headers built-in constructor</short_desc>
          <delta_ts>2017-10-14 16:50:45 -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>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>159296</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1208833</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-07 15:31:06 -0700</bug_when>
    <thetext>Array.forEach can be used if it is shielded from public scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208837</commentid>
    <comment_count>1</comment_count>
      <attachid>283068</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-07 15:33:52 -0700</bug_when>
    <thetext>Created attachment 283068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209763</commentid>
    <comment_count>2</comment_count>
      <attachid>283068</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-11 13:02:52 -0700</bug_when>
    <thetext>Comment on attachment 283068
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchHeaders.js:44
&gt; +        @Array.prototype.@forEach.@call(headersInit, (header) =&gt; {

Is this required by the spec?  If not, is there a perf implication to this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209770</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-11 13:14:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 283068 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=283068&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchHeaders.js:44
&gt; &gt; +        @Array.prototype.@forEach.@call(headersInit, (header) =&gt; {
&gt; 
&gt; Is this required by the spec?  If not, is there a perf implication to this
&gt; change?

No, it is not required and I do not think this makes any perf improvement since Array.forEach is using a for loop as well.
This just makes the code smaller here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209813</commentid>
    <comment_count>4</comment_count>
      <attachid>283068</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-11 14:39:46 -0700</bug_when>
    <thetext>Comment on attachment 283068
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/fetch/FetchHeaders.js:44
&gt;&gt;&gt; +        @Array.prototype.@forEach.@call(headersInit, (header) =&gt; {
&gt;&gt; 
&gt;&gt; Is this required by the spec?  If not, is there a perf implication to this change?
&gt; 
&gt; No, it is not required and I do not think this makes any perf improvement since Array.forEach is using a for loop as well.
&gt; This just makes the code smaller here.

My concern is that it makes the code slower because you&apos;re adding a call to forEach which is not free, and it doesn&apos;t appear to be that much smaller.  But maybe it&apos;s not such a big deal here.  Just thought I&apos;d ask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209986</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-12 03:00:20 -0700</bug_when>
    <thetext>Values iterator with a for-of loop seems a bit less expensive but it is still creating an iterator object. Maybe this is not worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360502</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-14 16:50:45 -0700</bug_when>
    <thetext>We no longer use builtins for creating headers thanks to improvement in the binding generator.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283068</attachid>
            <date>2016-07-07 15:33:52 -0700</date>
            <delta_ts>2016-07-07 15:33:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159528-20160708003317.patch</filename>
            <type>text/plain</type>
            <size>1970</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI3ZjZlYmVlYzJiNjQz
ZTU0Zjg1NWEzZTQ2MTZjOGI4YjA4NDM4Zi4uYjZmODNhMTYxMzYwYzUxYjcwNzZkODI4N2JlMGZl
NzFjZTAyYTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE2LTA3LTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBVc2UgQXJyYXkuZm9yRWFj
aCBpbiBIZWFkZXJzIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5qczoKKyAgICAgICAgKGluaXRpYWxpemVG
ZXRjaEhlYWRlcnMpOiBNYWtpbmcgdXNlIG9mIEBBcnJheSBAZm9yRWFjaCBtZXRob2QuCisKKzIw
MTYtMDctMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIERP
TSB2YWx1ZSBpdGVyYWJsZSBpbnRlcmZhY2VzIHNob3VsZCB1c2UgQXJyYXkgcHJvdG90eXBlIG1l
dGhvZHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
OTI5NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVh
ZGVycy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmpzCmlu
ZGV4IDdjMzUwMTQxOTIxZWRlZDgwZmViZWFkOTczYzQ0NjljNzYzYmFmODYuLjMyNTM4NWM3NWMx
ZDlhZjgyOTcyMGIyZTQ3NmZkODI2MGQ5YjE1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmpzCkBAIC00MSwyMCArNDEsMTcgQEAgZnVuY3Rpb24gaW5p
dGlhbGl6ZUZldGNoSGVhZGVycyhoZWFkZXJzSW5pdCkKICAgICB9CiAKICAgICBpZiAoQGlzQXJy
YXkoaGVhZGVyc0luaXQpKSB7Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyc0lu
aXQubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGxldCBoZWFkZXIgPSBoZWFkZXJzSW5pdFtp
XTsKKyAgICAgICAgQEFycmF5LnByb3RvdHlwZS5AZm9yRWFjaC5AY2FsbChoZWFkZXJzSW5pdCwg
KGhlYWRlcikgPT4gewogICAgICAgICAgICAgaWYgKGhlYWRlci5sZW5ndGggIT09IDIpCiAgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoImhlYWRlcnNJbml0IHNlcXVlbmNlIGl0
ZW1zIHNob3VsZCBjb250YWluIHR3byB2YWx1ZXMiKTsKICAgICAgICAgICAgIHRoaXMuQGFwcGVu
ZEZyb21KUyhoZWFkZXJbMF0sIGhlYWRlclsxXSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIAotICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gQE9i
amVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzSW5pdCk7Ci0gICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGxldCBuYW1lID0g
cHJvcGVydHlOYW1lc1tpXTsKKyAgICBAQXJyYXkucHJvdG90eXBlLkBmb3JFYWNoLkBjYWxsKEBP
YmplY3QuQGdldE93blByb3BlcnR5TmFtZXMoaGVhZGVyc0luaXQpLCAobmFtZSkgPT4gewogICAg
ICAgICB0aGlzLkBhcHBlbmRGcm9tSlMobmFtZSwgaGVhZGVyc0luaXRbbmFtZV0pOwotICAgIH0K
KyAgICB9KTsKIAogICAgIHJldHVybiB0aGlzOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>