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 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 // transition type be unqualified, would dually not work for template | 669 // transition type be unqualified, would dually not work for template |
670 // aliases. So, slightly unfortunately, fall back/down to the lowest | 670 // aliases. So, slightly unfortunately, fall back/down to the lowest |
671 // commmon denominator of using CPP macros only. | 671 // commmon denominator of using CPP macros only. |
672 #if ENABLE(OILPAN) | 672 #if ENABLE(OILPAN) |
673 #define PassRefPtrWillBeRawPtr WTF::RawPtr | 673 #define PassRefPtrWillBeRawPtr WTF::RawPtr |
674 #define RefCountedWillBeGarbageCollected WebCore::GarbageCollected | 674 #define RefCountedWillBeGarbageCollected WebCore::GarbageCollected |
675 #define RefCountedWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinal
ized | 675 #define RefCountedWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinal
ized |
676 #define RefCountedWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCol
lected | 676 #define RefCountedWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCol
lected |
677 #define ThreadSafeRefCountedWillBeGarbageCollected WebCore::GarbageCollected | 677 #define ThreadSafeRefCountedWillBeGarbageCollected WebCore::GarbageCollected |
678 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WebCore::GarbageColl
ectedFinalized | 678 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WebCore::GarbageColl
ectedFinalized |
| 679 #define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WebCore::
ThreadSafeRefCountedGarbageCollected |
679 #define RefPtrWillBePersistent WebCore::Persistent | 680 #define RefPtrWillBePersistent WebCore::Persistent |
680 #define RefPtrWillBeRawPtr WTF::RawPtr | 681 #define RefPtrWillBeRawPtr WTF::RawPtr |
681 #define RefPtrWillBeMember WebCore::Member | 682 #define RefPtrWillBeMember WebCore::Member |
682 #define RefPtrWillBeCrossThreadPersistent WebCore::CrossThreadPersistent | 683 #define RefPtrWillBeCrossThreadPersistent WebCore::CrossThreadPersistent |
683 #define RawPtrWillBeMember WebCore::Member | 684 #define RawPtrWillBeMember WebCore::Member |
684 #define RawPtrWillBeWeakMember WebCore::WeakMember | 685 #define RawPtrWillBeWeakMember WebCore::WeakMember |
685 #define OwnPtrWillBeMember WebCore::Member | 686 #define OwnPtrWillBeMember WebCore::Member |
686 #define OwnPtrWillBePersistent WebCore::Persistent | 687 #define OwnPtrWillBePersistent WebCore::Persistent |
687 #define OwnPtrWillBeRawPtr WTF::RawPtr | 688 #define OwnPtrWillBeRawPtr WTF::RawPtr |
688 #define PassOwnPtrWillBeRawPtr WTF::RawPtr | 689 #define PassOwnPtrWillBeRawPtr WTF::RawPtr |
689 #define NoBaseWillBeGarbageCollected WebCore::GarbageCollected | 690 #define NoBaseWillBeGarbageCollected WebCore::GarbageCollected |
690 #define NoBaseWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized | 691 #define NoBaseWillBeGarbageCollectedFinalized WebCore::GarbageCollectedFinalized |
| 692 #define NoBaseWillBeRefCountedGarbageCollected WebCore::RefCountedGarbageCollect
ed |
691 #define WillBeHeapHashMap WebCore::HeapHashMap | 693 #define WillBeHeapHashMap WebCore::HeapHashMap |
692 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap | 694 #define WillBePersistentHeapHashMap WebCore::PersistentHeapHashMap |
693 #define WillBeHeapHashSet WebCore::HeapHashSet | 695 #define WillBeHeapHashSet WebCore::HeapHashSet |
694 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet | 696 #define WillBePersistentHeapHashSet WebCore::PersistentHeapHashSet |
695 #define WillBeHeapVector WebCore::HeapVector | 697 #define WillBeHeapVector WebCore::HeapVector |
696 #define WillBePersistentHeapVector WebCore::PersistentHeapVector | 698 #define WillBePersistentHeapVector WebCore::PersistentHeapVector |
697 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin | 699 #define WillBeGarbageCollectedMixin WebCore::GarbageCollectedMixin |
698 #define WillBeHeapSupplement WebCore::HeapSupplement | 700 #define WillBeHeapSupplement WebCore::HeapSupplement |
699 #define WillBeHeapSupplementable WebCore::HeapSupplementable | 701 #define WillBeHeapSupplementable WebCore::HeapSupplementable |
700 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray | 702 #define WillBeHeapTerminatedArray WebCore::HeapTerminatedArray |
701 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder | 703 #define WillBeHeapTerminatedArrayBuilder WebCore::HeapTerminatedArrayBuilder |
702 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack | 704 #define WillBeHeapLinkedStack WebCore::HeapLinkedStack |
703 | 705 |
704 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) | 706 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) |
705 { | 707 { |
706 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate
<T, RefCountedGarbageCollected>::value; | 708 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate
<T, RefCountedGarbageCollected>::value; |
707 static const bool notRefCounted = !WTF::IsSubclassOfTemplate<T, RefCounted>:
:value; | 709 static const bool notRefCounted = !WTF::IsSubclassOfTemplate<T, RefCounted>:
:value; |
708 COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCou
ntedGarbageCollected); | 710 COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCou
ntedGarbageCollected); |
709 COMPILE_ASSERT(notRefCounted, youMustAdopt); | 711 COMPILE_ASSERT(notRefCounted, youMustAdopt); |
710 return PassRefPtrWillBeRawPtr<T>(ptr); | 712 return PassRefPtrWillBeRawPtr<T>(ptr); |
711 } | 713 } |
712 | 714 |
713 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo
llected(T* ptr) | 715 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo
llected(T* ptr) |
714 { | 716 { |
715 static const bool isRefCountedGarbageCollected = WTF::IsSubclassOfTemplate<T
, RefCountedGarbageCollected>::value; | 717 static const bool isRefCountedGarbageCollected = WTF::IsSubclassOfTemplate<T
, RefCountedGarbageCollected>::value; |
716 COMPILE_ASSERT(isRefCountedGarbageCollected, useAdoptRefWillBeNoop); | 718 COMPILE_ASSERT(isRefCountedGarbageCollected, useAdoptRefWillBeNoop); |
717 return PassRefPtrWillBeRawPtr<T>(adoptRefCountedGarbageCollected(ptr)); | 719 return PassRefPtrWillBeRawPtr<T>(adoptRefCountedGarbageCollected(ptr)); |
718 } | 720 } |
719 | 721 |
| 722 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeThreadSafeRefCounte
dGarbageCollected(T* ptr) |
| 723 { |
| 724 static const bool isThreadSafeRefCountedGarbageCollected = WTF::IsSubclassOf
Template<T, ThreadSafeRefCountedGarbageCollected>::value; |
| 725 COMPILE_ASSERT(isThreadSafeRefCountedGarbageCollected, useAdoptRefWillBeNoop
); |
| 726 return PassRefPtrWillBeRawPtr<T>(adoptRefCountedGarbageCollected(ptr)); |
| 727 } |
| 728 |
720 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) | 729 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) |
721 { | 730 { |
722 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate
<T, RefCountedGarbageCollected>::value; | 731 static const bool notRefCountedGarbageCollected = !WTF::IsSubclassOfTemplate
<T, RefCountedGarbageCollected>::value; |
723 static const bool notRefCounted = !WTF::IsSubclassOfTemplate<T, RefCounted>:
:value; | 732 static const bool notRefCounted = !WTF::IsSubclassOfTemplate<T, RefCounted>:
:value; |
724 COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCou
ntedGarbageCollected); | 733 COMPILE_ASSERT(notRefCountedGarbageCollected, useAdoptRefCountedWillBeRefCou
ntedGarbageCollected); |
725 COMPILE_ASSERT(notRefCounted, youMustAdopt); | 734 COMPILE_ASSERT(notRefCounted, youMustAdopt); |
726 return PassOwnPtrWillBeRawPtr<T>(ptr); | 735 return PassOwnPtrWillBeRawPtr<T>(ptr); |
727 } | 736 } |
728 | 737 |
729 #define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED // do nothing when oilpan is ena
bled. | 738 #define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED // do nothing when oilpan is ena
bled. |
730 #define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing | 739 #define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing |
731 #define DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing | 740 #define DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing |
732 #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing | 741 #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) // do nothing |
733 | 742 |
| 743 #define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \ |
| 744 static Persistent<type> name = arguments; |
| 745 |
734 #else // !ENABLE(OILPAN) | 746 #else // !ENABLE(OILPAN) |
735 | 747 |
736 template<typename T> | 748 template<typename T> |
737 class DummyBase { | 749 class DummyBase { |
738 public: | 750 public: |
739 DummyBase() { } | 751 DummyBase() { } |
740 ~DummyBase() { } | 752 ~DummyBase() { } |
741 }; | 753 }; |
742 | 754 |
743 #define PassRefPtrWillBeRawPtr WTF::PassRefPtr | 755 #define PassRefPtrWillBeRawPtr WTF::PassRefPtr |
744 #define RefCountedWillBeGarbageCollected WTF::RefCounted | 756 #define RefCountedWillBeGarbageCollected WTF::RefCounted |
745 #define RefCountedWillBeGarbageCollectedFinalized WTF::RefCounted | 757 #define RefCountedWillBeGarbageCollectedFinalized WTF::RefCounted |
746 #define RefCountedWillBeRefCountedGarbageCollected WTF::RefCounted | 758 #define RefCountedWillBeRefCountedGarbageCollected WTF::RefCounted |
747 #define ThreadSafeRefCountedWillBeGarbageCollected WTF::ThreadSafeRefCounted | 759 #define ThreadSafeRefCountedWillBeGarbageCollected WTF::ThreadSafeRefCounted |
748 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WTF::ThreadSafeRefCo
unted | 760 #define ThreadSafeRefCountedWillBeGarbageCollectedFinalized WTF::ThreadSafeRefCo
unted |
| 761 #define ThreadSafeRefCountedWillBeThreadSafeRefCountedGarbageCollected WTF::Thre
adSafeRefCounted |
749 #define RefPtrWillBePersistent WTF::RefPtr | 762 #define RefPtrWillBePersistent WTF::RefPtr |
750 #define RefPtrWillBeRawPtr WTF::RefPtr | 763 #define RefPtrWillBeRawPtr WTF::RefPtr |
751 #define RefPtrWillBeMember WTF::RefPtr | 764 #define RefPtrWillBeMember WTF::RefPtr |
752 #define RefPtrWillBeCrossThreadPersistent WTF::RefPtr | 765 #define RefPtrWillBeCrossThreadPersistent WTF::RefPtr |
753 #define RawPtrWillBeMember WTF::RawPtr | 766 #define RawPtrWillBeMember WTF::RawPtr |
754 #define RawPtrWillBeWeakMember WTF::RawPtr | 767 #define RawPtrWillBeWeakMember WTF::RawPtr |
755 #define OwnPtrWillBeMember WTF::OwnPtr | 768 #define OwnPtrWillBeMember WTF::OwnPtr |
756 #define OwnPtrWillBePersistent WTF::OwnPtr | 769 #define OwnPtrWillBePersistent WTF::OwnPtr |
757 #define OwnPtrWillBeRawPtr WTF::OwnPtr | 770 #define OwnPtrWillBeRawPtr WTF::OwnPtr |
758 #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr | 771 #define PassOwnPtrWillBeRawPtr WTF::PassOwnPtr |
759 #define NoBaseWillBeGarbageCollected WebCore::DummyBase | 772 #define NoBaseWillBeGarbageCollected WebCore::DummyBase |
760 #define NoBaseWillBeGarbageCollectedFinalized WebCore::DummyBase | 773 #define NoBaseWillBeGarbageCollectedFinalized WebCore::DummyBase |
| 774 #define NoBaseWillBeRefCountedGarbageCollected WebCore::DummyBase |
761 #define WillBeHeapHashMap WTF::HashMap | 775 #define WillBeHeapHashMap WTF::HashMap |
762 #define WillBePersistentHeapHashMap WTF::HashMap | 776 #define WillBePersistentHeapHashMap WTF::HashMap |
763 #define WillBeHeapHashSet WTF::HashSet | 777 #define WillBeHeapHashSet WTF::HashSet |
764 #define WillBePersistentHeapHashSet WTF::HashSet | 778 #define WillBePersistentHeapHashSet WTF::HashSet |
765 #define WillBeHeapVector WTF::Vector | 779 #define WillBeHeapVector WTF::Vector |
766 #define WillBePersistentHeapVector WTF::Vector | 780 #define WillBePersistentHeapVector WTF::Vector |
767 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> | 781 #define WillBeGarbageCollectedMixin WebCore::DummyBase<void> |
768 #define WillBeHeapSupplement WebCore::Supplement | 782 #define WillBeHeapSupplement WebCore::Supplement |
769 #define WillBeHeapSupplementable WebCore::Supplementable | 783 #define WillBeHeapSupplementable WebCore::Supplementable |
770 #define WillBeHeapTerminatedArray WTF::TerminatedArray | 784 #define WillBeHeapTerminatedArray WTF::TerminatedArray |
771 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder | 785 #define WillBeHeapTerminatedArrayBuilder WTF::TerminatedArrayBuilder |
772 #define WillBeHeapLinkedStack WTF::LinkedStack | 786 #define WillBeHeapLinkedStack WTF::LinkedStack |
773 | 787 |
774 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu
rn adoptRef(ptr); } | 788 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeNoop(T* ptr) { retu
rn adoptRef(ptr); } |
775 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo
llected(T* ptr) { return adoptRef(ptr); } | 789 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeRefCountedGarbageCo
llected(T* ptr) { return adoptRef(ptr); } |
| 790 template<typename T> PassRefPtrWillBeRawPtr<T> adoptRefWillBeThreadSafeRefCounte
dGarbageCollected(T* ptr) { return adoptRef(ptr); } |
776 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { retu
rn adoptPtr(ptr); } | 791 template<typename T> PassOwnPtrWillBeRawPtr<T> adoptPtrWillBeNoop(T* ptr) { retu
rn adoptPtr(ptr); } |
777 | 792 |
778 #define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED WTF_MAKE_FAST_ALLOCATED | 793 #define WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED WTF_MAKE_FAST_ALLOCATED |
779 #define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ | 794 #define DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ |
780 public: \ | 795 public: \ |
781 ~type(); \ | 796 ~type(); \ |
782 private: | 797 private: |
783 #define DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(type) \ | 798 #define DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(type) \ |
784 public: \ | 799 public: \ |
785 virtual ~type(); \ | 800 virtual ~type(); \ |
786 private: | 801 private: |
787 | 802 |
788 #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ | 803 #define DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(type) \ |
789 type::~type() { } | 804 type::~type() { } |
790 | 805 |
| 806 #define DEFINE_STATIC_REF_WILL_BE_PERSISTENT(type, name, arguments) \ |
| 807 static type* name = PassRefPtr<type>(arguments).leakRef(); |
| 808 |
791 #endif // ENABLE(OILPAN) | 809 #endif // ENABLE(OILPAN) |
792 | 810 |
793 } // namespace WebCore | 811 } // namespace WebCore |
794 | 812 |
795 namespace WTF { | 813 namespace WTF { |
796 | 814 |
797 template <typename T> struct VectorTraits<WebCore::Member<T> > : VectorTraitsBas
e<WebCore::Member<T> > { | 815 template <typename T> struct VectorTraits<WebCore::Member<T> > : VectorTraitsBas
e<WebCore::Member<T> > { |
798 static const bool needsDestruction = false; | 816 static const bool needsDestruction = false; |
799 static const bool canInitializeWithMemset = true; | 817 static const bool canInitializeWithMemset = true; |
800 static const bool canMoveWithMemcpy = true; | 818 static const bool canMoveWithMemcpy = true; |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
929 }; | 947 }; |
930 | 948 |
931 template<typename T, typename U> | 949 template<typename T, typename U> |
932 struct NeedsTracing<HashMap<T, U> > { | 950 struct NeedsTracing<HashMap<T, U> > { |
933 static const bool value = false; | 951 static const bool value = false; |
934 }; | 952 }; |
935 | 953 |
936 } // namespace WTF | 954 } // namespace WTF |
937 | 955 |
938 #endif | 956 #endif |
OLD | NEW |