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 |