| 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);
|
| }
|
|
|
|
|
|
|