summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/intrinsics_arm64.cc
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2015-03-13 16:36:36 +0000
committerNicolas Geoffray <ngeoffray@google.com>2015-03-13 16:47:44 +0000
commita8ac9130b872c080299afacf5dcaab513d13ea87 (patch)
tree2bd0a2a88cbb6e7a3ae79dff84c466bed9189eb5 /compiler/optimizing/intrinsics_arm64.cc
parentcc22e3946baf035c8732e9417ab132bfe663aa45 (diff)
downloadandroid_art-a8ac9130b872c080299afacf5dcaab513d13ea87.tar.gz
android_art-a8ac9130b872c080299afacf5dcaab513d13ea87.tar.bz2
android_art-a8ac9130b872c080299afacf5dcaab513d13ea87.zip
Refactor code in preparation of correct stack maps in slow path.
Move the logic of saving/restoring live registers in slow path in the SlowPathCode method. Also add a RecordPcInfo helper to SlowPathCode, that will act as the placeholder of saving correct stack maps. Change-Id: I25c2bc7a642ef854bbc8a3eb570e5c8c8d2d030c
Diffstat (limited to 'compiler/optimizing/intrinsics_arm64.cc')
-rw-r--r--compiler/optimizing/intrinsics_arm64.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/optimizing/intrinsics_arm64.cc b/compiler/optimizing/intrinsics_arm64.cc
index 1ddff8a125..19b04ae094 100644
--- a/compiler/optimizing/intrinsics_arm64.cc
+++ b/compiler/optimizing/intrinsics_arm64.cc
@@ -122,12 +122,13 @@ class IntrinsicSlowPathARM64 : public SlowPathCodeARM64 {
CodeGeneratorARM64* codegen = down_cast<CodeGeneratorARM64*>(codegen_in);
__ Bind(GetEntryLabel());
- codegen->SaveLiveRegisters(invoke_->GetLocations());
+ SaveLiveRegisters(codegen, invoke_->GetLocations());
MoveArguments(invoke_, codegen->GetGraph()->GetArena(), codegen);
if (invoke_->IsInvokeStaticOrDirect()) {
codegen->GenerateStaticOrDirectCall(invoke_->AsInvokeStaticOrDirect(), kArtMethodRegister);
+ RecordPcInfo(codegen, invoke_, invoke_->GetDexPc());
} else {
UNIMPLEMENTED(FATAL) << "Non-direct intrinsic slow-path not yet implemented";
UNREACHABLE();
@@ -141,7 +142,7 @@ class IntrinsicSlowPathARM64 : public SlowPathCodeARM64 {
MoveFromReturnRegister(out, invoke_->GetType(), codegen);
}
- codegen->RestoreLiveRegisters(invoke_->GetLocations());
+ RestoreLiveRegisters(codegen, invoke_->GetLocations());
__ B(GetExitLabel());
}