diff options
author | David Srbecky <dsrbecky@google.com> | 2015-04-12 09:27:43 +0100 |
---|---|---|
committer | David Srbecky <dsrbecky@google.com> | 2015-04-12 09:30:57 +0100 |
commit | c34dc9362b9ec624b3bdd97d36b6b2098814cd73 (patch) | |
tree | c2049b2dc19d318e3917b52ef66608b985d7ac69 /compiler/optimizing/code_generator_arm64.cc | |
parent | 58565098b2298041ccc97371a3cc486df88d51b3 (diff) | |
download | art-c34dc9362b9ec624b3bdd97d36b6b2098814cd73.tar.gz art-c34dc9362b9ec624b3bdd97d36b6b2098814cd73.tar.bz2 art-c34dc9362b9ec624b3bdd97d36b6b2098814cd73.zip |
Move 'ret' instruction generation inside GenerateFrameExit.
Change-Id: I0c594d9a2356a006a5ce8dfd41d307cf7c3704ba
Diffstat (limited to 'compiler/optimizing/code_generator_arm64.cc')
-rw-r--r-- | compiler/optimizing/code_generator_arm64.cc | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/compiler/optimizing/code_generator_arm64.cc b/compiler/optimizing/code_generator_arm64.cc index 5fe8adc86a..33eacbaf08 100644 --- a/compiler/optimizing/code_generator_arm64.cc +++ b/compiler/optimizing/code_generator_arm64.cc @@ -472,6 +472,7 @@ void CodeGeneratorARM64::GenerateFrameEntry() { } void CodeGeneratorARM64::GenerateFrameExit() { + GetAssembler()->cfi().RememberState(); if (!HasEmptyFrame()) { int frame_size = GetFrameSize(); UnspillRegisters(GetFramePreservedFPRegisters(), frame_size - FrameEntrySpillSize()); @@ -479,6 +480,9 @@ void CodeGeneratorARM64::GenerateFrameExit() { __ Drop(frame_size); GetAssembler()->cfi().AdjustCFAOffset(-frame_size); } + __ Ret(); + GetAssembler()->cfi().RestoreState(); + GetAssembler()->cfi().DefCFAOffset(GetFrameSize()); } static inline dwarf::Reg DWARFReg(CPURegister reg) { @@ -2465,11 +2469,7 @@ void LocationsBuilderARM64::VisitReturn(HReturn* instruction) { void InstructionCodeGeneratorARM64::VisitReturn(HReturn* instruction) { UNUSED(instruction); - GetAssembler()->cfi().RememberState(); codegen_->GenerateFrameExit(); - __ Ret(); - GetAssembler()->cfi().RestoreState(); - GetAssembler()->cfi().DefCFAOffset(codegen_->GetFrameSize()); } void LocationsBuilderARM64::VisitReturnVoid(HReturnVoid* instruction) { @@ -2478,11 +2478,7 @@ void LocationsBuilderARM64::VisitReturnVoid(HReturnVoid* instruction) { void InstructionCodeGeneratorARM64::VisitReturnVoid(HReturnVoid* instruction) { UNUSED(instruction); - GetAssembler()->cfi().RememberState(); codegen_->GenerateFrameExit(); - __ Ret(); - GetAssembler()->cfi().RestoreState(); - GetAssembler()->cfi().DefCFAOffset(codegen_->GetFrameSize()); } void LocationsBuilderARM64::VisitShl(HShl* shl) { |