summaryrefslogtreecommitdiff
path: root/compiler/dex/quick/gen_invoke.cc
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2013-11-01 09:42:05 +0000
committer Vladimir Marko <vmarko@google.com> 2013-11-01 10:52:06 +0000
commitcdb4b715e77f427838b97da9bdb6654f561296ab (patch)
tree7ce49dc8bb5077b148b1d2ab4617afc5bb0911e2 /compiler/dex/quick/gen_invoke.cc
parent7809a7289e6e978aeb39a90845337c76f3f34e54 (diff)
Fix intrinsic Long.reverseBytes().
Change-Id: I6cfab7e072f406439f0bde73f192149f0a6e58f7
Diffstat (limited to 'compiler/dex/quick/gen_invoke.cc')
-rw-r--r--compiler/dex/quick/gen_invoke.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/dex/quick/gen_invoke.cc b/compiler/dex/quick/gen_invoke.cc
index b366fdd55d..c7d0014b80 100644
--- a/compiler/dex/quick/gen_invoke.cc
+++ b/compiler/dex/quick/gen_invoke.cc
@@ -968,8 +968,10 @@ bool Mir2Lir::GenInlinedReverseBytes(CallInfo* info, OpSize size) {
RegLocation rl_result = EvalLoc(rl_dest, kCoreReg, true);
if (size == kLong) {
RegLocation rl_i = LoadValueWide(rl_src_i, kCoreReg);
+ int reg_tmp = AllocTemp();
+ OpRegCopy(reg_tmp, rl_result.low_reg);
OpRegReg(kOpRev, rl_result.low_reg, rl_i.high_reg);
- OpRegReg(kOpRev, rl_result.high_reg, rl_i.low_reg);
+ OpRegReg(kOpRev, rl_result.high_reg, reg_tmp);
StoreValueWide(rl_dest, rl_result);
} else {
DCHECK(size == kWord || size == kSignedHalf);