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

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

Issue 2615813003: Migrate WTF::Vector::append() to ::push_back() [part 14 of N] (Closed)
Patch Set: rebase, small fix in FontSettings.h Created 3 years, 11 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
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 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 }; 482 };
483 483
484 int IntWrapper::s_destructorCalls = 0; 484 int IntWrapper::s_destructorCalls = 0;
485 int OffHeapInt::s_destructorCalls = 0; 485 int OffHeapInt::s_destructorCalls = 0;
486 486
487 class ThreadedTesterBase { 487 class ThreadedTesterBase {
488 protected: 488 protected:
489 static void test(ThreadedTesterBase* tester) { 489 static void test(ThreadedTesterBase* tester) {
490 Vector<std::unique_ptr<WebThread>, numberOfThreads> m_threads; 490 Vector<std::unique_ptr<WebThread>, numberOfThreads> m_threads;
491 for (int i = 0; i < numberOfThreads; i++) { 491 for (int i = 0; i < numberOfThreads; i++) {
492 m_threads.append(WTF::wrapUnique( 492 m_threads.push_back(WTF::wrapUnique(
493 Platform::current()->createThread("blink gc testing thread"))); 493 Platform::current()->createThread("blink gc testing thread")));
494 m_threads.back()->getWebTaskRunner()->postTask( 494 m_threads.back()->getWebTaskRunner()->postTask(
495 BLINK_FROM_HERE, 495 BLINK_FROM_HERE,
496 crossThreadBind(threadFunc, crossThreadUnretained(tester))); 496 crossThreadBind(threadFunc, crossThreadUnretained(tester)));
497 } 497 }
498 while (tester->m_threadsToFinish) { 498 while (tester->m_threadsToFinish) {
499 SafePointScope scope(BlinkGC::NoHeapPointersOnStack); 499 SafePointScope scope(BlinkGC::NoHeapPointersOnStack);
500 testing::yieldCurrentThread(); 500 testing::yieldCurrentThread();
501 } 501 }
502 delete tester; 502 delete tester;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 Vector<std::unique_ptr<GlobalIntWrapperPersistent>> m_crossPersistents; 550 Vector<std::unique_ptr<GlobalIntWrapperPersistent>> m_crossPersistents;
551 551
552 std::unique_ptr<GlobalIntWrapperPersistent> createGlobalPersistent( 552 std::unique_ptr<GlobalIntWrapperPersistent> createGlobalPersistent(
553 int value) { 553 int value) {
554 return WTF::wrapUnique( 554 return WTF::wrapUnique(
555 new GlobalIntWrapperPersistent(IntWrapper::create(value))); 555 new GlobalIntWrapperPersistent(IntWrapper::create(value)));
556 } 556 }
557 557
558 void addGlobalPersistent() { 558 void addGlobalPersistent() {
559 MutexLocker lock(m_mutex); 559 MutexLocker lock(m_mutex);
560 m_crossPersistents.append(createGlobalPersistent(0x2a2a2a2a)); 560 m_crossPersistents.push_back(createGlobalPersistent(0x2a2a2a2a));
561 } 561 }
562 562
563 void runThread() override { 563 void runThread() override {
564 ThreadState::attachCurrentThread(BlinkGC::MainThreadHeapMode); 564 ThreadState::attachCurrentThread(BlinkGC::MainThreadHeapMode);
565 565
566 // Add a cross-thread persistent from this thread; the test object 566 // Add a cross-thread persistent from this thread; the test object
567 // verifies that it will have been cleared out after the threads 567 // verifies that it will have been cleared out after the threads
568 // have all detached, running their termination GCs while doing so. 568 // have all detached, running their termination GCs while doing so.
569 addGlobalPersistent(); 569 addGlobalPersistent();
570 570
(...skipping 1773 matching lines...) Expand 10 before | Expand all | Expand 10 after
2344 2344
2345 TEST(HeapTest, HeapVectorWithInlineCapacity) { 2345 TEST(HeapTest, HeapVectorWithInlineCapacity) {
2346 IntWrapper* one = IntWrapper::create(1); 2346 IntWrapper* one = IntWrapper::create(1);
2347 IntWrapper* two = IntWrapper::create(2); 2347 IntWrapper* two = IntWrapper::create(2);
2348 IntWrapper* three = IntWrapper::create(3); 2348 IntWrapper* three = IntWrapper::create(3);
2349 IntWrapper* four = IntWrapper::create(4); 2349 IntWrapper* four = IntWrapper::create(4);
2350 IntWrapper* five = IntWrapper::create(5); 2350 IntWrapper* five = IntWrapper::create(5);
2351 IntWrapper* six = IntWrapper::create(6); 2351 IntWrapper* six = IntWrapper::create(6);
2352 { 2352 {
2353 HeapVector<Member<IntWrapper>, 2> vector; 2353 HeapVector<Member<IntWrapper>, 2> vector;
2354 vector.append(one); 2354 vector.push_back(one);
2355 vector.append(two); 2355 vector.push_back(two);
2356 conservativelyCollectGarbage(); 2356 conservativelyCollectGarbage();
2357 EXPECT_TRUE(vector.contains(one)); 2357 EXPECT_TRUE(vector.contains(one));
2358 EXPECT_TRUE(vector.contains(two)); 2358 EXPECT_TRUE(vector.contains(two));
2359 2359
2360 vector.append(three); 2360 vector.push_back(three);
2361 vector.append(four); 2361 vector.push_back(four);
2362 conservativelyCollectGarbage(); 2362 conservativelyCollectGarbage();
2363 EXPECT_TRUE(vector.contains(one)); 2363 EXPECT_TRUE(vector.contains(one));
2364 EXPECT_TRUE(vector.contains(two)); 2364 EXPECT_TRUE(vector.contains(two));
2365 EXPECT_TRUE(vector.contains(three)); 2365 EXPECT_TRUE(vector.contains(three));
2366 EXPECT_TRUE(vector.contains(four)); 2366 EXPECT_TRUE(vector.contains(four));
2367 2367
2368 vector.shrink(1); 2368 vector.shrink(1);
2369 conservativelyCollectGarbage(); 2369 conservativelyCollectGarbage();
2370 EXPECT_TRUE(vector.contains(one)); 2370 EXPECT_TRUE(vector.contains(one));
2371 EXPECT_FALSE(vector.contains(two)); 2371 EXPECT_FALSE(vector.contains(two));
2372 EXPECT_FALSE(vector.contains(three)); 2372 EXPECT_FALSE(vector.contains(three));
2373 EXPECT_FALSE(vector.contains(four)); 2373 EXPECT_FALSE(vector.contains(four));
2374 } 2374 }
2375 { 2375 {
2376 HeapVector<Member<IntWrapper>, 2> vector1; 2376 HeapVector<Member<IntWrapper>, 2> vector1;
2377 HeapVector<Member<IntWrapper>, 2> vector2; 2377 HeapVector<Member<IntWrapper>, 2> vector2;
2378 2378
2379 vector1.append(one); 2379 vector1.push_back(one);
2380 vector2.append(two); 2380 vector2.push_back(two);
2381 vector1.swap(vector2); 2381 vector1.swap(vector2);
2382 conservativelyCollectGarbage(); 2382 conservativelyCollectGarbage();
2383 EXPECT_TRUE(vector1.contains(two)); 2383 EXPECT_TRUE(vector1.contains(two));
2384 EXPECT_TRUE(vector2.contains(one)); 2384 EXPECT_TRUE(vector2.contains(one));
2385 } 2385 }
2386 { 2386 {
2387 HeapVector<Member<IntWrapper>, 2> vector1; 2387 HeapVector<Member<IntWrapper>, 2> vector1;
2388 HeapVector<Member<IntWrapper>, 2> vector2; 2388 HeapVector<Member<IntWrapper>, 2> vector2;
2389 2389
2390 vector1.append(one); 2390 vector1.push_back(one);
2391 vector1.append(two); 2391 vector1.push_back(two);
2392 vector2.append(three); 2392 vector2.push_back(three);
2393 vector2.append(four); 2393 vector2.push_back(four);
2394 vector2.append(five); 2394 vector2.push_back(five);
2395 vector2.append(six); 2395 vector2.push_back(six);
2396 vector1.swap(vector2); 2396 vector1.swap(vector2);
2397 conservativelyCollectGarbage(); 2397 conservativelyCollectGarbage();
2398 EXPECT_TRUE(vector1.contains(three)); 2398 EXPECT_TRUE(vector1.contains(three));
2399 EXPECT_TRUE(vector1.contains(four)); 2399 EXPECT_TRUE(vector1.contains(four));
2400 EXPECT_TRUE(vector1.contains(five)); 2400 EXPECT_TRUE(vector1.contains(five));
2401 EXPECT_TRUE(vector1.contains(six)); 2401 EXPECT_TRUE(vector1.contains(six));
2402 EXPECT_TRUE(vector2.contains(one)); 2402 EXPECT_TRUE(vector2.contains(one));
2403 EXPECT_TRUE(vector2.contains(two)); 2403 EXPECT_TRUE(vector2.contains(two));
2404 } 2404 }
2405 } 2405 }
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
2549 memberPrimitive->add(two, 3); 2549 memberPrimitive->add(two, 3);
2550 memberPrimitive->add(three, 4); 2550 memberPrimitive->add(three, 4);
2551 memberPrimitive->add(four, 1); 2551 memberPrimitive->add(four, 1);
2552 set2->add(one); 2552 set2->add(one);
2553 set2->add(two); 2553 set2->add(two);
2554 set2->add(three); 2554 set2->add(three);
2555 set2->add(four); 2555 set2->add(four);
2556 set->add(oneB); 2556 set->add(oneB);
2557 set3->add(oneB); 2557 set3->add(oneB);
2558 set3->add(oneB); 2558 set3->add(oneB);
2559 vector->append(oneB); 2559 vector->push_back(oneB);
2560 deque->append(oneB); 2560 deque->append(oneB);
2561 vector2->append(threeB); 2561 vector2->push_back(threeB);
2562 vector2->append(fourB); 2562 vector2->push_back(fourB);
2563 deque2->append(threeE); 2563 deque2->append(threeE);
2564 deque2->append(fourE); 2564 deque2->append(fourE);
2565 vectorWU->append(PairWrappedUnwrapped(&*oneC, 42)); 2565 vectorWU->push_back(PairWrappedUnwrapped(&*oneC, 42));
2566 dequeWU->append(PairWrappedUnwrapped(&*oneE, 42)); 2566 dequeWU->append(PairWrappedUnwrapped(&*oneE, 42));
2567 vectorWU2->append(PairWrappedUnwrapped(&*threeC, 43)); 2567 vectorWU2->push_back(PairWrappedUnwrapped(&*threeC, 43));
2568 vectorWU2->append(PairWrappedUnwrapped(&*fourC, 44)); 2568 vectorWU2->push_back(PairWrappedUnwrapped(&*fourC, 44));
2569 vectorWU2->append(PairWrappedUnwrapped(&*fiveC, 45)); 2569 vectorWU2->push_back(PairWrappedUnwrapped(&*fiveC, 45));
2570 dequeWU2->append(PairWrappedUnwrapped(&*threeE, 43)); 2570 dequeWU2->append(PairWrappedUnwrapped(&*threeE, 43));
2571 dequeWU2->append(PairWrappedUnwrapped(&*fourE, 44)); 2571 dequeWU2->append(PairWrappedUnwrapped(&*fourE, 44));
2572 dequeWU2->append(PairWrappedUnwrapped(&*fiveE, 45)); 2572 dequeWU2->append(PairWrappedUnwrapped(&*fiveE, 45));
2573 vectorUW->append(PairUnwrappedWrapped(1, &*oneD)); 2573 vectorUW->push_back(PairUnwrappedWrapped(1, &*oneD));
2574 vectorUW2->append(PairUnwrappedWrapped(103, &*threeD)); 2574 vectorUW2->push_back(PairUnwrappedWrapped(103, &*threeD));
2575 vectorUW2->append(PairUnwrappedWrapped(104, &*fourD)); 2575 vectorUW2->push_back(PairUnwrappedWrapped(104, &*fourD));
2576 vectorUW2->append(PairUnwrappedWrapped(105, &*fiveD)); 2576 vectorUW2->push_back(PairUnwrappedWrapped(105, &*fiveD));
2577 dequeUW->append(PairUnwrappedWrapped(1, &*oneF)); 2577 dequeUW->append(PairUnwrappedWrapped(1, &*oneF));
2578 dequeUW2->append(PairUnwrappedWrapped(103, &*threeF)); 2578 dequeUW2->append(PairUnwrappedWrapped(103, &*threeF));
2579 dequeUW2->append(PairUnwrappedWrapped(104, &*fourF)); 2579 dequeUW2->append(PairUnwrappedWrapped(104, &*fourF));
2580 dequeUW2->append(PairUnwrappedWrapped(105, &*fiveF)); 2580 dequeUW2->append(PairUnwrappedWrapped(105, &*fiveF));
2581 2581
2582 EXPECT_TRUE(dequeContains(*deque, oneB)); 2582 EXPECT_TRUE(dequeContains(*deque, oneB));
2583 2583
2584 // Collect garbage. This should change nothing since we are keeping 2584 // Collect garbage. This should change nothing since we are keeping
2585 // alive the IntWrapper objects with on-stack pointers. 2585 // alive the IntWrapper objects with on-stack pointers.
2586 conservativelyCollectGarbage(); 2586 conservativelyCollectGarbage();
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
2769 typedef Vector<Persistent<IntWrapper>> PersistentVector; 2769 typedef Vector<Persistent<IntWrapper>> PersistentVector;
2770 2770
2771 Persistent<IntWrapper> one(IntWrapper::create(1)); 2771 Persistent<IntWrapper> one(IntWrapper::create(1));
2772 Persistent<IntWrapper> two(IntWrapper::create(2)); 2772 Persistent<IntWrapper> two(IntWrapper::create(2));
2773 Persistent<IntWrapper> three(IntWrapper::create(3)); 2773 Persistent<IntWrapper> three(IntWrapper::create(3));
2774 Persistent<IntWrapper> four(IntWrapper::create(4)); 2774 Persistent<IntWrapper> four(IntWrapper::create(4));
2775 Persistent<IntWrapper> five(IntWrapper::create(5)); 2775 Persistent<IntWrapper> five(IntWrapper::create(5));
2776 Persistent<IntWrapper> six(IntWrapper::create(6)); 2776 Persistent<IntWrapper> six(IntWrapper::create(6));
2777 { 2777 {
2778 PersistentVector vector; 2778 PersistentVector vector;
2779 vector.append(one); 2779 vector.push_back(one);
2780 vector.append(two); 2780 vector.push_back(two);
2781 conservativelyCollectGarbage(); 2781 conservativelyCollectGarbage();
2782 EXPECT_TRUE(vector.contains(one)); 2782 EXPECT_TRUE(vector.contains(one));
2783 EXPECT_TRUE(vector.contains(two)); 2783 EXPECT_TRUE(vector.contains(two));
2784 2784
2785 vector.append(three); 2785 vector.push_back(three);
2786 vector.append(four); 2786 vector.push_back(four);
2787 conservativelyCollectGarbage(); 2787 conservativelyCollectGarbage();
2788 EXPECT_TRUE(vector.contains(one)); 2788 EXPECT_TRUE(vector.contains(one));
2789 EXPECT_TRUE(vector.contains(two)); 2789 EXPECT_TRUE(vector.contains(two));
2790 EXPECT_TRUE(vector.contains(three)); 2790 EXPECT_TRUE(vector.contains(three));
2791 EXPECT_TRUE(vector.contains(four)); 2791 EXPECT_TRUE(vector.contains(four));
2792 2792
2793 vector.shrink(1); 2793 vector.shrink(1);
2794 conservativelyCollectGarbage(); 2794 conservativelyCollectGarbage();
2795 EXPECT_TRUE(vector.contains(one)); 2795 EXPECT_TRUE(vector.contains(one));
2796 EXPECT_FALSE(vector.contains(two)); 2796 EXPECT_FALSE(vector.contains(two));
2797 EXPECT_FALSE(vector.contains(three)); 2797 EXPECT_FALSE(vector.contains(three));
2798 EXPECT_FALSE(vector.contains(four)); 2798 EXPECT_FALSE(vector.contains(four));
2799 } 2799 }
2800 { 2800 {
2801 PersistentVector vector1; 2801 PersistentVector vector1;
2802 PersistentVector vector2; 2802 PersistentVector vector2;
2803 2803
2804 vector1.append(one); 2804 vector1.push_back(one);
2805 vector2.append(two); 2805 vector2.push_back(two);
2806 vector1.swap(vector2); 2806 vector1.swap(vector2);
2807 conservativelyCollectGarbage(); 2807 conservativelyCollectGarbage();
2808 EXPECT_TRUE(vector1.contains(two)); 2808 EXPECT_TRUE(vector1.contains(two));
2809 EXPECT_TRUE(vector2.contains(one)); 2809 EXPECT_TRUE(vector2.contains(one));
2810 } 2810 }
2811 { 2811 {
2812 PersistentVector vector1; 2812 PersistentVector vector1;
2813 PersistentVector vector2; 2813 PersistentVector vector2;
2814 2814
2815 vector1.append(one); 2815 vector1.push_back(one);
2816 vector1.append(two); 2816 vector1.push_back(two);
2817 vector2.append(three); 2817 vector2.push_back(three);
2818 vector2.append(four); 2818 vector2.push_back(four);
2819 vector2.append(five); 2819 vector2.push_back(five);
2820 vector2.append(six); 2820 vector2.push_back(six);
2821 vector1.swap(vector2); 2821 vector1.swap(vector2);
2822 conservativelyCollectGarbage(); 2822 conservativelyCollectGarbage();
2823 EXPECT_TRUE(vector1.contains(three)); 2823 EXPECT_TRUE(vector1.contains(three));
2824 EXPECT_TRUE(vector1.contains(four)); 2824 EXPECT_TRUE(vector1.contains(four));
2825 EXPECT_TRUE(vector1.contains(five)); 2825 EXPECT_TRUE(vector1.contains(five));
2826 EXPECT_TRUE(vector1.contains(six)); 2826 EXPECT_TRUE(vector1.contains(six));
2827 EXPECT_TRUE(vector2.contains(one)); 2827 EXPECT_TRUE(vector2.contains(one));
2828 EXPECT_TRUE(vector2.contains(two)); 2828 EXPECT_TRUE(vector2.contains(two));
2829 } 2829 }
2830 } 2830 }
2831 2831
2832 TEST(HeapTest, CrossThreadPersistentVector) { 2832 TEST(HeapTest, CrossThreadPersistentVector) {
2833 IntWrapper::s_destructorCalls = 0; 2833 IntWrapper::s_destructorCalls = 0;
2834 2834
2835 typedef Vector<CrossThreadPersistent<IntWrapper>> CrossThreadPersistentVector; 2835 typedef Vector<CrossThreadPersistent<IntWrapper>> CrossThreadPersistentVector;
2836 2836
2837 CrossThreadPersistent<IntWrapper> one(IntWrapper::create(1)); 2837 CrossThreadPersistent<IntWrapper> one(IntWrapper::create(1));
2838 CrossThreadPersistent<IntWrapper> two(IntWrapper::create(2)); 2838 CrossThreadPersistent<IntWrapper> two(IntWrapper::create(2));
2839 CrossThreadPersistent<IntWrapper> three(IntWrapper::create(3)); 2839 CrossThreadPersistent<IntWrapper> three(IntWrapper::create(3));
2840 CrossThreadPersistent<IntWrapper> four(IntWrapper::create(4)); 2840 CrossThreadPersistent<IntWrapper> four(IntWrapper::create(4));
2841 CrossThreadPersistent<IntWrapper> five(IntWrapper::create(5)); 2841 CrossThreadPersistent<IntWrapper> five(IntWrapper::create(5));
2842 CrossThreadPersistent<IntWrapper> six(IntWrapper::create(6)); 2842 CrossThreadPersistent<IntWrapper> six(IntWrapper::create(6));
2843 { 2843 {
2844 CrossThreadPersistentVector vector; 2844 CrossThreadPersistentVector vector;
2845 vector.append(one); 2845 vector.push_back(one);
2846 vector.append(two); 2846 vector.push_back(two);
2847 conservativelyCollectGarbage(); 2847 conservativelyCollectGarbage();
2848 EXPECT_TRUE(vector.contains(one)); 2848 EXPECT_TRUE(vector.contains(one));
2849 EXPECT_TRUE(vector.contains(two)); 2849 EXPECT_TRUE(vector.contains(two));
2850 2850
2851 vector.append(three); 2851 vector.push_back(three);
2852 vector.append(four); 2852 vector.push_back(four);
2853 conservativelyCollectGarbage(); 2853 conservativelyCollectGarbage();
2854 EXPECT_TRUE(vector.contains(one)); 2854 EXPECT_TRUE(vector.contains(one));
2855 EXPECT_TRUE(vector.contains(two)); 2855 EXPECT_TRUE(vector.contains(two));
2856 EXPECT_TRUE(vector.contains(three)); 2856 EXPECT_TRUE(vector.contains(three));
2857 EXPECT_TRUE(vector.contains(four)); 2857 EXPECT_TRUE(vector.contains(four));
2858 2858
2859 vector.shrink(1); 2859 vector.shrink(1);
2860 conservativelyCollectGarbage(); 2860 conservativelyCollectGarbage();
2861 EXPECT_TRUE(vector.contains(one)); 2861 EXPECT_TRUE(vector.contains(one));
2862 EXPECT_FALSE(vector.contains(two)); 2862 EXPECT_FALSE(vector.contains(two));
2863 EXPECT_FALSE(vector.contains(three)); 2863 EXPECT_FALSE(vector.contains(three));
2864 EXPECT_FALSE(vector.contains(four)); 2864 EXPECT_FALSE(vector.contains(four));
2865 } 2865 }
2866 { 2866 {
2867 CrossThreadPersistentVector vector1; 2867 CrossThreadPersistentVector vector1;
2868 CrossThreadPersistentVector vector2; 2868 CrossThreadPersistentVector vector2;
2869 2869
2870 vector1.append(one); 2870 vector1.push_back(one);
2871 vector2.append(two); 2871 vector2.push_back(two);
2872 vector1.swap(vector2); 2872 vector1.swap(vector2);
2873 conservativelyCollectGarbage(); 2873 conservativelyCollectGarbage();
2874 EXPECT_TRUE(vector1.contains(two)); 2874 EXPECT_TRUE(vector1.contains(two));
2875 EXPECT_TRUE(vector2.contains(one)); 2875 EXPECT_TRUE(vector2.contains(one));
2876 } 2876 }
2877 { 2877 {
2878 CrossThreadPersistentVector vector1; 2878 CrossThreadPersistentVector vector1;
2879 CrossThreadPersistentVector vector2; 2879 CrossThreadPersistentVector vector2;
2880 2880
2881 vector1.append(one); 2881 vector1.push_back(one);
2882 vector1.append(two); 2882 vector1.push_back(two);
2883 vector2.append(three); 2883 vector2.push_back(three);
2884 vector2.append(four); 2884 vector2.push_back(four);
2885 vector2.append(five); 2885 vector2.push_back(five);
2886 vector2.append(six); 2886 vector2.push_back(six);
2887 vector1.swap(vector2); 2887 vector1.swap(vector2);
2888 conservativelyCollectGarbage(); 2888 conservativelyCollectGarbage();
2889 EXPECT_TRUE(vector1.contains(three)); 2889 EXPECT_TRUE(vector1.contains(three));
2890 EXPECT_TRUE(vector1.contains(four)); 2890 EXPECT_TRUE(vector1.contains(four));
2891 EXPECT_TRUE(vector1.contains(five)); 2891 EXPECT_TRUE(vector1.contains(five));
2892 EXPECT_TRUE(vector1.contains(six)); 2892 EXPECT_TRUE(vector1.contains(six));
2893 EXPECT_TRUE(vector2.contains(one)); 2893 EXPECT_TRUE(vector2.contains(one));
2894 EXPECT_TRUE(vector2.contains(two)); 2894 EXPECT_TRUE(vector2.contains(two));
2895 } 2895 }
2896 } 2896 }
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
2997 } 2997 }
2998 } 2998 }
2999 2999
3000 class NonTrivialObject final { 3000 class NonTrivialObject final {
3001 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); 3001 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
3002 3002
3003 public: 3003 public:
3004 NonTrivialObject() {} 3004 NonTrivialObject() {}
3005 explicit NonTrivialObject(int num) { 3005 explicit NonTrivialObject(int num) {
3006 m_deque.append(IntWrapper::create(num)); 3006 m_deque.append(IntWrapper::create(num));
3007 m_vector.append(IntWrapper::create(num)); 3007 m_vector.push_back(IntWrapper::create(num));
3008 } 3008 }
3009 DEFINE_INLINE_TRACE() { 3009 DEFINE_INLINE_TRACE() {
3010 visitor->trace(m_deque); 3010 visitor->trace(m_deque);
3011 visitor->trace(m_vector); 3011 visitor->trace(m_vector);
3012 } 3012 }
3013 3013
3014 private: 3014 private:
3015 HeapDeque<Member<IntWrapper>> m_deque; 3015 HeapDeque<Member<IntWrapper>> m_deque;
3016 HeapVector<Member<IntWrapper>> m_vector; 3016 HeapVector<Member<IntWrapper>> m_vector;
3017 }; 3017 };
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
3063 typedef HeapHashCountedSet<WeakMember<IntWrapper>> WeakCountedSet; 3063 typedef HeapHashCountedSet<WeakMember<IntWrapper>> WeakCountedSet;
3064 3064
3065 Persistent<WeakStrong> weakStrong = new WeakStrong(); 3065 Persistent<WeakStrong> weakStrong = new WeakStrong();
3066 Persistent<StrongWeak> strongWeak = new StrongWeak(); 3066 Persistent<StrongWeak> strongWeak = new StrongWeak();
3067 Persistent<WeakWeak> weakWeak = new WeakWeak(); 3067 Persistent<WeakWeak> weakWeak = new WeakWeak();
3068 Persistent<WeakSet> weakSet = new WeakSet(); 3068 Persistent<WeakSet> weakSet = new WeakSet();
3069 Persistent<WeakCountedSet> weakCountedSet = new WeakCountedSet(); 3069 Persistent<WeakCountedSet> weakCountedSet = new WeakCountedSet();
3070 3070
3071 Persistent<IntWrapper> two = IntWrapper::create(2); 3071 Persistent<IntWrapper> two = IntWrapper::create(2);
3072 3072
3073 keepNumbersAlive.append(IntWrapper::create(103)); 3073 keepNumbersAlive.push_back(IntWrapper::create(103));
3074 keepNumbersAlive.append(IntWrapper::create(10)); 3074 keepNumbersAlive.push_back(IntWrapper::create(10));
3075 3075
3076 { 3076 {
3077 weakStrong->add(IntWrapper::create(1), two); 3077 weakStrong->add(IntWrapper::create(1), two);
3078 strongWeak->add(two, IntWrapper::create(1)); 3078 strongWeak->add(two, IntWrapper::create(1));
3079 weakWeak->add(two, IntWrapper::create(42)); 3079 weakWeak->add(two, IntWrapper::create(42));
3080 weakWeak->add(IntWrapper::create(42), two); 3080 weakWeak->add(IntWrapper::create(42), two);
3081 weakSet->add(IntWrapper::create(0)); 3081 weakSet->add(IntWrapper::create(0));
3082 weakSet->add(two); 3082 weakSet->add(two);
3083 weakSet->add(keepNumbersAlive[0]); 3083 weakSet->add(keepNumbersAlive[0]);
3084 weakSet->add(keepNumbersAlive[1]); 3084 weakSet->add(keepNumbersAlive[1]);
(...skipping 29 matching lines...) Expand all
3114 clearOutOldGarbage(); 3114 clearOutOldGarbage();
3115 IntWrapper::s_destructorCalls = 0; 3115 IntWrapper::s_destructorCalls = 0;
3116 3116
3117 PersistentHeapVector<Member<IntWrapper>> keepNumbersAlive; 3117 PersistentHeapVector<Member<IntWrapper>> keepNumbersAlive;
3118 3118
3119 Persistent<Set> set1 = new Set(); 3119 Persistent<Set> set1 = new Set();
3120 Persistent<Set> set2 = new Set(); 3120 Persistent<Set> set2 = new Set();
3121 3121
3122 const Set& constSet = *set1.get(); 3122 const Set& constSet = *set1.get();
3123 3123
3124 keepNumbersAlive.append(IntWrapper::create(2)); 3124 keepNumbersAlive.push_back(IntWrapper::create(2));
3125 keepNumbersAlive.append(IntWrapper::create(103)); 3125 keepNumbersAlive.push_back(IntWrapper::create(103));
3126 keepNumbersAlive.append(IntWrapper::create(10)); 3126 keepNumbersAlive.push_back(IntWrapper::create(10));
3127 3127
3128 set1->add(IntWrapper::create(0)); 3128 set1->add(IntWrapper::create(0));
3129 set1->add(keepNumbersAlive[0]); 3129 set1->add(keepNumbersAlive[0]);
3130 set1->add(keepNumbersAlive[1]); 3130 set1->add(keepNumbersAlive[1]);
3131 set1->add(keepNumbersAlive[2]); 3131 set1->add(keepNumbersAlive[2]);
3132 3132
3133 set2->clear(); 3133 set2->clear();
3134 set2->add(IntWrapper::create(42)); 3134 set2->add(IntWrapper::create(42));
3135 set2->clear(); 3135 set2->clear();
3136 3136
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
3510 Persistent<StrongWeak> strongWeak = new StrongWeak(); 3510 Persistent<StrongWeak> strongWeak = new StrongWeak();
3511 Persistent<WeakWeak> weakWeak = new WeakWeak(); 3511 Persistent<WeakWeak> weakWeak = new WeakWeak();
3512 3512
3513 Persistent<WeakSet> weakSet = new WeakSet(); 3513 Persistent<WeakSet> weakSet = new WeakSet();
3514 Persistent<WeakOrderedSet> weakOrderedSet = new WeakOrderedSet(); 3514 Persistent<WeakOrderedSet> weakOrderedSet = new WeakOrderedSet();
3515 3515
3516 PersistentHeapVector<Member<IntWrapper>> keepNumbersAlive; 3516 PersistentHeapVector<Member<IntWrapper>> keepNumbersAlive;
3517 for (int i = 0; i < 128; i += 2) { 3517 for (int i = 0; i < 128; i += 2) {
3518 IntWrapper* wrapped = IntWrapper::create(i); 3518 IntWrapper* wrapped = IntWrapper::create(i);
3519 IntWrapper* wrapped2 = IntWrapper::create(i + 1); 3519 IntWrapper* wrapped2 = IntWrapper::create(i + 1);
3520 keepNumbersAlive.append(wrapped); 3520 keepNumbersAlive.push_back(wrapped);
3521 keepNumbersAlive.append(wrapped2); 3521 keepNumbersAlive.push_back(wrapped2);
3522 weakStrong->add(wrapped, wrapped2); 3522 weakStrong->add(wrapped, wrapped2);
3523 strongWeak->add(wrapped2, wrapped); 3523 strongWeak->add(wrapped2, wrapped);
3524 weakWeak->add(wrapped, wrapped2); 3524 weakWeak->add(wrapped, wrapped2);
3525 weakSet->add(wrapped); 3525 weakSet->add(wrapped);
3526 weakOrderedSet->add(wrapped); 3526 weakOrderedSet->add(wrapped);
3527 } 3527 }
3528 3528
3529 EXPECT_EQ(64u, weakStrong->size()); 3529 EXPECT_EQ(64u, weakStrong->size());
3530 EXPECT_EQ(64u, strongWeak->size()); 3530 EXPECT_EQ(64u, strongWeak->size());
3531 EXPECT_EQ(64u, weakWeak->size()); 3531 EXPECT_EQ(64u, weakWeak->size());
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
3628 ASSERT_TRUE(weakOrderedSet->contains(keepNumbersAlive[i])); 3628 ASSERT_TRUE(weakOrderedSet->contains(keepNumbersAlive[i]));
3629 if (deleteAfterwards) 3629 if (deleteAfterwards)
3630 weakOrderedSet->remove(keepNumbersAlive[i]); 3630 weakOrderedSet->remove(keepNumbersAlive[i]);
3631 else 3631 else
3632 count++; 3632 count++;
3633 } 3633 }
3634 } 3634 }
3635 if (addAfterwards) { 3635 if (addAfterwards) {
3636 for (int i = 1000; i < 1100; i++) { 3636 for (int i = 1000; i < 1100; i++) {
3637 IntWrapper* wrapped = IntWrapper::create(i); 3637 IntWrapper* wrapped = IntWrapper::create(i);
3638 keepNumbersAlive.append(wrapped); 3638 keepNumbersAlive.push_back(wrapped);
3639 weakStrong->add(wrapped, wrapped); 3639 weakStrong->add(wrapped, wrapped);
3640 strongWeak->add(wrapped, wrapped); 3640 strongWeak->add(wrapped, wrapped);
3641 weakWeak->add(wrapped, wrapped); 3641 weakWeak->add(wrapped, wrapped);
3642 weakSet->add(wrapped); 3642 weakSet->add(wrapped);
3643 weakOrderedSet->add(wrapped); 3643 weakOrderedSet->add(wrapped);
3644 } 3644 }
3645 } 3645 }
3646 if (collectionNumber == weakStrongIndex) 3646 if (collectionNumber == weakStrongIndex)
3647 EXPECT_EQ(count + added, weakStrong->size()); 3647 EXPECT_EQ(count + added, weakStrong->size());
3648 else if (collectionNumber == strongWeakIndex) 3648 else if (collectionNumber == strongWeakIndex)
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
3691 HeapVector<Member<IntWrapper>> vector; 3691 HeapVector<Member<IntWrapper>> vector;
3692 set.add(new IntWrapper(1)); 3692 set.add(new IntWrapper(1));
3693 set.add(new IntWrapper(1)); 3693 set.add(new IntWrapper(1));
3694 set.add(new IntWrapper(2)); 3694 set.add(new IntWrapper(2));
3695 3695
3696 copyToVector(set, vector); 3696 copyToVector(set, vector);
3697 EXPECT_EQ(3u, vector.size()); 3697 EXPECT_EQ(3u, vector.size());
3698 3698
3699 Vector<int> intVector; 3699 Vector<int> intVector;
3700 for (const auto& i : vector) 3700 for (const auto& i : vector)
3701 intVector.append(i->value()); 3701 intVector.push_back(i->value());
3702 std::sort(intVector.begin(), intVector.end()); 3702 std::sort(intVector.begin(), intVector.end());
3703 ASSERT_EQ(3u, intVector.size()); 3703 ASSERT_EQ(3u, intVector.size());
3704 EXPECT_EQ(1, intVector[0]); 3704 EXPECT_EQ(1, intVector[0]);
3705 EXPECT_EQ(1, intVector[1]); 3705 EXPECT_EQ(1, intVector[1]);
3706 EXPECT_EQ(2, intVector[2]); 3706 EXPECT_EQ(2, intVector[2]);
3707 } 3707 }
3708 3708
3709 TEST(HeapTest, WeakHeapHashCountedSetToVector) { 3709 TEST(HeapTest, WeakHeapHashCountedSetToVector) {
3710 HeapHashCountedSet<WeakMember<IntWrapper>> set; 3710 HeapHashCountedSet<WeakMember<IntWrapper>> set;
3711 HeapVector<Member<IntWrapper>> vector; 3711 HeapVector<Member<IntWrapper>> vector;
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
3921 ThreadHeap& heap = ThreadState::current()->heap(); 3921 ThreadHeap& heap = ThreadState::current()->heap();
3922 clearOutOldGarbage(); 3922 clearOutOldGarbage();
3923 3923
3924 Vector<Address> objectAddresses; 3924 Vector<Address> objectAddresses;
3925 Vector<Address> endAddresses; 3925 Vector<Address> endAddresses;
3926 Address largeObjectAddress; 3926 Address largeObjectAddress;
3927 Address largeObjectEndAddress; 3927 Address largeObjectEndAddress;
3928 for (int i = 0; i < 10; i++) { 3928 for (int i = 0; i < 10; i++) {
3929 SimpleObject* object = SimpleObject::create(); 3929 SimpleObject* object = SimpleObject::create();
3930 Address objectAddress = reinterpret_cast<Address>(object); 3930 Address objectAddress = reinterpret_cast<Address>(object);
3931 objectAddresses.append(objectAddress); 3931 objectAddresses.push_back(objectAddress);
3932 endAddresses.append(objectAddress + sizeof(SimpleObject) - 1); 3932 endAddresses.push_back(objectAddress + sizeof(SimpleObject) - 1);
3933 } 3933 }
3934 LargeHeapObject* largeObject = LargeHeapObject::create(); 3934 LargeHeapObject* largeObject = LargeHeapObject::create();
3935 largeObjectAddress = reinterpret_cast<Address>(largeObject); 3935 largeObjectAddress = reinterpret_cast<Address>(largeObject);
3936 largeObjectEndAddress = largeObjectAddress + sizeof(LargeHeapObject) - 1; 3936 largeObjectEndAddress = largeObjectAddress + sizeof(LargeHeapObject) - 1;
3937 3937
3938 // This is a low-level test where we call checkAndMarkPointer. This method 3938 // This is a low-level test where we call checkAndMarkPointer. This method
3939 // causes the object start bitmap to be computed which requires the heap 3939 // causes the object start bitmap to be computed which requires the heap
3940 // to be in a consistent state (e.g. the free allocation area must be put 3940 // to be in a consistent state (e.g. the free allocation area must be put
3941 // into a free list header). However when we call makeConsistentForGC it 3941 // into a free list header). However when we call makeConsistentForGC it
3942 // also clears out the freelists so we have to rebuild those before trying 3942 // also clears out the freelists so we have to rebuild those before trying
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
4019 IntWrapper* three(IntWrapper::create(3)); 4019 IntWrapper* three(IntWrapper::create(3));
4020 IntWrapper* four(IntWrapper::create(4)); 4020 IntWrapper* four(IntWrapper::create(4));
4021 IntWrapper* five(IntWrapper::create(5)); 4021 IntWrapper* five(IntWrapper::create(5));
4022 IntWrapper* six(IntWrapper::create(6)); 4022 IntWrapper* six(IntWrapper::create(6));
4023 IntWrapper* seven(IntWrapper::create(7)); 4023 IntWrapper* seven(IntWrapper::create(7));
4024 IntWrapper* eight(IntWrapper::create(8)); 4024 IntWrapper* eight(IntWrapper::create(8));
4025 IntWrapper* nine(IntWrapper::create(9)); 4025 IntWrapper* nine(IntWrapper::create(9));
4026 Persistent<IntWrapper> ten(IntWrapper::create(10)); 4026 Persistent<IntWrapper> ten(IntWrapper::create(10));
4027 IntWrapper* eleven(IntWrapper::create(11)); 4027 IntWrapper* eleven(IntWrapper::create(11));
4028 4028
4029 pVec.append(one); 4029 pVec.push_back(one);
4030 pVec.append(two); 4030 pVec.push_back(two);
4031 4031
4032 pDeque.append(seven); 4032 pDeque.append(seven);
4033 pDeque.append(two); 4033 pDeque.append(two);
4034 4034
4035 Vec* vec = new Vec(); 4035 Vec* vec = new Vec();
4036 vec->swap(pVec); 4036 vec->swap(pVec);
4037 4037
4038 pVec.append(two); 4038 pVec.push_back(two);
4039 pVec.append(three); 4039 pVec.push_back(three);
4040 4040
4041 pSet.add(four); 4041 pSet.add(four);
4042 pListSet.add(eight); 4042 pListSet.add(eight);
4043 pLinkedSet.add(nine); 4043 pLinkedSet.add(nine);
4044 pMap.add(five, six); 4044 pMap.add(five, six);
4045 wpMap.add(ten, eleven); 4045 wpMap.add(ten, eleven);
4046 4046
4047 // Collect |vec| and |one|. 4047 // Collect |vec| and |one|.
4048 vec = 0; 4048 vec = 0;
4049 preciselyCollectGarbage(); 4049 preciselyCollectGarbage();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
4099 4099
4100 map->add(key, IntVector()); 4100 map->add(key, IntVector());
4101 map2->add(key, IntDeque()); 4101 map2->add(key, IntDeque());
4102 4102
4103 HeapHashMap<void*, IntVector>::iterator it = map->find(key); 4103 HeapHashMap<void*, IntVector>::iterator it = map->find(key);
4104 EXPECT_EQ(0u, map->get(key).size()); 4104 EXPECT_EQ(0u, map->get(key).size());
4105 4105
4106 HeapHashMap<void*, IntDeque>::iterator it2 = map2->find(key); 4106 HeapHashMap<void*, IntDeque>::iterator it2 = map2->find(key);
4107 EXPECT_EQ(0u, map2->get(key).size()); 4107 EXPECT_EQ(0u, map2->get(key).size());
4108 4108
4109 it->value.append(IntWrapper::create(42)); 4109 it->value.push_back(IntWrapper::create(42));
4110 EXPECT_EQ(1u, map->get(key).size()); 4110 EXPECT_EQ(1u, map->get(key).size());
4111 4111
4112 it2->value.append(IntWrapper::create(42)); 4112 it2->value.append(IntWrapper::create(42));
4113 EXPECT_EQ(1u, map2->get(key).size()); 4113 EXPECT_EQ(1u, map2->get(key).size());
4114 4114
4115 Persistent<HeapHashMap<void*, IntVector>> keepAlive(map); 4115 Persistent<HeapHashMap<void*, IntVector>> keepAlive(map);
4116 Persistent<HeapHashMap<void*, IntDeque>> keepAlive2(map2); 4116 Persistent<HeapHashMap<void*, IntDeque>> keepAlive2(map2);
4117 4117
4118 for (int i = 0; i < 100; i++) { 4118 for (int i = 0; i < 100; i++) {
4119 map->add(key + 1 + i, IntVector()); 4119 map->add(key + 1 + i, IntVector());
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
4172 } 4172 }
4173 4173
4174 TEST(HeapTest, CollectionNesting3) { 4174 TEST(HeapTest, CollectionNesting3) {
4175 clearOutOldGarbage(); 4175 clearOutOldGarbage();
4176 IntWrapper::s_destructorCalls = 0; 4176 IntWrapper::s_destructorCalls = 0;
4177 typedef HeapVector<Member<IntWrapper>> IntVector; 4177 typedef HeapVector<Member<IntWrapper>> IntVector;
4178 typedef HeapDeque<Member<IntWrapper>> IntDeque; 4178 typedef HeapDeque<Member<IntWrapper>> IntDeque;
4179 HeapVector<IntVector>* vector = new HeapVector<IntVector>(); 4179 HeapVector<IntVector>* vector = new HeapVector<IntVector>();
4180 HeapDeque<IntDeque>* deque = new HeapDeque<IntDeque>(); 4180 HeapDeque<IntDeque>* deque = new HeapDeque<IntDeque>();
4181 4181
4182 vector->append(IntVector()); 4182 vector->push_back(IntVector());
4183 deque->append(IntDeque()); 4183 deque->append(IntDeque());
4184 4184
4185 HeapVector<IntVector>::iterator it = vector->begin(); 4185 HeapVector<IntVector>::iterator it = vector->begin();
4186 HeapDeque<IntDeque>::iterator it2 = deque->begin(); 4186 HeapDeque<IntDeque>::iterator it2 = deque->begin();
4187 EXPECT_EQ(0u, it->size()); 4187 EXPECT_EQ(0u, it->size());
4188 EXPECT_EQ(0u, it2->size()); 4188 EXPECT_EQ(0u, it2->size());
4189 4189
4190 it->append(IntWrapper::create(42)); 4190 it->push_back(IntWrapper::create(42));
4191 it2->append(IntWrapper::create(42)); 4191 it2->append(IntWrapper::create(42));
4192 EXPECT_EQ(1u, it->size()); 4192 EXPECT_EQ(1u, it->size());
4193 EXPECT_EQ(1u, it2->size()); 4193 EXPECT_EQ(1u, it2->size());
4194 4194
4195 Persistent<HeapVector<IntVector>> keepAlive(vector); 4195 Persistent<HeapVector<IntVector>> keepAlive(vector);
4196 Persistent<HeapDeque<IntDeque>> keepAlive2(deque); 4196 Persistent<HeapDeque<IntDeque>> keepAlive2(deque);
4197 preciselyCollectGarbage(); 4197 preciselyCollectGarbage();
4198 EXPECT_EQ(1u, it->size()); 4198 EXPECT_EQ(1u, it->size());
4199 EXPECT_EQ(1u, it2->size()); 4199 EXPECT_EQ(1u, it2->size());
4200 EXPECT_EQ(0, IntWrapper::s_destructorCalls); 4200 EXPECT_EQ(0, IntWrapper::s_destructorCalls);
4201 } 4201 }
4202 4202
4203 TEST(HeapTest, EmbeddedInVector) { 4203 TEST(HeapTest, EmbeddedInVector) {
4204 clearOutOldGarbage(); 4204 clearOutOldGarbage();
4205 SimpleFinalizedObject::s_destructorCalls = 0; 4205 SimpleFinalizedObject::s_destructorCalls = 0;
4206 { 4206 {
4207 PersistentHeapVector<VectorObject, 2> inlineVector; 4207 PersistentHeapVector<VectorObject, 2> inlineVector;
4208 PersistentHeapVector<VectorObject> outlineVector; 4208 PersistentHeapVector<VectorObject> outlineVector;
4209 VectorObject i1, i2; 4209 VectorObject i1, i2;
4210 inlineVector.append(i1); 4210 inlineVector.push_back(i1);
4211 inlineVector.append(i2); 4211 inlineVector.push_back(i2);
4212 4212
4213 VectorObject o1, o2; 4213 VectorObject o1, o2;
4214 outlineVector.append(o1); 4214 outlineVector.push_back(o1);
4215 outlineVector.append(o2); 4215 outlineVector.push_back(o2);
4216 4216
4217 PersistentHeapVector<VectorObjectInheritedTrace> vectorInheritedTrace; 4217 PersistentHeapVector<VectorObjectInheritedTrace> vectorInheritedTrace;
4218 VectorObjectInheritedTrace it1, it2; 4218 VectorObjectInheritedTrace it1, it2;
4219 vectorInheritedTrace.append(it1); 4219 vectorInheritedTrace.push_back(it1);
4220 vectorInheritedTrace.append(it2); 4220 vectorInheritedTrace.push_back(it2);
4221 4221
4222 preciselyCollectGarbage(); 4222 preciselyCollectGarbage();
4223 EXPECT_EQ(0, SimpleFinalizedObject::s_destructorCalls); 4223 EXPECT_EQ(0, SimpleFinalizedObject::s_destructorCalls);
4224 } 4224 }
4225 preciselyCollectGarbage(); 4225 preciselyCollectGarbage();
4226 EXPECT_EQ(6, SimpleFinalizedObject::s_destructorCalls); 4226 EXPECT_EQ(6, SimpleFinalizedObject::s_destructorCalls);
4227 } 4227 }
4228 4228
4229 TEST(HeapTest, EmbeddedInDeque) { 4229 TEST(HeapTest, EmbeddedInDeque) {
4230 clearOutOldGarbage(); 4230 clearOutOldGarbage();
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
4283 4283
4284 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::InlinedVectorObject); 4284 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::InlinedVectorObject);
4285 4285
4286 namespace blink { 4286 namespace blink {
4287 4287
4288 class InlinedVectorObjectWrapper final 4288 class InlinedVectorObjectWrapper final
4289 : public GarbageCollectedFinalized<InlinedVectorObjectWrapper> { 4289 : public GarbageCollectedFinalized<InlinedVectorObjectWrapper> {
4290 public: 4290 public:
4291 InlinedVectorObjectWrapper() { 4291 InlinedVectorObjectWrapper() {
4292 InlinedVectorObject i1, i2; 4292 InlinedVectorObject i1, i2;
4293 m_vector1.append(i1); 4293 m_vector1.push_back(i1);
4294 m_vector1.append(i2); 4294 m_vector1.push_back(i2);
4295 m_vector2.append(i1); 4295 m_vector2.push_back(i1);
4296 m_vector2.append(i2); // This allocates an out-of-line buffer. 4296 m_vector2.push_back(i2); // This allocates an out-of-line buffer.
4297 m_vector3.append(i1); 4297 m_vector3.push_back(i1);
4298 m_vector3.append(i2); 4298 m_vector3.push_back(i2);
4299 } 4299 }
4300 4300
4301 DEFINE_INLINE_TRACE() { 4301 DEFINE_INLINE_TRACE() {
4302 visitor->trace(m_vector1); 4302 visitor->trace(m_vector1);
4303 visitor->trace(m_vector2); 4303 visitor->trace(m_vector2);
4304 visitor->trace(m_vector3); 4304 visitor->trace(m_vector3);
4305 } 4305 }
4306 4306
4307 private: 4307 private:
4308 HeapVector<InlinedVectorObject> m_vector1; 4308 HeapVector<InlinedVectorObject> m_vector1;
4309 HeapVector<InlinedVectorObject, 1> m_vector2; 4309 HeapVector<InlinedVectorObject, 1> m_vector2;
4310 HeapVector<InlinedVectorObject, 2> m_vector3; 4310 HeapVector<InlinedVectorObject, 2> m_vector3;
4311 }; 4311 };
4312 4312
4313 class InlinedVectorObjectWithVtableWrapper final 4313 class InlinedVectorObjectWithVtableWrapper final
4314 : public GarbageCollectedFinalized<InlinedVectorObjectWithVtableWrapper> { 4314 : public GarbageCollectedFinalized<InlinedVectorObjectWithVtableWrapper> {
4315 public: 4315 public:
4316 InlinedVectorObjectWithVtableWrapper() { 4316 InlinedVectorObjectWithVtableWrapper() {
4317 InlinedVectorObjectWithVtable i1, i2; 4317 InlinedVectorObjectWithVtable i1, i2;
4318 m_vector1.append(i1); 4318 m_vector1.push_back(i1);
4319 m_vector1.append(i2); 4319 m_vector1.push_back(i2);
4320 m_vector2.append(i1); 4320 m_vector2.push_back(i1);
4321 m_vector2.append(i2); // This allocates an out-of-line buffer. 4321 m_vector2.push_back(i2); // This allocates an out-of-line buffer.
4322 m_vector3.append(i1); 4322 m_vector3.push_back(i1);
4323 m_vector3.append(i2); 4323 m_vector3.push_back(i2);
4324 } 4324 }
4325 4325
4326 DEFINE_INLINE_TRACE() { 4326 DEFINE_INLINE_TRACE() {
4327 visitor->trace(m_vector1); 4327 visitor->trace(m_vector1);
4328 visitor->trace(m_vector2); 4328 visitor->trace(m_vector2);
4329 visitor->trace(m_vector3); 4329 visitor->trace(m_vector3);
4330 } 4330 }
4331 4331
4332 private: 4332 private:
4333 HeapVector<InlinedVectorObjectWithVtable> m_vector1; 4333 HeapVector<InlinedVectorObjectWithVtable> m_vector1;
4334 HeapVector<InlinedVectorObjectWithVtable, 1> m_vector2; 4334 HeapVector<InlinedVectorObjectWithVtable, 1> m_vector2;
4335 HeapVector<InlinedVectorObjectWithVtable, 2> m_vector3; 4335 HeapVector<InlinedVectorObjectWithVtable, 2> m_vector3;
4336 }; 4336 };
4337 4337
4338 TEST(HeapTest, VectorDestructors) { 4338 TEST(HeapTest, VectorDestructors) {
4339 clearOutOldGarbage(); 4339 clearOutOldGarbage();
4340 InlinedVectorObject::s_destructorCalls = 0; 4340 InlinedVectorObject::s_destructorCalls = 0;
4341 { 4341 {
4342 HeapVector<InlinedVectorObject> vector; 4342 HeapVector<InlinedVectorObject> vector;
4343 InlinedVectorObject i1, i2; 4343 InlinedVectorObject i1, i2;
4344 vector.append(i1); 4344 vector.push_back(i1);
4345 vector.append(i2); 4345 vector.push_back(i2);
4346 } 4346 }
4347 preciselyCollectGarbage(); 4347 preciselyCollectGarbage();
4348 // This is not EXPECT_EQ but EXPECT_LE because a HeapVectorBacking calls 4348 // This is not EXPECT_EQ but EXPECT_LE because a HeapVectorBacking calls
4349 // destructors for all elements in (not the size but) the capacity of 4349 // destructors for all elements in (not the size but) the capacity of
4350 // the vector. Thus the number of destructors called becomes larger 4350 // the vector. Thus the number of destructors called becomes larger
4351 // than the actual number of objects in the vector. 4351 // than the actual number of objects in the vector.
4352 EXPECT_LE(4, InlinedVectorObject::s_destructorCalls); 4352 EXPECT_LE(4, InlinedVectorObject::s_destructorCalls);
4353 4353
4354 InlinedVectorObject::s_destructorCalls = 0; 4354 InlinedVectorObject::s_destructorCalls = 0;
4355 { 4355 {
4356 HeapVector<InlinedVectorObject, 1> vector; 4356 HeapVector<InlinedVectorObject, 1> vector;
4357 InlinedVectorObject i1, i2; 4357 InlinedVectorObject i1, i2;
4358 vector.append(i1); 4358 vector.push_back(i1);
4359 vector.append(i2); // This allocates an out-of-line buffer. 4359 vector.push_back(i2); // This allocates an out-of-line buffer.
4360 } 4360 }
4361 preciselyCollectGarbage(); 4361 preciselyCollectGarbage();
4362 EXPECT_LE(4, InlinedVectorObject::s_destructorCalls); 4362 EXPECT_LE(4, InlinedVectorObject::s_destructorCalls);
4363 4363
4364 InlinedVectorObject::s_destructorCalls = 0; 4364 InlinedVectorObject::s_destructorCalls = 0;
4365 { 4365 {
4366 HeapVector<InlinedVectorObject, 2> vector; 4366 HeapVector<InlinedVectorObject, 2> vector;
4367 InlinedVectorObject i1, i2; 4367 InlinedVectorObject i1, i2;
4368 vector.append(i1); 4368 vector.push_back(i1);
4369 vector.append(i2); 4369 vector.push_back(i2);
4370 } 4370 }
4371 preciselyCollectGarbage(); 4371 preciselyCollectGarbage();
4372 EXPECT_LE(4, InlinedVectorObject::s_destructorCalls); 4372 EXPECT_LE(4, InlinedVectorObject::s_destructorCalls);
4373 4373
4374 InlinedVectorObject::s_destructorCalls = 0; 4374 InlinedVectorObject::s_destructorCalls = 0;
4375 { 4375 {
4376 Persistent<InlinedVectorObjectWrapper> vectorWrapper = 4376 Persistent<InlinedVectorObjectWrapper> vectorWrapper =
4377 new InlinedVectorObjectWrapper(); 4377 new InlinedVectorObjectWrapper();
4378 conservativelyCollectGarbage(); 4378 conservativelyCollectGarbage();
4379 EXPECT_EQ(2, InlinedVectorObject::s_destructorCalls); 4379 EXPECT_EQ(2, InlinedVectorObject::s_destructorCalls);
4380 } 4380 }
4381 preciselyCollectGarbage(); 4381 preciselyCollectGarbage();
4382 EXPECT_LE(8, InlinedVectorObject::s_destructorCalls); 4382 EXPECT_LE(8, InlinedVectorObject::s_destructorCalls);
4383 } 4383 }
4384 4384
4385 // TODO(Oilpan): when Vector.h's contiguous container support no longer disables 4385 // TODO(Oilpan): when Vector.h's contiguous container support no longer disables
4386 // Vector<>s with inline capacity, enable this test. 4386 // Vector<>s with inline capacity, enable this test.
4387 #if !defined(ANNOTATE_CONTIGUOUS_CONTAINER) 4387 #if !defined(ANNOTATE_CONTIGUOUS_CONTAINER)
4388 TEST(HeapTest, VectorDestructorsWithVtable) { 4388 TEST(HeapTest, VectorDestructorsWithVtable) {
4389 clearOutOldGarbage(); 4389 clearOutOldGarbage();
4390 InlinedVectorObjectWithVtable::s_destructorCalls = 0; 4390 InlinedVectorObjectWithVtable::s_destructorCalls = 0;
4391 { 4391 {
4392 HeapVector<InlinedVectorObjectWithVtable> vector; 4392 HeapVector<InlinedVectorObjectWithVtable> vector;
4393 InlinedVectorObjectWithVtable i1, i2; 4393 InlinedVectorObjectWithVtable i1, i2;
4394 vector.append(i1); 4394 vector.push_back(i1);
4395 vector.append(i2); 4395 vector.push_back(i2);
4396 } 4396 }
4397 preciselyCollectGarbage(); 4397 preciselyCollectGarbage();
4398 EXPECT_EQ(4, InlinedVectorObjectWithVtable::s_destructorCalls); 4398 EXPECT_EQ(4, InlinedVectorObjectWithVtable::s_destructorCalls);
4399 4399
4400 InlinedVectorObjectWithVtable::s_destructorCalls = 0; 4400 InlinedVectorObjectWithVtable::s_destructorCalls = 0;
4401 { 4401 {
4402 HeapVector<InlinedVectorObjectWithVtable, 1> vector; 4402 HeapVector<InlinedVectorObjectWithVtable, 1> vector;
4403 InlinedVectorObjectWithVtable i1, i2; 4403 InlinedVectorObjectWithVtable i1, i2;
4404 vector.append(i1); 4404 vector.push_back(i1);
4405 vector.append(i2); // This allocates an out-of-line buffer. 4405 vector.push_back(i2); // This allocates an out-of-line buffer.
4406 } 4406 }
4407 preciselyCollectGarbage(); 4407 preciselyCollectGarbage();
4408 EXPECT_EQ(5, InlinedVectorObjectWithVtable::s_destructorCalls); 4408 EXPECT_EQ(5, InlinedVectorObjectWithVtable::s_destructorCalls);
4409 4409
4410 InlinedVectorObjectWithVtable::s_destructorCalls = 0; 4410 InlinedVectorObjectWithVtable::s_destructorCalls = 0;
4411 { 4411 {
4412 HeapVector<InlinedVectorObjectWithVtable, 2> vector; 4412 HeapVector<InlinedVectorObjectWithVtable, 2> vector;
4413 InlinedVectorObjectWithVtable i1, i2; 4413 InlinedVectorObjectWithVtable i1, i2;
4414 vector.append(i1); 4414 vector.push_back(i1);
4415 vector.append(i2); 4415 vector.push_back(i2);
4416 } 4416 }
4417 preciselyCollectGarbage(); 4417 preciselyCollectGarbage();
4418 EXPECT_EQ(4, InlinedVectorObjectWithVtable::s_destructorCalls); 4418 EXPECT_EQ(4, InlinedVectorObjectWithVtable::s_destructorCalls);
4419 4419
4420 InlinedVectorObjectWithVtable::s_destructorCalls = 0; 4420 InlinedVectorObjectWithVtable::s_destructorCalls = 0;
4421 { 4421 {
4422 Persistent<InlinedVectorObjectWithVtableWrapper> vectorWrapper = 4422 Persistent<InlinedVectorObjectWithVtableWrapper> vectorWrapper =
4423 new InlinedVectorObjectWithVtableWrapper(); 4423 new InlinedVectorObjectWithVtableWrapper();
4424 conservativelyCollectGarbage(); 4424 conservativelyCollectGarbage();
4425 EXPECT_EQ(3, InlinedVectorObjectWithVtable::s_destructorCalls); 4425 EXPECT_EQ(3, InlinedVectorObjectWithVtable::s_destructorCalls);
(...skipping 806 matching lines...) Expand 10 before | Expand all | Expand 10 after
5232 EXPECT_EQ(0u, outer->size()); 5232 EXPECT_EQ(0u, outer->size());
5233 } 5233 }
5234 outer->clear(); 5234 outer->clear();
5235 Persistent<IntWrapper> deep = IntWrapper::create(42); 5235 Persistent<IntWrapper> deep = IntWrapper::create(42);
5236 Persistent<IntWrapper> home = IntWrapper::create(103); 5236 Persistent<IntWrapper> home = IntWrapper::create(103);
5237 Persistent<IntWrapper> composite = IntWrapper::create(91); 5237 Persistent<IntWrapper> composite = IntWrapper::create(91);
5238 Persistent<HeapVector<Member<IntWrapper>>> keepAlive = 5238 Persistent<HeapVector<Member<IntWrapper>>> keepAlive =
5239 new HeapVector<Member<IntWrapper>>(); 5239 new HeapVector<Member<IntWrapper>>();
5240 for (int i = 0; i < 10000; i++) { 5240 for (int i = 0; i < 10000; i++) {
5241 IntWrapper* value = IntWrapper::create(i); 5241 IntWrapper* value = IntWrapper::create(i);
5242 keepAlive->append(value); 5242 keepAlive->push_back(value);
5243 OuterMap::AddResult newEntry = outer->add(value, InnerMap()); 5243 OuterMap::AddResult newEntry = outer->add(value, InnerMap());
5244 newEntry.storedValue->value.add(deep, home); 5244 newEntry.storedValue->value.add(deep, home);
5245 newEntry.storedValue->value.add(composite, home); 5245 newEntry.storedValue->value.add(composite, home);
5246 } 5246 }
5247 composite.clear(); 5247 composite.clear();
5248 preciselyCollectGarbage(); 5248 preciselyCollectGarbage();
5249 EXPECT_EQ(10000u, outer->size()); 5249 EXPECT_EQ(10000u, outer->size());
5250 for (int i = 0; i < 10000; i++) { 5250 for (int i = 0; i < 10000; i++) {
5251 IntWrapper* value = keepAlive->at(i); 5251 IntWrapper* value = keepAlive->at(i);
5252 EXPECT_EQ(1u, outer->get(value) 5252 EXPECT_EQ(1u, outer->get(value)
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
5895 TraceIfNeededTester<Member<SimpleObject>>::create( 5895 TraceIfNeededTester<Member<SimpleObject>>::create(
5896 Member<SimpleObject>(SimpleObject::create())); 5896 Member<SimpleObject>(SimpleObject::create()));
5897 visitor.reset(); 5897 visitor.reset();
5898 m_obj->trace(&visitor); 5898 m_obj->trace(&visitor);
5899 EXPECT_EQ(1u, visitor.count()); 5899 EXPECT_EQ(1u, visitor.count());
5900 } 5900 }
5901 5901
5902 { 5902 {
5903 TraceIfNeededTester<HeapVector<Member<SimpleObject>>>* m_vec = 5903 TraceIfNeededTester<HeapVector<Member<SimpleObject>>>* m_vec =
5904 TraceIfNeededTester<HeapVector<Member<SimpleObject>>>::create(); 5904 TraceIfNeededTester<HeapVector<Member<SimpleObject>>>::create();
5905 m_vec->obj().append(SimpleObject::create()); 5905 m_vec->obj().push_back(SimpleObject::create());
5906 visitor.reset(); 5906 visitor.reset();
5907 m_vec->trace(&visitor); 5907 m_vec->trace(&visitor);
5908 EXPECT_EQ(2u, visitor.count()); 5908 EXPECT_EQ(2u, visitor.count());
5909 } 5909 }
5910 } 5910 }
5911 5911
5912 class AllocatesOnAssignment { 5912 class AllocatesOnAssignment {
5913 public: 5913 public:
5914 AllocatesOnAssignment(std::nullptr_t) : m_value(nullptr) {} 5914 AllocatesOnAssignment(std::nullptr_t) : m_value(nullptr) {}
5915 AllocatesOnAssignment(int x) : m_value(new IntWrapper(x)) {} 5915 AllocatesOnAssignment(int x) : m_value(new IntWrapper(x)) {}
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
6301 EXPECT_EQ(i + 50, part.value()); 6301 EXPECT_EQ(i + 50, part.value());
6302 i++; 6302 i++;
6303 } 6303 }
6304 } 6304 }
6305 6305
6306 TEST(HeapTest, HeapVectorPartObjects) { 6306 TEST(HeapTest, HeapVectorPartObjects) {
6307 HeapVector<PartObjectWithRef> vector1; 6307 HeapVector<PartObjectWithRef> vector1;
6308 HeapVector<PartObjectWithRef> vector2; 6308 HeapVector<PartObjectWithRef> vector2;
6309 6309
6310 for (int i = 0; i < 10; ++i) { 6310 for (int i = 0; i < 10; ++i) {
6311 vector1.append(PartObjectWithRef(i)); 6311 vector1.push_back(PartObjectWithRef(i));
6312 vector2.append(PartObjectWithRef(i)); 6312 vector2.push_back(PartObjectWithRef(i));
6313 } 6313 }
6314 6314
6315 vector1.reserveCapacity(150); 6315 vector1.reserveCapacity(150);
6316 EXPECT_LE(150u, vector1.capacity()); 6316 EXPECT_LE(150u, vector1.capacity());
6317 EXPECT_EQ(10u, vector1.size()); 6317 EXPECT_EQ(10u, vector1.size());
6318 6318
6319 vector2.reserveCapacity(100); 6319 vector2.reserveCapacity(100);
6320 EXPECT_LE(100u, vector2.capacity()); 6320 EXPECT_LE(100u, vector2.capacity());
6321 EXPECT_EQ(10u, vector2.size()); 6321 EXPECT_EQ(10u, vector2.size());
6322 6322
6323 for (int i = 0; i < 4; ++i) { 6323 for (int i = 0; i < 4; ++i) {
6324 vector1.append(PartObjectWithRef(10 + i)); 6324 vector1.push_back(PartObjectWithRef(10 + i));
6325 vector2.append(PartObjectWithRef(10 + i)); 6325 vector2.push_back(PartObjectWithRef(10 + i));
6326 vector2.append(PartObjectWithRef(10 + i)); 6326 vector2.push_back(PartObjectWithRef(10 + i));
6327 } 6327 }
6328 6328
6329 // Shrinking heap vector backing stores always succeeds, 6329 // Shrinking heap vector backing stores always succeeds,
6330 // so these two will not currently exercise the code path 6330 // so these two will not currently exercise the code path
6331 // where shrinking causes copying into a new, small buffer. 6331 // where shrinking causes copying into a new, small buffer.
6332 vector2.shrinkToReasonableCapacity(); 6332 vector2.shrinkToReasonableCapacity();
6333 EXPECT_EQ(18u, vector2.size()); 6333 EXPECT_EQ(18u, vector2.size());
6334 6334
6335 vector1.shrinkToReasonableCapacity(); 6335 vector1.shrinkToReasonableCapacity();
6336 EXPECT_EQ(14u, vector1.size()); 6336 EXPECT_EQ(14u, vector1.size());
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
6573 void checkUnused() { checkUnusedSlots(end(), end() + (capacity() - size())); } 6573 void checkUnused() { checkUnusedSlots(end(), end() + (capacity() - size())); }
6574 }; 6574 };
6575 6575
6576 TEST(HeapTest, TestPersistentHeapVectorWithUnusedSlots) { 6576 TEST(HeapTest, TestPersistentHeapVectorWithUnusedSlots) {
6577 TestPersistentHeapVectorWithUnusedSlots vector1; 6577 TestPersistentHeapVectorWithUnusedSlots vector1;
6578 TestPersistentHeapVectorWithUnusedSlots vector2(vector1); 6578 TestPersistentHeapVectorWithUnusedSlots vector2(vector1);
6579 6579
6580 vector1.checkUnused(); 6580 vector1.checkUnused();
6581 vector2.checkUnused(); 6581 vector2.checkUnused();
6582 6582
6583 vector2.append(VectorObject()); 6583 vector2.push_back(VectorObject());
6584 vector2.checkUnused(); 6584 vector2.checkUnused();
6585 6585
6586 EXPECT_EQ(0u, vector1.size()); 6586 EXPECT_EQ(0u, vector1.size());
6587 6587
6588 EXPECT_EQ(1u, vector2.size()); 6588 EXPECT_EQ(1u, vector2.size());
6589 // TODO(Oilpan): when Vector.h's contiguous container support no longer disables 6589 // TODO(Oilpan): when Vector.h's contiguous container support no longer disables
6590 // Vector<>s with inline capacity, remove. 6590 // Vector<>s with inline capacity, remove.
6591 #if !defined(ANNOTATE_CONTIGUOUS_CONTAINER) 6591 #if !defined(ANNOTATE_CONTIGUOUS_CONTAINER)
6592 EXPECT_EQ(16u, vector1.capacity()); 6592 EXPECT_EQ(16u, vector1.capacity());
6593 EXPECT_EQ(16u, vector2.capacity()); 6593 EXPECT_EQ(16u, vector2.capacity());
6594 #endif 6594 #endif
6595 } 6595 }
6596 6596
6597 TEST(HeapTest, TestStaticLocals) { 6597 TEST(HeapTest, TestStaticLocals) {
6598 // Sanity check DEFINE_STATIC_LOCAL()s over heap allocated objects and 6598 // Sanity check DEFINE_STATIC_LOCAL()s over heap allocated objects and
6599 // collections. 6599 // collections.
6600 6600
6601 DEFINE_STATIC_LOCAL(IntWrapper, intWrapper, (new IntWrapper(33))); 6601 DEFINE_STATIC_LOCAL(IntWrapper, intWrapper, (new IntWrapper(33)));
6602 DEFINE_STATIC_LOCAL(PersistentHeapVector<Member<IntWrapper>>, 6602 DEFINE_STATIC_LOCAL(PersistentHeapVector<Member<IntWrapper>>,
6603 persistentHeapVectorIntWrapper, ()); 6603 persistentHeapVectorIntWrapper, ());
6604 DEFINE_STATIC_LOCAL(HeapVector<Member<IntWrapper>>, heapVectorIntWrapper, 6604 DEFINE_STATIC_LOCAL(HeapVector<Member<IntWrapper>>, heapVectorIntWrapper,
6605 (new HeapVector<Member<IntWrapper>>)); 6605 (new HeapVector<Member<IntWrapper>>));
6606 6606
6607 EXPECT_EQ(33, intWrapper.value()); 6607 EXPECT_EQ(33, intWrapper.value());
6608 EXPECT_EQ(0u, persistentHeapVectorIntWrapper.size()); 6608 EXPECT_EQ(0u, persistentHeapVectorIntWrapper.size());
6609 EXPECT_EQ(0u, heapVectorIntWrapper.size()); 6609 EXPECT_EQ(0u, heapVectorIntWrapper.size());
6610 6610
6611 persistentHeapVectorIntWrapper.append(&intWrapper); 6611 persistentHeapVectorIntWrapper.push_back(&intWrapper);
6612 heapVectorIntWrapper.append(&intWrapper); 6612 heapVectorIntWrapper.push_back(&intWrapper);
6613 EXPECT_EQ(1u, persistentHeapVectorIntWrapper.size()); 6613 EXPECT_EQ(1u, persistentHeapVectorIntWrapper.size());
6614 EXPECT_EQ(1u, heapVectorIntWrapper.size()); 6614 EXPECT_EQ(1u, heapVectorIntWrapper.size());
6615 6615
6616 EXPECT_EQ(persistentHeapVectorIntWrapper[0], heapVectorIntWrapper[0]); 6616 EXPECT_EQ(persistentHeapVectorIntWrapper[0], heapVectorIntWrapper[0]);
6617 EXPECT_EQ(33, heapVectorIntWrapper[0]->value()); 6617 EXPECT_EQ(33, heapVectorIntWrapper[0]->value());
6618 } 6618 }
6619 6619
6620 namespace { 6620 namespace {
6621 6621
6622 class ThreadedClearOnShutdownTester : public ThreadedTesterBase { 6622 class ThreadedClearOnShutdownTester : public ThreadedTesterBase {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
6805 "HeapVector"); 6805 "HeapVector");
6806 static_assert( 6806 static_assert(
6807 WTF::IsGarbageCollectedType<HeapDeque<Member<IntWrapper>>>::value, 6807 WTF::IsGarbageCollectedType<HeapDeque<Member<IntWrapper>>>::value,
6808 "HeapDeque"); 6808 "HeapDeque");
6809 static_assert(WTF::IsGarbageCollectedType< 6809 static_assert(WTF::IsGarbageCollectedType<
6810 HeapTerminatedArray<Member<IntWrapper>>>::value, 6810 HeapTerminatedArray<Member<IntWrapper>>>::value,
6811 "HeapTerminatedArray"); 6811 "HeapTerminatedArray");
6812 } 6812 }
6813 6813
6814 } // namespace blink 6814 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/heap/HeapCompactTest.cpp ('k') | third_party/WebKit/Source/platform/heap/ThreadState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698