Index: src/ia32/code-stubs-ia32.cc |
=================================================================== |
--- src/ia32/code-stubs-ia32.cc (revision 10321) |
+++ src/ia32/code-stubs-ia32.cc (working copy) |
@@ -6033,10 +6033,20 @@ |
Register hash, |
Register character, |
Register scratch) { |
- // hash = character + (character << 10); |
- __ mov(hash, character); |
- __ shl(hash, 10); |
- __ add(hash, character); |
+ int32_t seed = masm->isolate()->HasherSeed(); |
+ if (seed != 0) { |
+ ASSERT(FLAG_randomize_string_hashes); |
+ // hash = (seed + character) + ((seed + character) << 10); |
+ __ lea(scratch, Operand(character, seed)); |
+ __ shl(scratch, 10); |
+ __ lea(hash, Operand(scratch, character, times_1, seed)); |
+ } else { |
+ ASSERT(!FLAG_randomize_string_hashes); |
+ // hash = character + (character << 10); |
+ __ mov(hash, character); |
+ __ shl(hash, 10); |
+ __ add(hash, character); |
+ } |
// hash ^= hash >> 6; |
__ mov(scratch, hash); |
__ shr(scratch, 6); |