| 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()) {
|
|
|