| Index: src/mark-compact.cc
|
| ===================================================================
|
| --- src/mark-compact.cc (revision 3683)
|
| +++ src/mark-compact.cc (working copy)
|
| @@ -129,7 +129,8 @@
|
| #endif
|
|
|
| PagedSpaces spaces;
|
| - while (PagedSpace* space = spaces.next()) {
|
| + for (PagedSpace* space = spaces.next();
|
| + space != NULL; space = spaces.next()) {
|
| space->PrepareForMarkCompact(compacting_collection_);
|
| }
|
|
|
| @@ -172,7 +173,7 @@
|
| int old_gen_used = 0;
|
|
|
| OldSpaces spaces;
|
| - while (OldSpace* space = spaces.next()) {
|
| + for (OldSpace* space = spaces.next(); space != NULL; space = spaces.next()) {
|
| old_gen_recoverable += space->Waste() + space->AvailableFree();
|
| old_gen_used += space->Size();
|
| }
|
| @@ -475,8 +476,8 @@
|
|
|
| void MarkCompactCollector::CreateBackPointers() {
|
| HeapObjectIterator iterator(Heap::map_space());
|
| - while (iterator.has_next()) {
|
| - Object* next_object = iterator.next();
|
| + for (HeapObject* next_object = iterator.next();
|
| + next_object != NULL; next_object = iterator.next()) {
|
| if (next_object->IsMap()) { // Could also be ByteArray on free list.
|
| Map* map = Map::cast(next_object);
|
| if (map->instance_type() >= FIRST_JS_OBJECT_TYPE &&
|
| @@ -509,8 +510,7 @@
|
| // so that we don't waste effort pointlessly scanning for objects.
|
| ASSERT(!marking_stack.is_full());
|
|
|
| - while (it->has_next()) {
|
| - HeapObject* object = it->next();
|
| + for (HeapObject* object = it->next(); object != NULL; object = it->next()) {
|
| if (object->IsOverflowed()) {
|
| object->ClearOverflow();
|
| ASSERT(object->IsMarked());
|
| @@ -793,8 +793,9 @@
|
| // scan the descriptor arrays of those maps, not all maps.
|
| // All of these actions are carried out only on maps of JSObjects
|
| // and related subtypes.
|
| - while (map_iterator.has_next()) {
|
| - Map* map = reinterpret_cast<Map*>(map_iterator.next());
|
| + for (HeapObject* obj = map_iterator.next();
|
| + obj != NULL; obj = map_iterator.next()) {
|
| + Map* map = reinterpret_cast<Map*>(obj);
|
| if (!map->IsMarked() && map->IsByteArray()) continue;
|
|
|
| ASSERT(SafeIsMap(map));
|
| @@ -1282,8 +1283,7 @@
|
| MapIterator it;
|
| HeapObject* o = it.next();
|
| for (; o != first_map_to_evacuate_; o = it.next()) {
|
| - it.has_next(); // Must be called for side-effects, see bug 586.
|
| - ASSERT(it.has_next());
|
| + ASSERT(o != NULL);
|
| Map* map = reinterpret_cast<Map*>(o);
|
| ASSERT(!map->IsMarked());
|
| ASSERT(!map->IsOverflowed());
|
| @@ -1309,10 +1309,8 @@
|
|
|
| void UpdateMapPointersInLargeObjectSpace() {
|
| LargeObjectIterator it(Heap::lo_space());
|
| - while (true) {
|
| - if (!it.has_next()) break;
|
| - UpdateMapPointersInObject(it.next());
|
| - }
|
| + for (HeapObject* obj = it.next(); obj != NULL; obj = it.next())
|
| + UpdateMapPointersInObject(obj);
|
| }
|
|
|
| void Finish() {
|
| @@ -1355,9 +1353,8 @@
|
|
|
| static Map* NextMap(MapIterator* it, HeapObject* last, bool live) {
|
| while (true) {
|
| - it->has_next(); // Must be called for side-effects, see bug 586.
|
| - ASSERT(it->has_next());
|
| HeapObject* next = it->next();
|
| + ASSERT(next != NULL);
|
| if (next == last)
|
| return NULL;
|
| ASSERT(!next->IsOverflowed());
|
| @@ -1446,8 +1443,9 @@
|
| if (!FLAG_enable_slow_asserts)
|
| return;
|
|
|
| - while (map_to_evacuate_it_.has_next())
|
| - ASSERT(FreeListNode::IsFreeListNode(map_to_evacuate_it_.next()));
|
| + for (HeapObject* obj = map_to_evacuate_it_.next();
|
| + obj != NULL; obj = map_to_evacuate_it_.next())
|
| + ASSERT(FreeListNode::IsFreeListNode(obj));
|
| }
|
| #endif
|
| };
|
| @@ -1480,7 +1478,8 @@
|
|
|
| map_compact.FinishMapSpace();
|
| PagedSpaces spaces;
|
| - while (PagedSpace* space = spaces.next()) {
|
| + for (PagedSpace* space = spaces.next();
|
| + space != NULL; space = spaces.next()) {
|
| if (space == Heap::map_space()) continue;
|
| map_compact.UpdateMapPointersInPagedSpace(space);
|
| }
|
| @@ -1655,7 +1654,8 @@
|
|
|
| // Large objects do not move, the map word can be updated directly.
|
| LargeObjectIterator it(Heap::lo_space());
|
| - while (it.has_next()) UpdatePointersInNewObject(it.next());
|
| + for (HeapObject* obj = it.next(); obj != NULL; obj = it.next())
|
| + UpdatePointersInNewObject(obj);
|
|
|
| USE(live_maps);
|
| USE(live_pointer_olds);
|
| @@ -1819,7 +1819,8 @@
|
| Page::set_rset_state(Page::IN_USE);
|
| #endif
|
| PagedSpaces spaces;
|
| - while (PagedSpace* space = spaces.next()) space->MCCommitRelocationInfo();
|
| + for (PagedSpace* space = spaces.next(); space != NULL; space = spaces.next())
|
| + space->MCCommitRelocationInfo();
|
| }
|
|
|
|
|
|
|