| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_ARM_CONSTANTS_ARM_H_ | 5 #ifndef V8_ARM_CONSTANTS_ARM_H_ |
| 6 #define V8_ARM_CONSTANTS_ARM_H_ | 6 #define V8_ARM_CONSTANTS_ARM_H_ |
| 7 | 7 |
| 8 // ARM EABI is required. | 8 // ARM EABI is required. |
| 9 #if defined(__arm__) && !defined(__ARM_EABI__) | 9 #if defined(__arm__) && !defined(__ARM_EABI__) |
| 10 #error ARM EABI support is required. | 10 #error ARM EABI support is required. |
| 11 #endif | 11 #endif |
| 12 | 12 |
| 13 namespace v8 { | 13 namespace v8 { |
| 14 namespace internal { | 14 namespace internal { |
| 15 | 15 |
| 16 // Constant pool marker. | 16 // Constant pool marker. |
| 17 // Use UDF, the permanently undefined instruction. | 17 // Use UDF, the permanently undefined instruction. |
| 18 const int kConstantPoolMarkerMask = 0xfff000f0; | 18 const int kConstantPoolMarkerMask = 0xfff000f0; |
| 19 const int kConstantPoolMarker = 0xe7f000f0; | 19 const int kConstantPoolMarker = 0xe7f000f0; |
| 20 const int kConstantPoolLengthMaxMask = 0xffff; | 20 const int kConstantPoolLengthMaxMask = 0xffff; |
| 21 inline int EncodeConstantPoolLength(int length) { | 21 inline int EncodeConstantPoolLength(int length) { |
| 22 ASSERT((length & kConstantPoolLengthMaxMask) == length); | 22 DCHECK((length & kConstantPoolLengthMaxMask) == length); |
| 23 return ((length & 0xfff0) << 4) | (length & 0xf); | 23 return ((length & 0xfff0) << 4) | (length & 0xf); |
| 24 } | 24 } |
| 25 inline int DecodeConstantPoolLength(int instr) { | 25 inline int DecodeConstantPoolLength(int instr) { |
| 26 ASSERT((instr & kConstantPoolMarkerMask) == kConstantPoolMarker); | 26 DCHECK((instr & kConstantPoolMarkerMask) == kConstantPoolMarker); |
| 27 return ((instr >> 4) & 0xfff0) | (instr & 0xf); | 27 return ((instr >> 4) & 0xfff0) | (instr & 0xf); |
| 28 } | 28 } |
| 29 | 29 |
| 30 // Used in code age prologue - ldr(pc, MemOperand(pc, -4)) | 30 // Used in code age prologue - ldr(pc, MemOperand(pc, -4)) |
| 31 const int kCodeAgeJumpInstruction = 0xe51ff004; | 31 const int kCodeAgeJumpInstruction = 0xe51ff004; |
| 32 | 32 |
| 33 // Number of registers in normal ARM mode. | 33 // Number of registers in normal ARM mode. |
| 34 const int kNumRegisters = 16; | 34 const int kNumRegisters = 16; |
| 35 | 35 |
| 36 // VFP support. | 36 // VFP support. |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 kSpecialCondition = 15 << 28, // Special condition (refer to section A3.2.1). | 77 kSpecialCondition = 15 << 28, // Special condition (refer to section A3.2.1). |
| 78 kNumberOfConditions = 16, | 78 kNumberOfConditions = 16, |
| 79 | 79 |
| 80 // Aliases. | 80 // Aliases. |
| 81 hs = cs, // C set Unsigned higher or same. | 81 hs = cs, // C set Unsigned higher or same. |
| 82 lo = cc // C clear Unsigned lower. | 82 lo = cc // C clear Unsigned lower. |
| 83 }; | 83 }; |
| 84 | 84 |
| 85 | 85 |
| 86 inline Condition NegateCondition(Condition cond) { | 86 inline Condition NegateCondition(Condition cond) { |
| 87 ASSERT(cond != al); | 87 DCHECK(cond != al); |
| 88 return static_cast<Condition>(cond ^ ne); | 88 return static_cast<Condition>(cond ^ ne); |
| 89 } | 89 } |
| 90 | 90 |
| 91 | 91 |
| 92 // Commute a condition such that {a cond b == b cond' a}. | 92 // Commute a condition such that {a cond b == b cond' a}. |
| 93 inline Condition CommuteCondition(Condition cond) { | 93 inline Condition CommuteCondition(Condition cond) { |
| 94 switch (cond) { | 94 switch (cond) { |
| 95 case lo: | 95 case lo: |
| 96 return hi; | 96 return hi; |
| 97 case hi: | 97 case hi: |
| (...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 684 static int Number(const char* name, bool* is_double); | 684 static int Number(const char* name, bool* is_double); |
| 685 | 685 |
| 686 private: | 686 private: |
| 687 static const char* names_[kNumVFPRegisters]; | 687 static const char* names_[kNumVFPRegisters]; |
| 688 }; | 688 }; |
| 689 | 689 |
| 690 | 690 |
| 691 } } // namespace v8::internal | 691 } } // namespace v8::internal |
| 692 | 692 |
| 693 #endif // V8_ARM_CONSTANTS_ARM_H_ | 693 #endif // V8_ARM_CONSTANTS_ARM_H_ |
| OLD | NEW |