Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1303)

Side by Side Diff: third_party/WebKit/Source/platform/heap/HeapTest.cpp

Issue 1850183003: Round out WillBe type removal. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/core/layout/HitTestResult.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1342 matching lines...) Expand 10 before | Expand all | Expand 10 after
1353 1353
1354 Observable& m_target; 1354 Observable& m_target;
1355 static Persistent<ObserverMap>* s_observerMap; 1355 static Persistent<ObserverMap>* s_observerMap;
1356 }; 1356 };
1357 1357
1358 bool FinalizationObserverWithHashMap::s_didCallWillFinalize = false; 1358 bool FinalizationObserverWithHashMap::s_didCallWillFinalize = false;
1359 Persistent<FinalizationObserverWithHashMap::ObserverMap>* FinalizationObserverWi thHashMap::s_observerMap; 1359 Persistent<FinalizationObserverWithHashMap::ObserverMap>* FinalizationObserverWi thHashMap::s_observerMap;
1360 1360
1361 class SuperClass; 1361 class SuperClass;
1362 1362
1363 class PointsBack : public RefCountedWillBeGarbageCollectedFinalized<PointsBack> { 1363 class PointsBack : public GarbageCollectedFinalized<PointsBack> {
1364 public: 1364 public:
1365 static PassRefPtrWillBeRawPtr<PointsBack> create() 1365 static PointsBack* create()
1366 { 1366 {
1367 return adoptRefWillBeNoop(new PointsBack()); 1367 return new PointsBack;
1368 } 1368 }
1369 1369
1370 ~PointsBack() 1370 ~PointsBack()
1371 { 1371 {
1372 --s_aliveCount; 1372 --s_aliveCount;
1373 } 1373 }
1374 1374
1375 void setBackPointer(SuperClass* backPointer) 1375 void setBackPointer(SuperClass* backPointer)
1376 { 1376 {
1377 m_backPointer = backPointer; 1377 m_backPointer = backPointer;
1378 } 1378 }
1379 1379
1380 SuperClass* backPointer() const { return m_backPointer; } 1380 SuperClass* backPointer() const { return m_backPointer; }
1381 1381
1382 DEFINE_INLINE_TRACE() 1382 DEFINE_INLINE_TRACE()
1383 { 1383 {
1384 visitor->trace(m_backPointer); 1384 visitor->trace(m_backPointer);
1385 } 1385 }
1386 1386
1387 static int s_aliveCount; 1387 static int s_aliveCount;
1388 private: 1388 private:
1389 PointsBack() : m_backPointer(nullptr) 1389 PointsBack() : m_backPointer(nullptr)
1390 { 1390 {
1391 ++s_aliveCount; 1391 ++s_aliveCount;
1392 } 1392 }
1393 1393
1394 RawPtrWillBeWeakMember<SuperClass> m_backPointer; 1394 WeakMember<SuperClass> m_backPointer;
1395 }; 1395 };
1396 1396
1397 int PointsBack::s_aliveCount = 0; 1397 int PointsBack::s_aliveCount = 0;
1398 1398
1399 class SuperClass : public RefCountedWillBeGarbageCollectedFinalized<SuperClass> { 1399 class SuperClass : public GarbageCollectedFinalized<SuperClass> {
1400 public: 1400 public:
1401 static PassRefPtrWillBeRawPtr<SuperClass> create(PassRefPtrWillBeRawPtr<Poin tsBack> pointsBack) 1401 static SuperClass* create(PointsBack* pointsBack)
1402 { 1402 {
1403 return adoptRefWillBeNoop(new SuperClass(pointsBack)); 1403 return new SuperClass(pointsBack);
1404 } 1404 }
1405 1405
1406 virtual ~SuperClass() 1406 virtual ~SuperClass()
1407 { 1407 {
1408 #if !ENABLE(OILPAN) 1408 #if !ENABLE(OILPAN)
1409 m_pointsBack->setBackPointer(0); 1409 m_pointsBack->setBackPointer(0);
1410 #endif 1410 #endif
1411 --s_aliveCount; 1411 --s_aliveCount;
1412 } 1412 }
1413 1413
1414 void doStuff(PassRefPtrWillBeRawPtr<SuperClass> targetPass, PointsBack* poin tsBack, int superClassCount) 1414 void doStuff(SuperClass* target, PointsBack* pointsBack, int superClassCount )
1415 { 1415 {
1416 RefPtrWillBeRawPtr<SuperClass> target = targetPass;
1417 conservativelyCollectGarbage(); 1416 conservativelyCollectGarbage();
1418 EXPECT_EQ(pointsBack, target->getPointsBack()); 1417 EXPECT_EQ(pointsBack, target->getPointsBack());
1419 EXPECT_EQ(superClassCount, SuperClass::s_aliveCount); 1418 EXPECT_EQ(superClassCount, SuperClass::s_aliveCount);
1420 } 1419 }
1421 1420
1422 DEFINE_INLINE_VIRTUAL_TRACE() 1421 DEFINE_INLINE_VIRTUAL_TRACE()
1423 { 1422 {
1424 visitor->trace(m_pointsBack); 1423 visitor->trace(m_pointsBack);
1425 } 1424 }
1426 1425
1427 PointsBack* getPointsBack() const { return m_pointsBack.get(); } 1426 PointsBack* getPointsBack() const { return m_pointsBack.get(); }
1428 1427
1429 static int s_aliveCount; 1428 static int s_aliveCount;
1430 protected: 1429 protected:
1431 explicit SuperClass(PassRefPtrWillBeRawPtr<PointsBack> pointsBack) 1430 explicit SuperClass(PointsBack* pointsBack)
1432 : m_pointsBack(pointsBack) 1431 : m_pointsBack(pointsBack)
1433 { 1432 {
1434 m_pointsBack->setBackPointer(this); 1433 m_pointsBack->setBackPointer(this);
1435 ++s_aliveCount; 1434 ++s_aliveCount;
1436 } 1435 }
1437 1436
1438 private: 1437 private:
1439 RefPtrWillBeMember<PointsBack> m_pointsBack; 1438 Member<PointsBack> m_pointsBack;
1440 }; 1439 };
1441 1440
1442 int SuperClass::s_aliveCount = 0; 1441 int SuperClass::s_aliveCount = 0;
1443 class SubData : public NoBaseWillBeGarbageCollectedFinalized<SubData> { 1442 class SubData : public GarbageCollectedFinalized<SubData> {
1444 public: 1443 public:
1445 SubData() { ++s_aliveCount; } 1444 SubData() { ++s_aliveCount; }
1446 ~SubData() { --s_aliveCount; } 1445 ~SubData() { --s_aliveCount; }
1447 1446
1448 DEFINE_INLINE_TRACE() { } 1447 DEFINE_INLINE_TRACE() { }
1449 1448
1450 static int s_aliveCount; 1449 static int s_aliveCount;
1451 }; 1450 };
1452 1451
1453 int SubData::s_aliveCount = 0; 1452 int SubData::s_aliveCount = 0;
1454 1453
1455 class SubClass : public SuperClass { 1454 class SubClass : public SuperClass {
1456 public: 1455 public:
1457 static PassRefPtrWillBeRawPtr<SubClass> create(PassRefPtrWillBeRawPtr<Points Back> pointsBack) 1456 static SubClass* create(PointsBack* pointsBack)
1458 { 1457 {
1459 return adoptRefWillBeNoop(new SubClass(pointsBack)); 1458 return new SubClass(pointsBack);
1460 } 1459 }
1461 1460
1462 ~SubClass() override 1461 ~SubClass() override
1463 { 1462 {
1464 --s_aliveCount; 1463 --s_aliveCount;
1465 } 1464 }
1466 1465
1467 DEFINE_INLINE_VIRTUAL_TRACE() 1466 DEFINE_INLINE_VIRTUAL_TRACE()
1468 { 1467 {
1469 visitor->trace(m_data); 1468 visitor->trace(m_data);
1470 SuperClass::trace(visitor); 1469 SuperClass::trace(visitor);
1471 } 1470 }
1472 1471
1473 static int s_aliveCount; 1472 static int s_aliveCount;
1474 private: 1473 private:
1475 explicit SubClass(PassRefPtrWillBeRawPtr<PointsBack> pointsBack) 1474 explicit SubClass(PointsBack* pointsBack)
1476 : SuperClass(pointsBack) 1475 : SuperClass(pointsBack)
1477 , m_data(adoptPtrWillBeNoop(new SubData())) 1476 , m_data(new SubData)
1478 { 1477 {
1479 ++s_aliveCount; 1478 ++s_aliveCount;
1480 } 1479 }
1481 1480
1482 private: 1481 private:
1483 OwnPtrWillBeMember<SubData> m_data; 1482 Member<SubData> m_data;
1484 }; 1483 };
1485 1484
1486 int SubClass::s_aliveCount = 0; 1485 int SubClass::s_aliveCount = 0;
1487 1486
1488 class TransitionRefCounted : public RefCountedWillBeRefCountedGarbageCollected<T ransitionRefCounted> { 1487 class TransitionRefCounted : public RefCountedGarbageCollected<TransitionRefCoun ted> {
1489 public: 1488 public:
1490 static PassRefPtrWillBeRawPtr<TransitionRefCounted> create() 1489 static TransitionRefCounted* create()
1491 { 1490 {
1492 return adoptRefWillBeNoop(new TransitionRefCounted()); 1491 return new TransitionRefCounted;
1493 } 1492 }
1494 1493
1495 ~TransitionRefCounted() 1494 ~TransitionRefCounted()
1496 { 1495 {
1497 --s_aliveCount; 1496 --s_aliveCount;
1498 } 1497 }
1499 1498
1500 DEFINE_INLINE_TRACE() { } 1499 DEFINE_INLINE_TRACE() { }
1501 1500
1502 static int s_aliveCount; 1501 static int s_aliveCount;
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1683 1682
1684 DEFINE_INLINE_TRACE() { } 1683 DEFINE_INLINE_TRACE() { }
1685 1684
1686 private: 1685 private:
1687 Persistent<IntWrapper>* m_wrapper; 1686 Persistent<IntWrapper>* m_wrapper;
1688 }; 1687 };
1689 1688
1690 TEST(HeapTest, Transition) 1689 TEST(HeapTest, Transition)
1691 { 1690 {
1692 { 1691 {
1693 RefPtrWillBePersistent<TransitionRefCounted> refCounted = TransitionRefC ounted::create(); 1692 Persistent<TransitionRefCounted> refCounted = TransitionRefCounted::crea te();
1694 EXPECT_EQ(1, TransitionRefCounted::s_aliveCount); 1693 EXPECT_EQ(1, TransitionRefCounted::s_aliveCount);
1695 preciselyCollectGarbage(); 1694 preciselyCollectGarbage();
1696 EXPECT_EQ(1, TransitionRefCounted::s_aliveCount); 1695 EXPECT_EQ(1, TransitionRefCounted::s_aliveCount);
1697 } 1696 }
1698 preciselyCollectGarbage(); 1697 preciselyCollectGarbage();
1699 EXPECT_EQ(0, TransitionRefCounted::s_aliveCount); 1698 EXPECT_EQ(0, TransitionRefCounted::s_aliveCount);
1700 1699
1701 RefPtrWillBePersistent<PointsBack> pointsBack1 = PointsBack::create(); 1700 Persistent<PointsBack> pointsBack1 = PointsBack::create();
1702 RefPtrWillBePersistent<PointsBack> pointsBack2 = PointsBack::create(); 1701 Persistent<PointsBack> pointsBack2 = PointsBack::create();
1703 RefPtrWillBePersistent<SuperClass> superClass = SuperClass::create(pointsBac k1); 1702 Persistent<SuperClass> superClass = SuperClass::create(pointsBack1);
1704 RefPtrWillBePersistent<SubClass> subClass = SubClass::create(pointsBack2); 1703 Persistent<SubClass> subClass = SubClass::create(pointsBack2);
1705 EXPECT_EQ(2, PointsBack::s_aliveCount); 1704 EXPECT_EQ(2, PointsBack::s_aliveCount);
1706 EXPECT_EQ(2, SuperClass::s_aliveCount); 1705 EXPECT_EQ(2, SuperClass::s_aliveCount);
1707 EXPECT_EQ(1, SubClass::s_aliveCount); 1706 EXPECT_EQ(1, SubClass::s_aliveCount);
1708 EXPECT_EQ(1, SubData::s_aliveCount); 1707 EXPECT_EQ(1, SubData::s_aliveCount);
1709 1708
1710 preciselyCollectGarbage(); 1709 preciselyCollectGarbage();
1711 EXPECT_EQ(0, TransitionRefCounted::s_aliveCount); 1710 EXPECT_EQ(0, TransitionRefCounted::s_aliveCount);
1712 EXPECT_EQ(2, PointsBack::s_aliveCount); 1711 EXPECT_EQ(2, PointsBack::s_aliveCount);
1713 EXPECT_EQ(2, SuperClass::s_aliveCount); 1712 EXPECT_EQ(2, SuperClass::s_aliveCount);
1714 EXPECT_EQ(1, SubClass::s_aliveCount); 1713 EXPECT_EQ(1, SubClass::s_aliveCount);
(...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after
2427 2426
2428 struct NeedsTracingTrait { 2427 struct NeedsTracingTrait {
2429 explicit NeedsTracingTrait(IntWrapper* wrapper) : m_wrapper(wrapper) { } 2428 explicit NeedsTracingTrait(IntWrapper* wrapper) : m_wrapper(wrapper) { }
2430 DEFINE_INLINE_TRACE() { visitor->trace(m_wrapper); } 2429 DEFINE_INLINE_TRACE() { visitor->trace(m_wrapper); }
2431 Member<IntWrapper> m_wrapper; 2430 Member<IntWrapper> m_wrapper;
2432 }; 2431 };
2433 2432
2434 // These class definitions test compile-time asserts with transition 2433 // These class definitions test compile-time asserts with transition
2435 // types. They are therefore unused in test code and just need to 2434 // types. They are therefore unused in test code and just need to
2436 // compile. This is intentional; do not delete the A and B classes below. 2435 // compile. This is intentional; do not delete the A and B classes below.
2437 class A : public WillBeGarbageCollectedMixin { 2436 class A : public GarbageCollectedMixin {
2438 }; 2437 };
2439 2438
2440 class B : public NoBaseWillBeGarbageCollected<B>, public A { 2439 class B : public GarbageCollected<B>, public A {
2441 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(B); 2440 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(B);
2442 public: 2441 public:
2443 DEFINE_INLINE_TRACE() { } 2442 DEFINE_INLINE_TRACE() { }
2444 }; 2443 };
2445 2444
2446 TEST(HeapTest, HeapVectorFilledWithValue) 2445 TEST(HeapTest, HeapVectorFilledWithValue)
2447 { 2446 {
2448 IntWrapper* val = IntWrapper::create(1); 2447 IntWrapper* val = IntWrapper::create(1);
2449 HeapVector<Member<IntWrapper>> vector(10, val); 2448 HeapVector<Member<IntWrapper>> vector(10, val);
2450 EXPECT_EQ(10u, vector.size()); 2449 EXPECT_EQ(10u, vector.size());
(...skipping 4051 matching lines...) Expand 10 before | Expand all | Expand 10 after
6502 EXPECT_EQ(1u, vector2.size()); 6501 EXPECT_EQ(1u, vector2.size());
6503 // TODO(Oilpan): when Vector.h's contiguous container support no longer disables 6502 // TODO(Oilpan): when Vector.h's contiguous container support no longer disables
6504 // Vector<>s with inline capacity, remove. 6503 // Vector<>s with inline capacity, remove.
6505 #if !defined(ANNOTATE_CONTIGUOUS_CONTAINER) 6504 #if !defined(ANNOTATE_CONTIGUOUS_CONTAINER)
6506 EXPECT_EQ(16u, vector1.capacity()); 6505 EXPECT_EQ(16u, vector1.capacity());
6507 EXPECT_EQ(16u, vector2.capacity()); 6506 EXPECT_EQ(16u, vector2.capacity());
6508 #endif 6507 #endif
6509 } 6508 }
6510 6509
6511 } // namespace blink 6510 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/HitTestResult.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698