Index: Source/core/html/HTMLCollection.cpp |
diff --git a/Source/core/html/HTMLCollection.cpp b/Source/core/html/HTMLCollection.cpp |
index 42f5c65f8be8be9ae8f8a78990043b065f57cb05..79bb5313c1683fd942be761d22b421a8b4c591e2 100644 |
--- a/Source/core/html/HTMLCollection.cpp |
+++ b/Source/core/html/HTMLCollection.cpp |
@@ -166,18 +166,20 @@ HTMLCollection::HTMLCollection(ContainerNode& ownerNode, CollectionType type, It |
ScriptWrappable::init(this); |
} |
-PassRefPtr<HTMLCollection> HTMLCollection::create(ContainerNode& base, CollectionType type) |
+PassRefPtrWillBeRawPtr<HTMLCollection> HTMLCollection::create(ContainerNode& base, CollectionType type) |
{ |
- return adoptRef(new HTMLCollection(base, type, DoesNotOverrideItemAfter)); |
+ return adoptRefWillBeNoop(new HTMLCollection(base, type, DoesNotOverrideItemAfter)); |
} |
HTMLCollection::~HTMLCollection() |
{ |
+#if !ENABLE(OILPAN) |
if (hasValidIdNameCache()) |
unregisterIdNameCacheFromDocument(document()); |
// Named HTMLCollection types remove cache by themselves. |
if (isUnnamedHTMLCollectionType(type())) |
ownerNode().nodeLists()->removeCache(this, type()); |
+#endif |
} |
void HTMLCollection::invalidateCache(Document* oldDocument) const |
@@ -420,11 +422,11 @@ Element* HTMLCollection::namedItem(const AtomicString& name) const |
updateIdNameCache(); |
const NamedItemCache& cache = namedItemCache(); |
- Vector<Element*>* idResults = cache.getElementsById(name); |
+ WillBeHeapVector<RawPtrWillBeMember<Element> >* idResults = cache.getElementsById(name); |
if (idResults && !idResults->isEmpty()) |
return idResults->first(); |
- Vector<Element*>* nameResults = cache.getElementsByName(name); |
+ WillBeHeapVector<RawPtrWillBeMember<Element> >* nameResults = cache.getElementsByName(name); |
if (nameResults && !nameResults->isEmpty()) |
return nameResults->first(); |
@@ -475,7 +477,7 @@ void HTMLCollection::updateIdNameCache() const |
if (hasValidIdNameCache()) |
return; |
- OwnPtr<NamedItemCache> cache = NamedItemCache::create(); |
+ OwnPtrWillBeRawPtr<NamedItemCache> cache = NamedItemCache::create(); |
for (Element* element = traverseToFirstElement(); element; element = traverseNextElement(*element)) { |
const AtomicString& idAttrVal = element->getIdAttribute(); |
if (!idAttrVal.isEmpty()) |
@@ -490,7 +492,7 @@ void HTMLCollection::updateIdNameCache() const |
setNamedItemCache(cache.release()); |
} |
-void HTMLCollection::namedItems(const AtomicString& name, Vector<RefPtr<Element> >& result) const |
+void HTMLCollection::namedItems(const AtomicString& name, WillBeHeapVector<RefPtrWillBeMember<Element> >& result) const |
{ |
ASSERT(result.isEmpty()); |
if (name.isEmpty()) |
@@ -499,8 +501,8 @@ void HTMLCollection::namedItems(const AtomicString& name, Vector<RefPtr<Element> |
updateIdNameCache(); |
const NamedItemCache& cache = namedItemCache(); |
- Vector<Element*>* idResults = cache.getElementsById(name); |
- Vector<Element*>* nameResults = cache.getElementsByName(name); |
+ WillBeHeapVector<RawPtrWillBeMember<Element> >* idResults = cache.getElementsById(name); |
+ WillBeHeapVector<RawPtrWillBeMember<Element> >* nameResults = cache.getElementsByName(name); |
for (unsigned i = 0; idResults && i < idResults->size(); ++i) |
result.append(idResults->at(i)); |
@@ -513,4 +515,11 @@ HTMLCollection::NamedItemCache::NamedItemCache() |
{ |
} |
+void HTMLCollection::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_namedItemCache); |
+ visitor->trace(m_collectionIndexCache); |
+ LiveNodeListBase::trace(visitor); |
+} |
+ |
} // namespace WebCore |