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

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

Issue 402433005: Oilpan: Remove support for tracing off-heap HashSets. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix deadWrapper number in heap tests. Created 6 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/modules/webdatabase/SQLTransactionCoordinator.h ('k') | Source/platform/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 1999 matching lines...) Expand 10 before | Expand all | Expand 10 after
2010 explicit ShouldBeTraced(IntWrapper* wrapper) : m_wrapper(wrapper) { } 2010 explicit ShouldBeTraced(IntWrapper* wrapper) : m_wrapper(wrapper) { }
2011 void trace(Visitor* visitor) { visitor->trace(m_wrapper); } 2011 void trace(Visitor* visitor) { visitor->trace(m_wrapper); }
2012 Member<IntWrapper> m_wrapper; 2012 Member<IntWrapper> m_wrapper;
2013 }; 2013 };
2014 2014
2015 class OffHeapContainer : public GarbageCollectedFinalized<OffHeapContainer> { 2015 class OffHeapContainer : public GarbageCollectedFinalized<OffHeapContainer> {
2016 public: 2016 public:
2017 static OffHeapContainer* create() { return new OffHeapContainer(); } 2017 static OffHeapContainer* create() { return new OffHeapContainer(); }
2018 2018
2019 static const int iterations = 300; 2019 static const int iterations = 300;
2020 static const int deadWrappers = 2100; 2020 static const int deadWrappers = 1800;
2021 2021
2022 OffHeapContainer() 2022 OffHeapContainer()
2023 { 2023 {
2024 for (int i = 0; i < iterations; i++) { 2024 for (int i = 0; i < iterations; i++) {
2025 m_deque1.append(ShouldBeTraced(IntWrapper::create(i))); 2025 m_deque1.append(ShouldBeTraced(IntWrapper::create(i)));
2026 m_vector1.append(ShouldBeTraced(IntWrapper::create(i))); 2026 m_vector1.append(ShouldBeTraced(IntWrapper::create(i)));
2027 m_deque2.append(IntWrapper::create(i)); 2027 m_deque2.append(IntWrapper::create(i));
2028 m_vector2.append(IntWrapper::create(i)); 2028 m_vector2.append(IntWrapper::create(i));
2029 m_hashSet.add(IntWrapper::create(i));
2030 m_hashMap.add(i + 103, IntWrapper::create(i)); 2029 m_hashMap.add(i + 103, IntWrapper::create(i));
2031 m_ownedVector.append(adoptPtr(new ShouldBeTraced(IntWrapper::create( i)))); 2030 m_ownedVector.append(adoptPtr(new ShouldBeTraced(IntWrapper::create( i))));
2032 } 2031 }
2033 2032
2034 Deque<ShouldBeTraced>::iterator d1Iterator(m_deque1.begin()); 2033 Deque<ShouldBeTraced>::iterator d1Iterator(m_deque1.begin());
2035 Vector<ShouldBeTraced>::iterator v1Iterator(m_vector1.begin()); 2034 Vector<ShouldBeTraced>::iterator v1Iterator(m_vector1.begin());
2036 Deque<Member<IntWrapper> >::iterator d2Iterator(m_deque2.begin()); 2035 Deque<Member<IntWrapper> >::iterator d2Iterator(m_deque2.begin());
2037 Vector<Member<IntWrapper> >::iterator v2Iterator(m_vector2.begin()); 2036 Vector<Member<IntWrapper> >::iterator v2Iterator(m_vector2.begin());
2038 HashSet<Member<IntWrapper> >::iterator setIterator(m_hashSet.begin());
2039 HashMap<int, Member<IntWrapper> >::iterator mapIterator(m_hashMap.begin( )); 2037 HashMap<int, Member<IntWrapper> >::iterator mapIterator(m_hashMap.begin( ));
2040 Vector<OwnPtr<ShouldBeTraced> >::iterator ownedVectorIterator(m_ownedVec tor.begin()); 2038 Vector<OwnPtr<ShouldBeTraced> >::iterator ownedVectorIterator(m_ownedVec tor.begin());
2041 2039
2042 for (int i = 0; i < iterations; i++) { 2040 for (int i = 0; i < iterations; i++) {
2043 EXPECT_EQ(i, m_vector1[i].m_wrapper->value()); 2041 EXPECT_EQ(i, m_vector1[i].m_wrapper->value());
2044 EXPECT_EQ(i, m_vector2[i]->value()); 2042 EXPECT_EQ(i, m_vector2[i]->value());
2045 EXPECT_EQ(i, d1Iterator->m_wrapper->value()); 2043 EXPECT_EQ(i, d1Iterator->m_wrapper->value());
2046 EXPECT_EQ(i, v1Iterator->m_wrapper->value()); 2044 EXPECT_EQ(i, v1Iterator->m_wrapper->value());
2047 EXPECT_EQ(i, d2Iterator->get()->value()); 2045 EXPECT_EQ(i, d2Iterator->get()->value());
2048 EXPECT_EQ(i, v2Iterator->get()->value()); 2046 EXPECT_EQ(i, v2Iterator->get()->value());
2049 EXPECT_EQ(i, ownedVectorIterator->get()->m_wrapper->value()); 2047 EXPECT_EQ(i, ownedVectorIterator->get()->m_wrapper->value());
2050 int value = setIterator->get()->value(); 2048 int value = mapIterator->value.get()->value();
2051 EXPECT_LE(0, value);
2052 EXPECT_GT(iterations, value);
2053 value = mapIterator->value.get()->value();
2054 EXPECT_LE(0, value); 2049 EXPECT_LE(0, value);
2055 EXPECT_GT(iterations, value); 2050 EXPECT_GT(iterations, value);
2056 ++d1Iterator; 2051 ++d1Iterator;
2057 ++v1Iterator; 2052 ++v1Iterator;
2058 ++d2Iterator; 2053 ++d2Iterator;
2059 ++v2Iterator; 2054 ++v2Iterator;
2060 ++setIterator;
2061 ++mapIterator; 2055 ++mapIterator;
2062 ++ownedVectorIterator; 2056 ++ownedVectorIterator;
2063 } 2057 }
2064 EXPECT_EQ(d1Iterator, m_deque1.end()); 2058 EXPECT_EQ(d1Iterator, m_deque1.end());
2065 EXPECT_EQ(v1Iterator, m_vector1.end()); 2059 EXPECT_EQ(v1Iterator, m_vector1.end());
2066 EXPECT_EQ(d2Iterator, m_deque2.end()); 2060 EXPECT_EQ(d2Iterator, m_deque2.end());
2067 EXPECT_EQ(v2Iterator, m_vector2.end()); 2061 EXPECT_EQ(v2Iterator, m_vector2.end());
2068 EXPECT_EQ(setIterator, m_hashSet.end());
2069 EXPECT_EQ(mapIterator, m_hashMap.end()); 2062 EXPECT_EQ(mapIterator, m_hashMap.end());
2070 EXPECT_EQ(ownedVectorIterator, m_ownedVector.end()); 2063 EXPECT_EQ(ownedVectorIterator, m_ownedVector.end());
2071 } 2064 }
2072 2065
2073 void trace(Visitor* visitor) 2066 void trace(Visitor* visitor)
2074 { 2067 {
2075 visitor->trace(m_deque1); 2068 visitor->trace(m_deque1);
2076 visitor->trace(m_vector1); 2069 visitor->trace(m_vector1);
2077 visitor->trace(m_deque2); 2070 visitor->trace(m_deque2);
2078 visitor->trace(m_vector2); 2071 visitor->trace(m_vector2);
2079 visitor->trace(m_hashSet);
2080 visitor->trace(m_hashMap); 2072 visitor->trace(m_hashMap);
2081 visitor->trace(m_ownedVector); 2073 visitor->trace(m_ownedVector);
2082 } 2074 }
2083 2075
2084 Deque<ShouldBeTraced> m_deque1; 2076 Deque<ShouldBeTraced> m_deque1;
2085 Vector<ShouldBeTraced> m_vector1; 2077 Vector<ShouldBeTraced> m_vector1;
2086 Deque<Member<IntWrapper> > m_deque2; 2078 Deque<Member<IntWrapper> > m_deque2;
2087 Vector<Member<IntWrapper> > m_vector2; 2079 Vector<Member<IntWrapper> > m_vector2;
2088 HashSet<Member<IntWrapper> > m_hashSet;
2089 HashMap<int, Member<IntWrapper> > m_hashMap; 2080 HashMap<int, Member<IntWrapper> > m_hashMap;
2090 Vector<OwnPtr<ShouldBeTraced> > m_ownedVector; 2081 Vector<OwnPtr<ShouldBeTraced> > m_ownedVector;
2091 }; 2082 };
2092 2083
2093 const int OffHeapContainer::iterations; 2084 const int OffHeapContainer::iterations;
2094 const int OffHeapContainer::deadWrappers; 2085 const int OffHeapContainer::deadWrappers;
2095 2086
2096 // These class definitions test compile-time asserts with transition 2087 // These class definitions test compile-time asserts with transition
2097 // types. They are therefore unused in test code and just need to 2088 // types. They are therefore unused in test code and just need to
2098 // compile. This is intentional; do not delete the A and B classes below. 2089 // compile. This is intentional; do not delete the A and B classes below.
(...skipping 2745 matching lines...) Expand 10 before | Expand all | Expand 10 after
4844 }; 4835 };
4845 4836
4846 volatile uintptr_t DeadBitTester::s_workerObjectPointer = 0; 4837 volatile uintptr_t DeadBitTester::s_workerObjectPointer = 0;
4847 4838
4848 TEST(HeapTest, ObjectDeadBit) 4839 TEST(HeapTest, ObjectDeadBit)
4849 { 4840 {
4850 DeadBitTester::test(); 4841 DeadBitTester::test();
4851 } 4842 }
4852 4843
4853 } // WebCore namespace 4844 } // WebCore namespace
OLDNEW
« no previous file with comments | « Source/modules/webdatabase/SQLTransactionCoordinator.h ('k') | Source/platform/heap/Visitor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698