| 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);
|
|
|