diff options
| author | 2016-01-29 09:50:09 +0000 | |
|---|---|---|
| committer | 2016-01-29 09:50:09 +0000 | |
| commit | 04d3e87e5ec2ab2f18da937a3d2e864a78fc9813 (patch) | |
| tree | fcfcc67c7963dc41c01c6f40dca08c9882fc0a81 /compiler/optimizing | |
| parent | ed1d318eccd3d7e9bc7bdbdf6dbb64e1d0bf6dba (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.cc | 6 |
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"; } |