diff options
author | 2024-03-07 11:52:09 +0100 | |
---|---|---|
committer | 2024-03-07 15:52:33 +0000 | |
commit | 1eece0002b9b135fc6125aa6f3e62c5f74c703bb (patch) | |
tree | 82880c4ed1ffa764943c6e9fa796f1c5401768e7 /compiler/optimizing/inliner.cc | |
parent | 870ec8bb2e378d65174faba95342eda721739063 (diff) |
Inliner: Update instruction count for pattern substitution.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 181943478
Change-Id: I807ebb5b43117fa46fdbc80c605b525606d014cb
Diffstat (limited to 'compiler/optimizing/inliner.cc')
-rw-r--r-- | compiler/optimizing/inliner.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc index f1e2733f3e..5917f8447e 100644 --- a/compiler/optimizing/inliner.cc +++ b/compiler/optimizing/inliner.cc @@ -1695,6 +1695,7 @@ bool HInliner::TryPatternSubstitution(HInvoke* invoke_instruction, return false; } + size_t number_of_instructions = 0u; // Note: We do not count constants. switch (inline_method.opcode) { case kInlineOpNop: DCHECK_EQ(invoke_instruction->GetType(), DataType::Type::kVoid); @@ -1729,6 +1730,7 @@ bool HInliner::TryPatternSubstitution(HInvoke* invoke_instruction, DCHECK_EQ(iget->IsVolatile() ? 1u : 0u, data.is_volatile); invoke_instruction->GetBlock()->InsertInstructionBefore(iget, invoke_instruction); *return_replacement = iget; + number_of_instructions = 1u; break; } case kInlineOpIPut: { @@ -1747,6 +1749,7 @@ bool HInliner::TryPatternSubstitution(HInvoke* invoke_instruction, size_t return_arg = data.return_arg_plus1 - 1u; *return_replacement = GetInvokeInputForArgVRegIndex(invoke_instruction, return_arg); } + number_of_instructions = 1u; break; } case kInlineOpConstructor: { @@ -1801,12 +1804,17 @@ bool HInliner::TryPatternSubstitution(HInvoke* invoke_instruction, invoke_instruction); } *return_replacement = nullptr; + number_of_instructions = number_of_iputs + (needs_constructor_barrier ? 1u : 0u); break; } default: LOG(FATAL) << "UNREACHABLE"; UNREACHABLE(); } + if (number_of_instructions != 0u) { + total_number_of_instructions_ += number_of_instructions; + UpdateInliningBudget(); + } return true; } |