| 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_X64_H_ | 5 #ifndef VM_ASSEMBLER_X64_H_ |
| 6 #define VM_ASSEMBLER_X64_H_ | 6 #define VM_ASSEMBLER_X64_H_ |
| 7 | 7 |
| 8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
| 9 #error Do not include assembler_x64.h directly; use assembler.h instead. | 9 #error Do not include assembler_x64.h directly; use assembler.h instead. |
| 10 #endif | 10 #endif |
| (...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 854 // call L (size is 5 bytes) | 854 // call L (size is 5 bytes) |
| 855 // L: | 855 // L: |
| 856 static const intptr_t kEntryPointToPcMarkerOffset = 9; | 856 static const intptr_t kEntryPointToPcMarkerOffset = 9; |
| 857 | 857 |
| 858 void UpdateAllocationStats(intptr_t cid, | 858 void UpdateAllocationStats(intptr_t cid, |
| 859 Heap::Space space = Heap::kNew); | 859 Heap::Space space = Heap::kNew); |
| 860 | 860 |
| 861 void UpdateAllocationStatsWithSize(intptr_t cid, | 861 void UpdateAllocationStatsWithSize(intptr_t cid, |
| 862 Register size_reg, | 862 Register size_reg, |
| 863 Heap::Space space = Heap::kNew); | 863 Heap::Space space = Heap::kNew); |
| 864 void UpdateAllocationStatsWithSize(intptr_t cid, |
| 865 intptr_t instance_size, |
| 866 Heap::Space space = Heap::kNew); |
| 864 | 867 |
| 865 // Inlined allocation of an instance of class 'cls', code has no runtime | 868 // Inlined allocation of an instance of class 'cls', code has no runtime |
| 866 // calls. Jump to 'failure' if the instance cannot be allocated here. | 869 // calls. Jump to 'failure' if the instance cannot be allocated here. |
| 867 // Allocated instance is returned in 'instance_reg'. | 870 // Allocated instance is returned in 'instance_reg'. |
| 868 // Only the tags field of the object is initialized. | 871 // Only the tags field of the object is initialized. |
| 869 // Loads large immediates from the object pool with pool pointer in PP if it | 872 // Loads large immediates from the object pool with pool pointer in PP if it |
| 870 // is not kNoRegister | 873 // is not kNoRegister |
| 871 void TryAllocate(const Class& cls, | 874 void TryAllocate(const Class& cls, |
| 872 Label* failure, | 875 Label* failure, |
| 873 bool near_jump, | 876 bool near_jump, |
| 874 Register instance_reg, | 877 Register instance_reg, |
| 875 Register pp); | 878 Register pp); |
| 876 | 879 |
| 880 void TryAllocateArray(intptr_t cid, |
| 881 intptr_t instance_size, |
| 882 Label* failure, |
| 883 bool near_jump, |
| 884 Register instance, |
| 885 Register end_address); |
| 886 |
| 877 // Debugging and bringup support. | 887 // Debugging and bringup support. |
| 878 void Stop(const char* message); | 888 void Stop(const char* message); |
| 879 void Unimplemented(const char* message); | 889 void Unimplemented(const char* message); |
| 880 void Untested(const char* message); | 890 void Untested(const char* message); |
| 881 void Unreachable(const char* message); | 891 void Unreachable(const char* message); |
| 882 | 892 |
| 883 static void InitializeMemoryWithBreakpoints(uword data, intptr_t length); | 893 static void InitializeMemoryWithBreakpoints(uword data, intptr_t length); |
| 884 | 894 |
| 885 static const char* RegisterName(Register reg); | 895 static const char* RegisterName(Register reg); |
| 886 | 896 |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1014 void EmitGenericShift(bool wide, int rm, Register reg, const Immediate& imm); | 1024 void EmitGenericShift(bool wide, int rm, Register reg, const Immediate& imm); |
| 1015 void EmitGenericShift(bool wide, int rm, Register operand, Register shifter); | 1025 void EmitGenericShift(bool wide, int rm, Register operand, Register shifter); |
| 1016 | 1026 |
| 1017 void StoreIntoObjectFilter(Register object, Register value, Label* no_update); | 1027 void StoreIntoObjectFilter(Register object, Register value, Label* no_update); |
| 1018 | 1028 |
| 1019 // Shorter filtering sequence that assumes that value is not a smi. | 1029 // Shorter filtering sequence that assumes that value is not a smi. |
| 1020 void StoreIntoObjectFilterNoSmi(Register object, | 1030 void StoreIntoObjectFilterNoSmi(Register object, |
| 1021 Register value, | 1031 Register value, |
| 1022 Label* no_update); | 1032 Label* no_update); |
| 1023 | 1033 |
| 1034 void ComputeCounterAddressesForCid(intptr_t cid, |
| 1035 Heap::Space space, |
| 1036 Address* count_address, |
| 1037 Address* size_address); |
| 1024 DISALLOW_ALLOCATION(); | 1038 DISALLOW_ALLOCATION(); |
| 1025 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1039 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 1026 }; | 1040 }; |
| 1027 | 1041 |
| 1028 | 1042 |
| 1029 inline void Assembler::EmitUint8(uint8_t value) { | 1043 inline void Assembler::EmitUint8(uint8_t value) { |
| 1030 buffer_.Emit<uint8_t>(value); | 1044 buffer_.Emit<uint8_t>(value); |
| 1031 } | 1045 } |
| 1032 | 1046 |
| 1033 | 1047 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1097 } | 1111 } |
| 1098 | 1112 |
| 1099 | 1113 |
| 1100 inline void Assembler::EmitOperandSizeOverride() { | 1114 inline void Assembler::EmitOperandSizeOverride() { |
| 1101 EmitUint8(0x66); | 1115 EmitUint8(0x66); |
| 1102 } | 1116 } |
| 1103 | 1117 |
| 1104 } // namespace dart | 1118 } // namespace dart |
| 1105 | 1119 |
| 1106 #endif // VM_ASSEMBLER_X64_H_ | 1120 #endif // VM_ASSEMBLER_X64_H_ |
| OLD | NEW |