diff options
author | Mingyao Yang <mingyao@google.com> | 2015-04-01 14:03:04 -0700 |
---|---|---|
committer | Mingyao Yang <mingyao@google.com> | 2015-04-01 14:05:13 -0700 |
commit | d43b3ac88cd46b8815890188c9c2b9a3f1564648 (patch) | |
tree | 6c599c3f40d57e92786bd7f41c0541d9eaa2643b /runtime/interpreter | |
parent | a109632b240f3c9355ca95500f6f48e4478e3c51 (diff) | |
download | art-d43b3ac88cd46b8815890188c9c2b9a3f1564648.tar.gz art-d43b3ac88cd46b8815890188c9c2b9a3f1564648.tar.bz2 art-d43b3ac88cd46b8815890188c9c2b9a3f1564648.zip |
Revert "Revert "Deoptimization-based bce.""
This reverts commit 0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430.
Change-Id: I1ca10d15bbb49897a0cf541ab160431ec180a006
Diffstat (limited to 'runtime/interpreter')
-rw-r--r-- | runtime/interpreter/interpreter.cc | 4 |
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); |