Index: runtime/vm/instructions_x64.h |
diff --git a/runtime/vm/instructions_x64.h b/runtime/vm/instructions_x64.h |
index 5d7616dd4064dfc54aba279c26c01be4e05c0841..4c4aae833deaf66594d7c7f48adeebf5ae450fd3 100644 |
--- a/runtime/vm/instructions_x64.h |
+++ b/runtime/vm/instructions_x64.h |
@@ -65,6 +65,30 @@ template<class P> class InstructionPattern : public ValueObject { |
}; |
+class JumpPattern : public InstructionPattern<JumpPattern> { |
+ public: |
+ JumpPattern(uword pc, const Code& code) |
+ : InstructionPattern(pc), |
+ object_pool_(ObjectPool::Handle(code.GetObjectPool())) {} |
+ |
+ uword TargetAddress() const; |
+ void SetTargetAddress(uword new_target) const; |
+ |
+ static const int kLengthInBytes = 7; |
+ static int pattern_length_in_bytes() { return kLengthInBytes; } |
+ static const int* pattern() { |
+ // 07: 41 ff a7 imm32 jmpq [reg + off] |
+ static const int kJumpPattern[kLengthInBytes] = |
+ {0x41, 0xFF, -1, -1, -1, -1, -1}; |
+ return kJumpPattern; |
+ } |
+ private: |
+ const ObjectPool& object_pool_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(JumpPattern); |
+}; |
+ |
+ |
// 5 byte call instruction. |
class ShortCallPattern : public InstructionPattern<ShortCallPattern> { |
public: |