diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2014-11-07 17:47:25 +0000 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2014-11-10 10:33:37 +0000 |
commit | 52839d17c06175e19ca4a093fb878450d1c4310d (patch) | |
tree | 552ea632ad4d1f688bdfd04b66102e25312bd237 /compiler/optimizing/nodes.h | |
parent | a453307957afdc3ef0a7988025539ab8919464bc (diff) | |
download | art-52839d17c06175e19ca4a093fb878450d1c4310d.zip art-52839d17c06175e19ca4a093fb878450d1c4310d.tar.gz art-52839d17c06175e19ca4a093fb878450d1c4310d.tar.bz2 |
Support invoke-interface in optimizing.
Change-Id: Ic18d7c3d2810557231caf0571956e0c431f5d384
Diffstat (limited to 'compiler/optimizing/nodes.h')
-rw-r--r-- | compiler/optimizing/nodes.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 37e5e6b..9253f0b 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -495,6 +495,7 @@ class HBasicBlock : public ArenaObject<kArenaAllocMisc> { M(InstanceFieldGet, Instruction) \ M(InstanceFieldSet, Instruction) \ M(IntConstant, Constant) \ + M(InvokeInterface, Invoke) \ M(InvokeStatic, Invoke) \ M(InvokeVirtual, Invoke) \ M(LessThan, Condition) \ @@ -1603,6 +1604,30 @@ class HInvokeVirtual : public HInvoke { DISALLOW_COPY_AND_ASSIGN(HInvokeVirtual); }; +class HInvokeInterface : public HInvoke { + public: + HInvokeInterface(ArenaAllocator* arena, + uint32_t number_of_arguments, + Primitive::Type return_type, + uint32_t dex_pc, + uint32_t dex_method_index, + uint32_t imt_index) + : HInvoke(arena, number_of_arguments, return_type, dex_pc), + dex_method_index_(dex_method_index), + imt_index_(imt_index) {} + + uint32_t GetImtIndex() const { return imt_index_; } + uint32_t GetDexMethodIndex() const { return dex_method_index_; } + + DECLARE_INSTRUCTION(InvokeInterface); + + private: + const uint32_t dex_method_index_; + const uint32_t imt_index_; + + DISALLOW_COPY_AND_ASSIGN(HInvokeInterface); +}; + class HNewInstance : public HExpression<0> { public: HNewInstance(uint32_t dex_pc, uint16_t type_index) |