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 d220118368e77d07b973ec92c701061ddf06b6a5..6f9ee8f55eb1099c106f26efa88d42c2a05aa8c0 100644 |
| --- a/src/heap/objects-visiting-inl.h |
| +++ b/src/heap/objects-visiting-inl.h |
| @@ -191,6 +191,8 @@ void StaticMarkingVisitor<StaticVisitor>::Initialize() { |
| table_.Register(kVisitPropertyCell, &VisitPropertyCell); |
| + table_.Register(kVisitWeakCell, &VisitWeakCell); |
| + |
| table_.template RegisterSpecializations<DataObjectVisitor, kVisitDataObject, |
| kVisitDataObjectGeneric>(); |
| @@ -350,6 +352,19 @@ void StaticMarkingVisitor<StaticVisitor>::VisitPropertyCell( |
| template <typename StaticVisitor> |
| +void StaticMarkingVisitor<StaticVisitor>::VisitWeakCell(Map* map, |
| + HeapObject* object) { |
| + Heap* heap = map->GetHeap(); |
| + WeakCell* weak_cell = reinterpret_cast<WeakCell*>(object); |
| + // Enqueue weak cell in linked list of encountered weak collections. |
| + if (weak_cell->next() == heap->undefined_value()) { |
|
Erik Corry
2014/10/14 13:37:22
I think this should set to smi zero.
Since there'
ulan
2014/10/14 14:05:41
Good idea about skipping cleared weak cells. Added
|
| + weak_cell->set_next(heap->encountered_weak_cells()); |
| + heap->set_encountered_weak_cells(weak_cell); |
| + } |
| +} |
| + |
| + |
| +template <typename StaticVisitor> |
| void StaticMarkingVisitor<StaticVisitor>::VisitAllocationSite( |
| Map* map, HeapObject* object) { |
| Heap* heap = map->GetHeap(); |