| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index 011529d6cdfd94f85f2029b93e93ee07333d6e19..1ad3e0cb4834467a9743312d59993cc91d980880 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -2457,7 +2457,11 @@ class HConstant: public HTemplateInstruction<0> {
|
|
|
| virtual intptr_t Hashcode() {
|
| ASSERT(!HEAP->allow_allocation(false));
|
| - return reinterpret_cast<intptr_t>(*handle());
|
| + intptr_t hash = reinterpret_cast<intptr_t>(*handle());
|
| + // Prevent smis from having fewer hash values when truncated to
|
| + // the least significant bits.
|
| + const int kShiftSize = kSmiShiftSize + kSmiTagSize;
|
| + return hash ^ (hash >> kShiftSize);
|
| }
|
|
|
| #ifdef DEBUG
|
|
|