| Index: src/objects-inl.h
 | 
| diff --git a/src/objects-inl.h b/src/objects-inl.h
 | 
| index b750b71a88b75ba5395c4913b7a95c4a5cd04416..dc235df84561a17b7f5c8d560eec34f4bd31bf91 100644
 | 
| --- a/src/objects-inl.h
 | 
| +++ b/src/objects-inl.h
 | 
| @@ -6562,6 +6562,35 @@ uint32_t StringHasher::HashSequentialString(const schar* chars,
 | 
|  }
 | 
|  
 | 
|  
 | 
| +uint32_t IteratingStringHasher::Hash(String* string, uint32_t seed) {
 | 
| +  IteratingStringHasher hasher(string->length(), seed);
 | 
| +  // Nothing to do.
 | 
| +  if (hasher.has_trivial_hash()) return hasher.GetHashField();
 | 
| +  ConsString* cons_string = String::VisitFlat(&hasher, string);
 | 
| +  // The string was flat.
 | 
| +  if (cons_string == NULL) return hasher.GetHashField();
 | 
| +  // This is a ConsString, iterate across it.
 | 
| +  ConsStringIteratorOp op(cons_string);
 | 
| +  int offset;
 | 
| +  while (NULL != (string = op.Next(&offset))) {
 | 
| +    String::VisitFlat(&hasher, string, offset);
 | 
| +  }
 | 
| +  return hasher.GetHashField();
 | 
| +}
 | 
| +
 | 
| +
 | 
| +void IteratingStringHasher::VisitOneByteString(const uint8_t* chars,
 | 
| +                                               int length) {
 | 
| +  AddCharacters(chars, length);
 | 
| +}
 | 
| +
 | 
| +
 | 
| +void IteratingStringHasher::VisitTwoByteString(const uint16_t* chars,
 | 
| +                                               int length) {
 | 
| +  AddCharacters(chars, length);
 | 
| +}
 | 
| +
 | 
| +
 | 
|  bool Name::AsArrayIndex(uint32_t* index) {
 | 
|    return IsString() && String::cast(this)->AsArrayIndex(index);
 | 
|  }
 | 
| 
 |