summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/code_generator_arm64.cc
diff options
context:
space:
mode:
authorDavid Srbecky <dsrbecky@google.com>2015-04-12 09:27:43 +0100
committerDavid Srbecky <dsrbecky@google.com>2015-04-12 09:30:57 +0100
commitc34dc9362b9ec624b3bdd97d36b6b2098814cd73 (patch)
treec2049b2dc19d318e3917b52ef66608b985d7ac69 /compiler/optimizing/code_generator_arm64.cc
parent58565098b2298041ccc97371a3cc486df88d51b3 (diff)
downloadart-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.cc12
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) {