Index: src/heap/objects-visiting-inl.h |
diff --git a/src/heap/objects-visiting-inl.h b/src/heap/objects-visiting-inl.h |
index d6a189a98d20f75a1008dcae492d6f2921411984..d109a8fa82990431457bf1b228c94874abcade1b 100644 |
--- a/src/heap/objects-visiting-inl.h |
+++ b/src/heap/objects-visiting-inl.h |
@@ -94,14 +94,14 @@ void StaticNewSpaceVisitor<StaticVisitor>::Initialize() { |
template <typename StaticVisitor> |
int StaticNewSpaceVisitor<StaticVisitor>::VisitJSArrayBuffer( |
Map* map, HeapObject* object) { |
- Heap* heap = map->GetHeap(); |
+ typedef FlexibleBodyVisitor<StaticVisitor, JSArrayBuffer::BodyDescriptor, int> |
+ JSArrayBufferBodyVisitor; |
- JSArrayBuffer::JSArrayBufferIterateBody< |
- StaticNewSpaceVisitor<StaticVisitor> >(heap, object); |
if (!JSArrayBuffer::cast(object)->is_external()) { |
+ Heap* heap = map->GetHeap(); |
heap->array_buffer_tracker()->MarkLive(JSArrayBuffer::cast(object)); |
} |
- return JSArrayBuffer::kSizeWithInternalFields; |
+ return JSArrayBufferBodyVisitor::Visit(map, object); |
} |
@@ -525,12 +525,9 @@ void StaticMarkingVisitor<StaticVisitor>::VisitJSFunction(Map* map, |
template <typename StaticVisitor> |
void StaticMarkingVisitor<StaticVisitor>::VisitJSRegExp(Map* map, |
HeapObject* object) { |
- int last_property_offset = |
- JSRegExp::kSize + kPointerSize * map->GetInObjectProperties(); |
- StaticVisitor::VisitPointers( |
- map->GetHeap(), object, |
- HeapObject::RawField(object, JSRegExp::kPropertiesOffset), |
- HeapObject::RawField(object, last_property_offset)); |
+ typedef FlexibleBodyVisitor<StaticVisitor, JSRegExp::BodyDescriptor, void> |
+ JSRegExpBodyVisitor; |
+ JSRegExpBodyVisitor::Visit(map, object); |
} |
@@ -539,7 +536,11 @@ void StaticMarkingVisitor<StaticVisitor>::VisitJSArrayBuffer( |
Map* map, HeapObject* object) { |
Heap* heap = map->GetHeap(); |
- JSArrayBuffer::JSArrayBufferIterateBody<StaticVisitor>(heap, object); |
+ typedef FlexibleBodyVisitor<StaticVisitor, JSArrayBuffer::BodyDescriptor, |
+ void> JSArrayBufferBodyVisitor; |
+ |
+ JSArrayBufferBodyVisitor::Visit(map, object); |
+ |
if (!JSArrayBuffer::cast(object)->is_external() && |
!heap->InNewSpace(object)) { |
heap->array_buffer_tracker()->MarkLive(JSArrayBuffer::cast(object)); |
@@ -550,20 +551,18 @@ void StaticMarkingVisitor<StaticVisitor>::VisitJSArrayBuffer( |
template <typename StaticVisitor> |
void StaticMarkingVisitor<StaticVisitor>::VisitJSTypedArray( |
Map* map, HeapObject* object) { |
- StaticVisitor::VisitPointers( |
- map->GetHeap(), object, |
- HeapObject::RawField(object, JSTypedArray::BodyDescriptor::kStartOffset), |
- HeapObject::RawField(object, JSTypedArray::kSizeWithInternalFields)); |
+ typedef FlexibleBodyVisitor<StaticVisitor, JSTypedArray::BodyDescriptor, void> |
+ JSTypedArrayBodyVisitor; |
+ JSTypedArrayBodyVisitor::Visit(map, object); |
} |
template <typename StaticVisitor> |
void StaticMarkingVisitor<StaticVisitor>::VisitJSDataView(Map* map, |
HeapObject* object) { |
- StaticVisitor::VisitPointers( |
- map->GetHeap(), object, |
- HeapObject::RawField(object, JSDataView::BodyDescriptor::kStartOffset), |
- HeapObject::RawField(object, JSDataView::kSizeWithInternalFields)); |
+ typedef FlexibleBodyVisitor<StaticVisitor, JSDataView::BodyDescriptor, void> |
+ JSDataViewBodyVisitor; |
+ JSDataViewBodyVisitor::Visit(map, object); |
} |