Index: src/heap/mark-compact.cc |
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
index 8a32ba8bda28d08c91b6876a3c4d9ed038fad9f6..ec0f7f02d911a900cd56f5c0b0fa925107706aaf 100644 |
--- a/src/heap/mark-compact.cc |
+++ b/src/heap/mark-compact.cc |
@@ -3353,6 +3353,13 @@ bool MarkCompactCollector::EvacuateLiveObjectsFromPage( |
HeapObject* target_object = nullptr; |
AllocationResult allocation = target_space->AllocateRaw(size, alignment); |
if (!allocation.To(&target_object)) { |
+ // We need to abort compaction for this page. Make sure that we reset |
+ // the mark bits for objects that have already been migrated. |
+ if (i > 0) { |
+ p->markbits()->ClearTillIndex( |
ulan
2015/10/08 12:43:14
As discussed offline, let's change the name to som
Michael Lippautz
2015/10/08 12:57:51
ClearRange it is.
|
+ p->AddressToMarkbitIndex(p->area_start()), |
+ p->AddressToMarkbitIndex(object_addr)); |
+ } |
return false; |
} |