diff options
| author | 2014-05-30 19:48:41 +0000 | |
|---|---|---|
| committer | 2014-05-30 19:48:41 +0000 | |
| commit | 22460ecbaae7e489a3bc17a2adb2e7e9d0028f9c (patch) | |
| tree | 73eb557bf2c5530943f6cdaea69941f455559848 /compiler | |
| parent | c24234e9d6fea3d6d5451aa4fa14ca0c6e63f8bd (diff) | |
| parent | f2c3e564fa9e484c29f35f10d4659ab2d7b8614a (diff) | |
Merge "Quick compiler: Method* as a reference"
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/dex/quick/gen_invoke.cc | 8 | ||||
| -rw-r--r-- | compiler/dex/vreg_analysis.cc | 3 |
2 files changed, 5 insertions, 6 deletions
diff --git a/compiler/dex/quick/gen_invoke.cc b/compiler/dex/quick/gen_invoke.cc index a6d56bdf3b..eef3294b7c 100644 --- a/compiler/dex/quick/gen_invoke.cc +++ b/compiler/dex/quick/gen_invoke.cc @@ -443,14 +443,10 @@ void Mir2Lir::FlushIns(RegLocation* ArgLocs, RegLocation rl_method) { rl_src.reg = TargetReg(kArg0); rl_src.home = false; MarkLive(rl_src); - if (rl_method.wide) { - StoreValueWide(rl_method, rl_src); - } else { - StoreValue(rl_method, rl_src); - } + StoreValue(rl_method, rl_src); // If Method* has been promoted, explicitly flush if (rl_method.location == kLocPhysReg) { - StoreWordDisp(TargetReg(kSp), 0, TargetReg(kArg0)); + StoreRefDisp(TargetReg(kSp), 0, TargetReg(kArg0)); } if (cu_->num_ins == 0) { diff --git a/compiler/dex/vreg_analysis.cc b/compiler/dex/vreg_analysis.cc index 95b3d86d5f..a4c62ade40 100644 --- a/compiler/dex/vreg_analysis.cc +++ b/compiler/dex/vreg_analysis.cc @@ -425,6 +425,9 @@ void MIRGraph::InitRegLocations() { loc[ct->s_reg_low].defined = true; } + /* Treat Method* as a normal reference */ + loc[GetMethodSReg()].ref = true; + reg_location_ = loc; int num_regs = cu_->num_dalvik_registers; |