| Index: src/objects-inl.h
 | 
| diff --git a/src/objects-inl.h b/src/objects-inl.h
 | 
| index 052fc5147288277ce83293579553ac02d784aac8..661566fb06df01c2287a882dd968bbe673782204 100644
 | 
| --- a/src/objects-inl.h
 | 
| +++ b/src/objects-inl.h
 | 
| @@ -1530,22 +1530,6 @@ HeapObjectContents HeapObject::ContentType() {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void HeapObject::IteratePointers(ObjectVisitor* v, int start, int end) {
 | 
| -  v->VisitPointers(reinterpret_cast<Object**>(FIELD_ADDR(this, start)),
 | 
| -                   reinterpret_cast<Object**>(FIELD_ADDR(this, end)));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void HeapObject::IteratePointer(ObjectVisitor* v, int offset) {
 | 
| -  v->VisitPointer(reinterpret_cast<Object**>(FIELD_ADDR(this, offset)));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void HeapObject::IterateNextCodeLink(ObjectVisitor* v, int offset) {
 | 
| -  v->VisitNextCodeLink(reinterpret_cast<Object**>(FIELD_ADDR(this, offset)));
 | 
| -}
 | 
| -
 | 
| -
 | 
|  double HeapNumber::value() const {
 | 
|    return READ_DOUBLE_FIELD(this, kValueOffset);
 | 
|  }
 | 
| @@ -4173,11 +4157,6 @@ Address ByteArray::GetDataStartAddress() {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void BytecodeArray::BytecodeArrayIterateBody(ObjectVisitor* v) {
 | 
| -  IteratePointer(v, kConstantPoolOffset);
 | 
| -}
 | 
| -
 | 
| -
 | 
|  byte BytecodeArray::get(int index) {
 | 
|    DCHECK(index >= 0 && index < this->length());
 | 
|    return READ_BYTE_FIELD(this, kHeaderSize + index * kCharSize);
 | 
| @@ -4538,7 +4517,8 @@ int HeapObject::SizeFromMap(Map* map) {
 | 
|    // Only inline the most frequent cases.
 | 
|    InstanceType instance_type = map->instance_type();
 | 
|    if (instance_type == FIXED_ARRAY_TYPE) {
 | 
| -    return FixedArray::BodyDescriptor::SizeOf(map, this);
 | 
| +    return FixedArray::SizeFor(
 | 
| +        reinterpret_cast<FixedArray*>(this)->synchronized_length());
 | 
|    }
 | 
|    if (instance_type == ONE_BYTE_STRING_TYPE ||
 | 
|        instance_type == ONE_BYTE_INTERNALIZED_STRING_TYPE) {
 | 
| @@ -6684,32 +6664,6 @@ void JSArrayBuffer::set_is_shared(bool value) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -// static
 | 
| -template <typename StaticVisitor>
 | 
| -void JSArrayBuffer::JSArrayBufferIterateBody(Heap* heap, HeapObject* obj) {
 | 
| -  StaticVisitor::VisitPointers(
 | 
| -      heap, obj,
 | 
| -      HeapObject::RawField(obj, JSArrayBuffer::BodyDescriptor::kStartOffset),
 | 
| -      HeapObject::RawField(obj,
 | 
| -                           JSArrayBuffer::kByteLengthOffset + kPointerSize));
 | 
| -  StaticVisitor::VisitPointers(
 | 
| -      heap, obj, HeapObject::RawField(obj, JSArrayBuffer::kSize),
 | 
| -      HeapObject::RawField(obj, JSArrayBuffer::kSizeWithInternalFields));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void JSArrayBuffer::JSArrayBufferIterateBody(HeapObject* obj,
 | 
| -                                             ObjectVisitor* v) {
 | 
| -  v->VisitPointers(
 | 
| -      HeapObject::RawField(obj, JSArrayBuffer::BodyDescriptor::kStartOffset),
 | 
| -      HeapObject::RawField(obj,
 | 
| -                           JSArrayBuffer::kByteLengthOffset + kPointerSize));
 | 
| -  v->VisitPointers(
 | 
| -      HeapObject::RawField(obj, JSArrayBuffer::kSize),
 | 
| -      HeapObject::RawField(obj, JSArrayBuffer::kSizeWithInternalFields));
 | 
| -}
 | 
| -
 | 
| -
 | 
|  Object* JSArrayBufferView::byte_offset() const {
 | 
|    if (WasNeutered()) return Smi::FromInt(0);
 | 
|    return Object::cast(READ_FIELD(this, kByteOffsetOffset));
 | 
| @@ -7842,189 +7796,6 @@ Relocatable::~Relocatable() {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -// static
 | 
| -template <int start_offset>
 | 
| -int FlexibleBodyDescriptor<start_offset>::SizeOf(Map* map, HeapObject* object) {
 | 
| -  return map->instance_size();
 | 
| -}
 | 
| -
 | 
| -
 | 
| -// static
 | 
| -int FixedArray::BodyDescriptor::SizeOf(Map* map, HeapObject* object) {
 | 
| -  return SizeFor(reinterpret_cast<FixedArray*>(object)->synchronized_length());
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void Foreign::ForeignIterateBody(ObjectVisitor* v) {
 | 
| -  v->VisitExternalReference(
 | 
| -      reinterpret_cast<Address*>(FIELD_ADDR(this, kForeignAddressOffset)));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -template<typename StaticVisitor>
 | 
| -void Foreign::ForeignIterateBody() {
 | 
| -  StaticVisitor::VisitExternalReference(
 | 
| -      reinterpret_cast<Address*>(FIELD_ADDR(this, kForeignAddressOffset)));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void FixedTypedArrayBase::FixedTypedArrayBaseIterateBody(ObjectVisitor* v) {
 | 
| -  v->VisitPointer(
 | 
| -      reinterpret_cast<Object**>(FIELD_ADDR(this, kBasePointerOffset)));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -template <typename StaticVisitor>
 | 
| -void FixedTypedArrayBase::FixedTypedArrayBaseIterateBody() {
 | 
| -  StaticVisitor::VisitPointer(
 | 
| -      reinterpret_cast<Object**>(FIELD_ADDR(this, kBasePointerOffset)));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void ExternalOneByteString::ExternalOneByteStringIterateBody(ObjectVisitor* v) {
 | 
| -  typedef v8::String::ExternalOneByteStringResource Resource;
 | 
| -  v->VisitExternalOneByteString(
 | 
| -      reinterpret_cast<Resource**>(FIELD_ADDR(this, kResourceOffset)));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -template <typename StaticVisitor>
 | 
| -void ExternalOneByteString::ExternalOneByteStringIterateBody() {
 | 
| -  typedef v8::String::ExternalOneByteStringResource Resource;
 | 
| -  StaticVisitor::VisitExternalOneByteString(
 | 
| -      reinterpret_cast<Resource**>(FIELD_ADDR(this, kResourceOffset)));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void ExternalTwoByteString::ExternalTwoByteStringIterateBody(ObjectVisitor* v) {
 | 
| -  typedef v8::String::ExternalStringResource Resource;
 | 
| -  v->VisitExternalTwoByteString(
 | 
| -      reinterpret_cast<Resource**>(FIELD_ADDR(this, kResourceOffset)));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -template<typename StaticVisitor>
 | 
| -void ExternalTwoByteString::ExternalTwoByteStringIterateBody() {
 | 
| -  typedef v8::String::ExternalStringResource Resource;
 | 
| -  StaticVisitor::VisitExternalTwoByteString(
 | 
| -      reinterpret_cast<Resource**>(FIELD_ADDR(this, kResourceOffset)));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void BodyDescriptorBase::IterateBodyImpl(HeapObject* obj, int start_offset,
 | 
| -                                         int end_offset, ObjectVisitor* v) {
 | 
| -  if (!FLAG_unbox_double_fields || obj->map()->HasFastPointerLayout()) {
 | 
| -    IteratePointers(obj, start_offset, end_offset, v);
 | 
| -  } else {
 | 
| -    DCHECK(FLAG_unbox_double_fields);
 | 
| -    DCHECK(IsAligned(start_offset, kPointerSize) &&
 | 
| -           IsAligned(end_offset, kPointerSize));
 | 
| -
 | 
| -    LayoutDescriptorHelper helper(obj->map());
 | 
| -    DCHECK(!helper.all_fields_tagged());
 | 
| -    for (int offset = start_offset; offset < end_offset;) {
 | 
| -      int end_of_region_offset;
 | 
| -      if (helper.IsTagged(offset, end_offset, &end_of_region_offset)) {
 | 
| -        IteratePointers(obj, offset, end_of_region_offset, v);
 | 
| -      }
 | 
| -      offset = end_of_region_offset;
 | 
| -    }
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -
 | 
| -template <typename StaticVisitor>
 | 
| -void BodyDescriptorBase::IterateBodyImpl(Heap* heap, HeapObject* obj,
 | 
| -                                         int start_offset, int end_offset) {
 | 
| -  if (!FLAG_unbox_double_fields || obj->map()->HasFastPointerLayout()) {
 | 
| -    IteratePointers<StaticVisitor>(heap, obj, start_offset, end_offset);
 | 
| -  } else {
 | 
| -    DCHECK(FLAG_unbox_double_fields);
 | 
| -    DCHECK(IsAligned(start_offset, kPointerSize) &&
 | 
| -           IsAligned(end_offset, kPointerSize));
 | 
| -
 | 
| -    LayoutDescriptorHelper helper(obj->map());
 | 
| -    DCHECK(!helper.all_fields_tagged());
 | 
| -    for (int offset = start_offset; offset < end_offset;) {
 | 
| -      int end_of_region_offset;
 | 
| -      if (helper.IsTagged(offset, end_offset, &end_of_region_offset)) {
 | 
| -        IteratePointers<StaticVisitor>(heap, obj, offset, end_of_region_offset);
 | 
| -      }
 | 
| -      offset = end_of_region_offset;
 | 
| -    }
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void BodyDescriptorBase::IteratePointers(HeapObject* obj, int start_offset,
 | 
| -                                         int end_offset, ObjectVisitor* v) {
 | 
| -  v->VisitPointers(HeapObject::RawField(obj, start_offset),
 | 
| -                   HeapObject::RawField(obj, end_offset));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -template <typename StaticVisitor>
 | 
| -void BodyDescriptorBase::IteratePointers(Heap* heap, HeapObject* obj,
 | 
| -                                         int start_offset, int end_offset) {
 | 
| -  StaticVisitor::VisitPointers(heap, obj,
 | 
| -                               HeapObject::RawField(obj, start_offset),
 | 
| -                               HeapObject::RawField(obj, end_offset));
 | 
| -}
 | 
| -
 | 
| -
 | 
| -// Iterates the function object according to the visiting policy.
 | 
| -template <JSFunction::BodyVisitingPolicy body_visiting_policy>
 | 
| -class JSFunction::BodyDescriptorImpl : public BodyDescriptorBase {
 | 
| - public:
 | 
| -  STATIC_ASSERT(kNonWeakFieldsEndOffset == kCodeEntryOffset);
 | 
| -  STATIC_ASSERT(kCodeEntryOffset + kPointerSize == kNextFunctionLinkOffset);
 | 
| -  STATIC_ASSERT(kNextFunctionLinkOffset + kPointerSize == kSize);
 | 
| -
 | 
| -  static inline void IterateBody(HeapObject* obj, int object_size,
 | 
| -                                 ObjectVisitor* v) {
 | 
| -    IteratePointers(obj, kPropertiesOffset, kNonWeakFieldsEndOffset, v);
 | 
| -
 | 
| -    if (body_visiting_policy & kVisitCodeEntry) {
 | 
| -      v->VisitCodeEntry(obj->address() + kCodeEntryOffset);
 | 
| -    }
 | 
| -
 | 
| -    if (body_visiting_policy & kVisitNextFunction) {
 | 
| -      IteratePointers(obj, kNextFunctionLinkOffset, kSize, v);
 | 
| -    }
 | 
| -
 | 
| -    // TODO(ishell): v8:4531, fix when JFunctions are allowed to have in-object
 | 
| -    // properties
 | 
| -    // IterateBodyImpl(obj, kSize, object_size, v);
 | 
| -  }
 | 
| -
 | 
| -  template <typename StaticVisitor>
 | 
| -  static inline void IterateBody(HeapObject* obj, int object_size) {
 | 
| -    Heap* heap = obj->GetHeap();
 | 
| -    IteratePointers<StaticVisitor>(heap, obj, kPropertiesOffset,
 | 
| -                                   kNonWeakFieldsEndOffset);
 | 
| -
 | 
| -    if (body_visiting_policy & kVisitCodeEntry) {
 | 
| -      StaticVisitor::VisitCodeEntry(heap, obj,
 | 
| -                                    obj->address() + kCodeEntryOffset);
 | 
| -    }
 | 
| -
 | 
| -    if (body_visiting_policy & kVisitNextFunction) {
 | 
| -      IteratePointers<StaticVisitor>(heap, obj, kNextFunctionLinkOffset, kSize);
 | 
| -    }
 | 
| -
 | 
| -    // TODO(ishell): v8:4531, fix when JFunctions are allowed to have in-object
 | 
| -    // properties
 | 
| -    // IterateBodyImpl<StaticVisitor>(heap, obj, kSize, object_size);
 | 
| -  }
 | 
| -
 | 
| -  static inline int SizeOf(Map* map, HeapObject* object) {
 | 
| -    // TODO(ishell): v8:4531, fix when JFunctions are allowed to have in-object
 | 
| -    // properties
 | 
| -    return JSFunction::kSize;
 | 
| -  }
 | 
| -};
 | 
| -
 | 
| -
 | 
|  template<class Derived, class TableType>
 | 
|  Object* OrderedHashTableIterator<Derived, TableType>::CurrentKey() {
 | 
|    TableType* table(TableType::cast(this->table()));
 | 
| 
 |