Chromium Code Reviews| Index: Source/core/css/RuleSet.h |
| diff --git a/Source/core/css/RuleSet.h b/Source/core/css/RuleSet.h |
| index 4ce7582c4d1335d157bb485a52b33338a167543b..39474cd2f7781403519e4ab8224953d1ebcfb936 100644 |
| --- a/Source/core/css/RuleSet.h |
| +++ b/Source/core/css/RuleSet.h |
| @@ -27,6 +27,7 @@ |
| #include "wtf/Forward.h" |
| #include "wtf/HashMap.h" |
| #include "wtf/LinkedStack.h" |
| +#include "wtf/OwnArrayPtr.h" |
| namespace WebCore { |
| @@ -51,6 +52,7 @@ class StyleRuleRegion; |
| class StyleSheetContents; |
| class RuleData { |
| + NEW_DELETE_SAME_AS_MALLOC_FREE; |
| public: |
| RuleData(StyleRule*, unsigned selectorIndex, unsigned position, AddRuleFlags); |
| @@ -59,6 +61,9 @@ public: |
| const CSSSelector* selector() const { return m_rule->selectorList().selectorAt(m_selectorIndex); } |
| unsigned selectorIndex() const { return m_selectorIndex; } |
| + bool isLastInArray() const { return m_isLastInArray; } |
| + void setLastInArray(bool flag) { m_isLastInArray = flag ? 1 : 0; } |
|
esprehn
2013/06/26 00:37:33
I don't think you need the ternary in here.
abarth-chromium
2013/06/26 00:57:00
Done.
|
| + |
| bool hasFastCheckableSelector() const { return m_hasFastCheckableSelector; } |
| bool hasMultipartSelector() const { return m_hasMultipartSelector; } |
| bool hasRightmostSelectorMatchingHTMLBasedOnRuleHash() const { return m_hasRightmostSelectorMatchingHTMLBasedOnRuleHash; } |
| @@ -75,7 +80,8 @@ public: |
| private: |
| StyleRule* m_rule; |
| - unsigned m_selectorIndex : 13; |
| + unsigned m_selectorIndex : 12; |
| + unsigned m_isLastInArray : 1; // We store an array of RuleData objects in a primitive array. |
| // This number was picked fairly arbitrarily. We can probably lower it if we need to. |
| // Some simple testing showed <100,000 RuleData's on large sites. |
| unsigned m_position : 18; |
| @@ -111,10 +117,10 @@ public: |
| const RuleFeatureSet& features() const { return m_features; } |
| - const Vector<RuleData>* idRules(AtomicStringImpl* key) const { ASSERT(!m_pendingRules); return m_idRules.get(key); } |
| - const Vector<RuleData>* classRules(AtomicStringImpl* key) const { ASSERT(!m_pendingRules); return m_classRules.get(key); } |
| - const Vector<RuleData>* tagRules(AtomicStringImpl* key) const { ASSERT(!m_pendingRules); return m_tagRules.get(key); } |
| - const Vector<RuleData>* shadowPseudoElementRules(AtomicStringImpl* key) const { ASSERT(!m_pendingRules); return m_shadowPseudoElementRules.get(key); } |
| + const RuleData* idRules(AtomicStringImpl* key) const { ASSERT(!m_pendingRules); return m_idRules.get(key); } |
| + const RuleData* classRules(AtomicStringImpl* key) const { ASSERT(!m_pendingRules); return m_classRules.get(key); } |
| + const RuleData* tagRules(AtomicStringImpl* key) const { ASSERT(!m_pendingRules); return m_tagRules.get(key); } |
| + const RuleData* shadowPseudoElementRules(AtomicStringImpl* key) const { ASSERT(!m_pendingRules); return m_shadowPseudoElementRules.get(key); } |
|
esprehn
2013/06/26 00:37:33
We might consider a WTF class someday that does th
abarth-chromium
2013/06/26 00:57:00
Yeah.
|
| const Vector<RuleData>* linkPseudoClassRules() const { ASSERT(!m_pendingRules); return &m_linkPseudoClassRules; } |
| const Vector<RuleData>* cuePseudoRules() const { ASSERT(!m_pendingRules); return &m_cuePseudoRules; } |
| const Vector<RuleData>* focusPseudoClassRules() const { ASSERT(!m_pendingRules); return &m_focusPseudoClassRules; } |
| @@ -145,7 +151,7 @@ public: |
| private: |
| typedef HashMap<AtomicStringImpl*, OwnPtr<LinkedStack<RuleData> > > PendingRuleMap; |
| - typedef HashMap<AtomicStringImpl*, OwnPtr<Vector<RuleData> > > CompactRuleMap; |
| + typedef HashMap<AtomicStringImpl*, OwnPtr<RuleData> > CompactRuleMap; |
| RuleSet() |
| : m_ruleCount(0) |