diff options
author | 2024-08-21 15:27:54 +0000 | |
---|---|---|
committer | 2024-08-21 16:45:03 +0000 | |
commit | 434a327234f74eed3ef4072314d2e2bdb73e4dda (patch) | |
tree | f4837dbee3bd449f25d123e1c3605a3ee435f331 /compiler/optimizing/instruction_simplifier.cc | |
parent | fe33c18114cfc4a8afc2e48b8467713a372bda43 (diff) |
Revert "Calculate the number of out vregs."
This reverts commit 3e75615ad25b6af1842b194e78b429b0f585b46a.
Reason for revert: Regressed some micro-benchmarks, see bug
359722268.
Bug: 358519867
Bug: 359722268
Change-Id: I207cc78c88193564e90c98eda2c96a5ba354a588
Diffstat (limited to 'compiler/optimizing/instruction_simplifier.cc')
-rw-r--r-- | compiler/optimizing/instruction_simplifier.cc | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/compiler/optimizing/instruction_simplifier.cc b/compiler/optimizing/instruction_simplifier.cc index 1d717f8477..09031a276a 100644 --- a/compiler/optimizing/instruction_simplifier.cc +++ b/compiler/optimizing/instruction_simplifier.cc @@ -2995,7 +2995,7 @@ static bool NoEscapeForStringBufferReference(HInstruction* reference, HInstructi return false; } -static bool TryReplaceStringBuilderAppend(CodeGenerator* codegen, HInvoke* invoke) { +static bool TryReplaceStringBuilderAppend(HInvoke* invoke) { DCHECK_EQ(invoke->GetIntrinsic(), Intrinsics::kStringBuilderToString); if (invoke->CanThrowIntoCatchBlock()) { return false; @@ -3152,25 +3152,11 @@ static bool TryReplaceStringBuilderAppend(CodeGenerator* codegen, HInvoke* invok } } - // Calculate outgoing vregs, including padding for 64-bit arg alignment. - const PointerSize pointer_size = InstructionSetPointerSize(codegen->GetInstructionSet()); - const size_t method_vregs = static_cast<size_t>(pointer_size) / kVRegSize; - uint32_t number_of_out_vregs = method_vregs; // For correct alignment padding; subtracted below. - for (uint32_t f = format; f != 0u; f >>= StringBuilderAppend::kBitsPerArg) { - auto a = enum_cast<StringBuilderAppend::Argument>(f & StringBuilderAppend::kArgMask); - if (a == StringBuilderAppend::Argument::kLong || a == StringBuilderAppend::Argument::kDouble) { - number_of_out_vregs += /* alignment */ ((number_of_out_vregs) & 1u) + /* vregs */ 2u; - } else { - number_of_out_vregs += /* vregs */ 1u; - } - } - number_of_out_vregs -= method_vregs; - // Create replacement instruction. HIntConstant* fmt = block->GetGraph()->GetIntConstant(static_cast<int32_t>(format)); ArenaAllocator* allocator = block->GetGraph()->GetAllocator(); HStringBuilderAppend* append = new (allocator) HStringBuilderAppend( - fmt, num_args, number_of_out_vregs, has_fp_args, allocator, invoke->GetDexPc()); + fmt, num_args, has_fp_args, allocator, invoke->GetDexPc()); append->SetReferenceTypeInfoIfValid(invoke->GetReferenceTypeInfo()); for (size_t i = 0; i != num_args; ++i) { append->SetArgumentAt(i, args[num_args - 1u - i]); @@ -3215,7 +3201,7 @@ void InstructionSimplifierVisitor::SimplifyAllocationIntrinsic(HInvoke* invoke) RecordSimplification(); } } else if (invoke->GetIntrinsic() == Intrinsics::kStringBuilderToString && - TryReplaceStringBuilderAppend(codegen_, invoke)) { + TryReplaceStringBuilderAppend(invoke)) { RecordSimplification(); } } |