| 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 | 43 |
| 44 namespace WebCore { | 44 namespace WebCore { |
| 45 | 45 |
| 46 template<typename T> class HeapTerminatedArray; | 46 template<typename T> class HeapTerminatedArray; |
| 47 | 47 |
| 48 #define COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, ErrorMessage)
\ | 48 #define COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, ErrorMessage)
\ |
| 49 typedef typename WTF::RemoveConst<T>::Type NonConstType;
\ | 49 typedef typename WTF::RemoveConst<T>::Type NonConstType;
\ |
| 50 typedef WTF::IsSubclassOfTemplate<NonConstType, GarbageCollected> GarbageCol
lectedSubclass; \ | 50 typedef WTF::IsSubclassOfTemplate<NonConstType, GarbageCollected> GarbageCol
lectedSubclass; \ |
| 51 typedef WTF::IsSubclass<NonConstType, GarbageCollectedMixin> GarbageCollecte
dMixinSubclass; \ | 51 typedef WTF::IsSubclass<NonConstType, GarbageCollectedMixin> GarbageCollecte
dMixinSubclass; \ |
| 52 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapHashSet> HeapHashSetSub
class; \ | 52 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapHashSet> HeapHashSetSub
class; \ |
| 53 typedef WTF::IsSubclassOfTemplate3<NonConstType, HeapLinkedHashSet> HeapLink
edHashSetSubclass; \ |
| 53 typedef WTF::IsSubclassOfTemplate5<NonConstType, HeapHashMap> HeapHashMapSub
class; \ | 54 typedef WTF::IsSubclassOfTemplate5<NonConstType, HeapHashMap> HeapHashMapSub
class; \ |
| 54 typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapVector> Heap
VectorSubclass; \ | 55 typedef WTF::IsSubclassOfTemplateTypenameSize<NonConstType, HeapVector> Heap
VectorSubclass; \ |
| 55 typedef WTF::IsSubclassOfTemplate<NonConstType, HeapTerminatedArray> HeapTer
minatedArraySubclass; \ | 56 typedef WTF::IsSubclassOfTemplate<NonConstType, HeapTerminatedArray> HeapTer
minatedArraySubclass; \ |
| 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 | 65 |
| 64 template<typename T> class Member; | 66 template<typename T> class Member; |
| 65 | 67 |
| 66 class PersistentNode { | 68 class PersistentNode { |
| 67 public: | 69 public: |
| 68 explicit PersistentNode(TraceCallback trace) | 70 explicit PersistentNode(TraceCallback trace) |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 typename KeyTraitsArg = HashTraits<KeyArg>, | 391 typename KeyTraitsArg = HashTraits<KeyArg>, |
| 390 typename MappedTraitsArg = HashTraits<MappedArg> > | 392 typename MappedTraitsArg = HashTraits<MappedArg> > |
| 391 class PersistentHeapHashMap : public PersistentHeapCollectionBase<HeapHashMap<Ke
yArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg> > { }; | 393 class PersistentHeapHashMap : public PersistentHeapCollectionBase<HeapHashMap<Ke
yArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg> > { }; |
| 392 | 394 |
| 393 template< | 395 template< |
| 394 typename ValueArg, | 396 typename ValueArg, |
| 395 typename HashArg = typename DefaultHash<ValueArg>::Hash, | 397 typename HashArg = typename DefaultHash<ValueArg>::Hash, |
| 396 typename TraitsArg = HashTraits<ValueArg> > | 398 typename TraitsArg = HashTraits<ValueArg> > |
| 397 class PersistentHeapHashSet : public PersistentHeapCollectionBase<HeapHashSet<Va
lueArg, HashArg, TraitsArg> > { }; | 399 class PersistentHeapHashSet : public PersistentHeapCollectionBase<HeapHashSet<Va
lueArg, HashArg, TraitsArg> > { }; |
| 398 | 400 |
| 401 template< |
| 402 typename ValueArg, |
| 403 typename HashArg = typename DefaultHash<ValueArg>::Hash, |
| 404 typename TraitsArg = HashTraits<ValueArg> > |
| 405 class PersistentHeapLinkedHashSet : public PersistentHeapCollectionBase<HeapLink
edHashSet<ValueArg, HashArg, TraitsArg> > { }; |
| 406 |
| 399 template<typename T, size_t inlineCapacity = 0> | 407 template<typename T, size_t inlineCapacity = 0> |
| 400 class PersistentHeapVector : public PersistentHeapCollectionBase<HeapVector<T, i
nlineCapacity> > { | 408 class PersistentHeapVector : public PersistentHeapCollectionBase<HeapVector<T, i
nlineCapacity> > { |
| 401 public: | 409 public: |
| 402 PersistentHeapVector() { } | 410 PersistentHeapVector() { } |
| 403 | 411 |
| 404 template<size_t otherCapacity> | 412 template<size_t otherCapacity> |
| 405 PersistentHeapVector(const HeapVector<T, otherCapacity>& other) | 413 PersistentHeapVector(const HeapVector<T, otherCapacity>& other) |
| 406 : PersistentHeapCollectionBase<HeapVector<T, inlineCapacity> >(other) | 414 : PersistentHeapCollectionBase<HeapVector<T, inlineCapacity> >(other) |
| 407 { | 415 { |
| 408 } | 416 } |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 bool isHashTableDeletedValue() const { return m_raw == reinterpret_cast<T*>(
-1); } | 449 bool isHashTableDeletedValue() const { return m_raw == reinterpret_cast<T*>(
-1); } |
| 442 | 450 |
| 443 template<typename U> | 451 template<typename U> |
| 444 Member(const Persistent<U>& other) : m_raw(other) { } | 452 Member(const Persistent<U>& other) : m_raw(other) { } |
| 445 | 453 |
| 446 Member(const Member& other) : m_raw(other) { } | 454 Member(const Member& other) : m_raw(other) { } |
| 447 | 455 |
| 448 template<typename U> | 456 template<typename U> |
| 449 Member(const Member<U>& other) : m_raw(other) { } | 457 Member(const Member<U>& other) : m_raw(other) { } |
| 450 | 458 |
| 459 template<typename U> |
| 460 Member(const RawPtr<U>& other) : m_raw(other) { } |
| 461 |
| 451 T* release() | 462 T* release() |
| 452 { | 463 { |
| 453 T* result = m_raw; | 464 T* result = m_raw; |
| 454 m_raw = 0; | 465 m_raw = 0; |
| 455 return result; | 466 return result; |
| 456 } | 467 } |
| 457 | 468 |
| 458 template<typename U> | 469 template<typename U> |
| 459 U* as() const | 470 U* as() const |
| 460 { | 471 { |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, NonGarbageCollectedObjectInWeakMe
mber); | 608 COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, NonGarbageCollectedObjectInWeakMe
mber); |
| 598 } | 609 } |
| 599 | 610 |
| 600 template<typename U> | 611 template<typename U> |
| 601 WeakMember(const Persistent<U>& other) : Member<T>(other) { } | 612 WeakMember(const Persistent<U>& other) : Member<T>(other) { } |
| 602 | 613 |
| 603 template<typename U> | 614 template<typename U> |
| 604 WeakMember(const Member<U>& other) : Member<T>(other) { } | 615 WeakMember(const Member<U>& other) : Member<T>(other) { } |
| 605 | 616 |
| 606 template<typename U> | 617 template<typename U> |
| 618 WeakMember(const RawPtr<U>& other) : Member<T>(other) { } |
| 619 |
| 620 template<typename U> |
| 607 WeakMember& operator=(const Persistent<U>& other) | 621 WeakMember& operator=(const Persistent<U>& other) |
| 608 { | 622 { |
| 609 this->m_raw = other; | 623 this->m_raw = other; |
| 610 return *this; | 624 return *this; |
| 611 } | 625 } |
| 612 | 626 |
| 613 template<typename U> | 627 template<typename U> |
| 614 WeakMember& operator=(const Member<U>& other) | 628 WeakMember& operator=(const Member<U>& other) |
| 615 { | 629 { |
| 616 this->m_raw = other; | 630 this->m_raw = other; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 686 #define OwnPtrWillBeMember WebCore::Member | 700 #define OwnPtrWillBeMember WebCore::Member |
| 687 #define OwnPtrWillBePersistent WebCore::Persistent | 701 #define OwnPtrWillBePersistent WebCore::Persistent |
| 688 #define OwnPtrWillBeRawPtr WTF::RawPtr | 702 #define OwnPtrWillBeRawPtr WTF::RawPtr |
| 689 #define PassOwnPtrWillBeRawPtr WTF::RawPtr | 703 #define PassOwnPtrWillBeRawPtr WTF::RawPtr |
| 690 #define NoBaseWillBeGarbageCollected WebCore::GarbageCollected | 704 #define NoBaseWillBeGarbageCollected WebCore::GarbageCollected |
| 691 #define NoBaseWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized | 705 #define NoBaseWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized |
| 692 #define WillBeHeapHashMap WebCore::HeapHashMap | 706 #define WillBeHeapHashMap WebCore::HeapHashMap |
| 693 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap | 707 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap |
| 694 #define WillBeHeapHashSet WebCore::HeapHashSet | 708 #define WillBeHeapHashSet WebCore::HeapHashSet |
| 695 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet | 709 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet |
| 710 #define WillBeHeapLinkedHashSet WebCore::HeapLinkedHashSet |
| 711 #define WillBePersistentHeapLinkedHashSet WebCore::PersistentHeapLinkedHashSet |
| 696 #define WillBeHeapVector WebCore::HeapVector | 712 #define WillBeHeapVector WebCore::HeapVector |
| 697 #define WillBePersistentHeapVector WebCore::PersistentHeapVector | 713 #define WillBePersistentHeapVector WebCore::PersistentHeapVector |
| 698 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin | 714 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin |
| 699 #define WillBeHeapSupplement WebCore::HeapSupplement | 715 #define WillBeHeapSupplement WebCore::HeapSupplement |
| 700 #define WillBeHeapSupplementable WebCore::HeapSupplementable | 716 #define WillBeHeapSupplementable WebCore::HeapSupplementable |
| 701 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray | 717 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray |
| 702 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder | 718 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder |
| 703 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack | 719 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack |
| 704 | 720 |
| 705 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) | 721 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 #define OwnPtrWillBeMember WTF::OwnPtr | 772 #define OwnPtrWillBeMember WTF::OwnPtr |
| 757 #define OwnPtrWillBePersistent WTF::OwnPtr | 773 #define OwnPtrWillBePersistent WTF::OwnPtr |
| 758 #define OwnPtrWillBeRawPtr WTF::OwnPtr | 774 #define OwnPtrWillBeRawPtr WTF::OwnPtr |
| 759 #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr | 775 #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr |
| 760 #define NoBaseWillBeGarbageCollected WebCore::DummyBase | 776 #define NoBaseWillBeGarbageCollected WebCore::DummyBase |
| 761 #define NoBaseWillBeGarbageCollectedFinalized WebCore::DummyBase | 777 #define NoBaseWillBeGarbageCollectedFinalized WebCore::DummyBase |
| 762 #define WillBeHeapHashMap WTF::HashMap | 778 #define WillBeHeapHashMap WTF::HashMap |
| 763 #define WillBePersistentHeapHashMap WTF::HashMap | 779 #define WillBePersistentHeapHashMap WTF::HashMap |
| 764 #define WillBeHeapHashSet WTF::HashSet | 780 #define WillBeHeapHashSet WTF::HashSet |
| 765 #define WillBePersistentHeapHashSet WTF::HashSet | 781 #define WillBePersistentHeapHashSet WTF::HashSet |
| 782 #define WillBeHeapLinkedHashSet WTF::LinkedHashSet |
| 783 #define WillBePersistentLinkedHeapHashSet WTF::LinkedHashSet |
| 766 #define WillBeHeapVector WTF::Vector | 784 #define WillBeHeapVector WTF::Vector |
| 767 #define WillBePersistentHeapVector WTF::Vector | 785 #define WillBePersistentHeapVector WTF::Vector |
| 768 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> | 786 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> |
| 769 #define WillBeHeapSupplement WebCore::Supplement | 787 #define WillBeHeapSupplement WebCore::Supplement |
| 770 #define WillBeHeapSupplementable WebCore::Supplementable | 788 #define WillBeHeapSupplementable WebCore::Supplementable |
| 771 #define WillBeHeapTerminatedArray WTF::TerminatedArray | 789 #define WillBeHeapTerminatedArray WTF::TerminatedArray |
| 772 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder | 790 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder |
| 773 #define WillBeHeapLinkedStack WTF::LinkedStack | 791 #define WillBeHeapLinkedStack WTF::LinkedStack |
| 774 | 792 |
| 775 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu
rn adoptRef(ptr); } | 793 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... |
| 937 template<typename T, size_t N> | 955 template<typename T, size_t N> |
| 938 struct NeedsTracing<Vector<T, N> > { | 956 struct NeedsTracing<Vector<T, N> > { |
| 939 static const bool value = false; | 957 static const bool value = false; |
| 940 }; | 958 }; |
| 941 | 959 |
| 942 template<typename T, size_t N> | 960 template<typename T, size_t N> |
| 943 struct NeedsTracing<Deque<T, N> > { | 961 struct NeedsTracing<Deque<T, N> > { |
| 944 static const bool value = false; | 962 static const bool value = false; |
| 945 }; | 963 }; |
| 946 | 964 |
| 947 template<typename T> | 965 template<typename T, typename U, typename V> |
| 948 struct NeedsTracing<HashSet<T> > { | 966 struct NeedsTracing<HashSet<T, U, V> > { |
| 949 static const bool value = false; | 967 static const bool value = false; |
| 950 }; | 968 }; |
| 951 | 969 |
| 952 template<typename T> | 970 template<typename T, size_t U, typename V> |
| 953 struct NeedsTracing<ListHashSet<T> > { | 971 struct NeedsTracing<ListHashSet<T, U, V> > { |
| 954 static const bool value = false; | 972 static const bool value = false; |
| 955 }; | 973 }; |
| 956 | 974 |
| 957 template<typename T, typename U> | 975 template<typename T, typename U, typename V> |
| 958 struct NeedsTracing<HashMap<T, U> > { | 976 struct NeedsTracing<LinkedHashSet<T, U, V> > { |
| 959 static const bool value = false; | 977 static const bool value = false; |
| 960 }; | 978 }; |
| 961 | 979 |
| 980 template<typename T, typename U, typename V, typename W, typename X> |
| 981 struct NeedsTracing<HashMap<T, U, V, W, X> > { |
| 982 static const bool value = false; |
| 983 }; |
| 984 |
| 962 } // namespace WTF | 985 } // namespace WTF |
| 963 | 986 |
| 964 #endif | 987 #endif |
| OLD | NEW |