summaryrefslogtreecommitdiff
path: root/compiler/optimizing
diff options
context:
space:
mode:
author David Brazdil <dbrazdil@google.com> 2016-01-29 09:50:09 +0000
committer David Brazdil <dbrazdil@google.com> 2016-01-29 09:50:09 +0000
commit04d3e87e5ec2ab2f18da937a3d2e864a78fc9813 (patch)
treefcfcc67c7963dc41c01c6f40dca08c9882fc0a81 /compiler/optimizing
parented1d318eccd3d7e9bc7bdbdf6dbb64e1d0bf6dba (diff)
ART: Do not use AT register in MIPS DSS<->RP swap
LoadFromOffset clobbers AT if stack offset does not fit in int16_t. We should never hit that limit but let's stay on the safe side. Change-Id: I77f564dc3edd0b47d06f8fafb5610c7c0205e9b2
Diffstat (limited to 'compiler/optimizing')
-rw-r--r--compiler/optimizing/code_generator_mips.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/optimizing/code_generator_mips.cc b/compiler/optimizing/code_generator_mips.cc
index 85ffd66ce8..fa119bbeb1 100644
--- a/compiler/optimizing/code_generator_mips.cc
+++ b/compiler/optimizing/code_generator_mips.cc
@@ -634,11 +634,11 @@ void ParallelMoveResolverMIPS::EmitSwap(size_t index) {
intptr_t offset_h = loc1.IsDoubleStackSlot() ? loc1.GetHighStackIndex(kMipsWordSize)
: loc2.GetHighStackIndex(kMipsWordSize);
__ Move(TMP, reg_l);
- __ Move(AT, reg_h);
__ LoadFromOffset(kLoadWord, reg_l, SP, offset_l);
- __ LoadFromOffset(kLoadWord, reg_h, SP, offset_h);
__ StoreToOffset(kStoreWord, TMP, SP, offset_l);
- __ StoreToOffset(kStoreWord, AT, SP, offset_h);
+ __ Move(TMP, reg_h);
+ __ LoadFromOffset(kLoadWord, reg_h, SP, offset_h);
+ __ StoreToOffset(kStoreWord, TMP, SP, offset_h);
} else {
LOG(FATAL) << "Swap between " << loc1 << " and " << loc2 << " is unsupported";
}