| Index: src/mark-compact.cc
|
| ===================================================================
|
| --- src/mark-compact.cc (revision 6377)
|
| +++ src/mark-compact.cc (working copy)
|
| @@ -33,6 +33,7 @@
|
| #include "gdb-jit.h"
|
| #include "global-handles.h"
|
| #include "ic-inl.h"
|
| +#include "liveobjectlist-inl.h"
|
| #include "mark-compact.h"
|
| #include "objects-visiting.h"
|
| #include "stub-cache.h"
|
| @@ -1660,6 +1661,7 @@
|
| free_start = current;
|
| is_prev_alive = false;
|
| }
|
| + LiveObjectList::ProcessNonLive(object);
|
| }
|
| }
|
|
|
| @@ -1880,6 +1882,9 @@
|
| size,
|
| false);
|
| } else {
|
| + // Process the dead object before we write a NULL into its header.
|
| + LiveObjectList::ProcessNonLive(object);
|
| +
|
| size = object->Size();
|
| Memory::Address_at(current) = NULL;
|
| }
|
| @@ -1899,6 +1904,7 @@
|
|
|
| // Update roots.
|
| Heap::IterateRoots(&updating_visitor, VISIT_ALL_IN_SCAVENGE);
|
| + LiveObjectList::IterateElements(&updating_visitor);
|
|
|
| // Update pointers in old spaces.
|
| Heap::IterateDirtyRegions(Heap::old_pointer_space(),
|
| @@ -1986,6 +1992,7 @@
|
| free_start = current;
|
| is_previous_alive = false;
|
| }
|
| + LiveObjectList::ProcessNonLive(object);
|
| }
|
| // The object is now unmarked for the call to Size() at the top of the
|
| // loop.
|
| @@ -2164,6 +2171,7 @@
|
| void UpdateMapPointersInRoots() {
|
| Heap::IterateRoots(&map_updating_visitor_, VISIT_ONLY_STRONG);
|
| GlobalHandles::IterateWeakRoots(&map_updating_visitor_);
|
| + LiveObjectList::IterateElements(&map_updating_visitor_);
|
| }
|
|
|
| void UpdateMapPointersInPagedSpace(PagedSpace* space) {
|
| @@ -2533,6 +2541,8 @@
|
| // Update the pointer to the head of the weak list of global contexts.
|
| updating_visitor.VisitPointer(&Heap::global_contexts_list_);
|
|
|
| + LiveObjectList::IterateElements(&updating_visitor);
|
| +
|
| int live_maps_size = IterateLiveObjects(Heap::map_space(),
|
| &UpdatePointersInOldObject);
|
| int live_pointer_olds_size = IterateLiveObjects(Heap::old_pointer_space(),
|
|
|