| 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 892 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 903 static intptr_t EntryPointToPcMarkerOffset() { | 903 static intptr_t EntryPointToPcMarkerOffset() { |
| 904 return TargetCPUFeatures::store_pc_read_offset(); | 904 return TargetCPUFeatures::store_pc_read_offset(); |
| 905 } | 905 } |
| 906 | 906 |
| 907 // The register into which the allocation stats table is loaded with | 907 // The register into which the allocation stats table is loaded with |
| 908 // LoadAllocationStatsAddress should be passed to | 908 // LoadAllocationStatsAddress should be passed to |
| 909 // IncrementAllocationStats(WithSize) as stats_addr_reg to update the | 909 // IncrementAllocationStats(WithSize) as stats_addr_reg to update the |
| 910 // allocation stats. These are separate assembler macros so we can | 910 // allocation stats. These are separate assembler macros so we can |
| 911 // avoid a dependent load too nearby the load of the table address. | 911 // avoid a dependent load too nearby the load of the table address. |
| 912 void LoadAllocationStatsAddress(Register dest, | 912 void LoadAllocationStatsAddress(Register dest, |
| 913 intptr_t cid, | 913 intptr_t cid); |
| 914 Heap::Space space); | |
| 915 void IncrementAllocationStats(Register stats_addr, | 914 void IncrementAllocationStats(Register stats_addr, |
| 916 intptr_t cid, | 915 intptr_t cid, |
| 917 Heap::Space space); | 916 Heap::Space space); |
| 918 void IncrementAllocationStatsWithSize(Register stats_addr_reg, | 917 void IncrementAllocationStatsWithSize(Register stats_addr_reg, |
| 919 Register size_reg, | 918 Register size_reg, |
| 920 intptr_t cid, | 919 intptr_t cid, |
| 921 Heap::Space space); | 920 Heap::Space space); |
| 922 | 921 |
| 923 Address ElementAddressForIntIndex(bool is_load, | 922 Address ElementAddressForIntIndex(bool is_load, |
| 924 bool is_external, | 923 bool is_external, |
| 925 intptr_t cid, | 924 intptr_t cid, |
| 926 intptr_t index_scale, | 925 intptr_t index_scale, |
| 927 Register array, | 926 Register array, |
| 928 intptr_t index, | 927 intptr_t index, |
| 929 Register temp); | 928 Register temp); |
| 930 | 929 |
| 931 Address ElementAddressForRegIndex(bool is_load, | 930 Address ElementAddressForRegIndex(bool is_load, |
| 932 bool is_external, | 931 bool is_external, |
| 933 intptr_t cid, | 932 intptr_t cid, |
| 934 intptr_t index_scale, | 933 intptr_t index_scale, |
| 935 Register array, | 934 Register array, |
| 936 Register index); | 935 Register index); |
| 937 | 936 |
| 937 // If allocation tracing for |cid| is enabled, will jump to |trace| label, |
| 938 // which will allocate in the runtime where tracing occurs. |
| 939 void MaybeTraceAllocation(intptr_t cid, |
| 940 Register temp_reg, |
| 941 Label* trace); |
| 942 |
| 938 // Inlined allocation of an instance of class 'cls', code has no runtime | 943 // Inlined allocation of an instance of class 'cls', code has no runtime |
| 939 // calls. Jump to 'failure' if the instance cannot be allocated here. | 944 // calls. Jump to 'failure' if the instance cannot be allocated here. |
| 940 // Allocated instance is returned in 'instance_reg'. | 945 // Allocated instance is returned in 'instance_reg'. |
| 941 // Only the tags field of the object is initialized. | 946 // Only the tags field of the object is initialized. |
| 942 void TryAllocate(const Class& cls, | 947 void TryAllocate(const Class& cls, |
| 943 Label* failure, | 948 Label* failure, |
| 944 Register instance_reg, | 949 Register instance_reg, |
| 945 Register temp_reg); | 950 Register temp_reg); |
| 946 | 951 |
| 947 void TryAllocateArray(intptr_t cid, | 952 void TryAllocateArray(intptr_t cid, |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1135 Register new_value, | 1140 Register new_value, |
| 1136 FieldContent old_content); | 1141 FieldContent old_content); |
| 1137 | 1142 |
| 1138 DISALLOW_ALLOCATION(); | 1143 DISALLOW_ALLOCATION(); |
| 1139 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1144 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 1140 }; | 1145 }; |
| 1141 | 1146 |
| 1142 } // namespace dart | 1147 } // namespace dart |
| 1143 | 1148 |
| 1144 #endif // VM_ASSEMBLER_ARM_H_ | 1149 #endif // VM_ASSEMBLER_ARM_H_ |
| OLD | NEW |