summaryrefslogtreecommitdiffstats
path: root/compiler
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2014-06-23 16:04:54 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-06-20 21:00:34 +0000
commitbe781e55b86ddd2dacf12b80a26fa9a5612948c3 (patch)
treecbc5741e7fc7c5ad410e2ccf71721b871c237f87 /compiler
parentdd79f2157fcea35afc8dfbe75a0f8c4bbc6898b9 (diff)
parent2073e7553d1ca65f13b6c4e4fe364c2a345a1511 (diff)
downloadart-be781e55b86ddd2dacf12b80a26fa9a5612948c3.tar.gz
art-be781e55b86ddd2dacf12b80a26fa9a5612948c3.tar.bz2
art-be781e55b86ddd2dacf12b80a26fa9a5612948c3.zip
Merge "Revert "Revert "ART: Fix StoreValue to use RefDisp when necessary."""
Diffstat (limited to 'compiler')
-rw-r--r--compiler/dex/quick/gen_loadstore.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/dex/quick/gen_loadstore.cc b/compiler/dex/quick/gen_loadstore.cc
index 6469d9c4f1..d6f6ea1021 100644
--- a/compiler/dex/quick/gen_loadstore.cc
+++ b/compiler/dex/quick/gen_loadstore.cc
@@ -214,7 +214,11 @@ void Mir2Lir::StoreValue(RegLocation rl_dest, RegLocation rl_src) {
if (IsDirty(rl_dest.reg) && LiveOut(rl_dest.s_reg_low)) {
def_start = last_lir_insn_;
ScopedMemRefType mem_ref_type(this, ResourceMask::kDalvikReg);
- Store32Disp(TargetReg(kSp), SRegOffset(rl_dest.s_reg_low), rl_dest.reg);
+ if (rl_dest.ref) {
+ StoreRefDisp(TargetReg(kSp), SRegOffset(rl_dest.s_reg_low), rl_dest.reg);
+ } else {
+ Store32Disp(TargetReg(kSp), SRegOffset(rl_dest.s_reg_low), rl_dest.reg);
+ }
MarkClean(rl_dest);
def_end = last_lir_insn_;
if (!rl_dest.ref) {