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 |