OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 #define COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, ErrorMessage)
\ | 71 #define COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, ErrorMessage)
\ |
72 do {
\ | 72 do {
\ |
73 typedef typename WTF::RemoveConst<T>::Type NonConstType;
\ | 73 typedef typename WTF::RemoveConst<T>::Type NonConstType;
\ |
74 typedef WTF::IsSubclassOfTemplate<NonConstType, GarbageCollected> Garbag
eCollectedSubclass; \ | 74 typedef WTF::IsSubclassOfTemplate<NonConstType, GarbageCollected> Garbag
eCollectedSubclass; \ |
75 typedef IsGarbageCollectedMixin<NonConstType> GarbageCollectedMixinSubcl
ass; \ | 75 typedef IsGarbageCollectedMixin<NonConstType> GarbageCollectedMixinSubcl
ass; \ |
76 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapHashSet> HeapHashSe
tSubclass; \ | 76 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapHashSet> HeapHashSe
tSubclass; \ |
77 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapLinkedHashSet> Heap
LinkedHashSetSubclass; \ | 77 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapLinkedHashSet> Heap
LinkedHashSetSubclass; \ |
78 typedef WTF::IsSubclassOfTemplate5<NonConstType, HeapHashMap> HeapHashMa
pSubclass; \ | 78 typedef WTF::IsSubclassOfTemplate5<NonConstType, HeapHashMap> HeapHashMa
pSubclass; \ |
79 typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapVector>
HeapVectorSubclass; \ | 79 typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapVector>
HeapVectorSubclass; \ |
80 typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapDeque> H
eapDequeSubclass; \ | 80 typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapDeque> H
eapDequeSubclass; \ |
| 81 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapHashCountedSet> Hea
pHashCountedSetSubclass; \ |
81 typedef WTF::IsSubclassOfTemplate<NonConstType, HeapTerminatedArray> Hea
pTerminatedArraySubclass; \ | 82 typedef WTF::IsSubclassOfTemplate<NonConstType, HeapTerminatedArray> Hea
pTerminatedArraySubclass; \ |
82 COMPILE_ASSERT(GarbageCollectedSubclass::value ||
\ | 83 COMPILE_ASSERT(GarbageCollectedSubclass::value ||
\ |
83 GarbageCollectedMixinSubclass::value ||
\ | 84 GarbageCollectedMixinSubclass::value ||
\ |
84 HeapHashSetSubclass::value ||
\ | 85 HeapHashSetSubclass::value ||
\ |
85 HeapLinkedHashSetSubclass::value ||
\ | 86 HeapLinkedHashSetSubclass::value ||
\ |
86 HeapHashMapSubclass::value ||
\ | 87 HeapHashMapSubclass::value ||
\ |
87 HeapVectorSubclass::value ||
\ | 88 HeapVectorSubclass::value ||
\ |
88 HeapDequeSubclass::value ||
\ | 89 HeapDequeSubclass::value ||
\ |
| 90 HeapHashCountedSetSubclass::value ||
\ |
89 HeapTerminatedArraySubclass::value,
\ | 91 HeapTerminatedArraySubclass::value,
\ |
90 ErrorMessage);
\ | 92 ErrorMessage);
\ |
91 } while (0) | 93 } while (0) |
92 | 94 |
93 template<typename T> class Member; | 95 template<typename T> class Member; |
94 | 96 |
95 class PersistentNode { | 97 class PersistentNode { |
96 public: | 98 public: |
97 explicit PersistentNode(TraceCallback trace) | 99 explicit PersistentNode(TraceCallback trace) |
98 : m_trace(trace) | 100 : m_trace(trace) |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 typename HashArg = typename DefaultHash<ValueArg>::Hash, | 435 typename HashArg = typename DefaultHash<ValueArg>::Hash, |
434 typename TraitsArg = HashTraits<ValueArg> > | 436 typename TraitsArg = HashTraits<ValueArg> > |
435 class PersistentHeapHashSet : public PersistentHeapCollectionBase<HeapHashSet<Va
lueArg, HashArg, TraitsArg> > { }; | 437 class PersistentHeapHashSet : public PersistentHeapCollectionBase<HeapHashSet<Va
lueArg, HashArg, TraitsArg> > { }; |
436 | 438 |
437 template< | 439 template< |
438 typename ValueArg, | 440 typename ValueArg, |
439 typename HashArg = typename DefaultHash<ValueArg>::Hash, | 441 typename HashArg = typename DefaultHash<ValueArg>::Hash, |
440 typename TraitsArg = HashTraits<ValueArg> > | 442 typename TraitsArg = HashTraits<ValueArg> > |
441 class PersistentHeapLinkedHashSet : public PersistentHeapCollectionBase<HeapLink
edHashSet<ValueArg, HashArg, TraitsArg> > { }; | 443 class PersistentHeapLinkedHashSet : public PersistentHeapCollectionBase<HeapLink
edHashSet<ValueArg, HashArg, TraitsArg> > { }; |
442 | 444 |
| 445 template<typename T, typename U, typename V> |
| 446 class PersistentHeapHashCountedSet : public PersistentHeapCollectionBase<HeapHas
hCountedSet<T, U, V> > { }; |
| 447 |
443 template<typename T, size_t inlineCapacity = 0> | 448 template<typename T, size_t inlineCapacity = 0> |
444 class PersistentHeapVector : public PersistentHeapCollectionBase<HeapVector<T, i
nlineCapacity> > { | 449 class PersistentHeapVector : public PersistentHeapCollectionBase<HeapVector<T, i
nlineCapacity> > { |
445 public: | 450 public: |
446 PersistentHeapVector() { } | 451 PersistentHeapVector() { } |
447 | 452 |
448 template<size_t otherCapacity> | 453 template<size_t otherCapacity> |
449 PersistentHeapVector(const HeapVector<T, otherCapacity>& other) | 454 PersistentHeapVector(const HeapVector<T, otherCapacity>& other) |
450 : PersistentHeapCollectionBase<HeapVector<T, inlineCapacity> >(other) | 455 : PersistentHeapCollectionBase<HeapVector<T, inlineCapacity> >(other) |
451 { | 456 { |
452 } | 457 } |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
760 #define WillBeHeapHashMap WebCore::HeapHashMap | 765 #define WillBeHeapHashMap WebCore::HeapHashMap |
761 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap | 766 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap |
762 #define WillBeHeapHashSet WebCore::HeapHashSet | 767 #define WillBeHeapHashSet WebCore::HeapHashSet |
763 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet | 768 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet |
764 #define WillBeHeapLinkedHashSet WebCore::HeapLinkedHashSet | 769 #define WillBeHeapLinkedHashSet WebCore::HeapLinkedHashSet |
765 #define WillBePersistentHeapLinkedHashSet WebCore::PersistentHeapLinkedHashSet | 770 #define WillBePersistentHeapLinkedHashSet WebCore::PersistentHeapLinkedHashSet |
766 #define WillBeHeapVector WebCore::HeapVector | 771 #define WillBeHeapVector WebCore::HeapVector |
767 #define WillBePersistentHeapVector WebCore::PersistentHeapVector | 772 #define WillBePersistentHeapVector WebCore::PersistentHeapVector |
768 #define WillBeHeapDeque WebCore::HeapDeque | 773 #define WillBeHeapDeque WebCore::HeapDeque |
769 #define WillBePersistentHeapDeque WebCore::PersistentHeapDeque | 774 #define WillBePersistentHeapDeque WebCore::PersistentHeapDeque |
| 775 #define WillBeHeapHashCountedSet WebCore::HeapHashCountedSet |
| 776 #define WillBePersistentHeapHashCountedSet WebCore::PersistentHeapHashCountedSet |
770 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin | 777 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin |
771 #define WillBeHeapSupplement WebCore::HeapSupplement | 778 #define WillBeHeapSupplement WebCore::HeapSupplement |
772 #define WillBeHeapSupplementable WebCore::HeapSupplementable | 779 #define WillBeHeapSupplementable WebCore::HeapSupplementable |
773 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray | 780 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray |
774 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder | 781 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder |
775 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack | 782 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack |
776 | 783 |
777 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) | 784 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) |
778 { | 785 { |
779 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate
<T, RefCountedGarbageCollected>::value; | 786 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate
<T, RefCountedGarbageCollected>::value; |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
838 #define WillBeHeapHashMap WTF::HashMap | 845 #define WillBeHeapHashMap WTF::HashMap |
839 #define WillBePersistentHeapHashMap WTF::HashMap | 846 #define WillBePersistentHeapHashMap WTF::HashMap |
840 #define WillBeHeapHashSet WTF::HashSet | 847 #define WillBeHeapHashSet WTF::HashSet |
841 #define WillBePersistentHeapHashSet WTF::HashSet | 848 #define WillBePersistentHeapHashSet WTF::HashSet |
842 #define WillBeHeapLinkedHashSet WTF::LinkedHashSet | 849 #define WillBeHeapLinkedHashSet WTF::LinkedHashSet |
843 #define WillBePersistentLinkedHeapHashSet WTF::LinkedHashSet | 850 #define WillBePersistentLinkedHeapHashSet WTF::LinkedHashSet |
844 #define WillBeHeapVector WTF::Vector | 851 #define WillBeHeapVector WTF::Vector |
845 #define WillBePersistentHeapVector WTF::Vector | 852 #define WillBePersistentHeapVector WTF::Vector |
846 #define WillBeHeapDeque WTF::Deque | 853 #define WillBeHeapDeque WTF::Deque |
847 #define WillBePersistentHeapDeque WTF::Deque | 854 #define WillBePersistentHeapDeque WTF::Deque |
| 855 #define WillBeHeapHeapCountedSet WTF::HeapCountedSet |
| 856 #define WillBePersistentHeapHeapCountedSet WTF::HeapCountedSet |
848 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> | 857 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> |
849 #define WillBeHeapSupplement WebCore::Supplement | 858 #define WillBeHeapSupplement WebCore::Supplement |
850 #define WillBeHeapSupplementable WebCore::Supplementable | 859 #define WillBeHeapSupplementable WebCore::Supplementable |
851 #define WillBeHeapTerminatedArray WTF::TerminatedArray | 860 #define WillBeHeapTerminatedArray WTF::TerminatedArray |
852 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder | 861 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder |
853 #define WillBeHeapLinkedStack WTF::LinkedStack | 862 #define WillBeHeapLinkedStack WTF::LinkedStack |
854 | 863 |
855 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu
rn adoptRef(ptr); } | 864 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu
rn adoptRef(ptr); } |
856 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo
llected(T* ptr) { return adoptRef(ptr); } | 865 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo
llected(T* ptr) { return adoptRef(ptr); } |
857 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { retu
rn adoptPtr(ptr); } | 866 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { retu
rn adoptPtr(ptr); } |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1035 struct NeedsTracing<Vector<T, N> > { | 1044 struct NeedsTracing<Vector<T, N> > { |
1036 static const bool value = false; | 1045 static const bool value = false; |
1037 }; | 1046 }; |
1038 | 1047 |
1039 template<typename T, size_t N> | 1048 template<typename T, size_t N> |
1040 struct NeedsTracing<Deque<T, N> > { | 1049 struct NeedsTracing<Deque<T, N> > { |
1041 static const bool value = false; | 1050 static const bool value = false; |
1042 }; | 1051 }; |
1043 | 1052 |
1044 template<typename T, typename U, typename V> | 1053 template<typename T, typename U, typename V> |
| 1054 struct NeedsTracing<HashCountedSet<T, U, V> > { |
| 1055 static const bool value = false; |
| 1056 }; |
| 1057 |
| 1058 template<typename T, typename U, typename V> |
1045 struct NeedsTracing<HashSet<T, U, V> > { | 1059 struct NeedsTracing<HashSet<T, U, V> > { |
1046 static const bool value = false; | 1060 static const bool value = false; |
1047 }; | 1061 }; |
1048 | 1062 |
1049 template<typename T, size_t U, typename V> | 1063 template<typename T, size_t U, typename V> |
1050 struct NeedsTracing<ListHashSet<T, U, V> > { | 1064 struct NeedsTracing<ListHashSet<T, U, V> > { |
1051 static const bool value = false; | 1065 static const bool value = false; |
1052 }; | 1066 }; |
1053 | 1067 |
1054 template<typename T, typename U, typename V> | 1068 template<typename T, typename U, typename V> |
1055 struct NeedsTracing<LinkedHashSet<T, U, V> > { | 1069 struct NeedsTracing<LinkedHashSet<T, U, V> > { |
1056 static const bool value = false; | 1070 static const bool value = false; |
1057 }; | 1071 }; |
1058 | 1072 |
1059 template<typename T, typename U, typename V, typename W, typename X> | 1073 template<typename T, typename U, typename V, typename W, typename X> |
1060 struct NeedsTracing<HashMap<T, U, V, W, X> > { | 1074 struct NeedsTracing<HashMap<T, U, V, W, X> > { |
1061 static const bool value = false; | 1075 static const bool value = false; |
1062 }; | 1076 }; |
1063 | 1077 |
1064 } // namespace WTF | 1078 } // namespace WTF |
1065 | 1079 |
1066 #endif | 1080 #endif |
OLD | NEW |