summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/nodes.h
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2014-11-07 17:47:25 +0000
committerNicolas Geoffray <ngeoffray@google.com>2014-11-10 10:33:37 +0000
commit52839d17c06175e19ca4a093fb878450d1c4310d (patch)
tree552ea632ad4d1f688bdfd04b66102e25312bd237 /compiler/optimizing/nodes.h
parenta453307957afdc3ef0a7988025539ab8919464bc (diff)
downloadart-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.h25
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)