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. |
11 #endif | 11 #endif |
12 | 12 |
13 #include "vm/allocation.h" | 13 #include "vm/allocation.h" |
14 #include "vm/object.h" | 14 #include "vm/object.h" |
15 | 15 |
16 namespace dart { | 16 namespace dart { |
17 | 17 |
18 // Forward declarations. | 18 // Forward declarations. |
19 class RawClass; | 19 class RawClass; |
20 class Immediate; | 20 class Immediate; |
21 class RawObject; | 21 class RawObject; |
22 | 22 |
23 | 23 |
24 intptr_t IndexFromPPLoad(uword start); | 24 intptr_t IndexFromPPLoad(uword start); |
| 25 intptr_t IndexFromPPLoadDisp8(uword start); |
25 | 26 |
26 | 27 |
27 // Template class for all instruction pattern classes. | 28 // Template class for all instruction pattern classes. |
28 // P has to specify a static pattern and a pattern length method. | 29 // P has to specify a static pattern and a pattern length method. |
29 template<class P> class InstructionPattern : public ValueObject { | 30 template<class P> class InstructionPattern : public ValueObject { |
30 public: | 31 public: |
31 explicit InstructionPattern(uword pc) : start_(pc) { | 32 explicit InstructionPattern(uword pc) : start_(pc) { |
32 ASSERT(pc != 0); | 33 ASSERT(pc != 0); |
33 } | 34 } |
34 | 35 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 | 134 |
134 static int pattern_length_in_bytes() { return kLengthInBytes; } | 135 static int pattern_length_in_bytes() { return kLengthInBytes; } |
135 | 136 |
136 private: | 137 private: |
137 static const int kLengthInBytes = 3; | 138 static const int kLengthInBytes = 3; |
138 }; | 139 }; |
139 | 140 |
140 } // namespace dart | 141 } // namespace dart |
141 | 142 |
142 #endif // VM_INSTRUCTIONS_X64_H_ | 143 #endif // VM_INSTRUCTIONS_X64_H_ |
OLD | NEW |