if (!HasTransitionArray()) return;
TransitionArray* t = transitions();
+ MarkCompactCollector* collector = heap->mark_compact_collector();
int transition_index = 0;
if (!ClearBackPointer(heap, t->GetTarget(i))) {
if (i != transition_index) {
String* key = t->GetKey(i);
- Map* target = t->GetTarget(i);
t->SetKey(transition_index, key);
- t->SetTarget(transition_index, target);
- MarkCompactCollector* collector = heap->mark_compact_collector();
Object** key_slot = t->GetKeySlot(transition_index);
collector->RecordSlot(key_slot, key_slot, key);
- Object** target_slot = t->GetTargetSlot(transition_index);
- collector->RecordSlot(target_slot, target_slot, target);
+ // Target slots do not need to be recorded since maps are not compacted.
+ t->SetTarget(transition_index, t->GetTarget(i));
}
transition_index++;
}
}
-Object** TransitionArray::GetTargetSlot(int transition_number) {
- ASSERT(transition_number < number_of_transitions());
- return HeapObject::RawField(
- reinterpret_cast<HeapObject*>(this),
- OffsetOfElementAt(ToTargetIndex(transition_number)));
-}
-
-
void TransitionArray::SetTarget(int transition_number, Map* value) {
ASSERT(transition_number < number_of_transitions());
set(ToTargetIndex(transition_number), value);
inline Map* GetTarget(int transition_number);
inline void SetTarget(int transition_number, Map* target);
- inline Object** GetTargetSlot(int transition_number);
inline PropertyDetails GetTargetDetails(int transition_number);