| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 | 111 |
| 112 // Finish the code by setting stack height, safepoint, and bailout | 112 // Finish the code by setting stack height, safepoint, and bailout |
| 113 // information on it. | 113 // information on it. |
| 114 void FinishCode(Handle<Code> code); | 114 void FinishCode(Handle<Code> code); |
| 115 | 115 |
| 116 // Support for converting LOperands to assembler types. | 116 // Support for converting LOperands to assembler types. |
| 117 // LOperand must be a register. | 117 // LOperand must be a register. |
| 118 Register ToRegister(LOperand* op) const; | 118 Register ToRegister(LOperand* op) const; |
| 119 Register ToRegister32(LOperand* op) const; | 119 Register ToRegister32(LOperand* op) const; |
| 120 Operand ToOperand(LOperand* op); | 120 Operand ToOperand(LOperand* op); |
| 121 Operand ToOperand32(LOperand* op); | 121 Operand ToOperand32I(LOperand* op); |
| 122 Operand ToOperand32U(LOperand* op); |
| 122 MemOperand ToMemOperand(LOperand* op) const; | 123 MemOperand ToMemOperand(LOperand* op) const; |
| 123 Handle<Object> ToHandle(LConstantOperand* op) const; | 124 Handle<Object> ToHandle(LConstantOperand* op) const; |
| 124 | 125 |
| 125 // TODO(jbramley): Examine these helpers and check that they make sense. | 126 // TODO(jbramley): Examine these helpers and check that they make sense. |
| 126 // IsInteger32Constant returns true for smi constants, for example. | 127 // IsInteger32Constant returns true for smi constants, for example. |
| 127 bool IsInteger32Constant(LConstantOperand* op) const; | 128 bool IsInteger32Constant(LConstantOperand* op) const; |
| 128 bool IsSmi(LConstantOperand* op) const; | 129 bool IsSmi(LConstantOperand* op) const; |
| 129 | 130 |
| 130 int32_t ToInteger32(LConstantOperand* op) const; | 131 int32_t ToInteger32(LConstantOperand* op) const; |
| 131 Smi* ToSmi(LConstantOperand* op) const; | 132 Smi* ToSmi(LConstantOperand* op) const; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 LOperand* temp2, | 172 LOperand* temp2, |
| 172 IntegerSignedness signedness); | 173 IntegerSignedness signedness); |
| 173 void DoDeferredTaggedToI(LTaggedToI* instr, | 174 void DoDeferredTaggedToI(LTaggedToI* instr, |
| 174 LOperand* value, | 175 LOperand* value, |
| 175 LOperand* temp1, | 176 LOperand* temp1, |
| 176 LOperand* temp2); | 177 LOperand* temp2); |
| 177 void DoDeferredAllocate(LAllocate* instr); | 178 void DoDeferredAllocate(LAllocate* instr); |
| 178 | 179 |
| 179 void DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr); | 180 void DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr); |
| 180 | 181 |
| 182 Operand ToOperand32(LOperand* op, IntegerSignedness signedness); |
| 183 |
| 181 static Condition TokenToCondition(Token::Value op, bool is_unsigned); | 184 static Condition TokenToCondition(Token::Value op, bool is_unsigned); |
| 182 void EmitGoto(int block); | 185 void EmitGoto(int block); |
| 183 int GetNextEmittedBlock() const; | 186 int GetNextEmittedBlock() const; |
| 184 void DoGap(LGap* instr); | 187 void DoGap(LGap* instr); |
| 185 | 188 |
| 186 // Generic version of EmitBranch. It contains some code to avoid emitting a | 189 // Generic version of EmitBranch. It contains some code to avoid emitting a |
| 187 // branch on the next emitted basic block where we could just fall-through. | 190 // branch on the next emitted basic block where we could just fall-through. |
| 188 // You shouldn't use that directly but rather consider one of the helper like | 191 // You shouldn't use that directly but rather consider one of the helper like |
| 189 // LCodeGen::EmitBranch, LCodeGen::EmitCompareAndBranch... | 192 // LCodeGen::EmitBranch, LCodeGen::EmitCompareAndBranch... |
| 190 template<class InstrType> | 193 template<class InstrType> |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 480 | 483 |
| 481 protected: | 484 protected: |
| 482 MacroAssembler* masm() const { return codegen_->masm(); } | 485 MacroAssembler* masm() const { return codegen_->masm(); } |
| 483 | 486 |
| 484 LCodeGen* codegen_; | 487 LCodeGen* codegen_; |
| 485 }; | 488 }; |
| 486 | 489 |
| 487 } } // namespace v8::internal | 490 } } // namespace v8::internal |
| 488 | 491 |
| 489 #endif // V8_A64_LITHIUM_CODEGEN_A64_H_ | 492 #endif // V8_A64_LITHIUM_CODEGEN_A64_H_ |
| OLD | NEW |