| Index: src/heap.cc
|
| diff --git a/src/heap.cc b/src/heap.cc
|
| index df66082f82f4ce8841de14ff0791d2493def9741..a532493fc58b63dacf5915faf4e9e78a43030fc5 100644
|
| --- a/src/heap.cc
|
| +++ b/src/heap.cc
|
| @@ -1338,7 +1338,8 @@ void Heap::Scavenge() {
|
|
|
| new_space_front = DoScavenge(&scavenge_visitor, new_space_front);
|
|
|
| - while (IterateObjectGroups(&scavenge_visitor)) {
|
| + while (isolate()->global_handles()->IterateObjectGroups(
|
| + &scavenge_visitor, &IsUnscavengedHeapObject)) {
|
| new_space_front = DoScavenge(&scavenge_visitor, new_space_front);
|
| }
|
| isolate()->global_handles()->RemoveObjectGroups();
|
| @@ -1383,51 +1384,6 @@ void Heap::Scavenge() {
|
| }
|
|
|
|
|
| -// TODO(mstarzinger): Unify this method with
|
| -// MarkCompactCollector::MarkObjectGroups().
|
| -bool Heap::IterateObjectGroups(ObjectVisitor* scavenge_visitor) {
|
| - List<ObjectGroup*>* object_groups =
|
| - isolate()->global_handles()->object_groups();
|
| -
|
| - int last = 0;
|
| - bool changed = false;
|
| - for (int i = 0; i < object_groups->length(); i++) {
|
| - ObjectGroup* entry = object_groups->at(i);
|
| - ASSERT(entry != NULL);
|
| -
|
| - Object*** objects = entry->objects_;
|
| - bool group_marked = false;
|
| - for (size_t j = 0; j < entry->length_; j++) {
|
| - Object* object = *objects[j];
|
| - if (object->IsHeapObject()) {
|
| - if (!IsUnscavengedHeapObject(this, &object)) {
|
| - group_marked = true;
|
| - break;
|
| - }
|
| - }
|
| - }
|
| -
|
| - if (!group_marked) {
|
| - (*object_groups)[last++] = entry;
|
| - continue;
|
| - }
|
| -
|
| - for (size_t j = 0; j < entry->length_; ++j) {
|
| - Object* object = *objects[j];
|
| - if (object->IsHeapObject()) {
|
| - scavenge_visitor->VisitPointer(&object);
|
| - changed = true;
|
| - }
|
| - }
|
| -
|
| - entry->Dispose();
|
| - object_groups->at(i) = NULL;
|
| - }
|
| - object_groups->Rewind(last);
|
| - return changed;
|
| -}
|
| -
|
| -
|
| String* Heap::UpdateNewSpaceReferenceInExternalStringTableEntry(Heap* heap,
|
| Object** p) {
|
| MapWord first_word = HeapObject::cast(*p)->map_word();
|
|
|