| Index: test/cctest/test-heap.cc
|
| diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc
|
| index 94d05555ec556276834a381ad68786266f433e77..fbe66ecd74627eade4ea57fe233b3f50ff21e33d 100644
|
| --- a/test/cctest/test-heap.cc
|
| +++ b/test/cctest/test-heap.cc
|
| @@ -1095,3 +1095,32 @@ TEST(TestInternalWeakListsTraverseWithGC) {
|
| ctx[i]->Exit();
|
| }
|
| }
|
| +
|
| +
|
| +TEST(TestSizeOfObjectsVsHeapIteratorPrecision) {
|
| + InitializeVM();
|
| + intptr_t size_of_objects_1 = Heap::SizeOfObjects();
|
| + HeapIterator iterator(HeapIterator::kPreciseFiltering);
|
| + intptr_t size_of_objects_2 = 0;
|
| + for (HeapObject* obj = iterator.next();
|
| + obj != NULL;
|
| + obj = iterator.next()) {
|
| + size_of_objects_2 += obj->Size();
|
| + }
|
| + // Delta must be within 1% of the larger result.
|
| + if (size_of_objects_1 > size_of_objects_2) {
|
| + intptr_t delta = size_of_objects_1 - size_of_objects_2;
|
| + PrintF("Heap::SizeOfObjects: %" V8_PTR_PREFIX "d, "
|
| + "Iterator: %" V8_PTR_PREFIX "d, "
|
| + "delta: %" V8_PTR_PREFIX "d\n",
|
| + size_of_objects_1, size_of_objects_2, delta);
|
| + CHECK_GT(size_of_objects_1 / 100, delta);
|
| + } else {
|
| + intptr_t delta = size_of_objects_2 - size_of_objects_1;
|
| + PrintF("Heap::SizeOfObjects: %" V8_PTR_PREFIX "d, "
|
| + "Iterator: %" V8_PTR_PREFIX "d, "
|
| + "delta: %" V8_PTR_PREFIX "d\n",
|
| + size_of_objects_1, size_of_objects_2, delta);
|
| + CHECK_GT(size_of_objects_2 / 100, delta);
|
| + }
|
| +}
|
|
|