diff options
Diffstat (limited to 'src/compiler/dex/quick')
-rw-r--r-- | src/compiler/dex/quick/gen_invoke.cc | 4 | ||||
-rw-r--r-- | src/compiler/dex/quick/ralloc_util.cc | 4 |
2 files changed, 7 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) { diff --git a/src/compiler/dex/quick/ralloc_util.cc b/src/compiler/dex/quick/ralloc_util.cc index dd389146ad..30ed1b7db2 100644 --- a/src/compiler/dex/quick/ralloc_util.cc +++ b/src/compiler/dex/quick/ralloc_util.cc @@ -37,6 +37,10 @@ void Mir2Lir::ResetRegPool() if (reg_pool_->FPRegs[i].is_temp) reg_pool_->FPRegs[i].in_use = false; } + // Reset temp tracking sanity check. + if (kIsDebugBuild) { + live_sreg_ = INVALID_SREG; + } } /* |