| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 27 matching lines...) Expand all Loading... |
| 38 #include "platform/heap/ThreadState.h" | 38 #include "platform/heap/ThreadState.h" |
| 39 #include "platform/heap/Visitor.h" | 39 #include "platform/heap/Visitor.h" |
| 40 #include "platform/testing/UnitTestHelpers.h" | 40 #include "platform/testing/UnitTestHelpers.h" |
| 41 #include "public/platform/Platform.h" | 41 #include "public/platform/Platform.h" |
| 42 #include "public/platform/WebTaskRunner.h" | 42 #include "public/platform/WebTaskRunner.h" |
| 43 #include "public/platform/WebTraceLocation.h" | 43 #include "public/platform/WebTraceLocation.h" |
| 44 #include "testing/gtest/include/gtest/gtest.h" | 44 #include "testing/gtest/include/gtest/gtest.h" |
| 45 #include "wtf/HashTraits.h" | 45 #include "wtf/HashTraits.h" |
| 46 #include "wtf/LinkedHashSet.h" | 46 #include "wtf/LinkedHashSet.h" |
| 47 #include "wtf/PtrUtil.h" | 47 #include "wtf/PtrUtil.h" |
| 48 #include <algorithm> |
| 48 #include <memory> | 49 #include <memory> |
| 49 | 50 |
| 50 namespace blink { | 51 namespace blink { |
| 51 | 52 |
| 52 static void preciselyCollectGarbage() | 53 static void preciselyCollectGarbage() |
| 53 { | 54 { |
| 54 ThreadHeap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSw
eep, BlinkGC::ForcedGC); | 55 ThreadHeap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSw
eep, BlinkGC::ForcedGC); |
| 55 } | 56 } |
| 56 | 57 |
| 57 static void conservativelyCollectGarbage() | 58 static void conservativelyCollectGarbage() |
| (...skipping 3788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3846 preciselyCollectGarbage(); | 3847 preciselyCollectGarbage(); |
| 3847 EXPECT_EQ(0u, weakStrong->size()); | 3848 EXPECT_EQ(0u, weakStrong->size()); |
| 3848 EXPECT_EQ(0u, strongWeak->size()); | 3849 EXPECT_EQ(0u, strongWeak->size()); |
| 3849 EXPECT_EQ(0u, weakWeak->size()); | 3850 EXPECT_EQ(0u, weakWeak->size()); |
| 3850 EXPECT_EQ(0u, weakSet->size()); | 3851 EXPECT_EQ(0u, weakSet->size()); |
| 3851 EXPECT_EQ(0u, weakOrderedSet->size()); | 3852 EXPECT_EQ(0u, weakOrderedSet->size()); |
| 3852 } | 3853 } |
| 3853 } | 3854 } |
| 3854 } | 3855 } |
| 3855 | 3856 |
| 3857 TEST(HeapTest, HeapHashCountedSetToVector) |
| 3858 { |
| 3859 HeapHashCountedSet<Member<IntWrapper>> set; |
| 3860 HeapVector<Member<IntWrapper>> vector; |
| 3861 set.add(new IntWrapper(1)); |
| 3862 set.add(new IntWrapper(1)); |
| 3863 set.add(new IntWrapper(2)); |
| 3864 |
| 3865 copyToVector(set, vector); |
| 3866 EXPECT_EQ(3u, vector.size()); |
| 3867 |
| 3868 Vector<int> intVector; |
| 3869 for (const auto& i : vector) |
| 3870 intVector.append(i->value()); |
| 3871 std::sort(intVector.begin(), intVector.end()); |
| 3872 ASSERT_EQ(3u, intVector.size()); |
| 3873 EXPECT_EQ(1, intVector[0]); |
| 3874 EXPECT_EQ(1, intVector[1]); |
| 3875 EXPECT_EQ(2, intVector[2]); |
| 3876 } |
| 3877 |
| 3878 TEST(HeapTest, WeakHeapHashCountedSetToVector) |
| 3879 { |
| 3880 HeapHashCountedSet<WeakMember<IntWrapper>> set; |
| 3881 HeapVector<Member<IntWrapper>> vector; |
| 3882 set.add(new IntWrapper(1)); |
| 3883 set.add(new IntWrapper(1)); |
| 3884 set.add(new IntWrapper(2)); |
| 3885 |
| 3886 copyToVector(set, vector); |
| 3887 EXPECT_LE(3u, vector.size()); |
| 3888 for (const auto& i : vector) |
| 3889 EXPECT_TRUE(i->value() == 1 || i->value() == 2); |
| 3890 } |
| 3891 |
| 3856 TEST(HeapTest, RefCountedGarbageCollected) | 3892 TEST(HeapTest, RefCountedGarbageCollected) |
| 3857 { | 3893 { |
| 3858 RefCountedAndGarbageCollected::s_destructorCalls = 0; | 3894 RefCountedAndGarbageCollected::s_destructorCalls = 0; |
| 3859 { | 3895 { |
| 3860 RefPtr<RefCountedAndGarbageCollected> refPtr3; | 3896 RefPtr<RefCountedAndGarbageCollected> refPtr3; |
| 3861 { | 3897 { |
| 3862 Persistent<RefCountedAndGarbageCollected> persistent; | 3898 Persistent<RefCountedAndGarbageCollected> persistent; |
| 3863 { | 3899 { |
| 3864 Persistent<RefCountedAndGarbageCollected> refPtr1 = RefCountedAn
dGarbageCollected::create(); | 3900 Persistent<RefCountedAndGarbageCollected> refPtr1 = RefCountedAn
dGarbageCollected::create(); |
| 3865 Persistent<RefCountedAndGarbageCollected> refPtr2 = RefCountedAn
dGarbageCollected::create(); | 3901 Persistent<RefCountedAndGarbageCollected> refPtr2 = RefCountedAn
dGarbageCollected::create(); |
| (...skipping 3080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6946 static_assert(WTF::IsGarbageCollectedType<HeapLinkedHashSet<Member<IntWrappe
r>>>::value, "HeapLinkedHashSet"); | 6982 static_assert(WTF::IsGarbageCollectedType<HeapLinkedHashSet<Member<IntWrappe
r>>>::value, "HeapLinkedHashSet"); |
| 6947 static_assert(WTF::IsGarbageCollectedType<HeapListHashSet<Member<IntWrapper>
>>::value, "HeapListHashSet"); | 6983 static_assert(WTF::IsGarbageCollectedType<HeapListHashSet<Member<IntWrapper>
>>::value, "HeapListHashSet"); |
| 6948 static_assert(WTF::IsGarbageCollectedType<HeapHashCountedSet<Member<IntWrapp
er>>>::value, "HeapHashCountedSet"); | 6984 static_assert(WTF::IsGarbageCollectedType<HeapHashCountedSet<Member<IntWrapp
er>>>::value, "HeapHashCountedSet"); |
| 6949 static_assert(WTF::IsGarbageCollectedType<HeapHashMap<int, Member<IntWrapper
>>>::value, "HeapHashMap"); | 6985 static_assert(WTF::IsGarbageCollectedType<HeapHashMap<int, Member<IntWrapper
>>>::value, "HeapHashMap"); |
| 6950 static_assert(WTF::IsGarbageCollectedType<HeapVector<Member<IntWrapper>>>::v
alue, "HeapVector"); | 6986 static_assert(WTF::IsGarbageCollectedType<HeapVector<Member<IntWrapper>>>::v
alue, "HeapVector"); |
| 6951 static_assert(WTF::IsGarbageCollectedType<HeapDeque<Member<IntWrapper>>>::va
lue, "HeapDeque"); | 6987 static_assert(WTF::IsGarbageCollectedType<HeapDeque<Member<IntWrapper>>>::va
lue, "HeapDeque"); |
| 6952 static_assert(WTF::IsGarbageCollectedType<HeapTerminatedArray<Member<IntWrap
per>>>::value, "HeapTerminatedArray"); | 6988 static_assert(WTF::IsGarbageCollectedType<HeapTerminatedArray<Member<IntWrap
per>>>::value, "HeapTerminatedArray"); |
| 6953 } | 6989 } |
| 6954 | 6990 |
| 6955 } // namespace blink | 6991 } // namespace blink |
| OLD | NEW |