Reviewers: Hannes Payer,

Message:
Thanks for your help tracking this one down!

Description:
Old space cannot be assumed to be iterable between GCs, even if swept precisely.

This is because allocation folding can cause uninitialized and hence uniterable
fragments. Trying to inspect them causes SizeFromMap() crashes.

Please review this at https://codereview.chromium.org/467693002/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+5, -10 lines):
  M src/heap/mark-compact.cc


Index: src/heap/mark-compact.cc
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc
index 4a11d3b082273cb5c2bfae0ed112e85315797825..abb4e1beb8e7e51936657e70d14dec33649a7faf 100644
--- a/src/heap/mark-compact.cc
+++ b/src/heap/mark-compact.cc
@@ -2009,16 +2009,11 @@ int MarkCompactCollector::DiscoverAndEvacuateBlackObjectsOnPage(

static void DiscoverGreyObjectsInSpace(Heap* heap, MarkingDeque* marking_deque,
                                        PagedSpace* space) {
-  if (space->swept_precisely()) {
-    HeapObjectIterator it(space);
-    DiscoverGreyObjectsWithIterator(heap, marking_deque, &it);
-  } else {
-    PageIterator it(space);
-    while (it.has_next()) {
-      Page* p = it.next();
-      DiscoverGreyObjectsOnPage(marking_deque, p);
-      if (marking_deque->IsFull()) return;
-    }
+  PageIterator it(space);
+  while (it.has_next()) {
+    Page* p = it.next();
+    DiscoverGreyObjectsOnPage(marking_deque, p);
+    if (marking_deque->IsFull()) return;
   }
 }



--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to