| Index: src/heap/mark-compact.cc
|
| diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc
|
| index 53bd132ac0be4da9bc3241c4800e9ccc65dcd3d6..5a4a1a7036739a6aa79154c924a182b72a7442f0 100644
|
| --- a/src/heap/mark-compact.cc
|
| +++ b/src/heap/mark-compact.cc
|
| @@ -2404,11 +2404,13 @@ void MarkCompactCollector::ClearNonLivePrototypeTransitions(Map* map) {
|
| const int header = TransitionArray::kProtoTransitionHeaderSize;
|
| int new_number_of_transitions = 0;
|
| for (int i = 0; i < number_of_transitions; i++) {
|
| - Object* cached_map = prototype_transitions->get(header + i);
|
| - if (IsMarked(cached_map)) {
|
| + Object* cell = prototype_transitions->get(header + i);
|
| + if (!WeakCell::cast(cell)->cleared()) {
|
| if (new_number_of_transitions != i) {
|
| - prototype_transitions->set(header + new_number_of_transitions,
|
| - cached_map, SKIP_WRITE_BARRIER);
|
| + prototype_transitions->set(header + new_number_of_transitions, cell);
|
| + Object** slot = prototype_transitions->RawFieldOfElementAt(
|
| + header + new_number_of_transitions);
|
| + RecordSlot(slot, slot, cell);
|
| }
|
| new_number_of_transitions++;
|
| }
|
|
|