Chromium Code Reviews| 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 683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 694 // transition type be unqualified, would dually not work for template | 694 // transition type be unqualified, would dually not work for template |
| 695 // aliases. So, slightly unfortunately, fall back/down to the lowest | 695 // aliases. So, slightly unfortunately, fall back/down to the lowest |
| 696 // commmon denominator of using CPP macros only. | 696 // commmon denominator of using CPP macros only. |
| 697 #if ENABLE(OILPAN) | 697 #if ENABLE(OILPAN) |
| 698 #define PassRefPtrWillBeRawPtr WTF::RawPtr | 698 #define PassRefPtrWillBeRawPtr WTF::RawPtr |
| 699 #define RefCountedWillBeGarbageCollected WebCore::GarbageCollected | 699 #define RefCountedWillBeGarbageCollected WebCore::GarbageCollected |
| 700 #define RefCountedWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinal ized | 700 #define RefCountedWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinal ized |
| 701 #define RefCountedWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCol lected | 701 #define RefCountedWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCol lected |
| 702 #define ThreadSafeRefCountedWillBeGarbageCollected WebCore::GarbageCollected | 702 #define ThreadSafeRefCountedWillBeGarbageCollected WebCore::GarbageCollected |
| 703 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WebCore::GarbageColl ectedFinalized | 703 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WebCore::GarbageColl ectedFinalized |
| 704 #define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WebCore:: ThreadSafeRefCountedGarbageCollected | |
| 704 #define RefPtrWillBePersistent WebCore::Persistent | 705 #define RefPtrWillBePersistent WebCore::Persistent |
| 705 #define RefPtrWillBeRawPtr WTF::RawPtr | 706 #define RefPtrWillBeRawPtr WTF::RawPtr |
| 706 #define RefPtrWillBeMember WebCore::Member | 707 #define RefPtrWillBeMember WebCore::Member |
| 707 #define RefPtrWillBeCrossThreadPersistent WebCore::CrossThreadPersistent | 708 #define RefPtrWillBeCrossThreadPersistent WebCore::CrossThreadPersistent |
| 708 #define RawPtrWillBeMember WebCore::Member | 709 #define RawPtrWillBeMember WebCore::Member |
| 709 #define RawPtrWillBeWeakMember WebCore::WeakMember | 710 #define RawPtrWillBeWeakMember WebCore::WeakMember |
| 710 #define OwnPtrWillBeMember WebCore::Member | 711 #define OwnPtrWillBeMember WebCore::Member |
| 711 #define OwnPtrWillBePersistent WebCore::Persistent | 712 #define OwnPtrWillBePersistent WebCore::Persistent |
| 712 #define OwnPtrWillBeRawPtr WTF::RawPtr | 713 #define OwnPtrWillBeRawPtr WTF::RawPtr |
| 713 #define PassOwnPtrWillBeRawPtr WTF::RawPtr | 714 #define PassOwnPtrWillBeRawPtr WTF::RawPtr |
| 714 #define NoBaseWillBeGarbageCollected WebCore::GarbageCollected | 715 #define NoBaseWillBeGarbageCollected WebCore::GarbageCollected |
| 715 #define NoBaseWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized | 716 #define NoBaseWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized |
| 717 #define NoBaseWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCollect ed | |
| 716 #define WillBeHeapHashMap WebCore::HeapHashMap | 718 #define WillBeHeapHashMap WebCore::HeapHashMap |
| 717 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap | 719 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap |
| 718 #define WillBeHeapHashSet WebCore::HeapHashSet | 720 #define WillBeHeapHashSet WebCore::HeapHashSet |
| 719 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet | 721 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet |
| 720 #define WillBeHeapVector WebCore::HeapVector | 722 #define WillBeHeapVector WebCore::HeapVector |
| 721 #define WillBePersistentHeapVector WebCore::PersistentHeapVector | 723 #define WillBePersistentHeapVector WebCore::PersistentHeapVector |
| 722 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin | 724 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin |
| 723 #define WillBeHeapSupplement WebCore::HeapSupplement | 725 #define WillBeHeapSupplement WebCore::HeapSupplement |
| 724 #define WillBeHeapSupplementable WebCore::HeapSupplementable | 726 #define WillBeHeapSupplementable WebCore::HeapSupplementable |
| 725 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray | 727 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray |
| 726 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder | 728 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder |
| 727 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack | 729 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack |
| 728 | 730 |
| 729 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) | 731 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) |
| 730 { | 732 { |
| 731 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate <T, RefCountedGarbageCollected>::value; | 733 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate <T, RefCountedGarbageCollected>::value; |
| 732 static const bool notRefCounted = !WTF::IsSubclassOfTemplate<T, RefCounted>: :value; | 734 static const bool notRefCounted = !WTF::IsSubclassOfTemplate<T, RefCounted>: :value; |
| 733 COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCou ntedGarbageCollected); | 735 COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCou ntedGarbageCollected); |
| 734 COMPILE_ASSERT(notRefCounted, youMustAdopt); | 736 COMPILE_ASSERT(notRefCounted, youMustAdopt); |
| 735 return PassRefPtrWillBeRawPtr<T>(ptr); | 737 return PassRefPtrWillBeRawPtr<T>(ptr); |
| 736 } | 738 } |
| 737 | 739 |
| 738 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo llected(T* ptr) | 740 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo llected(T* ptr) |
| 739 { | 741 { |
| 740 static const bool isRefCountedGarbageCollected = WTF::IsSubclassOfTemplate<T , RefCountedGarbageCollected>::value; | 742 static const bool isRefCountedGarbageCollected = WTF::IsSubclassOfTemplate<T , RefCountedGarbageCollected>::value; |
| 741 COMPILE_ASSERT(isRefCountedGarbageCollected, useAdoptRefWillBeNoop); | 743 COMPILE_ASSERT(isRefCountedGarbageCollected, useAdoptRefWillBeNoop); |
| 742 return PassRefPtrWillBeRawPtr<T>(adoptRefCountedGarbageCollected(ptr)); | 744 return PassRefPtrWillBeRawPtr<T>(adoptRefCountedGarbageCollected(ptr)); |
| 743 } | 745 } |
| 744 | 746 |
| 747 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeThreadSafeRefCounte dGarbageCollected(T* ptr) | |
| 748 { | |
| 749 static const bool isThreadSafeRefCountedGarbageCollected = WTF::IsSubclassOf Template<T, ThreadSafeRefCountedGarbageCollected>::value; | |
| 750 COMPILE_ASSERT(isThreadSafeRefCountedGarbageCollected, useAdoptRefWillBeNoop ); | |
| 751 return PassRefPtrWillBeRawPtr<T>(adoptRefCountedGarbageCollected(ptr)); | |
| 752 } | |
| 753 | |
| 745 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) | 754 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) |
| 746 { | 755 { |
| 747 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate <T, RefCountedGarbageCollected>::value; | 756 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate <T, RefCountedGarbageCollected>::value; |
| 748 static const bool notRefCounted = !WTF::IsSubclassOfTemplate<T, RefCounted>: :value; | 757 static const bool notRefCounted = !WTF::IsSubclassOfTemplate<T, RefCounted>: :value; |
| 749 COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCou ntedGarbageCollected); | 758 COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCou ntedGarbageCollected); |
| 750 COMPILE_ASSERT(notRefCounted, youMustAdopt); | 759 COMPILE_ASSERT(notRefCounted, youMustAdopt); |
| 751 return PassOwnPtrWillBeRawPtr<T>(ptr); | 760 return PassOwnPtrWillBeRawPtr<T>(ptr); |
| 752 } | 761 } |
| 753 | 762 |
| 754 #define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED // do nothing when oilpan is ena bled. | 763 #define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED // do nothing when oilpan is ena bled. |
| 755 #define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing | 764 #define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing |
| 756 #define DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing | 765 #define DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing |
| 757 #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing | 766 #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing |
| 758 | 767 |
| 768 #define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \ | |
| 769 static Persistent<type> name = arguments; | |
|
haraken
2014/04/08 06:02:08
Can we use DEFINE_STATIC_LOCAL instead of using 's
keishi
2014/04/21 17:10:11
Done.
| |
| 770 | |
| 759 #else // !ENABLE(OILPAN) | 771 #else // !ENABLE(OILPAN) |
| 760 | 772 |
| 761 template<typename T> | 773 template<typename T> |
| 762 class DummyBase { | 774 class DummyBase { |
| 763 public: | 775 public: |
| 764 DummyBase() { } | 776 DummyBase() { } |
| 765 ~DummyBase() { } | 777 ~DummyBase() { } |
| 766 }; | 778 }; |
| 767 | 779 |
| 768 #define PassRefPtrWillBeRawPtr WTF::PassRefPtr | 780 #define PassRefPtrWillBeRawPtr WTF::PassRefPtr |
| 769 #define RefCountedWillBeGarbageCollected WTF::RefCounted | 781 #define RefCountedWillBeGarbageCollected WTF::RefCounted |
| 770 #define RefCountedWillBeGarbageCollectedFinalized WTF::RefCounted | 782 #define RefCountedWillBeGarbageCollectedFinalized WTF::RefCounted |
| 771 #define RefCountedWillBeRefCountedGarbageCollected WTF::RefCounted | 783 #define RefCountedWillBeRefCountedGarbageCollected WTF::RefCounted |
| 772 #define ThreadSafeRefCountedWillBeGarbageCollected WTF::ThreadSafeRefCounted | 784 #define ThreadSafeRefCountedWillBeGarbageCollected WTF::ThreadSafeRefCounted |
| 773 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WTF::ThreadSafeRefCo unted | 785 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WTF::ThreadSafeRefCo unted |
| 786 #define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WTF::Thre adSafeRefCounted | |
| 774 #define RefPtrWillBePersistent WTF::RefPtr | 787 #define RefPtrWillBePersistent WTF::RefPtr |
| 775 #define RefPtrWillBeRawPtr WTF::RefPtr | 788 #define RefPtrWillBeRawPtr WTF::RefPtr |
| 776 #define RefPtrWillBeMember WTF::RefPtr | 789 #define RefPtrWillBeMember WTF::RefPtr |
| 777 #define RefPtrWillBeCrossThreadPersistent WTF::RefPtr | 790 #define RefPtrWillBeCrossThreadPersistent WTF::RefPtr |
| 778 #define RawPtrWillBeMember WTF::RawPtr | 791 #define RawPtrWillBeMember WTF::RawPtr |
| 779 #define RawPtrWillBeWeakMember WTF::RawPtr | 792 #define RawPtrWillBeWeakMember WTF::RawPtr |
| 780 #define OwnPtrWillBeMember WTF::OwnPtr | 793 #define OwnPtrWillBeMember WTF::OwnPtr |
| 781 #define OwnPtrWillBePersistent WTF::OwnPtr | 794 #define OwnPtrWillBePersistent WTF::OwnPtr |
| 782 #define OwnPtrWillBeRawPtr WTF::OwnPtr | 795 #define OwnPtrWillBeRawPtr WTF::OwnPtr |
| 783 #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr | 796 #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr |
| 784 #define NoBaseWillBeGarbageCollected WebCore::DummyBase | 797 #define NoBaseWillBeGarbageCollected WebCore::DummyBase |
| 785 #define NoBaseWillBeGarbageCollectedFinalized WebCore::DummyBase | 798 #define NoBaseWillBeGarbageCollectedFinalized WebCore::DummyBase |
| 799 #define NoBaseWillBeRefCountedGarbageCollected WebCore::DummyBase | |
| 786 #define WillBeHeapHashMap WTF::HashMap | 800 #define WillBeHeapHashMap WTF::HashMap |
| 787 #define WillBePersistentHeapHashMap WTF::HashMap | 801 #define WillBePersistentHeapHashMap WTF::HashMap |
| 788 #define WillBeHeapHashSet WTF::HashSet | 802 #define WillBeHeapHashSet WTF::HashSet |
| 789 #define WillBePersistentHeapHashSet WTF::HashSet | 803 #define WillBePersistentHeapHashSet WTF::HashSet |
| 790 #define WillBeHeapVector WTF::Vector | 804 #define WillBeHeapVector WTF::Vector |
| 791 #define WillBePersistentHeapVector WTF::Vector | 805 #define WillBePersistentHeapVector WTF::Vector |
| 792 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> | 806 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> |
| 793 #define WillBeHeapSupplement WebCore::Supplement | 807 #define WillBeHeapSupplement WebCore::Supplement |
| 794 #define WillBeHeapSupplementable WebCore::Supplementable | 808 #define WillBeHeapSupplementable WebCore::Supplementable |
| 795 #define WillBeHeapTerminatedArray WTF::TerminatedArray | 809 #define WillBeHeapTerminatedArray WTF::TerminatedArray |
| 796 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder | 810 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder |
| 797 #define WillBeHeapLinkedStack WTF::LinkedStack | 811 #define WillBeHeapLinkedStack WTF::LinkedStack |
| 798 | 812 |
| 799 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu rn adoptRef(ptr); } | 813 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu rn adoptRef(ptr); } |
| 800 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo llected(T* ptr) { return adoptRef(ptr); } | 814 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo llected(T* ptr) { return adoptRef(ptr); } |
| 815 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeThreadSafeRefCounte dGarbageCollected(T* ptr) { return adoptRef(ptr); } | |
| 801 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { retu rn adoptPtr(ptr); } | 816 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { retu rn adoptPtr(ptr); } |
| 802 | 817 |
| 803 #define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED WTF_MAKE_FAST_ALLOCATED | 818 #define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED WTF_MAKE_FAST_ALLOCATED |
| 804 #define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ | 819 #define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ |
| 805 public: \ | 820 public: \ |
| 806 ~type(); \ | 821 ~type(); \ |
| 807 private: | 822 private: |
| 808 #define DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(type) \ | 823 #define DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(type) \ |
| 809 public: \ | 824 public: \ |
| 810 virtual ~type(); \ | 825 virtual ~type(); \ |
| 811 private: | 826 private: |
| 812 | 827 |
| 813 #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ | 828 #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ |
| 814 type::~type() { } | 829 type::~type() { } |
| 815 | 830 |
| 831 #define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \ | |
| 832 static type* name = PassRefPtr<type>(arguments).leakRef(); | |
|
haraken
2014/04/08 06:02:08
Ditto.
keishi
2014/04/21 17:10:11
Done.
| |
| 833 | |
| 816 #endif // ENABLE(OILPAN) | 834 #endif // ENABLE(OILPAN) |
| 817 | 835 |
| 818 } // namespace WebCore | 836 } // namespace WebCore |
| 819 | 837 |
| 820 namespace WTF { | 838 namespace WTF { |
| 821 | 839 |
| 822 template <typename T> struct VectorTraits<WebCore::Member<T> > : VectorTraitsBas e<WebCore::Member<T> > { | 840 template <typename T> struct VectorTraits<WebCore::Member<T> > : VectorTraitsBas e<WebCore::Member<T> > { |
| 823 static const bool needsDestruction = false; | 841 static const bool needsDestruction = false; |
| 824 static const bool canInitializeWithMemset = true; | 842 static const bool canInitializeWithMemset = true; |
| 825 static const bool canMoveWithMemcpy = true; | 843 static const bool canMoveWithMemcpy = true; |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 979 }; | 997 }; |
| 980 | 998 |
| 981 template<typename T, typename U> | 999 template<typename T, typename U> |
| 982 struct NeedsTracing<HashMap<T, U> > { | 1000 struct NeedsTracing<HashMap<T, U> > { |
| 983 static const bool value = false; | 1001 static const bool value = false; |
| 984 }; | 1002 }; |
| 985 | 1003 |
| 986 } // namespace WTF | 1004 } // namespace WTF |
| 987 | 1005 |
| 988 #endif | 1006 #endif |
| OLD | NEW |