Home | History | Annotate | Download | only in runtime

Lines Matching refs:irt

27 static void CheckDump(IndirectReferenceTable* irt, size_t num_objects, size_t num_unique)
30 irt->Dump(oss);
49 IndirectReferenceTable irt(kTableInitial, kTableMax, kGlobal);
64 CheckDump(&irt, 0, 0);
67 EXPECT_FALSE(irt.Remove(cookie, iref0)) << "unexpectedly successful removal";
70 iref0 = irt.Add(cookie, obj0);
72 CheckDump(&irt, 1, 1);
73 IndirectRef iref1 = irt.Add(cookie, obj1);
75 CheckDump(&irt, 2, 2);
76 IndirectRef iref2 = irt.Add(cookie, obj2);
78 CheckDump(&irt, 3, 3);
80 EXPECT_EQ(obj0, irt.Get(iref0));
81 EXPECT_EQ(obj1, irt.Get(iref1));
82 EXPECT_EQ(obj2, irt.Get(iref2));
84 EXPECT_TRUE(irt.Remove(cookie, iref0));
85 CheckDump(&irt, 2, 2);
86 EXPECT_TRUE(irt.Remove(cookie, iref1));
87 CheckDump(&irt, 1, 1);
88 EXPECT_TRUE(irt.Remove(cookie, iref2));
89 CheckDump(&irt, 0, 0);
92 EXPECT_EQ(0U, irt.Capacity());
95 EXPECT_EQ(kInvalidIndirectRefObject, irt.Get(iref0));
98 iref0 = irt.Add(cookie, obj0);
100 iref1 = irt.Add(cookie, obj1);
102 iref2 = irt.Add(cookie, obj2);
104 CheckDump(&irt, 3, 3);
106 ASSERT_TRUE(irt.Remove(cookie, iref2));
107 CheckDump(&irt, 2, 2);
108 ASSERT_TRUE(irt.Remove(cookie, iref1));
109 CheckDump(&irt, 1, 1);
110 ASSERT_TRUE(irt.Remove(cookie, iref0));
111 CheckDump(&irt, 0, 0);
114 ASSERT_EQ(0U, irt.Capacity());
118 iref0 = irt.Add(cookie, obj0);
120 iref1 = irt.Add(cookie, obj1);
122 iref2 = irt.Add(cookie, obj2);
124 CheckDump(&irt, 3, 3);
126 ASSERT_EQ(3U, irt.Capacity());
128 ASSERT_TRUE(irt.Remove(cookie, iref1));
129 CheckDump(&irt, 2, 2);
130 ASSERT_FALSE(irt.Remove(cookie, iref1));
131 CheckDump(&irt, 2, 2);
134 EXPECT_EQ(kInvalidIndirectRefObject, irt.Get(iref1));
136 ASSERT_TRUE(irt.Remove(cookie, iref2));
137 CheckDump(&irt, 1, 1);
138 ASSERT_TRUE(irt.Remove(cookie, iref0));
139 CheckDump(&irt, 0, 0);
142 ASSERT_EQ(0U, irt.Capacity());
147 iref0 = irt.Add(cookie, obj0);
149 iref1 = irt.Add(cookie, obj1);
151 iref2 = irt.Add(cookie, obj2);
153 IndirectRef iref3 = irt.Add(cookie, obj3);
155 CheckDump(&irt, 4, 4);
157 ASSERT_TRUE(irt.Remove(cookie, iref1));
158 CheckDump(&irt, 3, 3);
160 iref1 = irt.Add(cookie, obj1);
163 ASSERT_EQ(4U, irt.Capacity()) << "hole not filled";
164 CheckDump(&irt, 4, 4);
166 ASSERT_TRUE(irt.Remove(cookie, iref1));
167 CheckDump(&irt, 3, 3);
168 ASSERT_TRUE(irt.Remove(cookie, iref3));
169 CheckDump(&irt, 2, 2);
171 ASSERT_EQ(3U, irt.Capacity()) << "should be 3 after two deletions";
173 ASSERT_TRUE(irt.Remove(cookie, iref2));
174 CheckDump(&irt, 1, 1);
175 ASSERT_TRUE(irt.Remove(cookie, iref0));
176 CheckDump(&irt, 0, 0);
178 ASSERT_EQ(0U, irt.Capacity()) << "not empty after split remove";
183 iref0 = irt.Add(cookie, obj0);
185 CheckDump(&irt, 1, 1);
186 ASSERT_TRUE(irt.Remove(cookie, iref0));
187 CheckDump(&irt, 0, 0);
188 iref1 = irt.Add(cookie, obj1);
190 CheckDump(&irt, 1, 1);
191 ASSERT_FALSE(irt.Remove(cookie, iref0)) << "mismatched del succeeded";
192 CheckDump(&irt, 1, 1);
193 ASSERT_TRUE(irt.Remove(cookie, iref1)) << "switched del failed";
194 ASSERT_EQ(0U, irt.Capacity()) << "switching del not empty";
195 CheckDump(&irt, 0, 0);
199 iref0 = irt.Add(cookie, obj0);
201 CheckDump(&irt, 1, 1);
202 ASSERT_TRUE(irt.Remove(cookie, iref0));
203 CheckDump(&irt, 0, 0);
204 iref1 = irt.Add(cookie, obj0);
206 CheckDump(&irt, 1, 1);
209 ASSERT_FALSE(irt.Remove(cookie, iref0)) << "temporal del succeeded";
211 ASSERT_TRUE(irt.Remove(cookie, iref1)) << "temporal cleanup failed";
212 ASSERT_EQ(0U, irt.Capacity()) << "temporal del not empty";
213 CheckDump(&irt, 0, 0);
216 ASSERT_EQ(kInvalidIndirectRefObject, irt.Get(NULL));
219 iref0 = irt.Add(cookie, obj0);
221 CheckDump(&irt, 1, 1);
222 ASSERT_TRUE(irt.Remove(cookie, iref0));
223 EXPECT_EQ(kInvalidIndirectRefObject, irt.Get(iref0)) << "stale lookup succeeded";
224 CheckDump(&irt, 0, 0);
230 manyRefs[i] = irt.Add(cookie, obj0);
232 CheckDump(&irt, i + 1, 1);
235 iref0 = irt.Add(cookie, obj0);
237 ASSERT_EQ(kTableInitial + 1, irt.Capacity());
238 CheckDump(&irt, kTableInitial + 1, 1);
241 ASSERT_TRUE(irt.Remove(cookie, manyRefs[i])) << "failed removing " << i;
242 CheckDump(&irt, kTableInitial - i, 1);
245 ASSERT_EQ(kTableInitial + 1, irt.Capacity());
247 ASSERT_TRUE(irt.Remove(cookie, iref0)) << "multi-remove final failed";
249 ASSERT_EQ(0U, irt.Capacity()) << "multi-del not empty";
250 CheckDump(&irt, 0, 0);