| Index: src/stub-cache.h
|
| ===================================================================
|
| --- src/stub-cache.h (revision 435)
|
| +++ src/stub-cache.h (working copy)
|
| @@ -198,11 +198,16 @@
|
|
|
| // Computes the hashed offsets for primary and secondary caches.
|
| static int PrimaryOffset(String* name, Code::Flags flags, Map* map) {
|
| + // This works well because the heap object tag size and the hash
|
| + // shift are equal. Shifting down the length field to get the
|
| + // hash code would effectively throw away two bits of the hash
|
| + // code.
|
| + ASSERT(kHeapObjectTagSize == kHashShift);
|
| // Compute the hash of the name (use entire length field).
|
| - uint32_t name_hash = name->length_field();
|
| - ASSERT(name_hash & String::kHashComputedMask);
|
| + ASSERT(name->HasHashCode());
|
| + uint32_t field = name->length_field();
|
| // Base the offset on a simple combination of name, flags, and map.
|
| - uint32_t key = (reinterpret_cast<uint32_t>(map) + name_hash) ^ flags;
|
| + uint32_t key = (reinterpret_cast<uint32_t>(map) + field) ^ flags;
|
| return key & ((kPrimaryTableSize - 1) << kHeapObjectTagSize);
|
| }
|
|
|
|
|