Chromium Code Reviews| Index: src/heap/mark-compact.cc |
| diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
| index a58b0678b5fae004175fb8935372c8ee9559d7b4..1c82da0d02e289dddd3a96f3ccc0485e643a9883 100644 |
| --- a/src/heap/mark-compact.cc |
| +++ b/src/heap/mark-compact.cc |
| @@ -2261,10 +2261,7 @@ void MarkCompactCollector::ClearNonLiveReferences() { |
| Map* map = Map::cast(obj); |
| if (!map->CanTransition()) continue; |
| MarkBit map_mark = Marking::MarkBitFrom(map); |
| - bool alive = Marking::IsBlackOrGrey(map_mark); |
| - if (alive) { |
| - ClearNonLivePrototypeTransitions(map); |
| - } else { |
| + if (Marking::IsWhite(map_mark)) { |
| ClearNonLiveMapTransitions(map); |
| } |
| } |
| @@ -2304,39 +2301,6 @@ void MarkCompactCollector::MarkDependentCodeListForDeoptimization( |
| } |
| -void MarkCompactCollector::ClearNonLivePrototypeTransitions(Map* map) { |
| - FixedArray* prototype_transitions = |
|
ulan
2015/11/24 15:49:05
This code is moved to runtime.
|
| - TransitionArray::GetPrototypeTransitions(map); |
| - int number_of_transitions = |
| - TransitionArray::NumberOfPrototypeTransitions(prototype_transitions); |
| - |
| - const int header = TransitionArray::kProtoTransitionHeaderSize; |
| - int new_number_of_transitions = 0; |
| - for (int i = 0; i < number_of_transitions; i++) { |
| - 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, cell); |
| - Object** slot = prototype_transitions->RawFieldOfElementAt( |
| - header + new_number_of_transitions); |
| - RecordSlot(prototype_transitions, slot, cell); |
| - } |
| - new_number_of_transitions++; |
| - } |
| - } |
| - |
| - if (new_number_of_transitions != number_of_transitions) { |
| - TransitionArray::SetNumberOfPrototypeTransitions(prototype_transitions, |
| - new_number_of_transitions); |
| - } |
| - |
| - // Fill slots that became free with undefined value. |
| - for (int i = new_number_of_transitions; i < number_of_transitions; i++) { |
| - prototype_transitions->set_undefined(header + i); |
| - } |
| -} |
| - |
| - |
| void MarkCompactCollector::ClearNonLiveMapTransitions(Map* map) { |
| Object* potential_parent = map->GetBackPointer(); |
| if (!potential_parent->IsMap()) return; |