Index: runtime/vm/instructions_x64.h |
diff --git a/runtime/vm/instructions_x64.h b/runtime/vm/instructions_x64.h |
index 97c52e9a1fa8568d51fc3c1a2a545e4b064e4385..8f1c073eff200ba1c03c796485f9dd0c90989f53 100644 |
--- a/runtime/vm/instructions_x64.h |
+++ b/runtime/vm/instructions_x64.h |
@@ -66,6 +66,25 @@ template<class P> class InstructionPattern : public ValueObject { |
}; |
+// 5 byte call instruction. |
+class ShortCallPattern : public InstructionPattern<ShortCallPattern> { |
+ public: |
+ explicit ShortCallPattern(uword pc) : InstructionPattern(pc) {} |
+ |
+ void SetTargetAddress(uword new_target) const; |
+ |
+ static int pattern_length_in_bytes() { return kLengthInBytes; } |
+ static const int* pattern() { |
+ static const int kCallPattern[kLengthInBytes] = {0xE8, -1, -1, -1, -1}; |
+ return kCallPattern; |
+ } |
+ |
+ private: |
+ static const int kLengthInBytes = 5; |
+ DISALLOW_COPY_AND_ASSIGN(ShortCallPattern); |
+}; |
+ |
+ |
class ReturnPattern : public InstructionPattern<ReturnPattern> { |
public: |
explicit ReturnPattern(uword pc) : InstructionPattern(pc) {} |