summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
author buzbee <buzbee@google.com> 2014-05-30 19:48:41 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2014-05-30 19:48:41 +0000
commit22460ecbaae7e489a3bc17a2adb2e7e9d0028f9c (patch)
tree73eb557bf2c5530943f6cdaea69941f455559848 /compiler
parentc24234e9d6fea3d6d5451aa4fa14ca0c6e63f8bd (diff)
parentf2c3e564fa9e484c29f35f10d4659ab2d7b8614a (diff)
Merge "Quick compiler: Method* as a reference"
Diffstat (limited to 'compiler')
-rw-r--r--compiler/dex/quick/gen_invoke.cc8
-rw-r--r--compiler/dex/vreg_analysis.cc3
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;