summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/code_generator_arm.cc
diff options
context:
space:
mode:
authorDavid Srbecky <dsrbecky@google.com>2015-04-13 20:00:25 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-04-13 20:00:26 +0000
commitc4542866d2e68dcdfa2c7efa5cddbb131003da81 (patch)
tree213112de64b20d2c8e8a681f7649de89793c24cc /compiler/optimizing/code_generator_arm.cc
parent180b315f435517604530beaa52eddbd270199050 (diff)
parentc34dc9362b9ec624b3bdd97d36b6b2098814cd73 (diff)
downloadart-c4542866d2e68dcdfa2c7efa5cddbb131003da81.tar.gz
art-c4542866d2e68dcdfa2c7efa5cddbb131003da81.tar.bz2
art-c4542866d2e68dcdfa2c7efa5cddbb131003da81.zip
Merge "Move 'ret' instruction generation inside GenerateFrameExit."
Diffstat (limited to 'compiler/optimizing/code_generator_arm.cc')
-rw-r--r--compiler/optimizing/code_generator_arm.cc9
1 files changed, 3 insertions, 6 deletions
diff --git a/compiler/optimizing/code_generator_arm.cc b/compiler/optimizing/code_generator_arm.cc
index a799a519c0..e434e9e7ef 100644
--- a/compiler/optimizing/code_generator_arm.cc
+++ b/compiler/optimizing/code_generator_arm.cc
@@ -560,6 +560,7 @@ void CodeGeneratorARM::GenerateFrameExit() {
__ bx(LR);
return;
}
+ __ cfi().RememberState();
int adjust = GetFrameSize() - FrameEntrySpillSize();
__ AddConstant(SP, adjust);
__ cfi().AdjustCFAOffset(-adjust);
@@ -570,6 +571,8 @@ void CodeGeneratorARM::GenerateFrameExit() {
__ cfi().RestoreMany(DWARFReg(SRegister(0)), fpu_spill_mask_);
}
__ PopList(core_spill_mask_);
+ __ cfi().RestoreState();
+ __ cfi().DefCFAOffset(GetFrameSize());
}
void CodeGeneratorARM::Bind(HBasicBlock* block) {
@@ -1209,10 +1212,7 @@ void LocationsBuilderARM::VisitReturnVoid(HReturnVoid* ret) {
void InstructionCodeGeneratorARM::VisitReturnVoid(HReturnVoid* ret) {
UNUSED(ret);
- __ cfi().RememberState();
codegen_->GenerateFrameExit();
- __ cfi().RestoreState();
- __ cfi().DefCFAOffset(codegen_->GetFrameSize());
}
void LocationsBuilderARM::VisitReturn(HReturn* ret) {
@@ -1223,10 +1223,7 @@ void LocationsBuilderARM::VisitReturn(HReturn* ret) {
void InstructionCodeGeneratorARM::VisitReturn(HReturn* ret) {
UNUSED(ret);
- __ cfi().RememberState();
codegen_->GenerateFrameExit();
- __ cfi().RestoreState();
- __ cfi().DefCFAOffset(codegen_->GetFrameSize());
}
void LocationsBuilderARM::VisitInvokeStaticOrDirect(HInvokeStaticOrDirect* invoke) {