Chromium Code Reviews| Index: src/heap/objects-visiting-inl.h |
| diff --git a/src/heap/objects-visiting-inl.h b/src/heap/objects-visiting-inl.h |
| index 5d06a672b3d65d6fd37b0f5f4571fbd6eaba3bc8..c2f65cbcf20cb63e4476f59b06deca5a4888840d 100644 |
| --- a/src/heap/objects-visiting-inl.h |
| +++ b/src/heap/objects-visiting-inl.h |
| @@ -179,6 +179,8 @@ void StaticMarkingVisitor<StaticVisitor>::Initialize() { |
| table_.Register(kVisitWeakCell, &VisitWeakCell); |
| + table_.Register(kVisitTransitionArray, &VisitTransitionArray); |
| + |
| table_.template RegisterSpecializations<DataObjectVisitor, kVisitDataObject, |
| kVisitDataObjectGeneric>(); |
| @@ -342,6 +344,25 @@ void StaticMarkingVisitor<StaticVisitor>::VisitWeakCell(Map* map, |
| template <typename StaticVisitor> |
| +void StaticMarkingVisitor<StaticVisitor>::VisitTransitionArray( |
| + Map* map, HeapObject* object) { |
| + typedef FlexibleBodyVisitor<StaticVisitor, TransitionArray::BodyDescriptor, |
| + int> TransitionArrayBodyVisitor; |
| + TransitionArray* array = TransitionArray::cast(object); |
| + // Enqueue the array in linked list of encountered transition arrays if it is |
| + // not already in the lest. |
|
Michael Lippautz
2015/11/27 14:27:28
nit: ... list.
ulan
2015/11/27 14:43:45
Done.
|
| + if (array->next_link()->IsUndefined()) { |
| + Heap* heap = map->GetHeap(); |
| + array->set_next_link(heap->encountered_transition_arrays(), |
| + UPDATE_WEAK_WRITE_BARRIER); |
| + heap->set_encountered_transition_arrays(array); |
| + } |
| + // TODO(ulan): Move MarkTransitionArray logic here. |
| + TransitionArrayBodyVisitor::Visit(map, object); |
| +} |
| + |
| + |
| +template <typename StaticVisitor> |
| void StaticMarkingVisitor<StaticVisitor>::VisitAllocationSite( |
| Map* map, HeapObject* object) { |
| Heap* heap = map->GetHeap(); |