Index: src/heap/mark-compact.cc |
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
index 045bbef414e984bd0e1917c69293122313a13206..98ec7152e8c5521dc699908f98026d2ce85f14be 100644 |
--- a/src/heap/mark-compact.cc |
+++ b/src/heap/mark-compact.cc |
@@ -2898,10 +2898,7 @@ void MarkCompactCollector::MigrateObject(HeapObject* dst, HeapObject* src, |
Memory::Object_at(dst_slot) = value; |
- // We special case ConstantPoolArrays below since they could contain |
- // integers value entries which look like tagged pointers. |
- // TODO(mstarzinger): restructure this code to avoid this special-casing. |
- if (!src->IsConstantPoolArray()) { |
+ if (!src->MayContainRawValues()) { |
RecordMigratedSlot(value, dst_slot); |
} |
@@ -2919,6 +2916,9 @@ void MarkCompactCollector::MigrateObject(HeapObject* dst, HeapObject* src, |
SlotsBuffer::IGNORE_OVERFLOW); |
} |
} else if (dst->IsConstantPoolArray()) { |
+ // We special case ConstantPoolArrays since they could contain integers |
+ // value entries which look like tagged pointers. |
+ // TODO(mstarzinger): restructure this code to avoid this special-casing. |
ConstantPoolArray* array = ConstantPoolArray::cast(dst); |
ConstantPoolArray::Iterator code_iter(array, ConstantPoolArray::CODE_PTR); |
while (!code_iter.is_finished()) { |