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

Side by Side Diff: third_party/WebKit/Source/core/dom/CSSSelectorWatch.cpp

Issue 2541853002: CSSSelectorWatch: avoid unnecessary hash table lookups. (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 const Vector<String>& addedSelectors) { 92 const Vector<String>& addedSelectors) {
93 bool shouldUpdateTimer = false; 93 bool shouldUpdateTimer = false;
94 94
95 for (unsigned i = 0; i < removedSelectors.size(); ++i) { 95 for (unsigned i = 0; i < removedSelectors.size(); ++i) {
96 const String& selector = removedSelectors[i]; 96 const String& selector = removedSelectors[i];
97 if (!m_matchingCallbackSelectors.remove(selector)) 97 if (!m_matchingCallbackSelectors.remove(selector))
98 continue; 98 continue;
99 99
100 // Count reached 0. 100 // Count reached 0.
101 shouldUpdateTimer = true; 101 shouldUpdateTimer = true;
102 if (m_addedSelectors.contains(selector)) 102 auto it = m_addedSelectors.find(selector);
103 m_addedSelectors.remove(selector); 103 if (it != m_addedSelectors.end())
104 m_addedSelectors.remove(it);
104 else 105 else
105 m_removedSelectors.add(selector); 106 m_removedSelectors.add(selector);
106 } 107 }
107 108
108 for (unsigned i = 0; i < addedSelectors.size(); ++i) { 109 for (unsigned i = 0; i < addedSelectors.size(); ++i) {
109 const String& selector = addedSelectors[i]; 110 const String& selector = addedSelectors[i];
110 HashCountedSet<String>::AddResult result = 111 HashCountedSet<String>::AddResult result =
111 m_matchingCallbackSelectors.add(selector); 112 m_matchingCallbackSelectors.add(selector);
112 if (!result.isNewEntry) 113 if (!result.isNewEntry)
113 continue; 114 continue;
114 115
115 shouldUpdateTimer = true; 116 shouldUpdateTimer = true;
116 if (m_removedSelectors.contains(selector)) 117 auto it = m_removedSelectors.find(selector);
117 m_removedSelectors.remove(selector); 118 if (it != m_removedSelectors.end())
119 m_removedSelectors.remove(it);
118 else 120 else
119 m_addedSelectors.add(selector); 121 m_addedSelectors.add(selector);
120 } 122 }
121 123
122 if (!shouldUpdateTimer) 124 if (!shouldUpdateTimer)
123 return; 125 return;
124 126
125 if (m_removedSelectors.isEmpty() && m_addedSelectors.isEmpty()) { 127 if (m_removedSelectors.isEmpty() && m_addedSelectors.isEmpty()) {
126 if (m_callbackSelectorChangeTimer.isActive()) { 128 if (m_callbackSelectorChangeTimer.isActive()) {
127 m_timerExpirations = 0; 129 m_timerExpirations = 0;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 document().styleEngine().watchedSelectorsChanged(); 167 document().styleEngine().watchedSelectorsChanged();
166 } 168 }
167 169
168 DEFINE_TRACE(CSSSelectorWatch) { 170 DEFINE_TRACE(CSSSelectorWatch) {
169 visitor->trace(m_watchedCallbackSelectors); 171 visitor->trace(m_watchedCallbackSelectors);
170 visitor->trace(m_document); 172 visitor->trace(m_document);
171 Supplement<Document>::trace(visitor); 173 Supplement<Document>::trace(visitor);
172 } 174 }
173 175
174 } // namespace blink 176 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698