diff options
Diffstat (limited to 'deps/v8/src/mips/code-stubs-mips.cc')
-rw-r--r-- | deps/v8/src/mips/code-stubs-mips.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/deps/v8/src/mips/code-stubs-mips.cc b/deps/v8/src/mips/code-stubs-mips.cc index b8e97f6df..3e811bd7c 100644 --- a/deps/v8/src/mips/code-stubs-mips.cc +++ b/deps/v8/src/mips/code-stubs-mips.cc @@ -5924,11 +5924,15 @@ void StringHelper::GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm, void StringHelper::GenerateHashInit(MacroAssembler* masm, - Register hash, - Register character) { - // hash = character + (character << 10); - __ sll(hash, character, 10); + Register hash, + Register character) { + // hash = seed + character + ((seed + character) << 10); + __ LoadRoot(hash, Heap::kStringHashSeedRootIndex); + // Untag smi seed and add the character. + __ SmiUntag(hash); __ addu(hash, hash, character); + __ sll(at, hash, 10); + __ addu(hash, hash, at); // hash ^= hash >> 6; __ srl(at, hash, 6); __ xor_(hash, hash, at); @@ -5936,8 +5940,8 @@ void StringHelper::GenerateHashInit(MacroAssembler* masm, void StringHelper::GenerateHashAddCharacter(MacroAssembler* masm, - Register hash, - Register character) { + Register hash, + Register character) { // hash += character; __ addu(hash, hash, character); // hash += hash << 10; |