| 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 namespace WebCore { | 43 namespace WebCore { |
| 44 | 44 |
| 45 template<typename T> class HeapTerminatedArray; | 45 template<typename T> class HeapTerminatedArray; |
| 46 | 46 |
| 47 #define COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, ErrorMessage)
\ | 47 #define COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, ErrorMessage)
\ |
| 48 do {
\ | 48 do {
\ |
| 49 typedef typename WTF::RemoveConst<T>::Type NonConstType;
\ | 49 typedef typename WTF::RemoveConst<T>::Type NonConstType;
\ |
| 50 typedef WTF::IsSubclassOfTemplate<NonConstType, GarbageCollected> Garbag
eCollectedSubclass; \ | 50 typedef WTF::IsSubclassOfTemplate<NonConstType, GarbageCollected> Garbag
eCollectedSubclass; \ |
| 51 typedef WTF::IsSubclass<NonConstType, GarbageCollectedMixin> GarbageColl
ectedMixinSubclass; \ | 51 typedef WTF::IsSubclass<NonConstType, GarbageCollectedMixin> GarbageColl
ectedMixinSubclass; \ |
| 52 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapHashSet> HeapHashSe
tSubclass; \ | 52 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapHashSet> HeapHashSe
tSubclass; \ |
| 53 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapLinkedHashSet> Heap
LinkedHashSetSubclass; \ |
| 53 typedef WTF::IsSubclassOfTemplate5<NonConstType, HeapHashMap> HeapHashMa
pSubclass; \ | 54 typedef WTF::IsSubclassOfTemplate5<NonConstType, HeapHashMap> HeapHashMa
pSubclass; \ |
| 54 typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapVector>
HeapVectorSubclass; \ | 55 typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapVector>
HeapVectorSubclass; \ |
| 55 typedef WTF::IsSubclassOfTemplate<NonConstType, HeapTerminatedArray> Hea
pTerminatedArraySubclass; \ | 56 typedef WTF::IsSubclassOfTemplate<NonConstType, HeapTerminatedArray> Hea
pTerminatedArraySubclass; \ |
| 56 COMPILE_ASSERT(GarbageCollectedSubclass::value ||
\ | 57 COMPILE_ASSERT(GarbageCollectedSubclass::value ||
\ |
| 57 GarbageCollectedMixinSubclass::value ||
\ | 58 GarbageCollectedMixinSubclass::value ||
\ |
| 58 HeapHashSetSubclass::value ||
\ | 59 HeapHashSetSubclass::value ||
\ |
| 60 HeapLinkedHashSetSubclass::value ||
\ |
| 59 HeapHashMapSubclass::value ||
\ | 61 HeapHashMapSubclass::value ||
\ |
| 60 HeapVectorSubclass::value ||
\ | 62 HeapVectorSubclass::value ||
\ |
| 61 HeapTerminatedArraySubclass::value,
\ | 63 HeapTerminatedArraySubclass::value,
\ |
| 62 ErrorMessage);
\ | 64 ErrorMessage);
\ |
| 63 } while (0) | 65 } while (0) |
| 64 | 66 |
| 65 template<typename T> class Member; | 67 template<typename T> class Member; |
| 66 | 68 |
| 67 class PersistentNode { | 69 class PersistentNode { |
| 68 public: | 70 public: |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 typename KeyTraitsArg = HashTraits<KeyArg>, | 403 typename KeyTraitsArg = HashTraits<KeyArg>, |
| 402 typename MappedTraitsArg = HashTraits<MappedArg> > | 404 typename MappedTraitsArg = HashTraits<MappedArg> > |
| 403 class PersistentHeapHashMap : public PersistentHeapCollectionBase<HeapHashMap<Ke
yArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg> > { }; | 405 class PersistentHeapHashMap : public PersistentHeapCollectionBase<HeapHashMap<Ke
yArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg> > { }; |
| 404 | 406 |
| 405 template< | 407 template< |
| 406 typename ValueArg, | 408 typename ValueArg, |
| 407 typename HashArg = typename DefaultHash<ValueArg>::Hash, | 409 typename HashArg = typename DefaultHash<ValueArg>::Hash, |
| 408 typename TraitsArg = HashTraits<ValueArg> > | 410 typename TraitsArg = HashTraits<ValueArg> > |
| 409 class PersistentHeapHashSet : public PersistentHeapCollectionBase<HeapHashSet<Va
lueArg, HashArg, TraitsArg> > { }; | 411 class PersistentHeapHashSet : public PersistentHeapCollectionBase<HeapHashSet<Va
lueArg, HashArg, TraitsArg> > { }; |
| 410 | 412 |
| 413 template< |
| 414 typename ValueArg, |
| 415 typename HashArg = typename DefaultHash<ValueArg>::Hash, |
| 416 typename TraitsArg = HashTraits<ValueArg> > |
| 417 class PersistentHeapLinkedHashSet : public PersistentHeapCollectionBase<HeapLink
edHashSet<ValueArg, HashArg, TraitsArg> > { }; |
| 418 |
| 411 template<typename T, size_t inlineCapacity = 0> | 419 template<typename T, size_t inlineCapacity = 0> |
| 412 class PersistentHeapVector : public PersistentHeapCollectionBase<HeapVector<T, i
nlineCapacity> > { | 420 class PersistentHeapVector : public PersistentHeapCollectionBase<HeapVector<T, i
nlineCapacity> > { |
| 413 public: | 421 public: |
| 414 PersistentHeapVector() { } | 422 PersistentHeapVector() { } |
| 415 | 423 |
| 416 template<size_t otherCapacity> | 424 template<size_t otherCapacity> |
| 417 PersistentHeapVector(const HeapVector<T, otherCapacity>& other) | 425 PersistentHeapVector(const HeapVector<T, otherCapacity>& other) |
| 418 : PersistentHeapCollectionBase<HeapVector<T, inlineCapacity> >(other) | 426 : PersistentHeapCollectionBase<HeapVector<T, inlineCapacity> >(other) |
| 419 { | 427 { |
| 420 } | 428 } |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 529 | 537 |
| 530 void swap(Member<T>& other) { std::swap(m_raw, other.m_raw); } | 538 void swap(Member<T>& other) { std::swap(m_raw, other.m_raw); } |
| 531 | 539 |
| 532 T* get() const { return m_raw; } | 540 T* get() const { return m_raw; } |
| 533 | 541 |
| 534 void clear() { m_raw = 0; } | 542 void clear() { m_raw = 0; } |
| 535 | 543 |
| 536 protected: | 544 protected: |
| 537 T* m_raw; | 545 T* m_raw; |
| 538 | 546 |
| 539 template<bool x, bool y, bool z, typename U, typename V> friend struct Colle
ctionBackingTraceTrait; | 547 template<bool x, bool y, ShouldWeakPointersBeMarkedStrongly z, typename U, t
ypename V> friend struct CollectionBackingTraceTrait; |
| 540 }; | 548 }; |
| 541 | 549 |
| 542 template<typename T> | 550 template<typename T> |
| 543 class TraceTrait<Member<T> > { | 551 class TraceTrait<Member<T> > { |
| 544 public: | 552 public: |
| 545 static void trace(Visitor* visitor, void* self) | 553 static void trace(Visitor* visitor, void* self) |
| 546 { | 554 { |
| 547 TraceTrait<T>::mark(visitor, *static_cast<Member<T>*>(self)); | 555 TraceTrait<T>::mark(visitor, *static_cast<Member<T>*>(self)); |
| 548 } | 556 } |
| 549 }; | 557 }; |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 710 #define OwnPtrWillBeMember WebCore::Member | 718 #define OwnPtrWillBeMember WebCore::Member |
| 711 #define OwnPtrWillBePersistent WebCore::Persistent | 719 #define OwnPtrWillBePersistent WebCore::Persistent |
| 712 #define OwnPtrWillBeRawPtr WTF::RawPtr | 720 #define OwnPtrWillBeRawPtr WTF::RawPtr |
| 713 #define PassOwnPtrWillBeRawPtr WTF::RawPtr | 721 #define PassOwnPtrWillBeRawPtr WTF::RawPtr |
| 714 #define NoBaseWillBeGarbageCollected WebCore::GarbageCollected | 722 #define NoBaseWillBeGarbageCollected WebCore::GarbageCollected |
| 715 #define NoBaseWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized | 723 #define NoBaseWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized |
| 716 #define WillBeHeapHashMap WebCore::HeapHashMap | 724 #define WillBeHeapHashMap WebCore::HeapHashMap |
| 717 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap | 725 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap |
| 718 #define WillBeHeapHashSet WebCore::HeapHashSet | 726 #define WillBeHeapHashSet WebCore::HeapHashSet |
| 719 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet | 727 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet |
| 728 #define WillBeHeapLinkedHashSet WebCore::HeapLinkedHashSet |
| 729 #define WillBePersistentHeapLinkedHashSet WebCore::PersistentHeapLinkedHashSet |
| 720 #define WillBeHeapVector WebCore::HeapVector | 730 #define WillBeHeapVector WebCore::HeapVector |
| 721 #define WillBePersistentHeapVector WebCore::PersistentHeapVector | 731 #define WillBePersistentHeapVector WebCore::PersistentHeapVector |
| 722 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin | 732 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin |
| 723 #define WillBeHeapSupplement WebCore::HeapSupplement | 733 #define WillBeHeapSupplement WebCore::HeapSupplement |
| 724 #define WillBeHeapSupplementable WebCore::HeapSupplementable | 734 #define WillBeHeapSupplementable WebCore::HeapSupplementable |
| 725 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray | 735 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray |
| 726 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder | 736 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder |
| 727 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack | 737 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack |
| 728 | 738 |
| 729 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) | 739 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 780 #define OwnPtrWillBeMember WTF::OwnPtr | 790 #define OwnPtrWillBeMember WTF::OwnPtr |
| 781 #define OwnPtrWillBePersistent WTF::OwnPtr | 791 #define OwnPtrWillBePersistent WTF::OwnPtr |
| 782 #define OwnPtrWillBeRawPtr WTF::OwnPtr | 792 #define OwnPtrWillBeRawPtr WTF::OwnPtr |
| 783 #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr | 793 #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr |
| 784 #define NoBaseWillBeGarbageCollected WebCore::DummyBase | 794 #define NoBaseWillBeGarbageCollected WebCore::DummyBase |
| 785 #define NoBaseWillBeGarbageCollectedFinalized WebCore::DummyBase | 795 #define NoBaseWillBeGarbageCollectedFinalized WebCore::DummyBase |
| 786 #define WillBeHeapHashMap WTF::HashMap | 796 #define WillBeHeapHashMap WTF::HashMap |
| 787 #define WillBePersistentHeapHashMap WTF::HashMap | 797 #define WillBePersistentHeapHashMap WTF::HashMap |
| 788 #define WillBeHeapHashSet WTF::HashSet | 798 #define WillBeHeapHashSet WTF::HashSet |
| 789 #define WillBePersistentHeapHashSet WTF::HashSet | 799 #define WillBePersistentHeapHashSet WTF::HashSet |
| 800 #define WillBeHeapLinkedHashSet WTF::LinkedHashSet |
| 801 #define WillBePersistentLinkedHeapHashSet WTF::LinkedHashSet |
| 790 #define WillBeHeapVector WTF::Vector | 802 #define WillBeHeapVector WTF::Vector |
| 791 #define WillBePersistentHeapVector WTF::Vector | 803 #define WillBePersistentHeapVector WTF::Vector |
| 792 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> | 804 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> |
| 793 #define WillBeHeapSupplement WebCore::Supplement | 805 #define WillBeHeapSupplement WebCore::Supplement |
| 794 #define WillBeHeapSupplementable WebCore::Supplementable | 806 #define WillBeHeapSupplementable WebCore::Supplementable |
| 795 #define WillBeHeapTerminatedArray WTF::TerminatedArray | 807 #define WillBeHeapTerminatedArray WTF::TerminatedArray |
| 796 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder | 808 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder |
| 797 #define WillBeHeapLinkedStack WTF::LinkedStack | 809 #define WillBeHeapLinkedStack WTF::LinkedStack |
| 798 | 810 |
| 799 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu
rn adoptRef(ptr); } | 811 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu
rn adoptRef(ptr); } |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 961 template<typename T, size_t N> | 973 template<typename T, size_t N> |
| 962 struct NeedsTracing<Vector<T, N> > { | 974 struct NeedsTracing<Vector<T, N> > { |
| 963 static const bool value = false; | 975 static const bool value = false; |
| 964 }; | 976 }; |
| 965 | 977 |
| 966 template<typename T, size_t N> | 978 template<typename T, size_t N> |
| 967 struct NeedsTracing<Deque<T, N> > { | 979 struct NeedsTracing<Deque<T, N> > { |
| 968 static const bool value = false; | 980 static const bool value = false; |
| 969 }; | 981 }; |
| 970 | 982 |
| 971 template<typename T> | 983 template<typename T, typename U, typename V> |
| 972 struct NeedsTracing<HashSet<T> > { | 984 struct NeedsTracing<HashSet<T, U, V> > { |
| 973 static const bool value = false; | 985 static const bool value = false; |
| 974 }; | 986 }; |
| 975 | 987 |
| 976 template<typename T> | 988 template<typename T, size_t U, typename V> |
| 977 struct NeedsTracing<ListHashSet<T> > { | 989 struct NeedsTracing<ListHashSet<T, U, V> > { |
| 978 static const bool value = false; | 990 static const bool value = false; |
| 979 }; | 991 }; |
| 980 | 992 |
| 981 template<typename T, typename U> | 993 template<typename T, typename U, typename V> |
| 982 struct NeedsTracing<HashMap<T, U> > { | 994 struct NeedsTracing<LinkedHashSet<T, U, V> > { |
| 983 static const bool value = false; | 995 static const bool value = false; |
| 984 }; | 996 }; |
| 985 | 997 |
| 998 template<typename T, typename U, typename V, typename W, typename X> |
| 999 struct NeedsTracing<HashMap<T, U, V, W, X> > { |
| 1000 static const bool value = false; |
| 1001 }; |
| 1002 |
| 986 } // namespace WTF | 1003 } // namespace WTF |
| 987 | 1004 |
| 988 #endif | 1005 #endif |
| OLD | NEW |