OLD | NEW |
---|---|
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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
126 const RuleFeatureSet& features() const { return m_features; } | 126 const RuleFeatureSet& features() const { return m_features; } |
127 | 127 |
128 const RuleData* idRules(const AtomicString& key) const { ASSERT(!m_pendingRu les); return m_idRules.get(key); } | 128 const RuleData* idRules(const AtomicString& key) const { ASSERT(!m_pendingRu les); return m_idRules.get(key); } |
129 const RuleData* classRules(const AtomicString& key) const { ASSERT(!m_pendin gRules); return m_classRules.get(key); } | 129 const RuleData* classRules(const AtomicString& key) const { ASSERT(!m_pendin gRules); return m_classRules.get(key); } |
130 const RuleData* tagRules(const AtomicString& key) const { ASSERT(!m_pendingR ules); return m_tagRules.get(key); } | 130 const RuleData* tagRules(const AtomicString& key) const { ASSERT(!m_pendingR ules); return m_tagRules.get(key); } |
131 const RuleData* shadowPseudoElementRules(const AtomicString& key) const { AS SERT(!m_pendingRules); return m_shadowPseudoElementRules.get(key); } | 131 const RuleData* shadowPseudoElementRules(const AtomicString& key) const { AS SERT(!m_pendingRules); return m_shadowPseudoElementRules.get(key); } |
132 const Vector<RuleData>* linkPseudoClassRules() const { ASSERT(!m_pendingRule s); return &m_linkPseudoClassRules; } | 132 const Vector<RuleData>* linkPseudoClassRules() const { ASSERT(!m_pendingRule s); return &m_linkPseudoClassRules; } |
133 const Vector<RuleData>* cuePseudoRules() const { ASSERT(!m_pendingRules); re turn &m_cuePseudoRules; } | 133 const Vector<RuleData>* cuePseudoRules() const { ASSERT(!m_pendingRules); re turn &m_cuePseudoRules; } |
134 const Vector<RuleData>* focusPseudoClassRules() const { ASSERT(!m_pendingRul es); return &m_focusPseudoClassRules; } | 134 const Vector<RuleData>* focusPseudoClassRules() const { ASSERT(!m_pendingRul es); return &m_focusPseudoClassRules; } |
135 const Vector<RuleData>* universalRules() const { ASSERT(!m_pendingRules); re turn &m_universalRules; } | 135 const Vector<RuleData>* universalRules() const { ASSERT(!m_pendingRules); re turn &m_universalRules; } |
136 const Vector<StyleRulePage*>& pageRules() const { ASSERT(!m_pendingRules); r eturn m_pageRules; } | 136 const WillBeHeapVector<RawPtrWillBeMember<StyleRulePage> >& pageRules() cons t { ASSERT(!m_pendingRules); return m_pageRules; } |
haraken
2014/02/26 02:20:13
Just to confirm: It is safe to convert PersistentH
Vyacheslav Egorov (Chromium)
2014/02/26 13:12:24
It is safe to convert PersistentHeapVector& to Hea
haraken
2014/02/26 13:23:49
It's sad it requires copying.
Probably shall we a
haraken
2014/02/26 13:48:00
Note: The same issue is happening in https://coder
Vyacheslav Egorov (Chromium)
2014/02/26 14:13:28
Returning a *reference* does not require copying (
haraken
2014/02/26 14:20:53
ah, makes sense, thanks! (though I think we'll nee
| |
137 const Vector<StyleRuleViewport*>& viewportRules() const { ASSERT(!m_pendingR ules); return m_viewportRules; } | 137 const WillBeHeapVector<RawPtrWillBeMember<StyleRuleViewport> >& viewportRule s() const { ASSERT(!m_pendingRules); return m_viewportRules; } |
138 const Vector<StyleRuleFontFace*>& fontFaceRules() const { return m_fontFaceR ules; } | 138 const WillBeHeapVector<RawPtrWillBeMember<StyleRuleFontFace> >& fontFaceRule s() const { return m_fontFaceRules; } |
139 const Vector<StyleRuleKeyframes*>& keyframesRules() const { return m_keyfram esRules; } | 139 const WillBeHeapVector<RawPtrWillBeMember<StyleRuleKeyframes> >& keyframesRu les() const { return m_keyframesRules; } |
140 const Vector<MinimalRuleData>& treeBoundaryCrossingRules() const { return m_ treeBoundaryCrossingRules; } | 140 const Vector<MinimalRuleData>& treeBoundaryCrossingRules() const { return m_ treeBoundaryCrossingRules; } |
141 const Vector<MinimalRuleData>& shadowDistributedRules() const { return m_sha dowDistributedRules; } | 141 const Vector<MinimalRuleData>& shadowDistributedRules() const { return m_sha dowDistributedRules; } |
142 const MediaQueryResultList& viewportDependentMediaQueryResults() const { ret urn m_viewportDependentMediaQueryResults; } | 142 const MediaQueryResultList& viewportDependentMediaQueryResults() const { ret urn m_viewportDependentMediaQueryResults; } |
143 | 143 |
144 unsigned ruleCount() const { return m_ruleCount; } | 144 unsigned ruleCount() const { return m_ruleCount; } |
145 | 145 |
146 void compactRulesIfNeeded() | 146 void compactRulesIfNeeded() |
147 { | 147 { |
148 if (!m_pendingRules) | 148 if (!m_pendingRules) |
149 return; | 149 return; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
199 | 199 |
200 CompactRuleMap m_idRules; | 200 CompactRuleMap m_idRules; |
201 CompactRuleMap m_classRules; | 201 CompactRuleMap m_classRules; |
202 CompactRuleMap m_tagRules; | 202 CompactRuleMap m_tagRules; |
203 CompactRuleMap m_shadowPseudoElementRules; | 203 CompactRuleMap m_shadowPseudoElementRules; |
204 Vector<RuleData> m_linkPseudoClassRules; | 204 Vector<RuleData> m_linkPseudoClassRules; |
205 Vector<RuleData> m_cuePseudoRules; | 205 Vector<RuleData> m_cuePseudoRules; |
206 Vector<RuleData> m_focusPseudoClassRules; | 206 Vector<RuleData> m_focusPseudoClassRules; |
207 Vector<RuleData> m_universalRules; | 207 Vector<RuleData> m_universalRules; |
208 RuleFeatureSet m_features; | 208 RuleFeatureSet m_features; |
209 Vector<StyleRulePage*> m_pageRules; | 209 WillBePersistentHeapVector<RawPtrWillBeMember<StyleRulePage> > m_pageRules; |
210 Vector<StyleRuleViewport*> m_viewportRules; | 210 WillBePersistentHeapVector<RawPtrWillBeMember<StyleRuleViewport> > m_viewpor tRules; |
211 Vector<StyleRuleFontFace*> m_fontFaceRules; | 211 WillBePersistentHeapVector<RawPtrWillBeMember<StyleRuleFontFace> > m_fontFac eRules; |
212 Vector<StyleRuleKeyframes*> m_keyframesRules; | 212 WillBePersistentHeapVector<RawPtrWillBeMember<StyleRuleKeyframes> > m_keyfra mesRules; |
haraken
2014/02/26 02:20:13
These are changing raw pointers with Persistents.
Vyacheslav Egorov (Chromium)
2014/02/26 13:12:24
On the first glance it does not seem like it intro
haraken
2014/02/26 13:23:49
Agreed. I'm OK as long as the leak is fixed until
| |
213 Vector<MinimalRuleData> m_treeBoundaryCrossingRules; | 213 Vector<MinimalRuleData> m_treeBoundaryCrossingRules; |
214 Vector<MinimalRuleData> m_shadowDistributedRules; | 214 Vector<MinimalRuleData> m_shadowDistributedRules; |
215 | 215 |
216 MediaQueryResultList m_viewportDependentMediaQueryResults; | 216 MediaQueryResultList m_viewportDependentMediaQueryResults; |
217 | 217 |
218 unsigned m_ruleCount; | 218 unsigned m_ruleCount; |
219 OwnPtr<PendingRuleMaps> m_pendingRules; | 219 OwnPtr<PendingRuleMaps> m_pendingRules; |
220 | 220 |
221 #ifndef NDEBUG | 221 #ifndef NDEBUG |
222 Vector<RuleData> m_allRules; | 222 Vector<RuleData> m_allRules; |
223 #endif | 223 #endif |
224 }; | 224 }; |
225 | 225 |
226 } // namespace WebCore | 226 } // namespace WebCore |
227 | 227 |
228 #endif // RuleSet_h | 228 #endif // RuleSet_h |
OLD | NEW |