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 3453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3464 SetIteratorCheck(it5, weakOrderedSet->end(), 64); | 3464 SetIteratorCheck(it5, weakOrderedSet->end(), 64); |
3465 } | 3465 } |
3466 } else { | 3466 } else { |
3467 // Collect garbage. This causes weak processing to remove | 3467 // Collect garbage. This causes weak processing to remove |
3468 // things from the collections. | 3468 // things from the collections. |
3469 preciselyCollectGarbage(); | 3469 preciselyCollectGarbage(); |
3470 unsigned count = 0; | 3470 unsigned count = 0; |
3471 for (int i = 0; i < 128; i += 2) { | 3471 for (int i = 0; i < 128; i += 2) { |
3472 bool firstAlive = keepNumbersAlive[i]; | 3472 bool firstAlive = keepNumbersAlive[i]; |
3473 bool secondAlive = keepNumbersAlive[i + 1]; | 3473 bool secondAlive = keepNumbersAlive[i + 1]; |
3474 if (firstAlive && (collectionNumber == weakStrongIndex || | 3474 if (firstAlive && |
3475 collectionNumber == strongWeakIndex)) | 3475 (collectionNumber == weakStrongIndex || |
| 3476 collectionNumber == strongWeakIndex)) |
3476 secondAlive = true; | 3477 secondAlive = true; |
3477 if (firstAlive && secondAlive && | 3478 if (firstAlive && secondAlive && |
3478 collectionNumber < numberOfMapIndices) { | 3479 collectionNumber < numberOfMapIndices) { |
3479 if (collectionNumber == weakStrongIndex) { | 3480 if (collectionNumber == weakStrongIndex) { |
3480 if (deleteAfterwards) | 3481 if (deleteAfterwards) |
3481 EXPECT_EQ(i + 1, | 3482 EXPECT_EQ(i + 1, |
3482 weakStrong->take(keepNumbersAlive[i])->value()); | 3483 weakStrong->take(keepNumbersAlive[i])->value()); |
3483 } else if (collectionNumber == strongWeakIndex) { | 3484 } else if (collectionNumber == strongWeakIndex) { |
3484 if (deleteAfterwards) | 3485 if (deleteAfterwards) |
3485 EXPECT_EQ(i, | 3486 EXPECT_EQ(i, |
(...skipping 1524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5010 keepAlive->push_back(value); | 5011 keepAlive->push_back(value); |
5011 OuterMap::AddResult newEntry = outer->insert(value, InnerMap()); | 5012 OuterMap::AddResult newEntry = outer->insert(value, InnerMap()); |
5012 newEntry.storedValue->value.insert(deep, home); | 5013 newEntry.storedValue->value.insert(deep, home); |
5013 newEntry.storedValue->value.insert(composite, home); | 5014 newEntry.storedValue->value.insert(composite, home); |
5014 } | 5015 } |
5015 composite.clear(); | 5016 composite.clear(); |
5016 preciselyCollectGarbage(); | 5017 preciselyCollectGarbage(); |
5017 EXPECT_EQ(10000u, outer->size()); | 5018 EXPECT_EQ(10000u, outer->size()); |
5018 for (int i = 0; i < 10000; i++) { | 5019 for (int i = 0; i < 10000; i++) { |
5019 IntWrapper* value = keepAlive->at(i); | 5020 IntWrapper* value = keepAlive->at(i); |
5020 EXPECT_EQ(1u, outer->get(value) | 5021 EXPECT_EQ(1u, |
5021 .size()); // Other one was deleted by weak handling. | 5022 outer->get(value) |
| 5023 .size()); // Other one was deleted by weak handling. |
5022 if (i & 1) | 5024 if (i & 1) |
5023 keepAlive->at(i) = nullptr; | 5025 keepAlive->at(i) = nullptr; |
5024 } | 5026 } |
5025 preciselyCollectGarbage(); | 5027 preciselyCollectGarbage(); |
5026 EXPECT_EQ(5000u, outer->size()); | 5028 EXPECT_EQ(5000u, outer->size()); |
5027 } | 5029 } |
5028 } | 5030 } |
5029 } | 5031 } |
5030 | 5032 |
5031 class EphemeronWrapper : public GarbageCollected<EphemeronWrapper> { | 5033 class EphemeronWrapper : public GarbageCollected<EphemeronWrapper> { |
(...skipping 1325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6357 "HeapVector"); | 6359 "HeapVector"); |
6358 static_assert( | 6360 static_assert( |
6359 WTF::IsGarbageCollectedType<HeapDeque<Member<IntWrapper>>>::value, | 6361 WTF::IsGarbageCollectedType<HeapDeque<Member<IntWrapper>>>::value, |
6360 "HeapDeque"); | 6362 "HeapDeque"); |
6361 static_assert(WTF::IsGarbageCollectedType< | 6363 static_assert(WTF::IsGarbageCollectedType< |
6362 HeapTerminatedArray<Member<IntWrapper>>>::value, | 6364 HeapTerminatedArray<Member<IntWrapper>>>::value, |
6363 "HeapTerminatedArray"); | 6365 "HeapTerminatedArray"); |
6364 } | 6366 } |
6365 | 6367 |
6366 } // namespace blink | 6368 } // namespace blink |
OLD | NEW |