summaryrefslogtreecommitdiff
path: root/compiler/optimizing/instruction_simplifier.cc
diff options
context:
space:
mode:
author VladimĂ­r Marko <vmarko@google.com> 2024-08-21 15:27:54 +0000
committer Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-08-21 16:45:03 +0000
commit434a327234f74eed3ef4072314d2e2bdb73e4dda (patch)
treef4837dbee3bd449f25d123e1c3605a3ee435f331 /compiler/optimizing/instruction_simplifier.cc
parentfe33c18114cfc4a8afc2e48b8467713a372bda43 (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.cc20
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();
}
}