summaryrefslogtreecommitdiffstats
path: root/src/compiler/dex/quick/gen_invoke.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/dex/quick/gen_invoke.cc')
-rw-r--r--src/compiler/dex/quick/gen_invoke.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/compiler/dex/quick/gen_invoke.cc b/src/compiler/dex/quick/gen_invoke.cc
index efacff0ab2..9fd4a86c74 100644
--- a/src/compiler/dex/quick/gen_invoke.cc
+++ b/src/compiler/dex/quick/gen_invoke.cc
@@ -1158,11 +1158,13 @@ bool Mir2Lir::GenInlinedUnsafePut(CallInfo* info, bool is_long,
}
RegLocation rl_object = LoadValue(rl_src_obj, kCoreReg);
RegLocation rl_offset = LoadValue(rl_src_offset, kCoreReg);
- RegLocation rl_value = LoadValue(rl_src_value, kCoreReg);
+ RegLocation rl_value;
if (is_long) {
+ rl_value = LoadValueWide(rl_src_value, kCoreReg);
OpRegReg(kOpAdd, rl_object.low_reg, rl_offset.low_reg);
StoreBaseDispWide(rl_object.low_reg, 0, rl_value.low_reg, rl_value.high_reg);
} else {
+ rl_value = LoadValue(rl_src_value, kCoreReg);
StoreBaseIndexed(rl_object.low_reg, rl_offset.low_reg, rl_value.low_reg, 0, kWord);
}
if (is_volatile) {