Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(186)

Side by Side Diff: Source/platform/heap/Handle.h

Issue 400543004: Rename WebCore namespace to blink in Platform (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/platform/graphics/test/MockImageDecoder.h ('k') | Source/platform/heap/Heap.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 23 matching lines...) Expand all
34 #include "platform/heap/Heap.h" 34 #include "platform/heap/Heap.h"
35 #include "platform/heap/ThreadState.h" 35 #include "platform/heap/ThreadState.h"
36 #include "platform/heap/Visitor.h" 36 #include "platform/heap/Visitor.h"
37 #include "wtf/Functional.h" 37 #include "wtf/Functional.h"
38 #include "wtf/HashFunctions.h" 38 #include "wtf/HashFunctions.h"
39 #include "wtf/Locker.h" 39 #include "wtf/Locker.h"
40 #include "wtf/RawPtr.h" 40 #include "wtf/RawPtr.h"
41 #include "wtf/RefCounted.h" 41 #include "wtf/RefCounted.h"
42 #include "wtf/TypeTraits.h" 42 #include "wtf/TypeTraits.h"
43 43
44 namespace WebCore { 44 namespace blink {
45 45
46 template<typename T> class HeapTerminatedArray; 46 template<typename T> class HeapTerminatedArray;
47 47
48 // Template to determine if a class is a GarbageCollectedMixin by checking if it 48 // Template to determine if a class is a GarbageCollectedMixin by checking if it
49 // has adjustAndMark and isAlive. We can't check directly if the class is a 49 // has adjustAndMark and isAlive. We can't check directly if the class is a
50 // GarbageCollectedMixin because casting to it is potentially ambiguous. 50 // GarbageCollectedMixin because casting to it is potentially ambiguous.
51 template<typename T> 51 template<typename T>
52 struct IsGarbageCollectedMixin { 52 struct IsGarbageCollectedMixin {
53 typedef char TrueType; 53 typedef char TrueType;
54 struct FalseType { 54 struct FalseType {
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 template<typename T, typename U> inline bool operator!=(const Persistent<T>& a, const Persistent<U>& b) { return a.get() != b.get(); } 783 template<typename T, typename U> inline bool operator!=(const Persistent<T>& a, const Persistent<U>& b) { return a.get() != b.get(); }
784 784
785 // CPP-defined type names for the transition period where we want to 785 // CPP-defined type names for the transition period where we want to
786 // support both reference counting and garbage collection based on a 786 // support both reference counting and garbage collection based on a
787 // compile-time flag. 787 // compile-time flag.
788 // 788 //
789 // C++11 template aliases were initially used (with clang only, not 789 // C++11 template aliases were initially used (with clang only, not
790 // with GCC nor MSVC.) However, supporting both CPP defines and 790 // with GCC nor MSVC.) However, supporting both CPP defines and
791 // template aliases is problematic from outside a WebCore namespace 791 // template aliases is problematic from outside a WebCore namespace
792 // when Oilpan is disabled: e.g., 792 // when Oilpan is disabled: e.g.,
793 // WebCore::RefCountedWillBeGarbageCollected as a template alias would 793 // blink::RefCountedWillBeGarbageCollected as a template alias would
794 // uniquely resolve from within any namespace, but if it is backed by 794 // uniquely resolve from within any namespace, but if it is backed by
795 // a CPP #define, it would expand to WebCore::RefCounted, and not the 795 // a CPP #define, it would expand to blink::RefCounted, and not the
796 // required WTF::RefCounted. 796 // required WTF::RefCounted.
797 // 797 //
798 // Having the CPP expansion instead be fully namespace qualified, and the 798 // Having the CPP expansion instead be fully namespace qualified, and the
799 // transition type be unqualified, would dually not work for template 799 // transition type be unqualified, would dually not work for template
800 // aliases. So, slightly unfortunately, fall back/down to the lowest 800 // aliases. So, slightly unfortunately, fall back/down to the lowest
801 // commmon denominator of using CPP macros only. 801 // commmon denominator of using CPP macros only.
802 #if ENABLE(OILPAN) 802 #if ENABLE(OILPAN)
803 #define PassRefPtrWillBeRawPtr WTF::RawPtr 803 #define PassRefPtrWillBeRawPtr WTF::RawPtr
804 #define RefCountedWillBeGarbageCollected WebCore::GarbageCollected 804 #define RefCountedWillBeGarbageCollected blink::GarbageCollected
805 #define RefCountedWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinal ized 805 #define RefCountedWillBeGarbageCollectedFinalized blink::GarbageCollectedFinaliz ed
806 #define RefCountedWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCol lected 806 #define RefCountedWillBeRefCountedGarbageCollected blink::RefCountedGarbageColle cted
807 #define RefCountedGarbageCollectedWillBeGarbageCollectedFinalized WebCore::Garba geCollectedFinalized 807 #define RefCountedGarbageCollectedWillBeGarbageCollectedFinalized blink::Garbage CollectedFinalized
808 #define ThreadSafeRefCountedWillBeGarbageCollected WebCore::GarbageCollected 808 #define ThreadSafeRefCountedWillBeGarbageCollected blink::GarbageCollected
809 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WebCore::GarbageColl ectedFinalized 809 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized blink::GarbageCollec tedFinalized
810 #define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WebCore:: ThreadSafeRefCountedGarbageCollected 810 #define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected blink::Th readSafeRefCountedGarbageCollected
811 #define PersistentWillBeMember WebCore::Member 811 #define PersistentWillBeMember blink::Member
812 #define RefPtrWillBePersistent WebCore::Persistent 812 #define RefPtrWillBePersistent blink::Persistent
813 #define RefPtrWillBeRawPtr WTF::RawPtr 813 #define RefPtrWillBeRawPtr WTF::RawPtr
814 #define RefPtrWillBeMember WebCore::Member 814 #define RefPtrWillBeMember blink::Member
815 #define RefPtrWillBeWeakMember WebCore::WeakMember 815 #define RefPtrWillBeWeakMember blink::WeakMember
816 #define RefPtrWillBeCrossThreadPersistent WebCore::CrossThreadPersistent 816 #define RefPtrWillBeCrossThreadPersistent blink::CrossThreadPersistent
817 #define RawPtrWillBeMember WebCore::Member 817 #define RawPtrWillBeMember blink::Member
818 #define RawPtrWillBeWeakMember WebCore::WeakMember 818 #define RawPtrWillBeWeakMember blink::WeakMember
819 #define OwnPtrWillBeMember WebCore::Member 819 #define OwnPtrWillBeMember blink::Member
820 #define OwnPtrWillBePersistent WebCore::Persistent 820 #define OwnPtrWillBePersistent blink::Persistent
821 #define OwnPtrWillBeRawPtr WTF::RawPtr 821 #define OwnPtrWillBeRawPtr WTF::RawPtr
822 #define PassOwnPtrWillBeRawPtr WTF::RawPtr 822 #define PassOwnPtrWillBeRawPtr WTF::RawPtr
823 #define WeakPtrWillBeMember WebCore::Member 823 #define WeakPtrWillBeMember blink::Member
824 #define WeakPtrWillBeRawPtr WTF::RawPtr 824 #define WeakPtrWillBeRawPtr WTF::RawPtr
825 #define WeakPtrWillBeMember WebCore::Member 825 #define WeakPtrWillBeMember blink::Member
826 #define WeakPtrWillBeWeakMember WebCore::WeakMember 826 #define WeakPtrWillBeWeakMember blink::WeakMember
827 #define NoBaseWillBeGarbageCollected WebCore::GarbageCollected 827 #define NoBaseWillBeGarbageCollected blink::GarbageCollected
828 #define NoBaseWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized 828 #define NoBaseWillBeGarbageCollectedFinalized blink::GarbageCollectedFinalized
829 #define NoBaseWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCollect ed 829 #define NoBaseWillBeRefCountedGarbageCollected blink::RefCountedGarbageCollected
830 #define WillBeHeapHashMap WebCore::HeapHashMap 830 #define WillBeHeapHashMap blink::HeapHashMap
831 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap 831 #define WillBePersistentHeapHashMap blink::PersistentHeapHashMap
832 #define WillBeHeapHashSet WebCore::HeapHashSet 832 #define WillBeHeapHashSet blink::HeapHashSet
833 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet 833 #define WillBePersistentHeapHashSet blink::PersistentHeapHashSet
834 #define WillBeHeapLinkedHashSet WebCore::HeapLinkedHashSet 834 #define WillBeHeapLinkedHashSet blink::HeapLinkedHashSet
835 #define WillBePersistentHeapLinkedHashSet WebCore::PersistentHeapLinkedHashSet 835 #define WillBePersistentHeapLinkedHashSet blink::PersistentHeapLinkedHashSet
836 #define WillBeHeapListHashSet WebCore::HeapListHashSet 836 #define WillBeHeapListHashSet blink::HeapListHashSet
837 #define WillBePersistentHeapListHashSet WebCore::PersistentHeapListHashSet 837 #define WillBePersistentHeapListHashSet blink::PersistentHeapListHashSet
838 #define WillBeHeapVector WebCore::HeapVector 838 #define WillBeHeapVector blink::HeapVector
839 #define WillBePersistentHeapVector WebCore::PersistentHeapVector 839 #define WillBePersistentHeapVector blink::PersistentHeapVector
840 #define WillBeHeapDeque WebCore::HeapDeque 840 #define WillBeHeapDeque blink::HeapDeque
841 #define WillBePersistentHeapDeque WebCore::PersistentHeapDeque 841 #define WillBePersistentHeapDeque blink::PersistentHeapDeque
842 #define WillBeHeapHashCountedSet WebCore::HeapHashCountedSet 842 #define WillBeHeapHashCountedSet blink::HeapHashCountedSet
843 #define WillBePersistentHeapHashCountedSet WebCore::PersistentHeapHashCountedSet 843 #define WillBePersistentHeapHashCountedSet blink::PersistentHeapHashCountedSet
844 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin 844 #define WillBeGarbageCollectedMixin blink::GarbageCollectedMixin
845 #define WillBeHeapSupplement WebCore::HeapSupplement 845 #define WillBeHeapSupplement blink::HeapSupplement
846 #define WillBeHeapSupplementable WebCore::HeapSupplementable 846 #define WillBeHeapSupplementable blink::HeapSupplementable
847 #define WillBePersistentHeapSupplementable WebCore::PersistentHeapSupplementable 847 #define WillBePersistentHeapSupplementable blink::PersistentHeapSupplementable
848 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray 848 #define WillBeHeapTerminatedArray blink::HeapTerminatedArray
849 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder 849 #define WillBeHeapTerminatedArrayBuilder blink::HeapTerminatedArrayBuilder
850 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack 850 #define WillBeHeapLinkedStack blink::HeapLinkedStack
851 #define PersistentHeapHashSetWillBeHeapHashSet WebCore::HeapHashSet 851 #define PersistentHeapHashSetWillBeHeapHashSet blink::HeapHashSet
852 #define PersistentHeapDequeWillBeHeapDeque WebCore::HeapDeque 852 #define PersistentHeapDequeWillBeHeapDeque blink::HeapDeque
853 853
854 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) 854 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr)
855 { 855 {
856 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate <typename WTF::RemoveConst<T>::Type, RefCountedGarbageCollected>::value; 856 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate <typename WTF::RemoveConst<T>::Type, RefCountedGarbageCollected>::value;
857 static const bool notRefCounted = !WTF::IsSubclassOfTemplate<typename WTF::R emoveConst<T>::Type, RefCounted>::value; 857 static const bool notRefCounted = !WTF::IsSubclassOfTemplate<typename WTF::R emoveConst<T>::Type, RefCounted>::value;
858 COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCou ntedGarbageCollected); 858 COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCou ntedGarbageCollected);
859 COMPILE_ASSERT(notRefCounted, youMustAdopt); 859 COMPILE_ASSERT(notRefCounted, youMustAdopt);
860 return PassRefPtrWillBeRawPtr<T>(ptr); 860 return PassRefPtrWillBeRawPtr<T>(ptr);
861 } 861 }
862 862
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 }; 917 };
918 918
919 // Export this instance to support WillBeGarbageCollectedMixin 919 // Export this instance to support WillBeGarbageCollectedMixin
920 // uses by code residing in non-webcore components. 920 // uses by code residing in non-webcore components.
921 template class PLATFORM_EXPORT DummyBase<void>; 921 template class PLATFORM_EXPORT DummyBase<void>;
922 922
923 #define PassRefPtrWillBeRawPtr WTF::PassRefPtr 923 #define PassRefPtrWillBeRawPtr WTF::PassRefPtr
924 #define RefCountedWillBeGarbageCollected WTF::RefCounted 924 #define RefCountedWillBeGarbageCollected WTF::RefCounted
925 #define RefCountedWillBeGarbageCollectedFinalized WTF::RefCounted 925 #define RefCountedWillBeGarbageCollectedFinalized WTF::RefCounted
926 #define RefCountedWillBeRefCountedGarbageCollected WTF::RefCounted 926 #define RefCountedWillBeRefCountedGarbageCollected WTF::RefCounted
927 #define RefCountedGarbageCollectedWillBeGarbageCollectedFinalized WebCore::RefCo untedGarbageCollected 927 #define RefCountedGarbageCollectedWillBeGarbageCollectedFinalized blink::RefCoun tedGarbageCollected
928 #define ThreadSafeRefCountedWillBeGarbageCollected WTF::ThreadSafeRefCounted 928 #define ThreadSafeRefCountedWillBeGarbageCollected WTF::ThreadSafeRefCounted
929 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WTF::ThreadSafeRefCo unted 929 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WTF::ThreadSafeRefCo unted
930 #define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WTF::Thre adSafeRefCounted 930 #define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WTF::Thre adSafeRefCounted
931 #define PersistentWillBeMember WebCore::Persistent 931 #define PersistentWillBeMember blink::Persistent
932 #define RefPtrWillBePersistent WTF::RefPtr 932 #define RefPtrWillBePersistent WTF::RefPtr
933 #define RefPtrWillBeRawPtr WTF::RefPtr 933 #define RefPtrWillBeRawPtr WTF::RefPtr
934 #define RefPtrWillBeMember WTF::RefPtr 934 #define RefPtrWillBeMember WTF::RefPtr
935 #define RefPtrWillBeWeakMember WTF::RefPtr 935 #define RefPtrWillBeWeakMember WTF::RefPtr
936 #define RefPtrWillBeCrossThreadPersistent WTF::RefPtr 936 #define RefPtrWillBeCrossThreadPersistent WTF::RefPtr
937 #define RawPtrWillBeMember WTF::RawPtr 937 #define RawPtrWillBeMember WTF::RawPtr
938 #define RawPtrWillBeWeakMember WTF::RawPtr 938 #define RawPtrWillBeWeakMember WTF::RawPtr
939 #define OwnPtrWillBeMember WTF::OwnPtr 939 #define OwnPtrWillBeMember WTF::OwnPtr
940 #define OwnPtrWillBePersistent WTF::OwnPtr 940 #define OwnPtrWillBePersistent WTF::OwnPtr
941 #define OwnPtrWillBeRawPtr WTF::OwnPtr 941 #define OwnPtrWillBeRawPtr WTF::OwnPtr
942 #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr 942 #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr
943 #define WeakPtrWillBeMember WTF::WeakPtr 943 #define WeakPtrWillBeMember WTF::WeakPtr
944 #define WeakPtrWillBeRawPtr WTF::WeakPtr 944 #define WeakPtrWillBeRawPtr WTF::WeakPtr
945 #define WeakPtrWillBeMember WTF::WeakPtr 945 #define WeakPtrWillBeMember WTF::WeakPtr
946 #define WeakPtrWillBeWeakMember WTF::WeakPtr 946 #define WeakPtrWillBeWeakMember WTF::WeakPtr
947 #define NoBaseWillBeGarbageCollected WebCore::DummyBase 947 #define NoBaseWillBeGarbageCollected blink::DummyBase
948 #define NoBaseWillBeGarbageCollectedFinalized WebCore::DummyBase 948 #define NoBaseWillBeGarbageCollectedFinalized blink::DummyBase
949 #define NoBaseWillBeRefCountedGarbageCollected WebCore::DummyBase 949 #define NoBaseWillBeRefCountedGarbageCollected blink::DummyBase
950 #define WillBeHeapHashMap WTF::HashMap 950 #define WillBeHeapHashMap WTF::HashMap
951 #define WillBePersistentHeapHashMap WTF::HashMap 951 #define WillBePersistentHeapHashMap WTF::HashMap
952 #define WillBeHeapHashSet WTF::HashSet 952 #define WillBeHeapHashSet WTF::HashSet
953 #define WillBePersistentHeapHashSet WTF::HashSet 953 #define WillBePersistentHeapHashSet WTF::HashSet
954 #define WillBeHeapLinkedHashSet WTF::LinkedHashSet 954 #define WillBeHeapLinkedHashSet WTF::LinkedHashSet
955 #define WillBePersistentLinkedHeapHashSet WTF::LinkedHashSet 955 #define WillBePersistentLinkedHeapHashSet WTF::LinkedHashSet
956 #define WillBeHeapListHashSet WTF::ListHashSet 956 #define WillBeHeapListHashSet WTF::ListHashSet
957 #define WillBePersistentListHeapHashSet WTF::ListHashSet 957 #define WillBePersistentListHeapHashSet WTF::ListHashSet
958 #define WillBeHeapVector WTF::Vector 958 #define WillBeHeapVector WTF::Vector
959 #define WillBePersistentHeapVector WTF::Vector 959 #define WillBePersistentHeapVector WTF::Vector
960 #define WillBeHeapDeque WTF::Deque 960 #define WillBeHeapDeque WTF::Deque
961 #define WillBePersistentHeapDeque WTF::Deque 961 #define WillBePersistentHeapDeque WTF::Deque
962 #define WillBeHeapHashCountedSet WTF::HashCountedSet 962 #define WillBeHeapHashCountedSet WTF::HashCountedSet
963 #define WillBePersistentHeapHashCountedSet WTF::HashCountedSet 963 #define WillBePersistentHeapHashCountedSet WTF::HashCountedSet
964 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> 964 #define WillBeGarbageCollectedMixin blink::DummyBase<void>
965 #define WillBeHeapSupplement WebCore::Supplement 965 #define WillBeHeapSupplement blink::Supplement
966 #define WillBeHeapSupplementable WebCore::Supplementable 966 #define WillBeHeapSupplementable blink::Supplementable
967 #define WillBePersistentHeapSupplementable WebCore::Supplementable 967 #define WillBePersistentHeapSupplementable blink::Supplementable
968 #define WillBeHeapTerminatedArray WTF::TerminatedArray 968 #define WillBeHeapTerminatedArray WTF::TerminatedArray
969 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder 969 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder
970 #define WillBeHeapLinkedStack WTF::LinkedStack 970 #define WillBeHeapLinkedStack WTF::LinkedStack
971 #define PersistentHeapHashSetWillBeHeapHashSet WebCore::PersistentHeapHashSet 971 #define PersistentHeapHashSetWillBeHeapHashSet blink::PersistentHeapHashSet
972 #define PersistentHeapDequeWillBeHeapDeque WebCore::PersistentHeapDeque 972 #define PersistentHeapDequeWillBeHeapDeque blink::PersistentHeapDeque
973 973
974 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu rn adoptRef(ptr); } 974 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu rn adoptRef(ptr); }
975 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo llected(T* ptr) { return adoptRef(ptr); } 975 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo llected(T* ptr) { return adoptRef(ptr); }
976 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeThreadSafeRefCounte dGarbageCollected(T* ptr) { return adoptRef(ptr); } 976 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeThreadSafeRefCounte dGarbageCollected(T* ptr) { return adoptRef(ptr); }
977 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { retu rn adoptPtr(ptr); } 977 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { retu rn adoptPtr(ptr); }
978 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeRefCountedGarbageCo llected(T* ptr) { return adoptPtr(ptr); } 978 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeRefCountedGarbageCo llected(T* ptr) { return adoptPtr(ptr); }
979 979
980 template<typename T> T* adoptRefCountedGarbageCollectedWillBeNoop(T* ptr) 980 template<typename T> T* adoptRefCountedGarbageCollectedWillBeNoop(T* ptr)
981 { 981 {
982 static const bool isRefCountedGarbageCollected = WTF::IsSubclassOfTemplate<t ypename WTF::RemoveConst<T>::Type, RefCountedGarbageCollected>::value; 982 static const bool isRefCountedGarbageCollected = WTF::IsSubclassOfTemplate<t ypename WTF::RemoveConst<T>::Type, RefCountedGarbageCollected>::value;
(...skipping 13 matching lines...) Expand all
996 private: 996 private:
997 997
998 #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ 998 #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \
999 type::~type() { } 999 type::~type() { }
1000 1000
1001 #define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \ 1001 #define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \
1002 DEFINE_STATIC_REF(type, name, arguments) 1002 DEFINE_STATIC_REF(type, name, arguments)
1003 1003
1004 #endif // ENABLE(OILPAN) 1004 #endif // ENABLE(OILPAN)
1005 1005
1006 } // namespace WebCore 1006 } // namespace blink
1007 1007
1008 namespace WTF { 1008 namespace WTF {
1009 1009
1010 template <typename T> struct VectorTraits<WebCore::Member<T> > : VectorTraitsBas e<WebCore::Member<T> > { 1010 template <typename T> struct VectorTraits<blink::Member<T> > : VectorTraitsBase< blink::Member<T> > {
1011 static const bool needsDestruction = false; 1011 static const bool needsDestruction = false;
1012 static const bool canInitializeWithMemset = true; 1012 static const bool canInitializeWithMemset = true;
1013 static const bool canMoveWithMemcpy = true; 1013 static const bool canMoveWithMemcpy = true;
1014 }; 1014 };
1015 1015
1016 template <typename T> struct VectorTraits<WebCore::WeakMember<T> > : VectorTrait sBase<WebCore::WeakMember<T> > { 1016 template <typename T> struct VectorTraits<blink::WeakMember<T> > : VectorTraitsB ase<blink::WeakMember<T> > {
1017 static const bool needsDestruction = false; 1017 static const bool needsDestruction = false;
1018 static const bool canInitializeWithMemset = true; 1018 static const bool canInitializeWithMemset = true;
1019 static const bool canMoveWithMemcpy = true; 1019 static const bool canMoveWithMemcpy = true;
1020 }; 1020 };
1021 1021
1022 template <typename T> struct VectorTraits<WebCore::HeapVector<T, 0> > : VectorTr aitsBase<WebCore::HeapVector<T, 0> > { 1022 template <typename T> struct VectorTraits<blink::HeapVector<T, 0> > : VectorTrai tsBase<blink::HeapVector<T, 0> > {
1023 static const bool needsDestruction = false; 1023 static const bool needsDestruction = false;
1024 static const bool canInitializeWithMemset = true; 1024 static const bool canInitializeWithMemset = true;
1025 static const bool canMoveWithMemcpy = true; 1025 static const bool canMoveWithMemcpy = true;
1026 }; 1026 };
1027 1027
1028 template <typename T> struct VectorTraits<WebCore::HeapDeque<T, 0> > : VectorTra itsBase<WebCore::HeapDeque<T, 0> > { 1028 template <typename T> struct VectorTraits<blink::HeapDeque<T, 0> > : VectorTrait sBase<blink::HeapDeque<T, 0> > {
1029 static const bool needsDestruction = false; 1029 static const bool needsDestruction = false;
1030 static const bool canInitializeWithMemset = true; 1030 static const bool canInitializeWithMemset = true;
1031 static const bool canMoveWithMemcpy = true; 1031 static const bool canMoveWithMemcpy = true;
1032 }; 1032 };
1033 1033
1034 template <typename T, size_t inlineCapacity> struct VectorTraits<WebCore::HeapVe ctor<T, inlineCapacity> > : VectorTraitsBase<WebCore::HeapVector<T, inlineCapaci ty> > { 1034 template <typename T, size_t inlineCapacity> struct VectorTraits<blink::HeapVect or<T, inlineCapacity> > : VectorTraitsBase<blink::HeapVector<T, inlineCapacity> > {
1035 static const bool needsDestruction = VectorTraits<T>::needsDestruction; 1035 static const bool needsDestruction = VectorTraits<T>::needsDestruction;
1036 static const bool canInitializeWithMemset = VectorTraits<T>::canInitializeWi thMemset; 1036 static const bool canInitializeWithMemset = VectorTraits<T>::canInitializeWi thMemset;
1037 static const bool canMoveWithMemcpy = VectorTraits<T>::canMoveWithMemcpy; 1037 static const bool canMoveWithMemcpy = VectorTraits<T>::canMoveWithMemcpy;
1038 }; 1038 };
1039 1039
1040 template <typename T, size_t inlineCapacity> struct VectorTraits<WebCore::HeapDe que<T, inlineCapacity> > : VectorTraitsBase<WebCore::HeapDeque<T, inlineCapacity > > { 1040 template <typename T, size_t inlineCapacity> struct VectorTraits<blink::HeapDequ e<T, inlineCapacity> > : VectorTraitsBase<blink::HeapDeque<T, inlineCapacity> > {
1041 static const bool needsDestruction = VectorTraits<T>::needsDestruction; 1041 static const bool needsDestruction = VectorTraits<T>::needsDestruction;
1042 static const bool canInitializeWithMemset = VectorTraits<T>::canInitializeWi thMemset; 1042 static const bool canInitializeWithMemset = VectorTraits<T>::canInitializeWi thMemset;
1043 static const bool canMoveWithMemcpy = VectorTraits<T>::canMoveWithMemcpy; 1043 static const bool canMoveWithMemcpy = VectorTraits<T>::canMoveWithMemcpy;
1044 }; 1044 };
1045 1045
1046 template<typename T> struct HashTraits<WebCore::Member<T> > : SimpleClassHashTra its<WebCore::Member<T> > { 1046 template<typename T> struct HashTraits<blink::Member<T> > : SimpleClassHashTrait s<blink::Member<T> > {
1047 static const bool needsDestruction = false; 1047 static const bool needsDestruction = false;
1048 // FIXME: The distinction between PeekInType and PassInType is there for 1048 // FIXME: The distinction between PeekInType and PassInType is there for
1049 // the sake of the reference counting handles. When they are gone the two 1049 // the sake of the reference counting handles. When they are gone the two
1050 // types can be merged into PassInType. 1050 // types can be merged into PassInType.
1051 // FIXME: Implement proper const'ness for iterator types. Requires support 1051 // FIXME: Implement proper const'ness for iterator types. Requires support
1052 // in the marking Visitor. 1052 // in the marking Visitor.
1053 typedef RawPtr<T> PeekInType; 1053 typedef RawPtr<T> PeekInType;
1054 typedef RawPtr<T> PassInType; 1054 typedef RawPtr<T> PassInType;
1055 typedef WebCore::Member<T>* IteratorGetType; 1055 typedef blink::Member<T>* IteratorGetType;
1056 typedef const WebCore::Member<T>* IteratorConstGetType; 1056 typedef const blink::Member<T>* IteratorConstGetType;
1057 typedef WebCore::Member<T>& IteratorReferenceType; 1057 typedef blink::Member<T>& IteratorReferenceType;
1058 typedef T* const IteratorConstReferenceType; 1058 typedef T* const IteratorConstReferenceType;
1059 static IteratorReferenceType getToReferenceConversion(IteratorGetType x) { r eturn *x; } 1059 static IteratorReferenceType getToReferenceConversion(IteratorGetType x) { r eturn *x; }
1060 static IteratorConstReferenceType getToReferenceConstConversion(IteratorCons tGetType x) { return x->get(); } 1060 static IteratorConstReferenceType getToReferenceConstConversion(IteratorCons tGetType x) { return x->get(); }
1061 // FIXME: Similarly, there is no need for a distinction between PeekOutType 1061 // FIXME: Similarly, there is no need for a distinction between PeekOutType
1062 // and PassOutType without reference counting. 1062 // and PassOutType without reference counting.
1063 typedef T* PeekOutType; 1063 typedef T* PeekOutType;
1064 typedef T* PassOutType; 1064 typedef T* PassOutType;
1065 1065
1066 template<typename U> 1066 template<typename U>
1067 static void store(const U& value, WebCore::Member<T>& storage) { storage = v alue; } 1067 static void store(const U& value, blink::Member<T>& storage) { storage = val ue; }
1068 1068
1069 static PeekOutType peek(const WebCore::Member<T>& value) { return value; } 1069 static PeekOutType peek(const blink::Member<T>& value) { return value; }
1070 static PassOutType passOut(const WebCore::Member<T>& value) { return value; } 1070 static PassOutType passOut(const blink::Member<T>& value) { return value; }
1071 }; 1071 };
1072 1072
1073 template<typename T> struct HashTraits<WebCore::WeakMember<T> > : SimpleClassHas hTraits<WebCore::WeakMember<T> > { 1073 template<typename T> struct HashTraits<blink::WeakMember<T> > : SimpleClassHashT raits<blink::WeakMember<T> > {
1074 static const bool needsDestruction = false; 1074 static const bool needsDestruction = false;
1075 // FIXME: The distinction between PeekInType and PassInType is there for 1075 // FIXME: The distinction between PeekInType and PassInType is there for
1076 // the sake of the reference counting handles. When they are gone the two 1076 // the sake of the reference counting handles. When they are gone the two
1077 // types can be merged into PassInType. 1077 // types can be merged into PassInType.
1078 // FIXME: Implement proper const'ness for iterator types. Requires support 1078 // FIXME: Implement proper const'ness for iterator types. Requires support
1079 // in the marking Visitor. 1079 // in the marking Visitor.
1080 typedef RawPtr<T> PeekInType; 1080 typedef RawPtr<T> PeekInType;
1081 typedef RawPtr<T> PassInType; 1081 typedef RawPtr<T> PassInType;
1082 typedef WebCore::WeakMember<T>* IteratorGetType; 1082 typedef blink::WeakMember<T>* IteratorGetType;
1083 typedef const WebCore::WeakMember<T>* IteratorConstGetType; 1083 typedef const blink::WeakMember<T>* IteratorConstGetType;
1084 typedef WebCore::WeakMember<T>& IteratorReferenceType; 1084 typedef blink::WeakMember<T>& IteratorReferenceType;
1085 typedef T* const IteratorConstReferenceType; 1085 typedef T* const IteratorConstReferenceType;
1086 static IteratorReferenceType getToReferenceConversion(IteratorGetType x) { r eturn *x; } 1086 static IteratorReferenceType getToReferenceConversion(IteratorGetType x) { r eturn *x; }
1087 static IteratorConstReferenceType getToReferenceConstConversion(IteratorCons tGetType x) { return x->get(); } 1087 static IteratorConstReferenceType getToReferenceConstConversion(IteratorCons tGetType x) { return x->get(); }
1088 // FIXME: Similarly, there is no need for a distinction between PeekOutType 1088 // FIXME: Similarly, there is no need for a distinction between PeekOutType
1089 // and PassOutType without reference counting. 1089 // and PassOutType without reference counting.
1090 typedef T* PeekOutType; 1090 typedef T* PeekOutType;
1091 typedef T* PassOutType; 1091 typedef T* PassOutType;
1092 1092
1093 template<typename U> 1093 template<typename U>
1094 static void store(const U& value, WebCore::WeakMember<T>& storage) { storage = value; } 1094 static void store(const U& value, blink::WeakMember<T>& storage) { storage = value; }
1095 1095
1096 static PeekOutType peek(const WebCore::WeakMember<T>& value) { return value; } 1096 static PeekOutType peek(const blink::WeakMember<T>& value) { return value; }
1097 static PassOutType passOut(const WebCore::WeakMember<T>& value) { return val ue; } 1097 static PassOutType passOut(const blink::WeakMember<T>& value) { return value ; }
1098 static bool traceInCollection(WebCore::Visitor* visitor, WebCore::WeakMember <T>& weakMember, ShouldWeakPointersBeMarkedStrongly strongify) 1098 static bool traceInCollection(blink::Visitor* visitor, blink::WeakMember<T>& weakMember, ShouldWeakPointersBeMarkedStrongly strongify)
1099 { 1099 {
1100 if (strongify == WeakPointersActStrong) { 1100 if (strongify == WeakPointersActStrong) {
1101 visitor->trace(reinterpret_cast<WebCore::Member<T>&>(weakMember)); / / Strongified visit. 1101 visitor->trace(reinterpret_cast<blink::Member<T>&>(weakMember)); // Strongified visit.
1102 return false; 1102 return false;
1103 } 1103 }
1104 return !visitor->isAlive(weakMember); 1104 return !visitor->isAlive(weakMember);
1105 } 1105 }
1106 }; 1106 };
1107 1107
1108 template<typename T> struct PtrHash<WebCore::Member<T> > : PtrHash<T*> { 1108 template<typename T> struct PtrHash<blink::Member<T> > : PtrHash<T*> {
1109 template<typename U> 1109 template<typename U>
1110 static unsigned hash(const U& key) { return PtrHash<T*>::hash(key); } 1110 static unsigned hash(const U& key) { return PtrHash<T*>::hash(key); }
1111 static bool equal(T* a, const WebCore::Member<T>& b) { return a == b; } 1111 static bool equal(T* a, const blink::Member<T>& b) { return a == b; }
1112 static bool equal(const WebCore::Member<T>& a, T* b) { return a == b; } 1112 static bool equal(const blink::Member<T>& a, T* b) { return a == b; }
1113 template<typename U, typename V> 1113 template<typename U, typename V>
1114 static bool equal(const U& a, const V& b) { return a == b; } 1114 static bool equal(const U& a, const V& b) { return a == b; }
1115 }; 1115 };
1116 1116
1117 template<typename T> struct PtrHash<WebCore::WeakMember<T> > : PtrHash<WebCore:: Member<T> > { 1117 template<typename T> struct PtrHash<blink::WeakMember<T> > : PtrHash<blink::Memb er<T> > {
1118 }; 1118 };
1119 1119
1120 template<typename P> struct PtrHash<WebCore::Persistent<P> > : PtrHash<P*> { 1120 template<typename P> struct PtrHash<blink::Persistent<P> > : PtrHash<P*> {
1121 using PtrHash<P*>::hash; 1121 using PtrHash<P*>::hash;
1122 static unsigned hash(const RefPtr<P>& key) { return hash(key.get()); } 1122 static unsigned hash(const RefPtr<P>& key) { return hash(key.get()); }
1123 using PtrHash<P*>::equal; 1123 using PtrHash<P*>::equal;
1124 static bool equal(const RefPtr<P>& a, const RefPtr<P>& b) { return a == b; } 1124 static bool equal(const RefPtr<P>& a, const RefPtr<P>& b) { return a == b; }
1125 static bool equal(P* a, const RefPtr<P>& b) { return a == b; } 1125 static bool equal(P* a, const RefPtr<P>& b) { return a == b; }
1126 static bool equal(const RefPtr<P>& a, P* b) { return a == b; } 1126 static bool equal(const RefPtr<P>& a, P* b) { return a == b; }
1127 }; 1127 };
1128 1128
1129 // PtrHash is the default hash for hash tables with members. 1129 // PtrHash is the default hash for hash tables with members.
1130 template<typename T> struct DefaultHash<WebCore::Member<T> > { 1130 template<typename T> struct DefaultHash<blink::Member<T> > {
1131 typedef PtrHash<WebCore::Member<T> > Hash; 1131 typedef PtrHash<blink::Member<T> > Hash;
1132 }; 1132 };
1133 1133
1134 template<typename T> struct DefaultHash<WebCore::WeakMember<T> > { 1134 template<typename T> struct DefaultHash<blink::WeakMember<T> > {
1135 typedef PtrHash<WebCore::WeakMember<T> > Hash; 1135 typedef PtrHash<blink::WeakMember<T> > Hash;
1136 }; 1136 };
1137 1137
1138 template<typename T> struct DefaultHash<WebCore::Persistent<T> > { 1138 template<typename T> struct DefaultHash<blink::Persistent<T> > {
1139 typedef PtrHash<WebCore::Persistent<T> > Hash; 1139 typedef PtrHash<blink::Persistent<T> > Hash;
1140 }; 1140 };
1141 1141
1142 template<typename T> 1142 template<typename T>
1143 struct NeedsTracing<WebCore::Member<T> > { 1143 struct NeedsTracing<blink::Member<T> > {
1144 static const bool value = true; 1144 static const bool value = true;
1145 }; 1145 };
1146 1146
1147 template<typename T> 1147 template<typename T>
1148 struct IsWeak<WebCore::WeakMember<T> > { 1148 struct IsWeak<blink::WeakMember<T> > {
1149 static const bool value = true; 1149 static const bool value = true;
1150 }; 1150 };
1151 1151
1152 template<typename T> inline T* getPtr(const WebCore::Member<T>& p) 1152 template<typename T> inline T* getPtr(const blink::Member<T>& p)
1153 { 1153 {
1154 return p.get(); 1154 return p.get();
1155 } 1155 }
1156 1156
1157 template<typename T> inline T* getPtr(const WebCore::Persistent<T>& p) 1157 template<typename T> inline T* getPtr(const blink::Persistent<T>& p)
1158 { 1158 {
1159 return p.get(); 1159 return p.get();
1160 } 1160 }
1161 1161
1162 template<typename T, size_t inlineCapacity> 1162 template<typename T, size_t inlineCapacity>
1163 struct NeedsTracing<ListHashSetNode<T, WebCore::HeapListHashSetAllocator<T, inli neCapacity> > *> { 1163 struct NeedsTracing<ListHashSetNode<T, blink::HeapListHashSetAllocator<T, inline Capacity> > *> {
1164 // All heap allocated node pointers need visiting to keep the nodes alive, 1164 // All heap allocated node pointers need visiting to keep the nodes alive,
1165 // regardless of whether they contain pointers to other heap allocated 1165 // regardless of whether they contain pointers to other heap allocated
1166 // objects. 1166 // objects.
1167 static const bool value = true; 1167 static const bool value = true;
1168 }; 1168 };
1169 1169
1170 // For wtf/Functional.h 1170 // For wtf/Functional.h
1171 template<typename T, bool isGarbageCollected> struct PointerParamStorageTraits; 1171 template<typename T, bool isGarbageCollected> struct PointerParamStorageTraits;
1172 1172
1173 template<typename T> 1173 template<typename T>
1174 struct PointerParamStorageTraits<T*, false> { 1174 struct PointerParamStorageTraits<T*, false> {
1175 typedef T* StorageType; 1175 typedef T* StorageType;
1176 1176
1177 static StorageType wrap(T* value) { return value; } 1177 static StorageType wrap(T* value) { return value; }
1178 static T* unwrap(const StorageType& value) { return value; } 1178 static T* unwrap(const StorageType& value) { return value; }
1179 }; 1179 };
1180 1180
1181 template<typename T> 1181 template<typename T>
1182 struct PointerParamStorageTraits<T*, true> { 1182 struct PointerParamStorageTraits<T*, true> {
1183 typedef WebCore::CrossThreadPersistent<T> StorageType; 1183 typedef blink::CrossThreadPersistent<T> StorageType;
1184 1184
1185 static StorageType wrap(T* value) { return value; } 1185 static StorageType wrap(T* value) { return value; }
1186 static T* unwrap(const StorageType& value) { return value.get(); } 1186 static T* unwrap(const StorageType& value) { return value.get(); }
1187 }; 1187 };
1188 1188
1189 template<typename T> 1189 template<typename T>
1190 struct ParamStorageTraits<T*> : public PointerParamStorageTraits<T*, WebCore::Is GarbageCollectedType<T>::value> { 1190 struct ParamStorageTraits<T*> : public PointerParamStorageTraits<T*, blink::IsGa rbageCollectedType<T>::value> {
1191 }; 1191 };
1192 1192
1193 template<typename T> 1193 template<typename T>
1194 struct ParamStorageTraits<RawPtr<T> > : public PointerParamStorageTraits<T*, Web Core::IsGarbageCollectedType<T>::value> { 1194 struct ParamStorageTraits<RawPtr<T> > : public PointerParamStorageTraits<T*, bli nk::IsGarbageCollectedType<T>::value> {
1195 }; 1195 };
1196 1196
1197 } // namespace WTF 1197 } // namespace WTF
1198 1198
1199 #endif 1199 #endif
OLDNEW
« no previous file with comments | « Source/platform/graphics/test/MockImageDecoder.h ('k') | Source/platform/heap/Heap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698