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 |