Changeset 204006 in webkit


Ignore:
Timestamp:
Aug 1, 2016 6:44:43 PM (8 years ago)
Author:
akling@apple.com
Message:

Shrink MediaQuerySets to fit after parsing.
<https://webkit.org/b/160419>

Reviewed by Antti Koivisto.

Add shrinkToFit() helpers to MediaQuerySet and MediaQuery
and call it after parsing to remove extra capacity from their
internal vectors.

This reduces memory usage by 1.24MB on theverge.com.

  • css/CSSParser.cpp:

(WebCore::CSSParser::createMediaRule):

  • css/MediaList.cpp:

(WebCore::MediaQuerySet::parse):
(WebCore::MediaQuerySet::shrinkToFit):

  • css/MediaList.h:
  • css/MediaQuery.h:

(WebCore::MediaQuery::shrinkToFit):

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r204005 r204006  
     12016-08-01  Andreas Kling  <akling@apple.com>
     2
     3        Shrink MediaQuerySets to fit after parsing.
     4        <https://webkit.org/b/160419>
     5
     6        Reviewed by Antti Koivisto.
     7
     8        Add shrinkToFit() helpers to MediaQuerySet and MediaQuery
     9        and call it after parsing to remove extra capacity from their
     10        internal vectors.
     11
     12        This reduces memory usage by 1.24MB on theverge.com.
     13
     14        * css/CSSParser.cpp:
     15        (WebCore::CSSParser::createMediaRule):
     16        * css/MediaList.cpp:
     17        (WebCore::MediaQuerySet::parse):
     18        (WebCore::MediaQuerySet::shrinkToFit):
     19        * css/MediaList.h:
     20        * css/MediaQuery.h:
     21        (WebCore::MediaQuery::shrinkToFit):
     22
    1232016-08-01  Tim Horton  <timothy_horton@apple.com>
    224
  • trunk/Source/WebCore/css/CSSParser.cpp

    r203717 r204006  
    1290612906        // even when it is syntactically incorrect.
    1290712907        rule = StyleRuleMedia::create(MediaQuerySet::create(), emptyRules);
    12908     } else
     12908    } else {
     12909        media->shrinkToFit();
    1290912910        rule = StyleRuleMedia::create(media.releaseNonNull(), rules ? *rules : emptyRules);
     12911    }
    1291012912    processAndAddNewRuleToSourceTreeIfNeeded();
    1291112913    return rule.releaseNonNull();
  • trunk/Source/WebCore/css/MediaList.cpp

    r201441 r204006  
    159159    }
    160160    m_queries = WTFMove(result);
     161    shrinkToFit();
    161162    return true;
    162163}
     
    197198    }
    198199    return text.toString();
     200}
     201
     202void MediaQuerySet::shrinkToFit()
     203{
     204    m_queries.shrinkToFit();
     205    for (auto& query : m_queries)
     206        query.shrinkToFit();
    199207}
    200208
  • trunk/Source/WebCore/css/MediaList.h

    r201441 r204006  
    6767    Ref<MediaQuerySet> copy() const { return adoptRef(*new MediaQuerySet(*this)); }
    6868
     69    void shrinkToFit();
     70
    6971private:
    7072    MediaQuerySet();
  • trunk/Source/WebCore/css/MediaQuery.h

    r201441 r204006  
    5050    bool operator==(const MediaQuery& other) const;
    5151
     52    void shrinkToFit() { m_expressions.shrinkToFit(); }
     53
    5254private:
    5355    String serialize() const;
Note: See TracChangeset for help on using the changeset viewer.