diff options
Diffstat (limited to 'deps/v8/src/arm64/lithium-codegen-arm64.h')
-rw-r--r-- | deps/v8/src/arm64/lithium-codegen-arm64.h | 81 |
1 files changed, 36 insertions, 45 deletions
diff --git a/deps/v8/src/arm64/lithium-codegen-arm64.h b/deps/v8/src/arm64/lithium-codegen-arm64.h index bb06f483af..a73bb8caaf 100644 --- a/deps/v8/src/arm64/lithium-codegen-arm64.h +++ b/deps/v8/src/arm64/lithium-codegen-arm64.h @@ -27,7 +27,7 @@ class LCodeGen: public LCodeGenBase { LCodeGen(LChunk* chunk, MacroAssembler* assembler, CompilationInfo* info) : LCodeGenBase(chunk, assembler, info), deoptimizations_(4, info->zone()), - deopt_jump_table_(4, info->zone()), + jump_table_(4, info->zone()), deoptimization_literals_(8, info->zone()), inlined_function_count_(0), scope_(info->scope()), @@ -83,31 +83,17 @@ class LCodeGen: public LCodeGenBase { enum IntegerSignedness { SIGNED_INT32, UNSIGNED_INT32 }; // Support for converting LOperands to assembler types. - // LOperand must be a register. Register ToRegister(LOperand* op) const; Register ToRegister32(LOperand* op) const; Operand ToOperand(LOperand* op); - Operand ToOperand32I(LOperand* op); - Operand ToOperand32U(LOperand* op); + Operand ToOperand32(LOperand* op); enum StackMode { kMustUseFramePointer, kCanUseStackPointer }; MemOperand ToMemOperand(LOperand* op, StackMode stack_mode = kCanUseStackPointer) const; Handle<Object> ToHandle(LConstantOperand* op) const; - template<class LI> - Operand ToShiftedRightOperand32I(LOperand* right, - LI* shift_info) { - return ToShiftedRightOperand32(right, shift_info, SIGNED_INT32); - } - template<class LI> - Operand ToShiftedRightOperand32U(LOperand* right, - LI* shift_info) { - return ToShiftedRightOperand32(right, shift_info, UNSIGNED_INT32); - } - template<class LI> - Operand ToShiftedRightOperand32(LOperand* right, - LI* shift_info, - IntegerSignedness signedness); + template <class LI> + Operand ToShiftedRightOperand32(LOperand* right, LI* shift_info); int JSShiftAmountFromLConstant(LOperand* constant) { return ToInteger32(LConstantOperand::cast(constant)) & 0x1f; @@ -158,8 +144,6 @@ class LCodeGen: public LCodeGenBase { Register object, Register index); - Operand ToOperand32(LOperand* op, IntegerSignedness signedness); - static Condition TokenToCondition(Token::Value op, bool is_unsigned); void EmitGoto(int block); void DoGap(LGap* instr); @@ -212,6 +196,9 @@ class LCodeGen: public LCodeGenBase { int* offset, AllocationSiteMode mode); + template <class T> + void EmitVectorLoadICRegisters(T* instr); + // Emits optimized code for %_IsString(x). Preserves input register. // Returns the condition on which a final split to // true and false label should be made, to optimize fallthrough. @@ -226,27 +213,31 @@ class LCodeGen: public LCodeGenBase { Register temp, LOperand* index, String::Encoding encoding); - void DeoptimizeBranch( - LEnvironment* environment, - BranchType branch_type, Register reg = NoReg, int bit = -1, - Deoptimizer::BailoutType* override_bailout_type = NULL); - void Deoptimize(LEnvironment* environment, + void DeoptimizeBranch(LInstruction* instr, const char* detail, + BranchType branch_type, Register reg = NoReg, + int bit = -1, + Deoptimizer::BailoutType* override_bailout_type = NULL); + void Deoptimize(LInstruction* instr, const char* detail, Deoptimizer::BailoutType* override_bailout_type = NULL); - void DeoptimizeIf(Condition cond, LEnvironment* environment); - void DeoptimizeIfZero(Register rt, LEnvironment* environment); - void DeoptimizeIfNotZero(Register rt, LEnvironment* environment); - void DeoptimizeIfNegative(Register rt, LEnvironment* environment); - void DeoptimizeIfSmi(Register rt, LEnvironment* environment); - void DeoptimizeIfNotSmi(Register rt, LEnvironment* environment); - void DeoptimizeIfRoot(Register rt, - Heap::RootListIndex index, - LEnvironment* environment); - void DeoptimizeIfNotRoot(Register rt, - Heap::RootListIndex index, - LEnvironment* environment); - void DeoptimizeIfMinusZero(DoubleRegister input, LEnvironment* environment); - void DeoptimizeIfBitSet(Register rt, int bit, LEnvironment* environment); - void DeoptimizeIfBitClear(Register rt, int bit, LEnvironment* environment); + void DeoptimizeIf(Condition cond, LInstruction* instr, const char* detail); + void DeoptimizeIfZero(Register rt, LInstruction* instr, const char* detail); + void DeoptimizeIfNotZero(Register rt, LInstruction* instr, + const char* detail); + void DeoptimizeIfNegative(Register rt, LInstruction* instr, + const char* detail); + void DeoptimizeIfSmi(Register rt, LInstruction* instr, const char* detail); + void DeoptimizeIfNotSmi(Register rt, LInstruction* instr, const char* detail); + void DeoptimizeIfRoot(Register rt, Heap::RootListIndex index, + LInstruction* instr, const char* detail); + void DeoptimizeIfNotRoot(Register rt, Heap::RootListIndex index, + LInstruction* instr, const char* detail); + void DeoptimizeIfNotHeapNumber(Register object, LInstruction* instr); + void DeoptimizeIfMinusZero(DoubleRegister input, LInstruction* instr, + const char* detail); + void DeoptimizeIfBitSet(Register rt, int bit, LInstruction* instr, + const char* detail); + void DeoptimizeIfBitClear(Register rt, int bit, LInstruction* instr, + const char* detail); MemOperand PrepareKeyedExternalArrayOperand(Register key, Register base, @@ -286,10 +277,10 @@ class LCodeGen: public LCodeGenBase { void RestoreCallerDoubles(); // Code generation steps. Returns true if code generation should continue. - void GenerateBodyInstructionPre(LInstruction* instr) V8_OVERRIDE; + void GenerateBodyInstructionPre(LInstruction* instr) OVERRIDE; bool GeneratePrologue(); bool GenerateDeferredCode(); - bool GenerateDeoptJumpTable(); + bool GenerateJumpTable(); bool GenerateSafepointTable(); // Generates the custom OSR entrypoint and sets the osr_pc_offset. @@ -338,7 +329,7 @@ class LCodeGen: public LCodeGenBase { Register function_reg = NoReg); // Support for recording safepoint and position information. - void RecordAndWritePosition(int position) V8_OVERRIDE; + void RecordAndWritePosition(int position) OVERRIDE; void RecordSafepoint(LPointerMap* pointers, Safepoint::Kind kind, int arguments, @@ -351,10 +342,10 @@ class LCodeGen: public LCodeGenBase { void RecordSafepointWithLazyDeopt(LInstruction* instr, SafepointMode safepoint_mode); - void EnsureSpaceForLazyDeopt(int space_needed) V8_OVERRIDE; + void EnsureSpaceForLazyDeopt(int space_needed) OVERRIDE; ZoneList<LEnvironment*> deoptimizations_; - ZoneList<Deoptimizer::JumpTableEntry*> deopt_jump_table_; + ZoneList<Deoptimizer::JumpTableEntry*> jump_table_; ZoneList<Handle<Object> > deoptimization_literals_; int inlined_function_count_; Scope* const scope_; |