Index: Source/wtf/Deque.h |
diff --git a/Source/wtf/Deque.h b/Source/wtf/Deque.h |
index 0031c549cc04e3f478240663d046b00313fa9ab5..e853478df4a42148558e1cad51d6b2fd22939746 100644 |
--- a/Source/wtf/Deque.h |
+++ b/Source/wtf/Deque.h |
@@ -112,7 +112,7 @@ namespace WTF { |
template<typename Predicate> |
iterator findIf(Predicate&); |
- void trace(typename Allocator::Visitor*); |
+ template<typename VisitorDispatcher> void trace(VisitorDispatcher); |
private: |
friend class DequeIteratorBase<T, inlineCapacity, Allocator>; |
@@ -528,7 +528,8 @@ namespace WTF { |
// This is only called if the allocator is a HeapAllocator. It is used when |
// visiting during a tracing GC. |
template<typename T, size_t inlineCapacity, typename Allocator> |
- void Deque<T, inlineCapacity, Allocator>::trace(typename Allocator::Visitor* visitor) |
+ template<typename VisitorDispatcher> |
+ void Deque<T, inlineCapacity, Allocator>::trace(VisitorDispatcher visitor) |
{ |
ASSERT(Allocator::isGarbageCollected); // Garbage collector must be enabled. |
const T* bufferBegin = m_buffer.buffer(); |
@@ -536,13 +537,13 @@ namespace WTF { |
if (ShouldBeTraced<VectorTraits<T> >::value) { |
if (m_start <= m_end) { |
for (const T* bufferEntry = bufferBegin + m_start; bufferEntry != end; bufferEntry++) |
- Allocator::template trace<T, VectorTraits<T> >(visitor, *const_cast<T*>(bufferEntry)); |
+ Allocator::template trace<VisitorDispatcher, T, VectorTraits<T> >(visitor, *const_cast<T*>(bufferEntry)); |
} else { |
for (const T* bufferEntry = bufferBegin; bufferEntry != end; bufferEntry++) |
- Allocator::template trace<T, VectorTraits<T> >(visitor, *const_cast<T*>(bufferEntry)); |
+ Allocator::template trace<VisitorDispatcher, T, VectorTraits<T> >(visitor, *const_cast<T*>(bufferEntry)); |
const T* bufferEnd = m_buffer.buffer() + m_buffer.capacity(); |
for (const T* bufferEntry = bufferBegin + m_start; bufferEntry != bufferEnd; bufferEntry++) |
- Allocator::template trace<T, VectorTraits<T> >(visitor, *const_cast<T*>(bufferEntry)); |
+ Allocator::template trace<VisitorDispatcher, T, VectorTraits<T> >(visitor, *const_cast<T*>(bufferEntry)); |
} |
} |
if (m_buffer.hasOutOfLineBuffer()) |