diff options
author | 2024-08-08 15:33:56 +0000 | |
---|---|---|
committer | 2024-08-13 08:09:37 +0000 | |
commit | 3e75615ad25b6af1842b194e78b429b0f585b46a (patch) | |
tree | cd74101af342d0798827aa853f1f5e34cc1c01a6 /compiler/optimizing/code_generator.cc | |
parent | ccbbe37bb19c714be0beac4d21bbe7abc214738c (diff) |
Calculate the number of out vregs.
Determine the number of out vregs needed by invokes that
actually make a call, and by `HStringBuilderAppend`s.
This can yield smaller frame sizes of compiled methods when
some calls are inlined or fully intrinsified.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 358519867
Change-Id: I4930a9bd811b1de14658f5ef44e65eadea6a7961
Diffstat (limited to 'compiler/optimizing/code_generator.cc')
-rw-r--r-- | compiler/optimizing/code_generator.cc | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc index 51714ef548..019aede361 100644 --- a/compiler/optimizing/code_generator.cc +++ b/compiler/optimizing/code_generator.cc @@ -632,11 +632,8 @@ void CodeGenerator::CreateStringBuilderAppendLocations(HStringBuilderAppend* ins stack_offset += sizeof(uint32_t); } DCHECK_EQ(f, 0u); - - size_t param_size = stack_offset - static_cast<size_t>(pointer_size); - DCHECK_ALIGNED(param_size, kVRegSize); - size_t num_vregs = param_size / kVRegSize; - graph_->UpdateMaximumNumberOfOutVRegs(num_vregs); + DCHECK_EQ(stack_offset, + static_cast<size_t>(pointer_size) + kVRegSize * instruction->GetNumberOfOutVRegs()); } void CodeGenerator::CreateUnresolvedFieldLocationSummary( |