From e3ff7b293be2a6791fe9d135d660c0cffe4bd73f Mon Sep 17 00:00:00 2001 From: David Brazdil Date: Wed, 2 Mar 2016 16:48:20 +0000 Subject: Refactor HGraphBuilder and SsaBuilder to remove HLocals This patch merges the instruction-building phases from HGraphBuilder and SsaBuilder into a single HInstructionBuilder class. As a result, it is not necessary to generate HLocal, HLoadLocal and HStoreLocal instructions any more, as the builder produces SSA form directly. Saves 5-15% of arena-allocated memory (see bug for more data): GMS 20.46MB => 19.26MB (-5.86%) Maps 24.12MB => 21.47MB (-10.98%) YouTube 28.60MB => 26.01MB (-9.05%) Bug: 27894376 Change-Id: Iefe28d40600c169c5d306fd2c77034ae19476d90 --- compiler/optimizing/code_generator.cc | 17 ----------------- 1 file changed, 17 deletions(-) (limited to 'compiler/optimizing/code_generator.cc') diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc index 1d2273da9c..65e5c3ad48 100644 --- a/compiler/optimizing/code_generator.cc +++ b/compiler/optimizing/code_generator.cc @@ -299,23 +299,6 @@ void CodeGenerator::InitializeCodeGeneration(size_t number_of_spill_slots, } } -int32_t CodeGenerator::GetStackSlot(HLocal* local) const { - uint16_t reg_number = local->GetRegNumber(); - uint16_t number_of_locals = GetGraph()->GetNumberOfLocalVRegs(); - if (reg_number >= number_of_locals) { - // Local is a parameter of the method. It is stored in the caller's frame. - // TODO: Share this logic with StackVisitor::GetVRegOffsetFromQuickCode. - return GetFrameSize() + InstructionSetPointerSize(GetInstructionSet()) // ART method - + (reg_number - number_of_locals) * kVRegSize; - } else { - // Local is a temporary in this method. It is stored in this method's frame. - return GetFrameSize() - FrameEntrySpillSize() - - kVRegSize // filler. - - (number_of_locals * kVRegSize) - + (reg_number * kVRegSize); - } -} - void CodeGenerator::CreateCommonInvokeLocationSummary( HInvoke* invoke, InvokeDexCallingConventionVisitor* visitor) { ArenaAllocator* allocator = invoke->GetBlock()->GetGraph()->GetArena(); -- cgit v1.2.3-59-g8ed1b