Need to get rid of this class.
Created attachment 19290 [details] patch to do this for SegmentedString
Comment on attachment 19290 [details] patch to do this for SegmentedString r=me, though I assume this requires the changes the to Deque first.
Comment on attachment 19290 [details] patch to do this for SegmentedString Committed revision 30546.
These are the three remaining clients: 1) CSSMutableStyleDeclaration::m_values -- can be a Vector, I think 2) Document::m_windowEventListeners -- Vector? ListHashSet? 3) EventTargetNode::m_regdListeners -- Vector? ListHashSet?
I think that CSSMutableStyleDeclaration might be a great candidate for ListHashMap, something like ListHashMap<int, CSSProperty> (the item accessor will be O(n), but that is already the case)
Created attachment 26003 [details] patch
Comment on attachment 26003 [details] patch > #endif > Index: WebCore/dom/EventTargetNode.cpp > =================================================================== > --- WebCore/dom/EventTargetNode.cpp (revision 39276) > +++ WebCore/dom/EventTargetNode.cpp (working copy) > +const RegisteredEventListeners& EventTargetNode::eventListeners() const > +{ > + if (hasRareData()) { > + if (RegisteredEventListeners* listeners = rareData()->listeners()) > + return *listeners; > + } > + static const RegisteredEventListeners* emptyListenersVector = new RegisteredEventListeners; > + return *emptyListenersVector; Clever! > void EventTargetNode::removeEventListener(const AtomicString& eventType, EventListener* listener, bool useCapture) > { > - if (!m_regdListeners) > + if (!hasRareData()) > return; > > - RegisteredEventListenerList::Iterator end = m_regdListeners->end(); > - for (RegisteredEventListenerList::Iterator it = m_regdListeners->begin(); it != end; ++it) { > - RegisteredEventListener& r = **it; > + RegisteredEventListeners* listeners = rareData()->listeners(); > + if (!listeners) > + return; > + > + size_t size = listeners->size(); > + for (size_t i = 0; i < size; ++i) { > + RegisteredEventListener& r = *(*listeners)[i]; I prefer listeners->at(i). > void EventTargetNode::removeInlineEventListenerForType(const AtomicString& eventType) > { > + > + size_t size = listeners->size(); > + for (size_t i = 0; i < size; ++i) { > + RegisteredEventListener& r = *(*listeners)[i]; > + if (r.eventType() != eventType || !r.listener()->isInline()) > continue; > Same thing here. > + > +typedef Vector<RefPtr<RegisteredEventListener> > RegisteredEventListeners; > I think RegistereEventListenerVector is better here. r=me! I usually delete the files in a separate commit. Boy it feels great to see those red patches on webkit-changes ;)
http://trac.webkit.org/changeset/39279 http://trac.webkit.org/changeset/39280