summaryrefslogtreecommitdiff
path: root/runtime/interpreter/interpreter.cc
diff options
context:
space:
mode:
author Mingyao Yang <mingyao@google.com> 2015-03-23 23:56:36 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2015-03-23 23:56:37 +0000
commit27a40aac557a0ee123471a99dc56fe91b50f2351 (patch)
treefb7fcf5673e3d672b68e7a96aceb3a50b191b467 /runtime/interpreter/interpreter.cc
parent075a6090b07ecfe7394fb65d39567596e0b1e3d3 (diff)
parente295e6ec5beaea31be5d7d3c996cd8cfa2053129 (diff)
Merge "Deoptimization-based bce."
Diffstat (limited to 'runtime/interpreter/interpreter.cc')
-rw-r--r--runtime/interpreter/interpreter.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/runtime/interpreter/interpreter.cc b/runtime/interpreter/interpreter.cc
index 686b518c5f..4801124fc6 100644
--- a/runtime/interpreter/interpreter.cc
+++ b/runtime/interpreter/interpreter.cc
@@ -401,7 +401,9 @@ void EnterInterpreterFromDeoptimize(Thread* self, ShadowFrame* shadow_frame, JVa
// or DexFile::kDexNoIndex if there is none.
} else {
const Instruction* instr = Instruction::At(&code_item->insns_[dex_pc]);
- new_dex_pc = dex_pc + instr->SizeInCodeUnits(); // the dex pc of the next instruction.
+ // For an invoke, use the dex pc of the next instruction.
+ // TODO: should be tested more once b/17586779 is fixed.
+ new_dex_pc = dex_pc + (instr->IsInvoke() ? instr->SizeInCodeUnits() : 0);
}
if (new_dex_pc != DexFile::kDexNoIndex) {
shadow_frame->SetDexPC(new_dex_pc);