| Index: src/arm/code-stubs-arm.h
|
| diff --git a/src/arm/code-stubs-arm.h b/src/arm/code-stubs-arm.h
|
| index 365ba4f73b1a0fbea617753454fd9e03b03640e1..4e1261b7eeb027f901560c4808cc53cb1f798e89 100644
|
| --- a/src/arm/code-stubs-arm.h
|
| +++ b/src/arm/code-stubs-arm.h
|
| @@ -244,6 +244,70 @@ class BinaryOpStub: public CodeStub {
|
| };
|
|
|
|
|
| +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);
|
| +};
|
| +
|
| +
|
| // Flag that indicates how to generate code for the stub StringAddStub.
|
| enum StringAddFlags {
|
| NO_STRING_ADD_FLAGS = 0,
|
|
|