2008-12-03 Antti Koivisto <antti@apple.com>
Reviewed by Dan Bernstein and Mark Rowe.
https://bugs.webkit.org/show_bug.cgi?id=22379
Make CSSOM use less memory
Reduce size of the CSSSelector by 3/8 by moving rarely used fields to a rare data
struct. Browsing around with some instrumentation showed that ~0.1% of all selectors
encountered had rare data.
This also eliminates the CSSNthSelector subclass which will make possible to store
CSSSelectors in an array instead of a linked list for futher memory savings.
* css/CSSGrammar.y:
* css/CSSNthSelector.cpp: Removed.
* css/CSSNthSelector.h: Removed.
* css/CSSParser.cpp:
(WebCore::CSSParser::createFloatingSelector):
* css/CSSParser.h:
* css/CSSSelector.cpp:
(WebCore::CSSSelector::specificity):
(WebCore::CSSSelector::operator==):
(WebCore::CSSSelector::selectorText):
(WebCore::CSSSelector::setTagHistory):
(WebCore::CSSSelector::attribute):
(WebCore::CSSSelector::setAttribute):
(WebCore::CSSSelector::setArgument):
(WebCore::CSSSelector::setSimpleSelector):
(WebCore::CSSSelector::parseNth):
(WebCore::CSSSelector::matchNth):
(WebCore::CSSSelector::RareData::parseNth):
(WebCore::CSSSelector::RareData::matchNth):
* css/CSSSelector.h:
(WebCore::CSSSelector::CSSSelector):
(WebCore::CSSSelector::~CSSSelector):
(WebCore::CSSSelector::tagHistory):
(WebCore::CSSSelector::hasAttribute):
(WebCore::CSSSelector::argument):
(WebCore::CSSSelector::simpleSelector):
(WebCore::CSSSelector::RareData::RareData):
(WebCore::CSSSelector::createRareData):
(WebCore::CSSSelector::):
* css/CSSStyleSelector.cpp:
(WebCore::CSSStyleSelector::SelectorChecker::checkSelector):
(WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38934 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index e05dff1..2047267 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,50 @@
+2008-12-03 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Dan Bernstein and Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22379
+ Make CSSOM use less memory
+
+ Reduce size of the CSSSelector by 3/8 by moving rarely used fields to a rare data
+ struct. Browsing around with some instrumentation showed that ~0.1% of all selectors
+ encountered had rare data.
+
+ This also eliminates the CSSNthSelector subclass which will make possible to store
+ CSSSelectors in an array instead of a linked list for futher memory savings.
+
+ * css/CSSGrammar.y:
+ * css/CSSNthSelector.cpp: Removed.
+ * css/CSSNthSelector.h: Removed.
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::createFloatingSelector):
+ * css/CSSParser.h:
+ * css/CSSSelector.cpp:
+ (WebCore::CSSSelector::specificity):
+ (WebCore::CSSSelector::operator==):
+ (WebCore::CSSSelector::selectorText):
+ (WebCore::CSSSelector::setTagHistory):
+ (WebCore::CSSSelector::attribute):
+ (WebCore::CSSSelector::setAttribute):
+ (WebCore::CSSSelector::setArgument):
+ (WebCore::CSSSelector::setSimpleSelector):
+ (WebCore::CSSSelector::parseNth):
+ (WebCore::CSSSelector::matchNth):
+ (WebCore::CSSSelector::RareData::parseNth):
+ (WebCore::CSSSelector::RareData::matchNth):
+ * css/CSSSelector.h:
+ (WebCore::CSSSelector::CSSSelector):
+ (WebCore::CSSSelector::~CSSSelector):
+ (WebCore::CSSSelector::tagHistory):
+ (WebCore::CSSSelector::hasAttribute):
+ (WebCore::CSSSelector::argument):
+ (WebCore::CSSSelector::simpleSelector):
+ (WebCore::CSSSelector::RareData::RareData):
+ (WebCore::CSSSelector::createRareData):
+ (WebCore::CSSSelector::):
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::SelectorChecker::checkSelector):
+ (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector):
+
2008-12-03 Jian Li <jianli@chromium.org>
Reviewed by Alexey Proskuryakov.