diff options
author | Vladimir Marko <vmarko@google.com> | 2020-09-07 12:30:17 +0000 |
---|---|---|
committer | Vladimir Marko <vmarko@google.com> | 2020-09-07 15:34:58 +0000 |
commit | 43d57558bafccff3ec3c5aecb201d7a8a57b2435 (patch) | |
tree | 5273085c43f2e7eb074461606778d23fc59590b0 /compiler/optimizing/instruction_builder.cc | |
parent | b309240781b17ee994d088648d5fc76814dde436 (diff) |
Do not build intrinsic graph for signature polymorphic methods.
The InstructionBuilder cannot build HInvokePolymorphic for
an intrinsic graph. It would be rather useless to allow this
as signature polymorphic method intrinsics always need the
slow-path for unhandled cases, and we would therefore reject
the compiled code anyway. Instead, prevent the construction
of the intrinsic graph for signature polymorphic methods.
Test: testrunner.py --host --optimizing -t 712-varhandle-invocations
Bug: 65872996
Change-Id: Id82f1f282383dbd45d6db2bd2a96d838b685d7ed
Diffstat (limited to 'compiler/optimizing/instruction_builder.cc')
-rw-r--r-- | compiler/optimizing/instruction_builder.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/optimizing/instruction_builder.cc b/compiler/optimizing/instruction_builder.cc index a3630afd6f..d264bee736 100644 --- a/compiler/optimizing/instruction_builder.cc +++ b/compiler/optimizing/instruction_builder.cc @@ -452,6 +452,10 @@ bool HInstructionBuilder::Build() { void HInstructionBuilder::BuildIntrinsic(ArtMethod* method) { DCHECK(!code_item_accessor_.HasCodeItem()); DCHECK(method->IsIntrinsic()); + if (kIsDebugBuild) { + ScopedObjectAccess soa(Thread::Current()); + CHECK(!method->IsSignaturePolymorphic()); + } locals_for_.resize( graph_->GetBlocks().size(), |