OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 // Classes that describe assembly patterns as used by inline caches. | 4 // Classes that describe assembly patterns as used by inline caches. |
5 | 5 |
6 #ifndef VM_INSTRUCTIONS_X64_H_ | 6 #ifndef VM_INSTRUCTIONS_X64_H_ |
7 #define VM_INSTRUCTIONS_X64_H_ | 7 #define VM_INSTRUCTIONS_X64_H_ |
8 | 8 |
9 #ifndef VM_INSTRUCTIONS_H_ | 9 #ifndef VM_INSTRUCTIONS_H_ |
10 #error Do not include instructions_ia32.h directly; use instructions.h instead. | 10 #error Do not include instructions_ia32.h directly; use instructions.h instead. |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 return kLengthInBytes; | 90 return kLengthInBytes; |
91 } | 91 } |
92 | 92 |
93 private: | 93 private: |
94 virtual const int* pattern() const; | 94 virtual const int* pattern() const; |
95 | 95 |
96 DISALLOW_COPY_AND_ASSIGN(JumpPattern); | 96 DISALLOW_COPY_AND_ASSIGN(JumpPattern); |
97 }; | 97 }; |
98 | 98 |
99 | 99 |
| 100 // 5 byte call instruction. |
| 101 class ShortCallPattern : public InstructionPattern { |
| 102 public: |
| 103 explicit ShortCallPattern(uword pc) : InstructionPattern(pc) {} |
| 104 static int InstructionLength() { |
| 105 return kLengthInBytes; |
| 106 } |
| 107 |
| 108 virtual int pattern_length_in_bytes() const { |
| 109 return kLengthInBytes; |
| 110 } |
| 111 |
| 112 void SetTargetAddress(uword new_target) const; |
| 113 |
| 114 private: |
| 115 static const int kLengthInBytes = 5; |
| 116 virtual const int* pattern() const; |
| 117 |
| 118 DISALLOW_COPY_AND_ASSIGN(ShortCallPattern); |
| 119 }; |
| 120 |
| 121 |
100 } // namespace dart | 122 } // namespace dart |
101 | 123 |
102 #endif // VM_INSTRUCTIONS_X64_H_ | 124 #endif // VM_INSTRUCTIONS_X64_H_ |
OLD | NEW |