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, |