summaryrefslogtreecommitdiffstats
path: root/compiler/dex/quick/arm/target_arm.cc
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2015-01-14 09:27:13 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-01-14 09:27:13 +0000
commit7774edf4c19734922669fa888923e8c7d7385ea3 (patch)
tree12fbe29572fe355ce910f38c5a2cd818ebef7f16 /compiler/dex/quick/arm/target_arm.cc
parentb640deca3616a7a985d146a96407c1af3ffa1592 (diff)
parent69c15d340e7e76821bbc5d4494d4cef383774dee (diff)
downloadart-7774edf4c19734922669fa888923e8c7d7385ea3.tar.gz
art-7774edf4c19734922669fa888923e8c7d7385ea3.tar.bz2
art-7774edf4c19734922669fa888923e8c7d7385ea3.zip
Merge "Skip r1 on arm if first parameter is a long."
Diffstat (limited to 'compiler/dex/quick/arm/target_arm.cc')
-rw-r--r--compiler/dex/quick/arm/target_arm.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/dex/quick/arm/target_arm.cc b/compiler/dex/quick/arm/target_arm.cc
index b05939156f..52a516cc5a 100644
--- a/compiler/dex/quick/arm/target_arm.cc
+++ b/compiler/dex/quick/arm/target_arm.cc
@@ -929,6 +929,10 @@ RegStorage ArmMir2Lir::InToRegStorageArmMapper::GetNextReg(ShortyArg arg) {
}
} else {
if (cur_core_reg_ < coreArgMappingToPhysicalRegSize) {
+ if (!kArm32QuickCodeUseSoftFloat && arg.IsWide() && cur_core_reg_ == 0) {
+ // Skip r1, and use r2-r3 for the register pair.
+ cur_core_reg_++;
+ }
result = coreArgMappingToPhysicalReg[cur_core_reg_++];
if (arg.IsWide() && cur_core_reg_ < coreArgMappingToPhysicalRegSize) {
result = RegStorage::MakeRegPair(result, coreArgMappingToPhysicalReg[cur_core_reg_++]);