Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Side by Side Diff: Source/core/css/RuleSet.h

Issue 953693002: InlinedVisitor: Migrate css to use inlined tracing (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 class MinimalRuleData { 54 class MinimalRuleData {
55 ALLOW_ONLY_INLINE_ALLOCATION(); 55 ALLOW_ONLY_INLINE_ALLOCATION();
56 public: 56 public:
57 MinimalRuleData(StyleRule* rule, unsigned selectorIndex, AddRuleFlags flags) 57 MinimalRuleData(StyleRule* rule, unsigned selectorIndex, AddRuleFlags flags)
58 : m_rule(rule) 58 : m_rule(rule)
59 , m_selectorIndex(selectorIndex) 59 , m_selectorIndex(selectorIndex)
60 , m_flags(flags) 60 , m_flags(flags)
61 { 61 {
62 } 62 }
63 63
64 void trace(Visitor*); 64 DECLARE_TRACE();
65 65
66 RawPtrWillBeMember<StyleRule> m_rule; 66 RawPtrWillBeMember<StyleRule> m_rule;
67 unsigned m_selectorIndex; 67 unsigned m_selectorIndex;
68 AddRuleFlags m_flags; 68 AddRuleFlags m_flags;
69 }; 69 };
70 70
71 class RuleData { 71 class RuleData {
72 ALLOW_ONLY_INLINE_ALLOCATION(); 72 ALLOW_ONLY_INLINE_ALLOCATION();
73 public: 73 public:
74 RuleData(StyleRule*, unsigned selectorIndex, unsigned position, AddRuleFlags ); 74 RuleData(StyleRule*, unsigned selectorIndex, unsigned position, AddRuleFlags );
75 75
76 unsigned position() const { return m_position; } 76 unsigned position() const { return m_position; }
77 StyleRule* rule() const { return m_rule; } 77 StyleRule* rule() const { return m_rule; }
78 const CSSSelector& selector() const { return m_rule->selectorList().selector At(m_selectorIndex); } 78 const CSSSelector& selector() const { return m_rule->selectorList().selector At(m_selectorIndex); }
79 unsigned selectorIndex() const { return m_selectorIndex; } 79 unsigned selectorIndex() const { return m_selectorIndex; }
80 80
81 bool isLastInArray() const { return m_isLastInArray; } 81 bool isLastInArray() const { return m_isLastInArray; }
82 void setLastInArray(bool flag) { m_isLastInArray = flag; } 82 void setLastInArray(bool flag) { m_isLastInArray = flag; }
83 83
84 bool containsUncommonAttributeSelector() const { return m_containsUncommonAt tributeSelector; } 84 bool containsUncommonAttributeSelector() const { return m_containsUncommonAt tributeSelector; }
85 unsigned specificity() const { return m_specificity; } 85 unsigned specificity() const { return m_specificity; }
86 unsigned linkMatchType() const { return m_linkMatchType; } 86 unsigned linkMatchType() const { return m_linkMatchType; }
87 bool hasDocumentSecurityOrigin() const { return m_hasDocumentSecurityOrigin; } 87 bool hasDocumentSecurityOrigin() const { return m_hasDocumentSecurityOrigin; }
88 PropertyWhitelistType propertyWhitelistType(bool isMatchingUARules = false) const { return isMatchingUARules ? PropertyWhitelistNone : static_cast<PropertyW hitelistType>(m_propertyWhitelistType); } 88 PropertyWhitelistType propertyWhitelistType(bool isMatchingUARules = false) const { return isMatchingUARules ? PropertyWhitelistNone : static_cast<PropertyW hitelistType>(m_propertyWhitelistType); }
89 // Try to balance between memory usage (there can be lots of RuleData object s) and good filtering performance. 89 // Try to balance between memory usage (there can be lots of RuleData object s) and good filtering performance.
90 static const unsigned maximumIdentifierCount = 4; 90 static const unsigned maximumIdentifierCount = 4;
91 const unsigned* descendantSelectorIdentifierHashes() const { return m_descen dantSelectorIdentifierHashes; } 91 const unsigned* descendantSelectorIdentifierHashes() const { return m_descen dantSelectorIdentifierHashes; }
92 92
93 void trace(Visitor*); 93 DECLARE_TRACE();
94 94
95 private: 95 private:
96 RawPtrWillBeMember<StyleRule> m_rule; 96 RawPtrWillBeMember<StyleRule> m_rule;
97 unsigned m_selectorIndex : 12; 97 unsigned m_selectorIndex : 12;
98 unsigned m_isLastInArray : 1; // We store an array of RuleData objects in a primitive array. 98 unsigned m_isLastInArray : 1; // We store an array of RuleData objects in a primitive array.
99 // This number was picked fairly arbitrarily. We can probably lower it if we need to. 99 // This number was picked fairly arbitrarily. We can probably lower it if we need to.
100 // Some simple testing showed <100,000 RuleData's on large sites. 100 // Some simple testing showed <100,000 RuleData's on large sites.
101 unsigned m_position : 18; 101 unsigned m_position : 18;
102 unsigned m_specificity : 24; 102 unsigned m_specificity : 24;
103 unsigned m_containsUncommonAttributeSelector : 1; 103 unsigned m_containsUncommonAttributeSelector : 1;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 { 152 {
153 if (!m_pendingRules) 153 if (!m_pendingRules)
154 return; 154 return;
155 compactRules(); 155 compactRules();
156 } 156 }
157 157
158 #ifndef NDEBUG 158 #ifndef NDEBUG
159 void show(); 159 void show();
160 #endif 160 #endif
161 161
162 void trace(Visitor*); 162 DECLARE_TRACE();
163 163
164 private: 164 private:
165 typedef WillBeHeapHashMap<AtomicString, OwnPtrWillBeMember<WillBeHeapLinkedS tack<RuleData> > > PendingRuleMap; 165 typedef WillBeHeapHashMap<AtomicString, OwnPtrWillBeMember<WillBeHeapLinkedS tack<RuleData> > > PendingRuleMap;
166 typedef WillBeHeapHashMap<AtomicString, OwnPtrWillBeMember<WillBeHeapTermina tedArray<RuleData> > > CompactRuleMap; 166 typedef WillBeHeapHashMap<AtomicString, OwnPtrWillBeMember<WillBeHeapTermina tedArray<RuleData> > > CompactRuleMap;
167 167
168 RuleSet() 168 RuleSet()
169 : m_ruleCount(0) 169 : m_ruleCount(0)
170 { 170 {
171 } 171 }
172 172
(...skipping 11 matching lines...) Expand all
184 184
185 class PendingRuleMaps : public NoBaseWillBeGarbageCollected<PendingRuleMaps> { 185 class PendingRuleMaps : public NoBaseWillBeGarbageCollected<PendingRuleMaps> {
186 public: 186 public:
187 static PassOwnPtrWillBeRawPtr<PendingRuleMaps> create() { return adoptPt rWillBeNoop(new PendingRuleMaps); } 187 static PassOwnPtrWillBeRawPtr<PendingRuleMaps> create() { return adoptPt rWillBeNoop(new PendingRuleMaps); }
188 188
189 PendingRuleMap idRules; 189 PendingRuleMap idRules;
190 PendingRuleMap classRules; 190 PendingRuleMap classRules;
191 PendingRuleMap tagRules; 191 PendingRuleMap tagRules;
192 PendingRuleMap shadowPseudoElementRules; 192 PendingRuleMap shadowPseudoElementRules;
193 193
194 void trace(Visitor*); 194 DECLARE_TRACE();
195 195
196 private: 196 private:
197 PendingRuleMaps() { } 197 PendingRuleMaps() { }
198 }; 198 };
199 199
200 PendingRuleMaps* ensurePendingRules() 200 PendingRuleMaps* ensurePendingRules()
201 { 201 {
202 if (!m_pendingRules) 202 if (!m_pendingRules)
203 m_pendingRules = PendingRuleMaps::create(); 203 m_pendingRules = PendingRuleMaps::create();
204 return m_pendingRules.get(); 204 return m_pendingRules.get();
(...skipping 25 matching lines...) Expand all
230 WillBeHeapVector<RuleData> m_allRules; 230 WillBeHeapVector<RuleData> m_allRules;
231 #endif 231 #endif
232 }; 232 };
233 233
234 } // namespace blink 234 } // namespace blink
235 235
236 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::RuleData); 236 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::RuleData);
237 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::MinimalRuleData); 237 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::MinimalRuleData);
238 238
239 #endif // RuleSet_h 239 #endif // RuleSet_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698