Index: runtime/vm/instructions_arm.h |
diff --git a/runtime/vm/instructions_arm.h b/runtime/vm/instructions_arm.h |
index 59cb2595866f54c7315c43573007e07eb674684a..7ae39451ac094c66016c91fe2f9758f8278206da 100644 |
--- a/runtime/vm/instructions_arm.h |
+++ b/runtime/vm/instructions_arm.h |
@@ -15,6 +15,38 @@ |
namespace dart { |
+class InstructionPattern : public AllStatic { |
+ public: |
+ // Decodes a load sequence ending at 'end' (the last instruction of the load |
+ // sequence is the instruction before the one at end). Returns a pointer to |
+ // the first instruction in the sequence. Returns the register being loaded |
+ // and the loaded object in the output parameters 'reg' and 'obj' |
+ // respectively. |
+ static const uword* DecodeLoadObject(const uword* end, |
+ const Array& object_pool, |
+ Register* reg, |
+ Object* obj); |
+ |
+ // Decodes a load sequence ending at 'end' (the last instruction of the load |
+ // sequence is the instruction before the one at end). Returns a pointer to |
+ // the first instruction in the sequence. Returns the register being loaded |
+ // and the loaded immediate value in the output parameters 'reg' and 'value' |
+ // respectively. |
+ static const uword* DecodeLoadWordImmediate(const uword* end, |
+ Register* reg, |
+ intptr_t* value); |
+ |
+ // Decodes a load sequence ending at 'end' (the last instruction of the load |
+ // sequence is the instruction before the one at end). Returns a pointer to |
+ // the first instruction in the sequence. Returns the register being loaded |
+ // and the index in the pool being read from in the output parameters 'reg' |
+ // and 'index' respectively. |
+ static const uword* DecodeLoadWordFromPool(const uword* end, |
+ Register* reg, |
+ intptr_t* index); |
+}; |
+ |
+ |
class CallPattern : public ValueObject { |
public: |
CallPattern(uword pc, const Code& code); |
@@ -32,17 +64,15 @@ class CallPattern : public ValueObject { |
static void InsertAt(uword pc, uword target_address); |
private: |
- uword Back(int n) const; |
- int DecodeLoadObject(int end, Register* reg, Object* obj); |
- int DecodeLoadWordImmediate(int end, Register* reg, int* value); |
- int DecodeLoadWordFromPool(int end, Register* reg, int* index); |
+ const Array& object_pool_; |
+ |
const uword* end_; |
- int target_address_pool_index_; |
- int args_desc_load_end_; |
+ const uword* args_desc_load_end_; |
+ const uword* ic_data_load_end_; |
+ |
+ intptr_t target_address_pool_index_; |
Array& args_desc_; |
- int ic_data_load_end_; |
ICData& ic_data_; |
- const Array& object_pool_; |
DISALLOW_COPY_AND_ASSIGN(CallPattern); |
}; |
@@ -71,4 +101,3 @@ class JumpPattern : public ValueObject { |
} // namespace dart |
#endif // VM_INSTRUCTIONS_ARM_H_ |
- |