<?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>186696</bug_id>
          
          <creation_ts>2018-06-15 14:43:33 -0700</creation_ts>
          <short_desc>MediaQuerySet wastes a lot of vector capacity</short_desc>
          <delta_ts>2018-06-16 16:47: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>CSS</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1433560</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-15 14:43:33 -0700</bug_when>
    <thetext>On theverge.com, we waste about half a meg of vector capacity here:

Wasted capacity: 589624 bytes (used 39368 of 628992 bytes, utilization: 6.26%) - 702 allocations
1   0x10743f765 WTF::VectorBuffer&lt;WebCore::MediaQuery, 0ul&gt;::VectorBuffer()
2   0x10743f745 WTF::Vector&lt;WebCore::MediaQuery, 0ul, WTF::CrashOnOverflow, 16ul&gt;::Vector()
3   0x1074284f5 WTF::Vector&lt;WebCore::MediaQuery, 0ul, WTF::CrashOnOverflow, 16ul&gt;::Vector()
4   0x1074284b6 WebCore::MediaQuerySet::MediaQuerySet()
5   0x107428515 WebCore::MediaQuerySet::MediaQuerySet()
6   0x1074283be WebCore::MediaQuerySet::create()
7   0x1075404be WebCore::MediaQueryParser::MediaQueryParser(WebCore::MediaQueryParser::ParserType, WebCore::MediaQueryParserContext)
8   0x10753f534 WebCore::MediaQueryParser::MediaQueryParser(WebCore::MediaQueryParser::ParserType, WebCore::MediaQueryParserContext)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433563</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-15 14:50:50 -0700</bug_when>
    <thetext>Need to re-do the changes from r204006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433564</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-15 14:51:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/41172850&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433573</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-15 15:00:28 -0700</bug_when>
    <thetext>Tooling in bug 186698.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433621</commentid>
    <comment_count>4</comment_count>
      <attachid>342856</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-15 16:26:42 -0700</bug_when>
    <thetext>Created attachment 342856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433622</commentid>
    <comment_count>5</comment_count>
      <attachid>342856</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-15 16:29:44 -0700</bug_when>
    <thetext>Comment on attachment 342856
Patch

Kling&apos;s previous changes here did a lot more shrinking: https://trac.webkit.org/changeset/204006. I also wonder if we should shrink MediaQuery&apos;s m_expressions vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433623</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-15 16:30:42 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #5)
&gt; Comment on attachment 342856 [details]
&gt; Patch
&gt; 
&gt; Kling&apos;s previous changes here did a lot more shrinking:
&gt; https://trac.webkit.org/changeset/204006. I also wonder if we should shrink
&gt; MediaQuery&apos;s m_expressions vector.

The code has not changed and is still there:
void MediaQuerySet::shrinkToFit()
{
    m_queries.shrinkToFit();
    for (auto&amp; query : m_queries)
        query.shrinkToFit();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433624</commentid>
    <comment_count>7</comment_count>
      <attachid>342856</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-15 16:32:44 -0700</bug_when>
    <thetext>Comment on attachment 342856
Patch

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433625</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-15 16:36:40 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Simon Fraser (smfr) from comment #5)
&gt; &gt; Comment on attachment 342856 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Kling&apos;s previous changes here did a lot more shrinking:
&gt; &gt; https://trac.webkit.org/changeset/204006. I also wonder if we should shrink
&gt; &gt; MediaQuery&apos;s m_expressions vector.
&gt; 
&gt; The code has not changed and is still there:
&gt; void MediaQuerySet::shrinkToFit()
&gt; {
&gt;     m_queries.shrinkToFit();
&gt;     for (auto&amp; query : m_queries)
&gt;         query.shrinkToFit();
&gt; }

I am looking at r204006 but I am not convinced it does more shrinking. We still shrink both the MediaQuerySet and every query in the vector.

Also, on ToT, MediaQuerySet::create() is only called in MediaQueryParser, and shrink there after we&apos;re done parsing. 

MediaQuerySet::create(const String&amp;, MediaQueryParserContext&amp;), calls MediaQueryParser::parseMediaQuerySet() which calls MediaQueryParser(MediaQuerySetParser, context).parseInternal(range) where I do the shrinking.

I am therefore confident I shrink all MediaQuerySet objects, right after they&apos;re parsed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433634</commentid>
    <comment_count>9</comment_count>
      <attachid>342856</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-15 17:24:13 -0700</bug_when>
    <thetext>Comment on attachment 342856
Patch

Clearing flags on attachment: 342856

Committed r232898: &lt;https://trac.webkit.org/changeset/232898&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433635</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-15 17:24:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433835</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-16 16:47:45 -0700</bug_when>
    <thetext>*** Bug 186713 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342856</attachid>
            <date>2018-06-15 16:26:42 -0700</date>
            <delta_ts>2018-06-15 17:24:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186696-20180615162641.patch</filename>
            <type>text/plain</type>
            <size>1397</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjljMjAzNjE0MzBmOTU4
NTAzYTY3NDA1NGIwMGRlYWY4OWEzMTU2OS4uMTk2NWMwMzI0ZDlhNGQ5ZWI3YThmMzZhNjdhNDQ1
MWZmNDYwOWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTA2LTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFRdWVyeVNldCB3YXN0
ZXMgYSBsb3Qgb2YgdmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxMTcy
ODUwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENh
bGwgc2hyaW5rVG9GaXQoKSBvbiB0aGUgTWVkaWFRdWVyeVNldCBhZnRlciB3ZSdyZSBkb25lIHBh
cnNpbmcgaXQKKyAgICAgICAgdG8gYXZvaWQgd2FzdGluZyBtZW1vcnkuCisKKyAgICAgICAgKiBj
c3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFR
dWVyeVBhcnNlcjo6cGFyc2VJbnRlcm5hbCk6CisKIDIwMTgtMDYtMTUgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNlbWFudGljIGNvbG9ycyBzaG91bGQgbm90
IGJlIHRyYW5zZm9ybWVkIGJ5IGNvbG9yLWZpbHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggNzc4YTliZTY2MWE2Nzk0MTVlNTUwZjEw
MmY5ZGVhYzc1MGU1OTVhYy4uNWQzNmYxYjI1ZjVkMGFlNmMyZDhhMDI0ZjA4NWU1MmZmMTExNTdl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3Bw
CkBAIC0yNzIsNiArMjcyLDggQEAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IE1lZGlhUXVlcnlQYXJz
ZXI6OnBhcnNlSW50ZXJuYWwoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSkKICAgICB9IGVsc2Ug
aWYgKG1fbWVkaWFRdWVyeURhdGEuY3VycmVudE1lZGlhUXVlcnlDaGFuZ2VkKCkpCiAgICAgICAg
IGNvbW1pdE1lZGlhUXVlcnkoKTsKIAorICAgIG1fcXVlcnlTZXQtPnNocmlua1RvRml0KCk7CisK
ICAgICByZXR1cm4gbV9xdWVyeVNldDsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>