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

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

Issue 1213003004: Fix virtual/override/final usage in Source/platform/. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « Source/platform/heap/Heap.h ('k') | Source/platform/heap/MarkingVisitor.h » ('j') | 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 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 ThreadState::resumeThreads(); 255 ThreadState::resumeThreads();
256 } 256 }
257 } 257 }
258 258
259 private: 259 private:
260 ThreadState* m_state; 260 ThreadState* m_state;
261 SafePointScope m_safePointScope; 261 SafePointScope m_safePointScope;
262 bool m_parkedAllThreads; // False if we fail to park all threads 262 bool m_parkedAllThreads; // False if we fail to park all threads
263 }; 263 };
264 264
265 #define DEFINE_VISITOR_METHODS(Type) \ 265 #define DEFINE_VISITOR_METHODS(Type) \
266 virtual void mark(const Type* object, TraceCallback callback) override \ 266 void mark(const Type* object, TraceCallback callback) override \
267 { \ 267 { \
268 if (object) \ 268 if (object) \
269 m_count++; \ 269 m_count++; \
270 } \ 270 } \
271 virtual bool isMarked(const Type*) override { return false; } \ 271 bool isMarked(const Type*) override { return false; } \
272 virtual bool ensureMarked(const Type* objectPointer) override \ 272 bool ensureMarked(const Type* objectPointer) override \
273 { \ 273 { \
274 return ensureMarked(objectPointer); \ 274 return ensureMarked(objectPointer); \
275 } 275 }
276 276
277 class CountingVisitor : public Visitor { 277 class CountingVisitor : public Visitor {
278 public: 278 public:
279 CountingVisitor() 279 CountingVisitor()
280 : Visitor(Visitor::ThreadLocalMarking) 280 : Visitor(Visitor::ThreadLocalMarking)
281 , m_count(0) 281 , m_count(0)
282 { 282 {
283 } 283 }
284 284
285 virtual void mark(const void* object, TraceCallback) override 285 void mark(const void* object, TraceCallback) override
286 { 286 {
287 if (object) 287 if (object)
288 m_count++; 288 m_count++;
289 } 289 }
290 290
291 virtual void markHeader(HeapObjectHeader* header, TraceCallback callback) ov erride 291 void markHeader(HeapObjectHeader* header, TraceCallback callback) override
292 { 292 {
293 ASSERT(header->payload()); 293 ASSERT(header->payload());
294 m_count++; 294 m_count++;
295 } 295 }
296 296
297 virtual void registerDelayedMarkNoTracing(const void*) override { } 297 void registerDelayedMarkNoTracing(const void*) override { }
298 virtual void registerWeakMembers(const void*, const void*, WeakCallback) ove rride { } 298 void registerWeakMembers(const void*, const void*, WeakCallback) override { }
299 virtual void registerWeakTable(const void*, EphemeronCallback, EphemeronCall back) override { } 299 void registerWeakTable(const void*, EphemeronCallback, EphemeronCallback) ov erride { }
300 #if ENABLE(ASSERT) 300 #if ENABLE(ASSERT)
301 virtual bool weakTableRegistered(const void*) override { return false; } 301 bool weakTableRegistered(const void*) override { return false; }
302 #endif 302 #endif
303 virtual void registerWeakCellWithCallback(void**, WeakCallback) override { } 303 void registerWeakCellWithCallback(void**, WeakCallback) override { }
304 virtual bool ensureMarked(const void* objectPointer) override 304 bool ensureMarked(const void* objectPointer) override
305 { 305 {
306 if (!objectPointer || HeapObjectHeader::fromPayload(objectPointer)->isMa rked()) 306 if (!objectPointer || HeapObjectHeader::fromPayload(objectPointer)->isMa rked())
307 return false; 307 return false;
308 markNoTracing(objectPointer); 308 markNoTracing(objectPointer);
309 return true; 309 return true;
310 } 310 }
311 311
312 size_t count() { return m_count; } 312 size_t count() { return m_count; }
313 void reset() { m_count = 0; } 313 void reset() { m_count = 0; }
314 314
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 364
365 static const size_t classMagic = 0xABCDDBCA; 365 static const size_t classMagic = 0xABCDDBCA;
366 366
367 class HeapTestSubClass : public HeapTestOtherSuperClass, public HeapTestSuperCla ss { 367 class HeapTestSubClass : public HeapTestOtherSuperClass, public HeapTestSuperCla ss {
368 public: 368 public:
369 static HeapTestSubClass* create() 369 static HeapTestSubClass* create()
370 { 370 {
371 return new HeapTestSubClass(); 371 return new HeapTestSubClass();
372 } 372 }
373 373
374 virtual ~HeapTestSubClass() 374 ~HeapTestSubClass() override
375 { 375 {
376 EXPECT_EQ(classMagic, m_magic); 376 EXPECT_EQ(classMagic, m_magic);
377 ++s_destructorCalls; 377 ++s_destructorCalls;
378 } 378 }
379 379
380 static int s_destructorCalls; 380 static int s_destructorCalls;
381 381
382 private: 382 private:
383 383
384 HeapTestSubClass() : m_magic(classMagic) { } 384 HeapTestSubClass() : m_magic(classMagic) { }
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 }; 492 };
493 493
494 class ThreadedHeapTester : public ThreadedTesterBase { 494 class ThreadedHeapTester : public ThreadedTesterBase {
495 public: 495 public:
496 static void test() 496 static void test()
497 { 497 {
498 ThreadedTesterBase::test(new ThreadedHeapTester); 498 ThreadedTesterBase::test(new ThreadedHeapTester);
499 } 499 }
500 500
501 protected: 501 protected:
502 virtual void runThread() override 502 void runThread() override
503 { 503 {
504 ThreadState::attach(); 504 ThreadState::attach();
505 505
506 int gcCount = 0; 506 int gcCount = 0;
507 while (!done()) { 507 while (!done()) {
508 ThreadState::current()->safePoint(ThreadState::NoHeapPointersOnStack ); 508 ThreadState::current()->safePoint(ThreadState::NoHeapPointersOnStack );
509 { 509 {
510 Persistent<IntWrapper> wrapper; 510 Persistent<IntWrapper> wrapper;
511 511
512 typedef CrossThreadPersistent<IntWrapper> GlobalIntWrapperPersis tent; 512 typedef CrossThreadPersistent<IntWrapper> GlobalIntWrapperPersis tent;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 }; 544 };
545 545
546 class ThreadedWeaknessTester : public ThreadedTesterBase { 546 class ThreadedWeaknessTester : public ThreadedTesterBase {
547 public: 547 public:
548 static void test() 548 static void test()
549 { 549 {
550 ThreadedTesterBase::test(new ThreadedWeaknessTester); 550 ThreadedTesterBase::test(new ThreadedWeaknessTester);
551 } 551 }
552 552
553 private: 553 private:
554 virtual void runThread() override 554 void runThread() override
555 { 555 {
556 ThreadState::attach(); 556 ThreadState::attach();
557 557
558 int gcCount = 0; 558 int gcCount = 0;
559 while (!done()) { 559 while (!done()) {
560 ThreadState::current()->safePoint(ThreadState::NoHeapPointersOnStack ); 560 ThreadState::current()->safePoint(ThreadState::NoHeapPointersOnStack );
561 { 561 {
562 Persistent<HeapHashMap<ThreadMarker, WeakMember<IntWrapper>>> we akMap = new HeapHashMap<ThreadMarker, WeakMember<IntWrapper>>; 562 Persistent<HeapHashMap<ThreadMarker, WeakMember<IntWrapper>>> we akMap = new HeapHashMap<ThreadMarker, WeakMember<IntWrapper>>;
563 PersistentHeapHashMap<ThreadMarker, WeakMember<IntWrapper>> weak Map2; 563 PersistentHeapHashMap<ThreadMarker, WeakMember<IntWrapper>> weak Map2;
564 564
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 638
639 private: 639 private:
640 explicit PersistentChain(int count) 640 explicit PersistentChain(int count)
641 { 641 {
642 m_refCountedChain = adoptRef(RefCountedChain::create(count)); 642 m_refCountedChain = adoptRef(RefCountedChain::create(count));
643 } 643 }
644 644
645 RefPtr<RefCountedChain> m_refCountedChain; 645 RefPtr<RefCountedChain> m_refCountedChain;
646 }; 646 };
647 647
648 virtual void runThread() override 648 void runThread() override
649 { 649 {
650 ThreadState::attach(); 650 ThreadState::attach();
651 651
652 PersistentChain::create(100); 652 PersistentChain::create(100);
653 653
654 // Upon thread detach, GCs will run until all persistents have been 654 // Upon thread detach, GCs will run until all persistents have been
655 // released. We verify that the draining of persistents proceeds 655 // released. We verify that the draining of persistents proceeds
656 // as expected by dropping one Persistent<> per GC until there 656 // as expected by dropping one Persistent<> per GC until there
657 // are none left. 657 // are none left.
658 ThreadState::detach(); 658 ThreadState::detach();
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 static int s_destructorCalls; 997 static int s_destructorCalls;
998 998
999 private: 999 private:
1000 RefCountedAndGarbageCollected2() 1000 RefCountedAndGarbageCollected2()
1001 { 1001 {
1002 } 1002 }
1003 }; 1003 };
1004 1004
1005 int RefCountedAndGarbageCollected2::s_destructorCalls = 0; 1005 int RefCountedAndGarbageCollected2::s_destructorCalls = 0;
1006 1006
1007 #define DEFINE_VISITOR_METHODS(Type) \ 1007 #define DEFINE_VISITOR_METHODS(Type) \
1008 virtual void mark(const Type* object, TraceCallback callback) override \ 1008 void mark(const Type* object, TraceCallback callback) override \
1009 { \ 1009 { \
1010 mark(object); \ 1010 mark(object); \
1011 } \ 1011 } \
1012 1012
1013 class RefCountedGarbageCollectedVisitor : public CountingVisitor { 1013 class RefCountedGarbageCollectedVisitor : public CountingVisitor {
1014 public: 1014 public:
1015 RefCountedGarbageCollectedVisitor(int expected, void** objects) 1015 RefCountedGarbageCollectedVisitor(int expected, void** objects)
1016 : m_count(0) 1016 : m_count(0)
1017 , m_expectedCount(expected) 1017 , m_expectedCount(expected)
1018 , m_expectedObjects(objects) 1018 , m_expectedObjects(objects)
1019 { 1019 {
1020 } 1020 }
1021 1021
1022 void mark(const void* ptr) { markNoTrace(ptr); } 1022 void mark(const void* ptr) { markNoTrace(ptr); }
1023 1023
1024 virtual void markNoTrace(const void* ptr) 1024 virtual void markNoTrace(const void* ptr)
1025 { 1025 {
1026 if (!ptr) 1026 if (!ptr)
1027 return; 1027 return;
1028 if (m_count < m_expectedCount) 1028 if (m_count < m_expectedCount)
1029 EXPECT_TRUE(expectedObject(ptr)); 1029 EXPECT_TRUE(expectedObject(ptr));
1030 else 1030 else
1031 EXPECT_FALSE(expectedObject(ptr)); 1031 EXPECT_FALSE(expectedObject(ptr));
1032 m_count++; 1032 m_count++;
1033 } 1033 }
1034 1034
1035 virtual void mark(const void* ptr, TraceCallback) override 1035 void mark(const void* ptr, TraceCallback) override
1036 { 1036 {
1037 mark(ptr); 1037 mark(ptr);
1038 } 1038 }
1039 1039
1040 virtual void markHeader(HeapObjectHeader* header, TraceCallback callback) ov erride 1040 void markHeader(HeapObjectHeader* header, TraceCallback callback) override
1041 { 1041 {
1042 mark(header->payload()); 1042 mark(header->payload());
1043 } 1043 }
1044 1044
1045 bool validate() { return m_count >= m_expectedCount; } 1045 bool validate() { return m_count >= m_expectedCount; }
1046 void reset() { m_count = 0; } 1046 void reset() { m_count = 0; }
1047 1047
1048 private: 1048 private:
1049 bool expectedObject(const void* ptr) 1049 bool expectedObject(const void* ptr)
1050 { 1050 {
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
1429 1429
1430 int SubData::s_aliveCount = 0; 1430 int SubData::s_aliveCount = 0;
1431 1431
1432 class SubClass : public SuperClass { 1432 class SubClass : public SuperClass {
1433 public: 1433 public:
1434 static PassRefPtrWillBeRawPtr<SubClass> create(PassRefPtrWillBeRawPtr<Points Back> pointsBack) 1434 static PassRefPtrWillBeRawPtr<SubClass> create(PassRefPtrWillBeRawPtr<Points Back> pointsBack)
1435 { 1435 {
1436 return adoptRefWillBeNoop(new SubClass(pointsBack)); 1436 return adoptRefWillBeNoop(new SubClass(pointsBack));
1437 } 1437 }
1438 1438
1439 virtual ~SubClass() 1439 ~SubClass() override
1440 { 1440 {
1441 --s_aliveCount; 1441 --s_aliveCount;
1442 } 1442 }
1443 1443
1444 DEFINE_INLINE_VIRTUAL_TRACE() 1444 DEFINE_INLINE_VIRTUAL_TRACE()
1445 { 1445 {
1446 visitor->trace(m_data); 1446 visitor->trace(m_data);
1447 SuperClass::trace(visitor); 1447 SuperClass::trace(visitor);
1448 } 1448 }
1449 1449
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
1999 SimpleFinalizedEagerObjectBase() { } 1999 SimpleFinalizedEagerObjectBase() { }
2000 }; 2000 };
2001 2001
2002 class SimpleFinalizedEagerObject : public SimpleFinalizedEagerObjectBase { 2002 class SimpleFinalizedEagerObject : public SimpleFinalizedEagerObjectBase {
2003 public: 2003 public:
2004 static SimpleFinalizedEagerObject* create() 2004 static SimpleFinalizedEagerObject* create()
2005 { 2005 {
2006 return new SimpleFinalizedEagerObject(); 2006 return new SimpleFinalizedEagerObject();
2007 } 2007 }
2008 2008
2009 virtual ~SimpleFinalizedEagerObject() 2009 ~SimpleFinalizedEagerObject() override
2010 { 2010 {
2011 ++s_destructorCalls; 2011 ++s_destructorCalls;
2012 } 2012 }
2013 2013
2014 static int s_destructorCalls; 2014 static int s_destructorCalls;
2015 private: 2015 private:
2016 SimpleFinalizedEagerObject() { } 2016 SimpleFinalizedEagerObject() { }
2017 }; 2017 };
2018 2018
2019 template<typename T> 2019 template<typename T>
(...skipping 4259 matching lines...) Expand 10 before | Expand all | Expand 10 after
6279 { 6279 {
6280 Persistent<ClassWithMember> object = ClassWithMember::create(); 6280 Persistent<ClassWithMember> object = ClassWithMember::create();
6281 EXPECT_EQ(0, object->traceCount()); 6281 EXPECT_EQ(0, object->traceCount());
6282 TestMixinAllocatingObject* mixin = TestMixinAllocatingObject::create(object. get()); 6282 TestMixinAllocatingObject* mixin = TestMixinAllocatingObject::create(object. get());
6283 EXPECT_TRUE(mixin); 6283 EXPECT_TRUE(mixin);
6284 EXPECT_GT(object->traceCount(), 0); 6284 EXPECT_GT(object->traceCount(), 0);
6285 EXPECT_GT(mixin->traceCount(), 0); 6285 EXPECT_GT(mixin->traceCount(), 0);
6286 } 6286 }
6287 6287
6288 } // namespace blink 6288 } // namespace blink
OLDNEW
« no previous file with comments | « Source/platform/heap/Heap.h ('k') | Source/platform/heap/MarkingVisitor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698