diff options
Diffstat (limited to 'compiler/optimizing/nodes.h')
-rw-r--r-- | compiler/optimizing/nodes.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 23cc3704e9..ffddd25843 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -4912,6 +4912,7 @@ class HInvokePolymorphic final : public HInvoke { public: HInvokePolymorphic(ArenaAllocator* allocator, uint32_t number_of_arguments, + uint32_t number_of_other_inputs, DataType::Type return_type, uint32_t dex_pc, MethodReference method_reference, @@ -4924,7 +4925,7 @@ class HInvokePolymorphic final : public HInvoke { : HInvoke(kInvokePolymorphic, allocator, number_of_arguments, - /* number_of_other_inputs= */ 0u, + number_of_other_inputs, return_type, dex_pc, method_reference, @@ -4938,6 +4939,12 @@ class HInvokePolymorphic final : public HInvoke { dex::ProtoIndex GetProtoIndex() { return proto_idx_; } + bool CanTargetInvokeVirtual() const { + return GetIntrinsic() == Intrinsics::kMethodHandleInvokeExact && + GetNumberOfArguments() >= 2 && + InputAt(1)->GetType() == DataType::Type::kReference; + } + DECLARE_INSTRUCTION(InvokePolymorphic); protected: |