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 |