1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef TRACE_COLLECTIONS_H_
6#define TRACE_COLLECTIONS_H_
7
8#include "heap/stubs.h"
9
10namespace blink {
11
12class HeapObject : public GarbageCollected<HeapObject> {
13public:
14    void trace(Visitor*);
15private:
16    HeapVector<Member<HeapObject> > m_heapVector;
17    Vector<Member<HeapObject>, 0, HeapAllocator> m_wtfVector;
18
19    HeapDeque<Member<HeapObject> > m_heapDeque;
20    Deque<Member<HeapObject>, 0, HeapAllocator> m_wtfDeque;
21
22    HeapHashSet<Member<HeapObject> > m_heapSet;
23    HashSet<Member<HeapObject>, void, HeapAllocator> m_wtfSet;
24
25    HeapListHashSet<Member<HeapObject> > m_heapListSet;
26    ListHashSet<Member<HeapObject>, void, HeapAllocator> m_wtfListSet;
27
28    HeapLinkedHashSet<Member<HeapObject> > m_heapLinkedSet;
29    LinkedHashSet<Member<HeapObject>, void, HeapAllocator> m_wtfLinkedSet;
30
31    HeapHashCountedSet<Member<HeapObject> > m_heapCountedSet;
32    HashCountedSet<Member<HeapObject>, void, HeapAllocator> m_wtfCountedSet;
33
34    HeapHashMap<int, Member<HeapObject> > m_heapMapKey;
35    HeapHashMap<Member<HeapObject>, int > m_heapMapVal;
36    HashMap<int, Member<HeapObject>, void, void, void, HeapAllocator>
37    m_wtfMapKey;
38    HashMap<Member<HeapObject>, int, void, void, void, HeapAllocator>
39    m_wtfMapVal;
40};
41
42}
43
44#endif
45