| Index: src/objects.cc
 | 
| diff --git a/src/objects.cc b/src/objects.cc
 | 
| index ab678cb5398671758660177b0112115109807e5d..e5e1a4e68915ff6defb58d44207a9693bf4ffa03 100644
 | 
| --- a/src/objects.cc
 | 
| +++ b/src/objects.cc
 | 
| @@ -4784,7 +4784,7 @@ static inline uint32_t HashSequentialString(const schar* chars, int length) {
 | 
|  
 | 
|  uint32_t String::ComputeAndSetHash() {
 | 
|    // Should only be called if hash code has not yet been computed.
 | 
| -  ASSERT(!(hash_field() & kHashComputedMask));
 | 
| +  ASSERT(!HasHashCode());
 | 
|  
 | 
|    const int len = length();
 | 
|  
 | 
| @@ -4803,7 +4803,7 @@ uint32_t String::ComputeAndSetHash() {
 | 
|    set_hash_field(field);
 | 
|  
 | 
|    // Check the hash code is there.
 | 
| -  ASSERT(hash_field() & kHashComputedMask);
 | 
| +  ASSERT(HasHashCode());
 | 
|    uint32_t result = field >> kHashShift;
 | 
|    ASSERT(result != 0);  // Ensure that the hash value of 0 is never computed.
 | 
|    return result;
 | 
| @@ -4858,8 +4858,7 @@ bool String::SlowAsArrayIndex(uint32_t* index) {
 | 
|  static inline uint32_t HashField(uint32_t hash,
 | 
|                                   bool is_array_index,
 | 
|                                   int length = -1) {
 | 
| -  uint32_t result =
 | 
| -      (hash << String::kHashShift) | String::kHashComputedMask;
 | 
| +  uint32_t result = (hash << String::kHashShift);
 | 
|    if (is_array_index) {
 | 
|      // For array indexes mix the length into the hash as an array index could
 | 
|      // be zero.
 | 
| @@ -5639,7 +5638,7 @@ Object* JSObject::SetElementsLength(Object* len) {
 | 
|    // General slow case.
 | 
|    if (len->IsNumber()) {
 | 
|      uint32_t length;
 | 
| -    if (Array::IndexFromObject(len, &length)) {
 | 
| +    if (len->ToArrayIndex(&length)) {
 | 
|        return SetSlowElements(len);
 | 
|      } else {
 | 
|        return ArrayLengthRangeError();
 | 
| @@ -6063,8 +6062,7 @@ Object* JSObject::SetFastElement(uint32_t index, Object* value) {
 | 
|      if (IsJSArray()) {
 | 
|        // Update the length of the array if needed.
 | 
|        uint32_t array_length = 0;
 | 
| -      CHECK(Array::IndexFromObject(JSArray::cast(this)->length(),
 | 
| -                                   &array_length));
 | 
| +      CHECK(JSArray::cast(this)->length()->ToArrayIndex(&array_length));
 | 
|        if (index >= array_length) {
 | 
|          JSArray::cast(this)->set_length(Smi::FromInt(index + 1));
 | 
|        }
 | 
| @@ -6202,8 +6200,7 @@ Object* JSObject::SetElementWithoutInterceptor(uint32_t index, Object* value) {
 | 
|        if (ShouldConvertToFastElements()) {
 | 
|          uint32_t new_length = 0;
 | 
|          if (IsJSArray()) {
 | 
| -          CHECK(Array::IndexFromObject(JSArray::cast(this)->length(),
 | 
| -                                       &new_length));
 | 
| +          CHECK(JSArray::cast(this)->length()->ToArrayIndex(&new_length));
 | 
|            JSArray::cast(this)->set_length(Smi::FromInt(new_length));
 | 
|          } else {
 | 
|            new_length = NumberDictionary::cast(elements())->max_number_key() + 1;
 | 
| @@ -6234,7 +6231,7 @@ Object* JSObject::SetElementWithoutInterceptor(uint32_t index, Object* value) {
 | 
|  
 | 
|  Object* JSArray::JSArrayUpdateLengthFromIndex(uint32_t index, Object* value) {
 | 
|    uint32_t old_len = 0;
 | 
| -  CHECK(Array::IndexFromObject(length(), &old_len));
 | 
| +  CHECK(length()->ToArrayIndex(&old_len));
 | 
|    // Check to see if we need to update the length. For now, we make
 | 
|    // sure that the length stays within 32-bits (unsigned).
 | 
|    if (index >= old_len && index != 0xffffffff) {
 | 
| @@ -6516,7 +6513,7 @@ bool JSObject::ShouldConvertToFastElements() {
 | 
|    // fast elements.
 | 
|    uint32_t length = 0;
 | 
|    if (IsJSArray()) {
 | 
| -    CHECK(Array::IndexFromObject(JSArray::cast(this)->length(), &length));
 | 
| +    CHECK(JSArray::cast(this)->length()->ToArrayIndex(&length));
 | 
|    } else {
 | 
|      length = dictionary->max_number_key();
 | 
|    }
 | 
| 
 |