Revision: 9460
Author:   [email protected]
Date:     Wed Sep 28 03:45:27 2011
Log: EvacuateNewSpaceAndCandidates should explicitly skip dead large objects.

LargeObjectSpace is swept at the very end of SweepSpaces.

[email protected]
BUG=v8:1736

Review URL: http://codereview.chromium.org/8060013
http://code.google.com/p/v8/source/detail?r=9460

Modified:
 /branches/bleeding_edge/src/mark-compact.cc

=======================================
--- /branches/bleeding_edge/src/mark-compact.cc Tue Sep 27 06:35:04 2011
+++ /branches/bleeding_edge/src/mark-compact.cc Wed Sep 28 03:45:27 2011
@@ -3035,6 +3035,10 @@
     // It's difficult to filter out slots recorded for large objects.
     LargeObjectIterator it(heap_->lo_space());
     for (HeapObject* obj = it.Next(); obj != NULL; obj = it.Next()) {
+      // LargeObjectSpace is not swept yet thus we have to skip
+      // dead objects explicitly.
+      if (!IsMarked(obj)) continue;
+
       Page* p = Page::FromAddress(obj->address());
       if (p->IsFlagSet(Page::RESCAN_ON_EVACUATION)) {
         obj->Iterate(&updating_visitor);

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to