| Index: src/objects.cc
|
| ===================================================================
|
| --- src/objects.cc (revision 5361)
|
| +++ src/objects.cc (working copy)
|
| @@ -4989,24 +4989,18 @@
|
| }
|
|
|
|
|
| -static inline uint32_t HashField(uint32_t hash,
|
| - bool is_array_index,
|
| - int length = -1) {
|
| - 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.
|
| - ASSERT(length > 0);
|
| - ASSERT(length <= String::kMaxArrayIndexSize);
|
| - ASSERT(TenToThe(String::kMaxCachedArrayIndexLength) <
|
| - (1 << String::kArrayIndexValueBits));
|
| - ASSERT(String::kMaxArrayIndexSize < (1 << String::kArrayIndexValueBits));
|
| - result &= ~String::kIsNotArrayIndexMask;
|
| - result |= length << String::kArrayIndexHashLengthShift;
|
| - } else {
|
| - result |= String::kIsNotArrayIndexMask;
|
| - }
|
| - return result;
|
| +uint32_t StringHasher::MakeCachedArrayIndex(uint32_t value, int length) {
|
| + value <<= String::kHashShift;
|
| + // For array indexes mix the length into the hash as an array index could
|
| + // be zero.
|
| + ASSERT(length > 0);
|
| + ASSERT(length <= String::kMaxArrayIndexSize);
|
| + ASSERT(TenToThe(String::kMaxCachedArrayIndexLength) <
|
| + (1 << String::kArrayIndexValueBits));
|
| + ASSERT(String::kMaxArrayIndexSize < (1 << String::kArrayIndexValueBits));
|
| + value &= ~String::kIsNotArrayIndexMask;
|
| + value |= length << String::kArrayIndexHashLengthShift;
|
| + return value;
|
| }
|
|
|
|
|
| @@ -5014,14 +5008,11 @@
|
| ASSERT(is_valid());
|
| if (length_ <= String::kMaxHashCalcLength) {
|
| if (is_array_index()) {
|
| - return v8::internal::HashField(array_index(), true, length_);
|
| - } else {
|
| - return v8::internal::HashField(GetHash(), false);
|
| + return MakeCachedArrayIndex(array_index(), length_);
|
| }
|
| - uint32_t payload = v8::internal::HashField(GetHash(), false);
|
| - return payload;
|
| + return (GetHash() << String::kHashShift) | String::kIsNotArrayIndexMask;
|
| } else {
|
| - return v8::internal::HashField(length_, false);
|
| + return (length_ << String::kHashShift) | String::kIsNotArrayIndexMask;
|
| }
|
| }
|
|
|
|
|