Index: src/mips/code-stubs-mips.cc |
diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc |
index b40ab16151d1234cce865fd0d52b4253d1a75d08..9b8217aa3dd07a66c1ff4af4df40e0ba88873fed 100644 |
--- a/src/mips/code-stubs-mips.cc |
+++ b/src/mips/code-stubs-mips.cc |
@@ -5462,70 +5462,6 @@ void StringCharAtGenerator::GenerateSlow( |
} |
-class StringHelper : public AllStatic { |
- public: |
- // Generate code for copying characters using a simple loop. This should only |
- // be used in places where the number of characters is small and the |
- // additional setup and checking in GenerateCopyCharactersLong adds too much |
- // overhead. Copying of overlapping regions is not supported. |
- // Dest register ends at the position after the last character written. |
- static void GenerateCopyCharacters(MacroAssembler* masm, |
- Register dest, |
- Register src, |
- Register count, |
- Register scratch, |
- bool ascii); |
- |
- // Generate code for copying a large number of characters. This function |
- // is allowed to spend extra time setting up conditions to make copying |
- // faster. Copying of overlapping regions is not supported. |
- // Dest register ends at the position after the last character written. |
- static void GenerateCopyCharactersLong(MacroAssembler* masm, |
- Register dest, |
- Register src, |
- Register count, |
- Register scratch1, |
- Register scratch2, |
- Register scratch3, |
- Register scratch4, |
- Register scratch5, |
- int flags); |
- |
- |
- // Probe the symbol table for a two character string. If the string is |
- // not found by probing a jump to the label not_found is performed. This jump |
- // does not guarantee that the string is not in the symbol table. If the |
- // string is found the code falls through with the string in register r0. |
- // Contents of both c1 and c2 registers are modified. At the exit c1 is |
- // guaranteed to contain halfword with low and high bytes equal to |
- // initial contents of c1 and c2 respectively. |
- static void GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm, |
- Register c1, |
- Register c2, |
- Register scratch1, |
- Register scratch2, |
- Register scratch3, |
- Register scratch4, |
- Register scratch5, |
- Label* not_found); |
- |
- // Generate string hash. |
- static void GenerateHashInit(MacroAssembler* masm, |
- Register hash, |
- Register character); |
- |
- static void GenerateHashAddCharacter(MacroAssembler* masm, |
- Register hash, |
- Register character); |
- |
- static void GenerateHashGetHash(MacroAssembler* masm, |
- Register hash); |
- |
- private: |
- DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper); |
-}; |
- |
- |
void StringHelper::GenerateCopyCharacters(MacroAssembler* masm, |
Register dest, |
Register src, |
@@ -5819,7 +5755,7 @@ void StringHelper::GenerateHashInit(MacroAssembler* masm, |
__ sll(hash, character, 10); |
__ addu(hash, hash, character); |
// hash ^= hash >> 6; |
- __ sra(at, hash, 6); |
+ __ srl(at, hash, 6); |
__ xor_(hash, hash, at); |
} |
@@ -5833,7 +5769,7 @@ void StringHelper::GenerateHashAddCharacter(MacroAssembler* masm, |
__ sll(at, hash, 10); |
__ addu(hash, hash, at); |
// hash ^= hash >> 6; |
- __ sra(at, hash, 6); |
+ __ srl(at, hash, 6); |
__ xor_(hash, hash, at); |
} |
@@ -5844,12 +5780,16 @@ void StringHelper::GenerateHashGetHash(MacroAssembler* masm, |
__ sll(at, hash, 3); |
__ addu(hash, hash, at); |
// hash ^= hash >> 11; |
- __ sra(at, hash, 11); |
+ __ srl(at, hash, 11); |
__ xor_(hash, hash, at); |
// hash += hash << 15; |
__ sll(at, hash, 15); |
__ addu(hash, hash, at); |
+ uint32_t kHashShiftCutOffMask = (1 << (32 - String::kHashShift)) - 1; |
+ __ li(at, Operand(kHashShiftCutOffMask)); |
+ __ and_(hash, hash, at); |
+ |
// if (hash == 0) hash = 27; |
__ ori(at, zero_reg, 27); |
__ movz(hash, at, hash); |