| Index: src/heap/objects-visiting-inl.h
|
| diff --git a/src/heap/objects-visiting-inl.h b/src/heap/objects-visiting-inl.h
|
| index 4133e22f732f2ab0815e21b8654e4a766b7138da..3ef51866b6341715e424292e44a6c68a06356cc8 100644
|
| --- a/src/heap/objects-visiting-inl.h
|
| +++ b/src/heap/objects-visiting-inl.h
|
| @@ -601,8 +601,13 @@
|
| if (!StaticVisitor::MarkObjectWithoutPush(heap, transitions)) return;
|
|
|
| if (transitions->HasPrototypeTransitions()) {
|
| - StaticVisitor::VisitPointer(heap,
|
| - transitions->GetPrototypeTransitionsSlot());
|
| + // Mark prototype transitions array but do not push it onto marking
|
| + // stack, this will make references from it weak. We will clean dead
|
| + // prototype transitions in ClearNonLiveReferences.
|
| + Object** slot = transitions->GetPrototypeTransitionsSlot();
|
| + HeapObject* obj = HeapObject::cast(*slot);
|
| + heap->mark_compact_collector()->RecordSlot(slot, slot, obj);
|
| + StaticVisitor::MarkObjectWithoutPush(heap, obj);
|
| }
|
|
|
| int num_transitions = TransitionArray::NumberOfTransitions(transitions);
|
|
|