| Index: src/mark-compact.cc
|
| diff --git a/src/mark-compact.cc b/src/mark-compact.cc
|
| index b82c76aa830bcb249f919419e99e46b2c6f7410e..160dba8d49d85a60ee4ec4d59ff1ccb42bc7e474 100644
|
| --- a/src/mark-compact.cc
|
| +++ b/src/mark-compact.cc
|
| @@ -1081,8 +1081,13 @@ void MarkCompactCollector::MarkMapContents(Map* map) {
|
| FixedArray* prototype_transitions = map->unchecked_prototype_transitions();
|
| if (!prototype_transitions->IsMarked()) SetMark(prototype_transitions);
|
|
|
| - MarkDescriptorArray(reinterpret_cast<DescriptorArray*>(
|
| - *HeapObject::RawField(map, Map::kInstanceDescriptorsOffset)));
|
| + Object* raw_descriptor_array =
|
| + *HeapObject::RawField(map,
|
| + Map::kInstanceDescriptorsOrBitField3Offset);
|
| + if (!raw_descriptor_array->IsSmi()) {
|
| + MarkDescriptorArray(
|
| + reinterpret_cast<DescriptorArray*>(raw_descriptor_array));
|
| + }
|
|
|
| // Mark the Object* fields of the Map.
|
| // Since the descriptor array has been marked already, it is fine
|
|
|