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

Side by Side Diff: runtime/vm/object_id_ring_test.cc

Issue 2481873005: clang-format runtime/vm (Closed)
Patch Set: Merge Created 4 years, 1 month 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
« no previous file with comments | « runtime/vm/object_id_ring.h ('k') | runtime/vm/object_reload.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/assert.h" 5 #include "platform/assert.h"
6 #include "vm/globals.h" 6 #include "vm/globals.h"
7 #include "vm/object_id_ring.h" 7 #include "vm/object_id_ring.h"
8 #include "vm/unit_test.h" 8 #include "vm/unit_test.h"
9 #include "vm/dart_api_impl.h" 9 #include "vm/dart_api_impl.h"
10 #include "vm/dart_api_state.h" 10 #include "vm/dart_api_state.h"
11 11
12 namespace dart { 12 namespace dart {
13 13
14 #ifndef PRODUCT 14 #ifndef PRODUCT
15 15
16 class ObjectIdRingTestHelper { 16 class ObjectIdRingTestHelper {
17 public: 17 public:
18 static void SetCapacityAndMaxSerial(ObjectIdRing* ring, int32_t capacity, 18 static void SetCapacityAndMaxSerial(ObjectIdRing* ring,
19 int32_t capacity,
19 int32_t max_serial) { 20 int32_t max_serial) {
20 ring->SetCapacityAndMaxSerial(capacity, max_serial); 21 ring->SetCapacityAndMaxSerial(capacity, max_serial);
21 } 22 }
22 23
23 static void ExpectIdIsValid(ObjectIdRing* ring, intptr_t id) { 24 static void ExpectIdIsValid(ObjectIdRing* ring, intptr_t id) {
24 EXPECT(ring->IsValidId(id)); 25 EXPECT(ring->IsValidId(id));
25 } 26 }
26 27
27 static void ExpectIdIsInvalid(ObjectIdRing* ring, intptr_t id) { 28 static void ExpectIdIsInvalid(ObjectIdRing* ring, intptr_t id) {
28 EXPECT(!ring->IsValidId(id)); 29 EXPECT(!ring->IsValidId(id));
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 ObjectIdRingTestHelper::ExpectIdIsValid(ring, 0); 117 ObjectIdRingTestHelper::ExpectIdIsValid(ring, 0);
117 ObjectIdRingTestHelper::ExpectIdIsValid(ring, 1); 118 ObjectIdRingTestHelper::ExpectIdIsValid(ring, 1);
118 ObjectIdRingTestHelper::ExpectIdIsInvalid(ring, 2); 119 ObjectIdRingTestHelper::ExpectIdIsInvalid(ring, 2);
119 ObjectIdRingTestHelper::ExpectIdIsInvalid(ring, 3); 120 ObjectIdRingTestHelper::ExpectIdIsInvalid(ring, 3);
120 } 121 }
121 122
122 123
123 // Test that the ring table is updated when the scavenger moves an object. 124 // Test that the ring table is updated when the scavenger moves an object.
124 TEST_CASE(ObjectIdRingScavengeMoveTest) { 125 TEST_CASE(ObjectIdRingScavengeMoveTest) {
125 const char* kScriptChars = 126 const char* kScriptChars =
126 "main() {\n" 127 "main() {\n"
127 " return [1, 2, 3];\n" 128 " return [1, 2, 3];\n"
128 "}\n"; 129 "}\n";
129 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); 130 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
130 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL); 131 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
131 intptr_t list_length = 0; 132 intptr_t list_length = 0;
132 EXPECT_VALID(result); 133 EXPECT_VALID(result);
133 EXPECT(!Dart_IsNull(result)); 134 EXPECT(!Dart_IsNull(result));
134 EXPECT(Dart_IsList(result)); 135 EXPECT(Dart_IsList(result));
135 EXPECT_VALID(Dart_ListLength(result, &list_length)); 136 EXPECT_VALID(Dart_ListLength(result, &list_length));
136 EXPECT_EQ(3, list_length); 137 EXPECT_EQ(3, list_length);
137 Isolate* isolate = thread->isolate(); 138 Isolate* isolate = thread->isolate();
138 Heap* heap = isolate->heap(); 139 Heap* heap = isolate->heap();
139 ObjectIdRing* ring = isolate->object_id_ring(); 140 ObjectIdRing* ring = isolate->object_id_ring();
140 ObjectIdRing::LookupResult kind = ObjectIdRing::kInvalid; 141 ObjectIdRing::LookupResult kind = ObjectIdRing::kInvalid;
141 RawObject* raw_obj = Api::UnwrapHandle(result); 142 RawObject* raw_obj = Api::UnwrapHandle(result);
142 // Located in new heap. 143 // Located in new heap.
143 EXPECT(raw_obj->IsNewObject()); 144 EXPECT(raw_obj->IsNewObject());
144 EXPECT_NE(Object::null(), raw_obj); 145 EXPECT_NE(Object::null(), raw_obj);
145 intptr_t raw_obj_id1 = ring->GetIdForObject(raw_obj); 146 intptr_t raw_obj_id1 = ring->GetIdForObject(raw_obj);
146 EXPECT_EQ(0, raw_obj_id1); 147 EXPECT_EQ(0, raw_obj_id1);
147 // Get id 0 again. 148 // Get id 0 again.
148 EXPECT_EQ(raw_obj_id1, 149 EXPECT_EQ(raw_obj_id1, ring->GetIdForObject(raw_obj, ObjectIdRing::kReuseId));
149 ring->GetIdForObject(raw_obj, ObjectIdRing::kReuseId));
150 // Add to ring a second time. 150 // Add to ring a second time.
151 intptr_t raw_obj_id2 = ring->GetIdForObject(raw_obj); 151 intptr_t raw_obj_id2 = ring->GetIdForObject(raw_obj);
152 EXPECT_EQ(1, raw_obj_id2); 152 EXPECT_EQ(1, raw_obj_id2);
153 // Get id 0 again. 153 // Get id 0 again.
154 EXPECT_EQ(raw_obj_id1, 154 EXPECT_EQ(raw_obj_id1, ring->GetIdForObject(raw_obj, ObjectIdRing::kReuseId));
155 ring->GetIdForObject(raw_obj, ObjectIdRing::kReuseId));
156 RawObject* raw_obj1 = ring->GetObjectForId(raw_obj_id1, &kind); 155 RawObject* raw_obj1 = ring->GetObjectForId(raw_obj_id1, &kind);
157 EXPECT_EQ(ObjectIdRing::kValid, kind); 156 EXPECT_EQ(ObjectIdRing::kValid, kind);
158 RawObject* raw_obj2 = ring->GetObjectForId(raw_obj_id2, &kind); 157 RawObject* raw_obj2 = ring->GetObjectForId(raw_obj_id2, &kind);
159 EXPECT_EQ(ObjectIdRing::kValid, kind); 158 EXPECT_EQ(ObjectIdRing::kValid, kind);
160 EXPECT_NE(Object::null(), raw_obj1); 159 EXPECT_NE(Object::null(), raw_obj1);
161 EXPECT_NE(Object::null(), raw_obj2); 160 EXPECT_NE(Object::null(), raw_obj2);
162 EXPECT_EQ(RawObject::ToAddr(raw_obj), RawObject::ToAddr(raw_obj1)); 161 EXPECT_EQ(RawObject::ToAddr(raw_obj), RawObject::ToAddr(raw_obj1));
163 EXPECT_EQ(RawObject::ToAddr(raw_obj), RawObject::ToAddr(raw_obj2)); 162 EXPECT_EQ(RawObject::ToAddr(raw_obj), RawObject::ToAddr(raw_obj2));
164 { 163 {
165 TransitionNativeToVM transition(thread); 164 TransitionNativeToVM transition(thread);
(...skipping 13 matching lines...) Expand all
179 EXPECT_NE(RawObject::ToAddr(raw_obj2), RawObject::ToAddr(raw_object_moved2)); 178 EXPECT_NE(RawObject::ToAddr(raw_obj2), RawObject::ToAddr(raw_object_moved2));
180 // Test that we still point at the same list. 179 // Test that we still point at the same list.
181 Dart_Handle moved_handle = Api::NewHandle(thread, raw_object_moved1); 180 Dart_Handle moved_handle = Api::NewHandle(thread, raw_object_moved1);
182 EXPECT_VALID(moved_handle); 181 EXPECT_VALID(moved_handle);
183 EXPECT(!Dart_IsNull(moved_handle)); 182 EXPECT(!Dart_IsNull(moved_handle));
184 EXPECT(Dart_IsList(moved_handle)); 183 EXPECT(Dart_IsList(moved_handle));
185 EXPECT_VALID(Dart_ListLength(moved_handle, &list_length)); 184 EXPECT_VALID(Dart_ListLength(moved_handle, &list_length));
186 EXPECT_EQ(3, list_length); 185 EXPECT_EQ(3, list_length);
187 // Test id reuse. 186 // Test id reuse.
188 EXPECT_EQ(raw_obj_id1, 187 EXPECT_EQ(raw_obj_id1,
189 ring->GetIdForObject(raw_object_moved1, ObjectIdRing::kReuseId)); 188 ring->GetIdForObject(raw_object_moved1, ObjectIdRing::kReuseId));
190 } 189 }
191 190
192 191
193 // Test that the ring table is updated with nulls when the old GC collects. 192 // Test that the ring table is updated with nulls when the old GC collects.
194 VM_TEST_CASE(ObjectIdRingOldGCTest) { 193 VM_TEST_CASE(ObjectIdRingOldGCTest) {
195 Isolate* isolate = thread->isolate(); 194 Isolate* isolate = thread->isolate();
196 Heap* heap = isolate->heap(); 195 Heap* heap = isolate->heap();
197 ObjectIdRing* ring = isolate->object_id_ring(); 196 ObjectIdRing* ring = isolate->object_id_ring();
198 197
199 ObjectIdRing::LookupResult kind = ObjectIdRing::kInvalid; 198 ObjectIdRing::LookupResult kind = ObjectIdRing::kInvalid;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 // Check our first entry reports it has expired. 270 // Check our first entry reports it has expired.
272 obj_lookup = ring->GetObjectForId(obj_id, &kind); 271 obj_lookup = ring->GetObjectForId(obj_id, &kind);
273 EXPECT_EQ(ObjectIdRing::kExpired, kind); 272 EXPECT_EQ(ObjectIdRing::kExpired, kind);
274 EXPECT_NE(obj.raw(), obj_lookup); 273 EXPECT_NE(obj.raw(), obj_lookup);
275 EXPECT_EQ(Object::null(), obj_lookup); 274 EXPECT_EQ(Object::null(), obj_lookup);
276 } 275 }
277 276
278 #endif // !PRODUCT 277 #endif // !PRODUCT
279 278
280 } // namespace dart 279 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object_id_ring.h ('k') | runtime/vm/object_reload.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698