diff options
author | 2017-09-05 09:32:49 -0700 | |
---|---|---|
committer | 2017-09-05 10:54:05 -0700 | |
commit | 9fb1ab1f6bb58bdaccef78bc81b3202d0121e2ed (patch) | |
tree | f4ec9bb10a2191f4aa80b1ee40332071bed38bab /runtime/interpreter/interpreter.cc | |
parent | c101222c854a0c476f5b6ae64e20adbd38126a3c (diff) |
Revert "Revert "JVMTI Exception and ExceptionCatch events""
Fixed error where we were incorrectly not updating a ShadowFrame
dex_pc causing deoptimization errors.
Bug: 62821960
Bug: 65049545
Test: ./test.py --host -j50
Test: ./art/tools/run-libcore-tests.sh \
--mode=host --variant-X32 --debug
This reverts commit 959742483885779f106e000df6dd422fc8657931.
Change-Id: I91ab2bc3e645ddf0359c189b19a59a3ecf0d8921
Diffstat (limited to 'runtime/interpreter/interpreter.cc')
-rw-r--r-- | runtime/interpreter/interpreter.cc | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/runtime/interpreter/interpreter.cc b/runtime/interpreter/interpreter.cc index 9cb74f7c36..33498335ca 100644 --- a/runtime/interpreter/interpreter.cc +++ b/runtime/interpreter/interpreter.cc @@ -522,10 +522,8 @@ void EnterInterpreterFromDeoptimize(Thread* self, // null Instrumentation*. const instrumentation::Instrumentation* const instrumentation = first ? nullptr : Runtime::Current()->GetInstrumentation(); - uint32_t found_dex_pc = FindNextInstructionFollowingException(self, *shadow_frame, dex_pc, - instrumentation); - new_dex_pc = found_dex_pc; // the dex pc of a matching catch handler - // or DexFile::kDexNoIndex if there is none. + new_dex_pc = MoveToExceptionHandler( + self, *shadow_frame, instrumentation) ? shadow_frame->GetDexPC() : DexFile::kDexNoIndex; } else if (!from_code) { // For the debugger and full deoptimization stack, we must go past the invoke // instruction, as it already executed. |