| 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 782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 void EnterStubFrame(bool load_pp = false); | 793 void EnterStubFrame(bool load_pp = false); |
| 794 void LeaveStubFrame(); | 794 void LeaveStubFrame(); |
| 795 | 795 |
| 796 // Instruction pattern from entrypoint is used in Dart frame prologs | 796 // Instruction pattern from entrypoint is used in Dart frame prologs |
| 797 // to set up the frame and save a PC which can be used to figure out the | 797 // to set up the frame and save a PC which can be used to figure out the |
| 798 // RawInstruction object corresponding to the code running in the frame. | 798 // RawInstruction object corresponding to the code running in the frame. |
| 799 static intptr_t EntryPointToPcMarkerOffset() { | 799 static intptr_t EntryPointToPcMarkerOffset() { |
| 800 return TargetCPUFeatures::store_pc_read_offset(); | 800 return TargetCPUFeatures::store_pc_read_offset(); |
| 801 } | 801 } |
| 802 | 802 |
| 803 void UpdateAllocationStats(intptr_t cid, | 803 // The register into which the allocation stats table is loaded with |
| 804 Register temp_reg, | 804 // LoadAllocationStatsAddress should be passed to |
| 805 Heap::Space space); | 805 // IncrementAllocationStats(WithSize) as stats_addr_reg to update the |
| 806 | 806 // allocation stats. These are separate assembler macros so we can |
| 807 void UpdateAllocationStatsWithSize(intptr_t cid, | 807 // avoid a dependent load too nearby the load of the table address. |
| 808 Register size_reg, | 808 void LoadAllocationStatsAddress(Register dest, |
| 809 Register temp_reg, | 809 intptr_t cid, |
| 810 Heap::Space space); | 810 Heap::Space space); |
| 811 void IncrementAllocationStats(Register stats_addr, |
| 812 intptr_t cid, |
| 813 Heap::Space space); |
| 814 void IncrementAllocationStatsWithSize(Register stats_addr_reg, |
| 815 Register size_reg, |
| 816 intptr_t cid, |
| 817 Heap::Space space); |
| 811 | 818 |
| 812 Address ElementAddressForIntIndex(bool is_load, | 819 Address ElementAddressForIntIndex(bool is_load, |
| 813 bool is_external, | 820 bool is_external, |
| 814 intptr_t cid, | 821 intptr_t cid, |
| 815 intptr_t index_scale, | 822 intptr_t index_scale, |
| 816 Register array, | 823 Register array, |
| 817 intptr_t index, | 824 intptr_t index, |
| 818 Register temp); | 825 Register temp); |
| 819 | 826 |
| 820 Address ElementAddressForRegIndex(bool is_load, | 827 Address ElementAddressForRegIndex(bool is_load, |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 996 Register value, | 1003 Register value, |
| 997 Label* no_update); | 1004 Label* no_update); |
| 998 | 1005 |
| 999 DISALLOW_ALLOCATION(); | 1006 DISALLOW_ALLOCATION(); |
| 1000 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1007 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 1001 }; | 1008 }; |
| 1002 | 1009 |
| 1003 } // namespace dart | 1010 } // namespace dart |
| 1004 | 1011 |
| 1005 #endif // VM_ASSEMBLER_ARM_H_ | 1012 #endif // VM_ASSEMBLER_ARM_H_ |
| OLD | NEW |