diff options
Diffstat (limited to 'compiler/optimizing/inliner.cc')
-rw-r--r-- | compiler/optimizing/inliner.cc | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc index 396aa95692..c90308d39c 100644 --- a/compiler/optimizing/inliner.cc +++ b/compiler/optimizing/inliner.cc @@ -1768,17 +1768,14 @@ bool HInliner::TryPatternSubstitution(HInvoke* invoke_instruction, uint16_t iput_args[] = { data.iput0_arg, data.iput1_arg, data.iput2_arg }; static_assert(arraysize(iput_args) == arraysize(iput_field_indexes), "Size mismatch"); // Count valid field indexes. - size_t number_of_iputs = 0u; - while (number_of_iputs != arraysize(iput_field_indexes) && - iput_field_indexes[number_of_iputs] != DexFile::kDexNoIndex16) { + for (size_t i = 0, end = data.iput_count; i < end; i++) { // Check that there are no duplicate valid field indexes. - DCHECK_EQ(0, std::count(iput_field_indexes + number_of_iputs + 1, - iput_field_indexes + arraysize(iput_field_indexes), - iput_field_indexes[number_of_iputs])); - ++number_of_iputs; + DCHECK_EQ(0, std::count(iput_field_indexes + i + 1, + iput_field_indexes + end, + iput_field_indexes[i])); } // Check that there are no valid field indexes in the rest of the array. - DCHECK_EQ(0, std::count_if(iput_field_indexes + number_of_iputs, + DCHECK_EQ(0, std::count_if(iput_field_indexes + data.iput_count, iput_field_indexes + arraysize(iput_field_indexes), [](uint16_t index) { return index != DexFile::kDexNoIndex16; })); @@ -1786,7 +1783,7 @@ bool HInliner::TryPatternSubstitution(HInvoke* invoke_instruction, HInstruction* obj = GetInvokeInputForArgVRegIndex(invoke_instruction, /* arg_vreg_index= */ 0u); bool needs_constructor_barrier = false; - for (size_t i = 0; i != number_of_iputs; ++i) { + for (size_t i = 0, end = data.iput_count; i != end; ++i) { HInstruction* value = GetInvokeInputForArgVRegIndex(invoke_instruction, iput_args[i]); if (!IsZeroBitPattern(value)) { uint16_t field_index = iput_field_indexes[i]; @@ -1811,7 +1808,7 @@ bool HInliner::TryPatternSubstitution(HInvoke* invoke_instruction, invoke_instruction); } *return_replacement = nullptr; - number_of_instructions = number_of_iputs + (needs_constructor_barrier ? 1u : 0u); + number_of_instructions = data.iput_count + (needs_constructor_barrier ? 1u : 0u); break; } } |