diff options
| author | 2014-09-17 08:54:54 +0000 | |
|---|---|---|
| committer | 2014-09-17 08:54:54 +0000 | |
| commit | 913c4cffe825ce2f440d6e9c6b401597a0706aa7 (patch) | |
| tree | df729d47439f7243b498dd4503a5f7aa41a4818b /compiler/optimizing/nodes.h | |
| parent | f031724abf4f215e1627ff837f87cad5d7a25165 (diff) | |
| parent | e982f0b8e809cece6f460fa2d8df25873aa69de4 (diff) | |
Merge "Implement invoke virtual in optimizing compiler."
Diffstat (limited to 'compiler/optimizing/nodes.h')
| -rw-r--r-- | compiler/optimizing/nodes.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index ed6dd939de..d6dfeaede8 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -422,6 +422,7 @@ class HBasicBlock : public ArenaObject { M(If) \ M(IntConstant) \ M(InvokeStatic) \ + M(InvokeVirtual) \ M(LoadLocal) \ M(Local) \ M(LongConstant) \ @@ -1272,6 +1273,26 @@ class HInvokeStatic : public HInvoke { DISALLOW_COPY_AND_ASSIGN(HInvokeStatic); }; +class HInvokeVirtual : public HInvoke { + public: + HInvokeVirtual(ArenaAllocator* arena, + uint32_t number_of_arguments, + Primitive::Type return_type, + uint32_t dex_pc, + uint32_t vtable_index) + : HInvoke(arena, number_of_arguments, return_type, dex_pc), + vtable_index_(vtable_index) {} + + uint32_t GetVTableIndex() const { return vtable_index_; } + + DECLARE_INSTRUCTION(InvokeVirtual); + + private: + const uint32_t vtable_index_; + + DISALLOW_COPY_AND_ASSIGN(HInvokeVirtual); +}; + class HNewInstance : public HExpression<0> { public: HNewInstance(uint32_t dex_pc, uint16_t type_index) |