diff options
Diffstat (limited to 'deps/v8/src/ia32/codegen-ia32.h')
-rw-r--r-- | deps/v8/src/ia32/codegen-ia32.h | 76 |
1 files changed, 7 insertions, 69 deletions
diff --git a/deps/v8/src/ia32/codegen-ia32.h b/deps/v8/src/ia32/codegen-ia32.h index a098dc3859..ea182ab9cc 100644 --- a/deps/v8/src/ia32/codegen-ia32.h +++ b/deps/v8/src/ia32/codegen-ia32.h @@ -38,8 +38,10 @@ namespace internal { // Forward declarations class CompilationInfo; class DeferredCode; +class FrameRegisterState; class RegisterAllocator; class RegisterFile; +class RuntimeCallHelper; enum InitState { CONST_INIT, NOT_CONST_INIT }; enum TypeofState { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF }; @@ -621,10 +623,13 @@ class CodeGenerator: public AstVisitor { void GenerateSetValueOf(ZoneList<Expression*>* args); // Fast support for charCodeAt(n). - void GenerateFastCharCodeAt(ZoneList<Expression*>* args); + void GenerateStringCharCodeAt(ZoneList<Expression*>* args); // Fast support for string.charAt(n) and string[n]. - void GenerateCharFromCode(ZoneList<Expression*>* args); + void GenerateStringCharFromCode(ZoneList<Expression*>* args); + + // Fast support for string.charAt(n) and string[n]. + void GenerateStringCharAt(ZoneList<Expression*>* args); // Fast support for object equality testing. void GenerateObjectEquals(ZoneList<Expression*>* args); @@ -910,37 +915,6 @@ class GenericBinaryOpStub: 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 eax register. - static void GenerateCharFromCode(MacroAssembler* masm, - Register code, - 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 GenerateCopyCharactersREP adds too much @@ -1083,42 +1057,6 @@ class NumberToStringStub: public CodeStub { }; -class RecordWriteStub : public CodeStub { - public: - RecordWriteStub(Register object, Register addr, Register scratch) - : object_(object), addr_(addr), scratch_(scratch) { } - - void Generate(MacroAssembler* masm); - - private: - Register object_; - Register addr_; - Register scratch_; - -#ifdef DEBUG - void Print() { - PrintF("RecordWriteStub (object reg %d), (addr reg %d), (scratch reg %d)\n", - object_.code(), addr_.code(), scratch_.code()); - } -#endif - - // Minor key encoding in 12 bits. 4 bits for each of the three - // registers (object, address and scratch) OOOOAAAASSSS. - class ScratchBits: public BitField<uint32_t, 0, 4> {}; - class AddressBits: public BitField<uint32_t, 4, 4> {}; - class ObjectBits: public BitField<uint32_t, 8, 4> {}; - - Major MajorKey() { return RecordWrite; } - - int MinorKey() { - // Encode the registers. - return ObjectBits::encode(object_.code()) | - AddressBits::encode(addr_.code()) | - ScratchBits::encode(scratch_.code()); - } -}; - - } } // namespace v8::internal #endif // V8_IA32_CODEGEN_IA32_H_ |