| Index: src/arm/codegen-arm.h
|
| ===================================================================
|
| --- src/arm/codegen-arm.h (revision 4542)
|
| +++ src/arm/codegen-arm.h (working copy)
|
| @@ -667,34 +667,66 @@
|
| };
|
|
|
|
|
| -class StringStubBase: public CodeStub {
|
| +class StringHelper : public AllStatic {
|
| public:
|
| + // Generates fast code for getting a char code out of a string
|
| + // object at the given index. May bail out for four reasons (in the
|
| + // listed order):
|
| + // * Receiver is not a string (receiver_not_string label).
|
| + // * Index is not a smi (index_not_smi label).
|
| + // * Index is out of range (index_out_of_range).
|
| + // * Some other reason (slow_case label). In this case it's
|
| + // guaranteed that the above conditions are not violated,
|
| + // e.g. it's safe to assume the receiver is a string and the
|
| + // index is a non-negative smi < length.
|
| + // When successful, object, index, and scratch are clobbered.
|
| + // Otherwise, scratch and result are clobbered.
|
| + static void GenerateFastCharCodeAt(MacroAssembler* masm,
|
| + Register object,
|
| + Register index,
|
| + Register scratch,
|
| + Register result,
|
| + Label* receiver_not_string,
|
| + Label* index_not_smi,
|
| + Label* index_out_of_range,
|
| + Label* slow_case);
|
| +
|
| + // Generates code for creating a one-char string from the given char
|
| + // code. May do a runtime call, so any register can be clobbered
|
| + // and, if the given invoke flag specifies a call, an internal frame
|
| + // is required. In tail call mode the result must be r0 register.
|
| + static void GenerateCharFromCode(MacroAssembler* masm,
|
| + Register code,
|
| + Register scratch,
|
| + Register result,
|
| + InvokeFlag flag);
|
| +
|
| // 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.
|
| - void GenerateCopyCharacters(MacroAssembler* masm,
|
| - Register dest,
|
| - Register src,
|
| - Register count,
|
| - Register scratch,
|
| - bool ascii);
|
| + 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.
|
| - void GenerateCopyCharactersLong(MacroAssembler* masm,
|
| - Register dest,
|
| - Register src,
|
| - Register count,
|
| - Register scratch1,
|
| - Register scratch2,
|
| - Register scratch3,
|
| - Register scratch4,
|
| - Register scratch5,
|
| - int flags);
|
| + 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
|
| @@ -704,27 +736,30 @@
|
| // 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.
|
| - void GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm,
|
| - Register c1,
|
| - Register c2,
|
| - Register scratch1,
|
| - Register scratch2,
|
| - Register scratch3,
|
| - Register scratch4,
|
| - Register scratch5,
|
| - Label* not_found);
|
| + 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.
|
| - void GenerateHashInit(MacroAssembler* masm,
|
| - Register hash,
|
| - Register character);
|
| + static void GenerateHashInit(MacroAssembler* masm,
|
| + Register hash,
|
| + Register character);
|
|
|
| - void GenerateHashAddCharacter(MacroAssembler* masm,
|
| - Register hash,
|
| - Register character);
|
| + static void GenerateHashAddCharacter(MacroAssembler* masm,
|
| + Register hash,
|
| + Register character);
|
|
|
| - void GenerateHashGetHash(MacroAssembler* masm,
|
| - Register hash);
|
| + static void GenerateHashGetHash(MacroAssembler* masm,
|
| + Register hash);
|
| +
|
| + private:
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper);
|
| };
|
|
|
|
|
| @@ -735,7 +770,7 @@
|
| };
|
|
|
|
|
| -class StringAddStub: public StringStubBase {
|
| +class StringAddStub: public CodeStub {
|
| public:
|
| explicit StringAddStub(StringAddFlags flags) {
|
| string_check_ = ((flags & NO_STRING_CHECK_IN_STUB) == 0);
|
| @@ -752,7 +787,7 @@
|
| };
|
|
|
|
|
| -class SubStringStub: public StringStubBase {
|
| +class SubStringStub: public CodeStub {
|
| public:
|
| SubStringStub() {}
|
|
|
|
|