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.