| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef VM_ASSEMBLER_ARM_H_ | 5 #ifndef VM_ASSEMBLER_ARM_H_ |
| 6 #define VM_ASSEMBLER_ARM_H_ | 6 #define VM_ASSEMBLER_ARM_H_ |
| 7 | 7 |
| 8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
| 9 #error Do not include assembler_arm.h directly; use assembler.h instead. | 9 #error Do not include assembler_arm.h directly; use assembler.h instead. |
| 10 #endif | 10 #endif |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 } | 243 } |
| 244 | 244 |
| 245 static OperandSize OperandSizeFor(intptr_t cid); | 245 static OperandSize OperandSizeFor(intptr_t cid); |
| 246 | 246 |
| 247 static bool CanHoldLoadOffset(OperandSize size, | 247 static bool CanHoldLoadOffset(OperandSize size, |
| 248 int32_t offset, | 248 int32_t offset, |
| 249 int32_t* offset_mask); | 249 int32_t* offset_mask); |
| 250 static bool CanHoldStoreOffset(OperandSize size, | 250 static bool CanHoldStoreOffset(OperandSize size, |
| 251 int32_t offset, | 251 int32_t offset, |
| 252 int32_t* offset_mask); | 252 int32_t* offset_mask); |
| 253 static bool CanHoldImmediateOffset(bool is_load, |
| 254 intptr_t cid, |
| 255 int64_t offset); |
| 253 | 256 |
| 254 private: | 257 private: |
| 255 uint32_t encoding() const { return encoding_; } | 258 uint32_t encoding() const { return encoding_; } |
| 256 | 259 |
| 257 // Encoding for addressing mode 3. | 260 // Encoding for addressing mode 3. |
| 258 uint32_t encoding3() const; | 261 uint32_t encoding3() const; |
| 259 | 262 |
| 260 // Encoding for vfp load/store addressing. | 263 // Encoding for vfp load/store addressing. |
| 261 uint32_t vencoding() const; | 264 uint32_t vencoding() const; |
| 262 | 265 |
| (...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 774 | 777 |
| 775 void UpdateAllocationStats(intptr_t cid, | 778 void UpdateAllocationStats(intptr_t cid, |
| 776 Register temp_reg, | 779 Register temp_reg, |
| 777 Heap::Space space = Heap::kNew); | 780 Heap::Space space = Heap::kNew); |
| 778 | 781 |
| 779 void UpdateAllocationStatsWithSize(intptr_t cid, | 782 void UpdateAllocationStatsWithSize(intptr_t cid, |
| 780 Register size_reg, | 783 Register size_reg, |
| 781 Register temp_reg, | 784 Register temp_reg, |
| 782 Heap::Space space = Heap::kNew); | 785 Heap::Space space = Heap::kNew); |
| 783 | 786 |
| 787 Address ElementAddressForIntIndex(bool is_load, |
| 788 bool is_external, |
| 789 intptr_t cid, |
| 790 intptr_t index_scale, |
| 791 Register array, |
| 792 intptr_t index, |
| 793 Register temp); |
| 794 |
| 795 Address ElementAddressForRegIndex(bool is_load, |
| 796 bool is_external, |
| 797 intptr_t cid, |
| 798 intptr_t index_scale, |
| 799 Register array, |
| 800 Register index); |
| 801 |
| 784 // Inlined allocation of an instance of class 'cls', code has no runtime | 802 // Inlined allocation of an instance of class 'cls', code has no runtime |
| 785 // calls. Jump to 'failure' if the instance cannot be allocated here. | 803 // calls. Jump to 'failure' if the instance cannot be allocated here. |
| 786 // Allocated instance is returned in 'instance_reg'. | 804 // Allocated instance is returned in 'instance_reg'. |
| 787 // Only the tags field of the object is initialized. | 805 // Only the tags field of the object is initialized. |
| 788 void TryAllocate(const Class& cls, | 806 void TryAllocate(const Class& cls, |
| 789 Label* failure, | 807 Label* failure, |
| 790 Register instance_reg, | 808 Register instance_reg, |
| 791 Register temp_reg); | 809 Register temp_reg); |
| 792 | 810 |
| 793 // Emit data (e.g encoded instruction or immediate) in instruction stream. | 811 // Emit data (e.g encoded instruction or immediate) in instruction stream. |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 936 Register value, | 954 Register value, |
| 937 Label* no_update); | 955 Label* no_update); |
| 938 | 956 |
| 939 DISALLOW_ALLOCATION(); | 957 DISALLOW_ALLOCATION(); |
| 940 DISALLOW_COPY_AND_ASSIGN(Assembler); | 958 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 941 }; | 959 }; |
| 942 | 960 |
| 943 } // namespace dart | 961 } // namespace dart |
| 944 | 962 |
| 945 #endif // VM_ASSEMBLER_ARM_H_ | 963 #endif // VM_ASSEMBLER_ARM_H_ |
| OLD | NEW |