Chromium Code Reviews| Index: src/objects-visiting-inl.h |
| diff --git a/src/objects-visiting-inl.h b/src/objects-visiting-inl.h |
| index f83f00fd5d139574a9ccc2a3ab9ae09456794f0d..809e2f3d21cfd71ce86bb2c718f93533897a6d17 100644 |
| --- a/src/objects-visiting-inl.h |
| +++ b/src/objects-visiting-inl.h |
| @@ -79,6 +79,10 @@ void StaticNewSpaceVisitor<StaticVisitor>::Initialize() { |
| table_.Register(kVisitJSFunction, &VisitJSFunction); |
| + table_.Register(kVisitJSArrayBuffer, &VisitJSArrayBuffer); |
| + |
| + table_.Register(kVisitJSTypedArray, &VisitJSTypedArray); |
| + |
| table_.Register(kVisitFreeSpace, &VisitFreeSpace); |
| table_.Register(kVisitJSWeakMap, &JSObjectVisitor::Visit); |
| @@ -99,6 +103,45 @@ void StaticNewSpaceVisitor<StaticVisitor>::Initialize() { |
| template<typename StaticVisitor> |
| +int StaticNewSpaceVisitor<StaticVisitor>::VisitJSArrayBuffer( |
| + Map* map, HeapObject* object) { |
| + Heap* heap = map->GetHeap(); |
| + |
| + int object_size = JSArrayBuffer::BodyDescriptor::SizeOf(map, object); |
| + STATIC_ASSERT( |
| + JSArrayBuffer::kWeakFirstArrayOffset == |
| + JSArrayBuffer::kWeakNextOffset + kPointerSize); |
| + VisitPointers( |
| + heap, |
| + HeapObject::RawField(object, JSArrayBuffer::BodyDescriptor::kStartOffset), |
| + HeapObject::RawField(object, JSArrayBuffer::kWeakNextOffset)); |
| + VisitPointers( |
| + heap, |
| + HeapObject::RawField(object, |
| + JSArrayBuffer::kWeakNextOffset + 2 * kPointerSize), |
| + HeapObject::RawField(object, object_size)); |
| + return object_size; |
| +} |
| + |
|
Michael Starzinger
2013/06/06 09:53:18
nit: Add a second empty newline.
Dmitry Lomov (no reviews)
2013/06/06 13:18:34
Done.
|
| +template<typename StaticVisitor> |
| +int StaticNewSpaceVisitor<StaticVisitor>::VisitJSTypedArray( |
| + Map* map, HeapObject* object) { |
| + int object_size = JSTypedArray::BodyDescriptor::SizeOf(map, object); |
| + VisitPointers( |
| + map->GetHeap(), |
| + HeapObject::RawField(object, JSTypedArray::BodyDescriptor::kStartOffset), |
| + HeapObject::RawField(object, JSTypedArray::kWeakNextOffset)); |
| + VisitPointers( |
| + map->GetHeap(), |
| + HeapObject::RawField(object, |
| + JSTypedArray::kWeakNextOffset + kPointerSize), |
| + HeapObject::RawField(object, object_size)); |
| + return object_size; |
| +} |
| + |
| + |
| + |
|
Michael Starzinger
2013/06/06 09:53:18
nit: Drop the third empty newline.
Dmitry Lomov (no reviews)
2013/06/06 13:18:34
Done.
|
| +template<typename StaticVisitor> |
| void StaticMarkingVisitor<StaticVisitor>::Initialize() { |
| table_.Register(kVisitShortcutCandidate, |
| &FixedBodyVisitor<StaticVisitor, |
| @@ -149,6 +192,11 @@ void StaticMarkingVisitor<StaticVisitor>::Initialize() { |
| table_.Register(kVisitJSFunction, &VisitJSFunction); |
| + table_.Register(kVisitJSArrayBuffer, &VisitJSArrayBuffer); |
| + |
| + table_.Register(kVisitJSTypedArray, &VisitJSTypedArray); |
| + |
| + |
|
Michael Starzinger
2013/06/06 09:53:18
nit: Drop the second empty newline.
Dmitry Lomov (no reviews)
2013/06/06 13:18:34
Done.
|
| // Registration for kVisitJSRegExp is done by StaticVisitor. |
| table_.Register(kVisitPropertyCell, |
| @@ -401,6 +449,42 @@ void StaticMarkingVisitor<StaticVisitor>::VisitJSRegExp( |
| template<typename StaticVisitor> |
| +void StaticMarkingVisitor<StaticVisitor>::VisitJSArrayBuffer( |
| + Map* map, HeapObject* object) { |
| + Heap* heap = map->GetHeap(); |
| + |
| + int object_size = JSArrayBuffer::BodyDescriptor::SizeOf(map, object); |
| + STATIC_ASSERT( |
| + JSArrayBuffer::kWeakFirstArrayOffset == |
| + JSArrayBuffer::kWeakNextOffset + kPointerSize); |
| + StaticVisitor::VisitPointers( |
| + heap, |
| + HeapObject::RawField(object, JSArrayBuffer::BodyDescriptor::kStartOffset), |
| + HeapObject::RawField(object, JSArrayBuffer::kWeakNextOffset)); |
| + StaticVisitor::VisitPointers( |
| + heap, |
| + HeapObject::RawField(object, |
| + JSArrayBuffer::kWeakNextOffset + 2 * kPointerSize), |
| + HeapObject::RawField(object, object_size)); |
| +} |
| + |
|
Michael Starzinger
2013/06/06 09:53:18
nit: Add a second empty newline.
Dmitry Lomov (no reviews)
2013/06/06 13:18:34
Done.
|
| +template<typename StaticVisitor> |
| +void StaticMarkingVisitor<StaticVisitor>::VisitJSTypedArray( |
| + Map* map, HeapObject* object) { |
| + int object_size = JSTypedArray::BodyDescriptor::SizeOf(map, object); |
| + StaticVisitor::VisitPointers( |
| + map->GetHeap(), |
| + HeapObject::RawField(object, JSTypedArray::BodyDescriptor::kStartOffset), |
| + HeapObject::RawField(object, JSTypedArray::kWeakNextOffset)); |
| + StaticVisitor::VisitPointers( |
| + map->GetHeap(), |
| + HeapObject::RawField(object, |
| + JSTypedArray::kWeakNextOffset + kPointerSize), |
| + HeapObject::RawField(object, object_size)); |
| +} |
| + |
| + |
| +template<typename StaticVisitor> |
| void StaticMarkingVisitor<StaticVisitor>::MarkMapContents( |
| Heap* heap, Map* map) { |
| // Make sure that the back pointer stored either in the map itself or |