From 04d3e87e5ec2ab2f18da937a3d2e864a78fc9813 Mon Sep 17 00:00:00 2001 From: David Brazdil Date: Fri, 29 Jan 2016 09:50:09 +0000 Subject: 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 --- compiler/optimizing/code_generator_mips.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'compiler/optimizing') 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"; } -- cgit v1.2.3-59-g8ed1b