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

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

Issue 169293002: Oilpan: Remove GC_INFO_{DEFINE,DECLARE} macros (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fixheaptest Created 6 years, 10 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/heap/Heap.h ('k') | Source/heap/Visitor.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 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 FOR_EACH_TYPED_HEAP(DEFINE_VISITOR_METHODS) 108 FOR_EACH_TYPED_HEAP(DEFINE_VISITOR_METHODS)
109 109
110 size_t count() { return m_count; } 110 size_t count() { return m_count; }
111 void reset() { m_count = 0; } 111 void reset() { m_count = 0; }
112 112
113 private: 113 private:
114 size_t m_count; 114 size_t m_count;
115 }; 115 };
116 116
117 class SimpleObject : public GarbageCollected<SimpleObject> { 117 class SimpleObject : public GarbageCollected<SimpleObject> {
118 DECLARE_GC_INFO;
119 public: 118 public:
120 static SimpleObject* create() { return new SimpleObject(); } 119 static SimpleObject* create() { return new SimpleObject(); }
121 void trace(Visitor*) { } 120 void trace(Visitor*) { }
122 char getPayload(int i) { return payload[i]; } 121 char getPayload(int i) { return payload[i]; }
123 private: 122 private:
124 SimpleObject() { } 123 SimpleObject() { }
125 char payload[64]; 124 char payload[64];
126 }; 125 };
127 126
128 #undef DEFINE_VISITOR_METHODS 127 #undef DEFINE_VISITOR_METHODS
129 128
130 class HeapTestSuperClass : public GarbageCollectedFinalized<HeapTestSuperClass> { 129 class HeapTestSuperClass : public GarbageCollectedFinalized<HeapTestSuperClass> {
131 DECLARE_GC_INFO
132 public: 130 public:
133 static HeapTestSuperClass* create() 131 static HeapTestSuperClass* create()
134 { 132 {
135 return new HeapTestSuperClass(); 133 return new HeapTestSuperClass();
136 } 134 }
137 135
138 virtual ~HeapTestSuperClass() 136 virtual ~HeapTestSuperClass()
139 { 137 {
140 ++s_destructorCalls; 138 ++s_destructorCalls;
141 } 139 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 private: 172 private:
175 173
176 HeapTestSubClass() : m_magic(classMagic) { } 174 HeapTestSubClass() : m_magic(classMagic) { }
177 175
178 const size_t m_magic; 176 const size_t m_magic;
179 }; 177 };
180 178
181 int HeapTestSubClass::s_destructorCalls = 0; 179 int HeapTestSubClass::s_destructorCalls = 0;
182 180
183 class HeapAllocatedArray : public GarbageCollected<HeapAllocatedArray> { 181 class HeapAllocatedArray : public GarbageCollected<HeapAllocatedArray> {
184 DECLARE_GC_INFO
185 public: 182 public:
186 HeapAllocatedArray() 183 HeapAllocatedArray()
187 { 184 {
188 for (int i = 0; i < s_arraySize; ++i) { 185 for (int i = 0; i < s_arraySize; ++i) {
189 m_array[i] = i % 128; 186 m_array[i] = i % 128;
190 } 187 }
191 } 188 }
192 189
193 int8_t at(size_t i) { return m_array[i]; } 190 int8_t at(size_t i) { return m_array[i]; }
194 void trace(Visitor*) { } 191 void trace(Visitor*) { }
(...skipping 10 matching lines...) Expand all
205 getHeapStats(heapStats); 202 getHeapStats(heapStats);
206 size_t used = heapStats->totalObjectSpace(); 203 size_t used = heapStats->totalObjectSpace();
207 Heap::collectGarbage(ThreadState::NoHeapPointersOnStack); 204 Heap::collectGarbage(ThreadState::NoHeapPointersOnStack);
208 getHeapStats(heapStats); 205 getHeapStats(heapStats);
209 if (heapStats->totalObjectSpace() >= used) 206 if (heapStats->totalObjectSpace() >= used)
210 break; 207 break;
211 } 208 }
212 } 209 }
213 210
214 class IntWrapper : public GarbageCollectedFinalized<IntWrapper> { 211 class IntWrapper : public GarbageCollectedFinalized<IntWrapper> {
215 DECLARE_GC_INFO
216 public: 212 public:
217 static IntWrapper* create(int x) 213 static IntWrapper* create(int x)
218 { 214 {
219 return new IntWrapper(x); 215 return new IntWrapper(x);
220 } 216 }
221 217
222 virtual ~IntWrapper() 218 virtual ~IntWrapper()
223 { 219 {
224 ++s_destructorCalls; 220 ++s_destructorCalls;
225 } 221 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 // sizes. This is done in a different way on 32 bit and 64 bit, so we have to 316 // sizes. This is done in a different way on 32 bit and 64 bit, so we have to
321 // have some slack in the tests. 317 // have some slack in the tests.
322 template<typename T> 318 template<typename T>
323 void CheckWithSlack(T expected, T actual, int slack) 319 void CheckWithSlack(T expected, T actual, int slack)
324 { 320 {
325 EXPECT_LE(expected, actual); 321 EXPECT_LE(expected, actual);
326 EXPECT_GE((intptr_t)expected + slack, (intptr_t)actual); 322 EXPECT_GE((intptr_t)expected + slack, (intptr_t)actual);
327 } 323 }
328 324
329 class TraceCounter : public GarbageCollectedFinalized<TraceCounter> { 325 class TraceCounter : public GarbageCollectedFinalized<TraceCounter> {
330 DECLARE_GC_INFO
331 public: 326 public:
332 static TraceCounter* create() 327 static TraceCounter* create()
333 { 328 {
334 return new TraceCounter(); 329 return new TraceCounter();
335 } 330 }
336 331
337 void trace(Visitor*) { m_traceCount++; } 332 void trace(Visitor*) { m_traceCount++; }
338 333
339 int traceCount() { return m_traceCount; } 334 int traceCount() { return m_traceCount; }
340 335
341 private: 336 private:
342 TraceCounter() 337 TraceCounter()
343 : m_traceCount(0) 338 : m_traceCount(0)
344 { 339 {
345 } 340 }
346 341
347 int m_traceCount; 342 int m_traceCount;
348 }; 343 };
349 344
350 class ClassWithMember : public GarbageCollected<ClassWithMember> { 345 class ClassWithMember : public GarbageCollected<ClassWithMember> {
351 DECLARE_GC_INFO
352 public: 346 public:
353 static ClassWithMember* create() 347 static ClassWithMember* create()
354 { 348 {
355 return new ClassWithMember(); 349 return new ClassWithMember();
356 } 350 }
357 351
358 void trace(Visitor* visitor) 352 void trace(Visitor* visitor)
359 { 353 {
360 EXPECT_TRUE(visitor->isMarked(this)); 354 EXPECT_TRUE(visitor->isMarked(this));
361 if (!traceCount()) 355 if (!traceCount())
362 EXPECT_FALSE(visitor->isMarked(m_traceCounter)); 356 EXPECT_FALSE(visitor->isMarked(m_traceCounter));
363 else 357 else
364 EXPECT_TRUE(visitor->isMarked(m_traceCounter)); 358 EXPECT_TRUE(visitor->isMarked(m_traceCounter));
365 359
366 visitor->trace(m_traceCounter); 360 visitor->trace(m_traceCounter);
367 } 361 }
368 362
369 int traceCount() { return m_traceCounter->traceCount(); } 363 int traceCount() { return m_traceCounter->traceCount(); }
370 364
371 private: 365 private:
372 ClassWithMember() 366 ClassWithMember()
373 : m_traceCounter(TraceCounter::create()) 367 : m_traceCounter(TraceCounter::create())
374 { } 368 { }
375 369
376 Member<TraceCounter> m_traceCounter; 370 Member<TraceCounter> m_traceCounter;
377 }; 371 };
378 372
379 class SimpleFinalizedObject : public GarbageCollectedFinalized<SimpleFinalizedOb ject> { 373 class SimpleFinalizedObject : public GarbageCollectedFinalized<SimpleFinalizedOb ject> {
380 DECLARE_GC_INFO
381 public: 374 public:
382 static SimpleFinalizedObject* create() 375 static SimpleFinalizedObject* create()
383 { 376 {
384 return new SimpleFinalizedObject(); 377 return new SimpleFinalizedObject();
385 } 378 }
386 379
387 ~SimpleFinalizedObject() 380 ~SimpleFinalizedObject()
388 { 381 {
389 ++s_destructorCalls; 382 ++s_destructorCalls;
390 } 383 }
391 384
392 static int s_destructorCalls; 385 static int s_destructorCalls;
393 386
394 void trace(Visitor*) { } 387 void trace(Visitor*) { }
395 388
396 private: 389 private:
397 SimpleFinalizedObject() { } 390 SimpleFinalizedObject() { }
398 }; 391 };
399 392
400 int SimpleFinalizedObject::s_destructorCalls = 0; 393 int SimpleFinalizedObject::s_destructorCalls = 0;
401 394
402 class TestTypedHeapClass : public GarbageCollected<TestTypedHeapClass> { 395 class TestTypedHeapClass : public GarbageCollected<TestTypedHeapClass> {
403 DECLARE_GC_INFO
404 public: 396 public:
405 static TestTypedHeapClass* create() 397 static TestTypedHeapClass* create()
406 { 398 {
407 return new TestTypedHeapClass(); 399 return new TestTypedHeapClass();
408 } 400 }
409 401
410 void trace(Visitor*) { } 402 void trace(Visitor*) { }
411 403
412 private: 404 private:
413 TestTypedHeapClass() { } 405 TestTypedHeapClass() { }
414 }; 406 };
415 407
416 class Bar : public GarbageCollectedFinalized<Bar> { 408 class Bar : public GarbageCollectedFinalized<Bar> {
417 DECLARE_GC_INFO
418 public: 409 public:
419 static Bar* create() 410 static Bar* create()
420 { 411 {
421 return new Bar(); 412 return new Bar();
422 } 413 }
423 414
424 void finalize() 415 void finalize()
425 { 416 {
426 EXPECT_TRUE(m_magic == magic); 417 EXPECT_TRUE(m_magic == magic);
427 m_magic = 0; 418 m_magic = 0;
(...skipping 10 matching lines...) Expand all
438 Bar() 429 Bar()
439 : m_magic(magic) 430 : m_magic(magic)
440 { 431 {
441 s_live++; 432 s_live++;
442 } 433 }
443 }; 434 };
444 435
445 unsigned Bar::s_live = 0; 436 unsigned Bar::s_live = 0;
446 437
447 class Baz : public GarbageCollected<Baz> { 438 class Baz : public GarbageCollected<Baz> {
448 DECLARE_GC_INFO
449 public: 439 public:
450 static Baz* create(Bar* bar) 440 static Baz* create(Bar* bar)
451 { 441 {
452 return new Baz(bar); 442 return new Baz(bar);
453 } 443 }
454 444
455 void trace(Visitor* visitor) 445 void trace(Visitor* visitor)
456 { 446 {
457 visitor->trace(m_bar); 447 visitor->trace(m_bar);
458 } 448 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 m_bars[i] = Bar::create(); 523 m_bars[i] = Bar::create();
534 m_width++; 524 m_width++;
535 } 525 }
536 } 526 }
537 527
538 unsigned m_width; 528 unsigned m_width;
539 Member<Bar> m_bars[width]; 529 Member<Bar> m_bars[width];
540 }; 530 };
541 531
542 class ConstructorAllocation : public GarbageCollected<ConstructorAllocation> { 532 class ConstructorAllocation : public GarbageCollected<ConstructorAllocation> {
543 DECLARE_GC_INFO
544 public: 533 public:
545 static ConstructorAllocation* create() { return new ConstructorAllocation(); } 534 static ConstructorAllocation* create() { return new ConstructorAllocation(); }
546 535
547 void trace(Visitor* visitor) { visitor->trace(m_intWrapper); } 536 void trace(Visitor* visitor) { visitor->trace(m_intWrapper); }
548 537
549 private: 538 private:
550 ConstructorAllocation() 539 ConstructorAllocation()
551 { 540 {
552 m_intWrapper = IntWrapper::create(42); 541 m_intWrapper = IntWrapper::create(42);
553 } 542 }
554 543
555 Member<IntWrapper> m_intWrapper; 544 Member<IntWrapper> m_intWrapper;
556 }; 545 };
557 546
558 class LargeObject : public GarbageCollectedFinalized<LargeObject> { 547 class LargeObject : public GarbageCollectedFinalized<LargeObject> {
559 DECLARE_GC_INFO
560 public: 548 public:
561 ~LargeObject() 549 ~LargeObject()
562 { 550 {
563 s_destructorCalls++; 551 s_destructorCalls++;
564 } 552 }
565 static LargeObject* create() { return new LargeObject(); } 553 static LargeObject* create() { return new LargeObject(); }
566 char get(size_t i) { return m_data[i]; } 554 char get(size_t i) { return m_data[i]; }
567 void set(size_t i, char c) { m_data[i] = c; } 555 void set(size_t i, char c) { m_data[i] = c; }
568 size_t length() { return s_length; } 556 size_t length() { return s_length; }
569 void trace(Visitor* visitor) 557 void trace(Visitor* visitor)
570 { 558 {
571 visitor->trace(m_intWrapper); 559 visitor->trace(m_intWrapper);
572 } 560 }
573 static int s_destructorCalls; 561 static int s_destructorCalls;
574 562
575 private: 563 private:
576 static const size_t s_length = 1024*1024; 564 static const size_t s_length = 1024*1024;
577 LargeObject() 565 LargeObject()
578 { 566 {
579 m_intWrapper = IntWrapper::create(23); 567 m_intWrapper = IntWrapper::create(23);
580 } 568 }
581 Member<IntWrapper> m_intWrapper; 569 Member<IntWrapper> m_intWrapper;
582 char m_data[s_length]; 570 char m_data[s_length];
583 }; 571 };
584 572
585 int LargeObject::s_destructorCalls = 0; 573 int LargeObject::s_destructorCalls = 0;
586 574
587 class RefCountedAndGarbageCollected : public RefCountedGarbageCollected<RefCount edAndGarbageCollected> { 575 class RefCountedAndGarbageCollected : public RefCountedGarbageCollected<RefCount edAndGarbageCollected> {
588 DECLARE_GC_INFO
589 public: 576 public:
590 static PassRefPtr<RefCountedAndGarbageCollected> create() 577 static PassRefPtr<RefCountedAndGarbageCollected> create()
591 { 578 {
592 return adoptRef(new RefCountedAndGarbageCollected()); 579 return adoptRef(new RefCountedAndGarbageCollected());
593 } 580 }
594 581
595 ~RefCountedAndGarbageCollected() 582 ~RefCountedAndGarbageCollected()
596 { 583 {
597 ++s_destructorCalls; 584 ++s_destructorCalls;
598 } 585 }
599 586
600 void trace(Visitor*) { } 587 void trace(Visitor*) { }
601 588
602 static int s_destructorCalls; 589 static int s_destructorCalls;
603 590
604 private: 591 private:
605 RefCountedAndGarbageCollected() 592 RefCountedAndGarbageCollected()
606 { 593 {
607 } 594 }
608 }; 595 };
609 596
610 int RefCountedAndGarbageCollected::s_destructorCalls = 0; 597 int RefCountedAndGarbageCollected::s_destructorCalls = 0;
611 598
612 class RefCountedAndGarbageCollected2 : public HeapTestOtherSuperClass, public Re fCountedGarbageCollected<RefCountedAndGarbageCollected2> { 599 class RefCountedAndGarbageCollected2 : public HeapTestOtherSuperClass, public Re fCountedGarbageCollected<RefCountedAndGarbageCollected2> {
613 DECLARE_GC_INFO
614 public: 600 public:
615 static RefCountedAndGarbageCollected2* create() 601 static RefCountedAndGarbageCollected2* create()
616 { 602 {
617 return adoptRefCountedGarbageCollected(new RefCountedAndGarbageCollected 2()); 603 return adoptRefCountedGarbageCollected(new RefCountedAndGarbageCollected 2());
618 } 604 }
619 605
620 ~RefCountedAndGarbageCollected2() 606 ~RefCountedAndGarbageCollected2()
621 { 607 {
622 ++s_destructorCalls; 608 ++s_destructorCalls;
623 } 609 }
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 } 749 }
764 750
765 Member<Bar> m_strongBar; 751 Member<Bar> m_strongBar;
766 WeakMember<Bar> m_weakBar; 752 WeakMember<Bar> m_weakBar;
767 }; 753 };
768 754
769 755
770 class SuperClass; 756 class SuperClass;
771 757
772 class PointsBack : public RefCountedWillBeGarbageCollectedFinalized<PointsBack> { 758 class PointsBack : public RefCountedWillBeGarbageCollectedFinalized<PointsBack> {
773 DECLARE_GC_INFO;
774 public: 759 public:
775 static PassRefPtrWillBeRawPtr<PointsBack> create() 760 static PassRefPtrWillBeRawPtr<PointsBack> create()
776 { 761 {
777 return adoptRefWillBeNoop(new PointsBack()); 762 return adoptRefWillBeNoop(new PointsBack());
778 } 763 }
779 764
780 ~PointsBack() 765 ~PointsBack()
781 { 766 {
782 --s_aliveCount; 767 --s_aliveCount;
783 } 768 }
(...skipping 18 matching lines...) Expand all
802 { 787 {
803 ++s_aliveCount; 788 ++s_aliveCount;
804 } 789 }
805 790
806 RawPtrWillBeWeakMember<SuperClass> m_backPointer; 791 RawPtrWillBeWeakMember<SuperClass> m_backPointer;
807 }; 792 };
808 793
809 int PointsBack::s_aliveCount = 0; 794 int PointsBack::s_aliveCount = 0;
810 795
811 class SuperClass : public RefCountedWillBeGarbageCollectedFinalized<SuperClass> { 796 class SuperClass : public RefCountedWillBeGarbageCollectedFinalized<SuperClass> {
812 DECLARE_GC_INFO;
813 public: 797 public:
814 static PassRefPtrWillBeRawPtr<SuperClass> create(PassRefPtrWillBeRawPtr<Poin tsBack> pointsBack) 798 static PassRefPtrWillBeRawPtr<SuperClass> create(PassRefPtrWillBeRawPtr<Poin tsBack> pointsBack)
815 { 799 {
816 return adoptRefWillBeNoop(new SuperClass(pointsBack)); 800 return adoptRefWillBeNoop(new SuperClass(pointsBack));
817 } 801 }
818 802
819 virtual ~SuperClass() 803 virtual ~SuperClass()
820 { 804 {
821 #if !ENABLE_OILPAN 805 #if !ENABLE_OILPAN
822 m_pointsBack->setBackPointer(0); 806 m_pointsBack->setBackPointer(0);
(...skipping 26 matching lines...) Expand all
849 m_pointsBack->setBackPointer(this); 833 m_pointsBack->setBackPointer(this);
850 ++s_aliveCount; 834 ++s_aliveCount;
851 } 835 }
852 836
853 private: 837 private:
854 RefPtrWillBeMember<PointsBack> m_pointsBack; 838 RefPtrWillBeMember<PointsBack> m_pointsBack;
855 }; 839 };
856 840
857 int SuperClass::s_aliveCount = 0; 841 int SuperClass::s_aliveCount = 0;
858 class SubData : public NoBaseWillBeGarbageCollectedFinalized<SubData> { 842 class SubData : public NoBaseWillBeGarbageCollectedFinalized<SubData> {
859 DECLARE_GC_INFO
860 public: 843 public:
861 SubData() { ++s_aliveCount; } 844 SubData() { ++s_aliveCount; }
862 ~SubData() { --s_aliveCount; } 845 ~SubData() { --s_aliveCount; }
863 846
864 void trace(Visitor*) { } 847 void trace(Visitor*) { }
865 848
866 static int s_aliveCount; 849 static int s_aliveCount;
867 }; 850 };
868 851
869 int SubData::s_aliveCount = 0; 852 int SubData::s_aliveCount = 0;
(...skipping 27 matching lines...) Expand all
897 ++s_aliveCount; 880 ++s_aliveCount;
898 } 881 }
899 882
900 private: 883 private:
901 OwnPtrWillBeMember<SubData> m_data; 884 OwnPtrWillBeMember<SubData> m_data;
902 }; 885 };
903 886
904 int SubClass::s_aliveCount = 0; 887 int SubClass::s_aliveCount = 0;
905 888
906 class TransitionRefCounted : public RefCountedWillBeRefCountedGarbageCollected<T ransitionRefCounted> { 889 class TransitionRefCounted : public RefCountedWillBeRefCountedGarbageCollected<T ransitionRefCounted> {
907 DECLARE_GC_INFO
908 public: 890 public:
909 static PassRefPtrWillBeRawPtr<TransitionRefCounted> create() 891 static PassRefPtrWillBeRawPtr<TransitionRefCounted> create()
910 { 892 {
911 return adoptRefCountedWillBeRefCountedGarbageCollected(new TransitionRef Counted()); 893 return adoptRefCountedWillBeRefCountedGarbageCollected(new TransitionRef Counted());
912 } 894 }
913 895
914 ~TransitionRefCounted() 896 ~TransitionRefCounted()
915 { 897 {
916 --s_aliveCount; 898 --s_aliveCount;
917 } 899 }
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
1471 } 1453 }
1472 HeapStats backToInitial; 1454 HeapStats backToInitial;
1473 clearOutOldGarbage(&backToInitial); 1455 clearOutOldGarbage(&backToInitial);
1474 EXPECT_TRUE(initialHeapSize == backToInitial); 1456 EXPECT_TRUE(initialHeapSize == backToInitial);
1475 EXPECT_EQ(11, IntWrapper::s_destructorCalls); 1457 EXPECT_EQ(11, IntWrapper::s_destructorCalls);
1476 EXPECT_EQ(11, LargeObject::s_destructorCalls); 1458 EXPECT_EQ(11, LargeObject::s_destructorCalls);
1477 Heap::collectGarbage(ThreadState::NoHeapPointersOnStack); 1459 Heap::collectGarbage(ThreadState::NoHeapPointersOnStack);
1478 } 1460 }
1479 1461
1480 class Container : public GarbageCollected<Container> { 1462 class Container : public GarbageCollected<Container> {
1481 DECLARE_GC_INFO
1482 public: 1463 public:
1483 static Container* create() { return new Container(); } 1464 static Container* create() { return new Container(); }
1484 HeapHashMap<Member<IntWrapper>, Member<IntWrapper> > map; 1465 HeapHashMap<Member<IntWrapper>, Member<IntWrapper> > map;
1485 HeapHashSet<Member<IntWrapper> > set; 1466 HeapHashSet<Member<IntWrapper> > set;
1486 HeapHashSet<Member<IntWrapper> > set2; 1467 HeapHashSet<Member<IntWrapper> > set2;
1487 HeapVector<Member<IntWrapper>, 2> vector; 1468 HeapVector<Member<IntWrapper>, 2> vector;
1488 void trace(Visitor* visitor) 1469 void trace(Visitor* visitor)
1489 { 1470 {
1490 visitor->trace(map); 1471 visitor->trace(map);
1491 visitor->trace(set); 1472 visitor->trace(set);
1492 visitor->trace(set2); 1473 visitor->trace(set2);
1493 visitor->trace(vector); 1474 visitor->trace(vector);
1494 } 1475 }
1495 }; 1476 };
1496 1477
1497 struct ShouldBeTraced { 1478 struct ShouldBeTraced {
1498 explicit ShouldBeTraced(IntWrapper* wrapper) : m_wrapper(wrapper) { } 1479 explicit ShouldBeTraced(IntWrapper* wrapper) : m_wrapper(wrapper) { }
1499 void trace(Visitor* visitor) { visitor->trace(m_wrapper); } 1480 void trace(Visitor* visitor) { visitor->trace(m_wrapper); }
1500 Member<IntWrapper> m_wrapper; 1481 Member<IntWrapper> m_wrapper;
1501 }; 1482 };
1502 1483
1503 class OffHeapContainer : public GarbageCollectedFinalized<OffHeapContainer> { 1484 class OffHeapContainer : public GarbageCollectedFinalized<OffHeapContainer> {
1504 DECLARE_GC_INFO
1505 public: 1485 public:
1506 static OffHeapContainer* create() { return new OffHeapContainer(); } 1486 static OffHeapContainer* create() { return new OffHeapContainer(); }
1507 1487
1508 OffHeapContainer() 1488 OffHeapContainer()
1509 { 1489 {
1510 m_deque1.append(ShouldBeTraced(IntWrapper::create(1))); 1490 m_deque1.append(ShouldBeTraced(IntWrapper::create(1)));
1511 m_vector1.append(ShouldBeTraced(IntWrapper::create(2))); 1491 m_vector1.append(ShouldBeTraced(IntWrapper::create(2)));
1512 m_deque2.append(IntWrapper::create(3)); 1492 m_deque2.append(IntWrapper::create(3));
1513 m_vector2.append(IntWrapper::create(4)); 1493 m_vector2.append(IntWrapper::create(4));
1514 m_hashSet.add(IntWrapper::create(5)); 1494 m_hashSet.add(IntWrapper::create(5));
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after
2282 2262
2283 it->value.append(IntWrapper::create(42)); 2263 it->value.append(IntWrapper::create(42));
2284 EXPECT_EQ(1u, map->get(key).size()); 2264 EXPECT_EQ(1u, map->get(key).size());
2285 2265
2286 Persistent<HeapHashMap<void*, IntVector> > keepAlive(map); 2266 Persistent<HeapHashMap<void*, IntVector> > keepAlive(map);
2287 Heap::collectGarbage(ThreadState::NoHeapPointersOnStack); 2267 Heap::collectGarbage(ThreadState::NoHeapPointersOnStack);
2288 EXPECT_EQ(1u, map->get(key).size()); 2268 EXPECT_EQ(1u, map->get(key).size());
2289 EXPECT_EQ(0, IntWrapper::s_destructorCalls); 2269 EXPECT_EQ(0, IntWrapper::s_destructorCalls);
2290 } 2270 }
2291 2271
2292 DEFINE_GC_INFO(Bar);
2293 DEFINE_GC_INFO(Baz);
2294 DEFINE_GC_INFO(ClassWithMember);
2295 DEFINE_GC_INFO(ConstructorAllocation);
2296 DEFINE_GC_INFO(Container);
2297 DEFINE_GC_INFO(HeapAllocatedArray);
2298 DEFINE_GC_INFO(HeapTestSuperClass);
2299 DEFINE_GC_INFO(IntWrapper);
2300 DEFINE_GC_INFO(LargeObject);
2301 DEFINE_GC_INFO(OffHeapContainer);
2302 DEFINE_GC_INFO(PointsBack);
2303 DEFINE_GC_INFO(RefCountedAndGarbageCollected);
2304 DEFINE_GC_INFO(RefCountedAndGarbageCollected2);
2305 DEFINE_GC_INFO(SimpleFinalizedObject);
2306 DEFINE_GC_INFO(SimpleObject);
2307 DEFINE_GC_INFO(SuperClass);
2308 DEFINE_GC_INFO(SubData);
2309 DEFINE_GC_INFO(TestTypedHeapClass);
2310 DEFINE_GC_INFO(TraceCounter);
2311 DEFINE_GC_INFO(TransitionRefCounted);
2312
2313 } // namespace 2272 } // namespace
OLDNEW
« no previous file with comments | « Source/heap/Heap.h ('k') | Source/heap/Visitor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698