diff options
author | Sebastien Hertz <shertz@google.com> | 2015-08-24 14:27:01 +0200 |
---|---|---|
committer | Sebastien Hertz <shertz@google.com> | 2015-08-24 15:15:00 +0200 |
commit | b995c0ab7d6313f32e704e79c1e7dd21f5f160d4 (patch) | |
tree | 9055d85d7cabb23dd2129e0ea9164011f5238b22 /runtime/quick_exception_handler.cc | |
parent | 009c34cba875885d9540696f33255a9b355d6e15 (diff) |
Update instrumentation stack after exception event
If instrumentation is updated on an exception event, we must update
the instrumentation stack (to remove all frames that will be unwound
by the exception) before doing the long jump.
Bug: 23471864
Change-Id: Ic91552bb7280c54bcc58b7ba03a17040b0b0f5ef
Diffstat (limited to 'runtime/quick_exception_handler.cc')
-rw-r--r-- | runtime/quick_exception_handler.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/runtime/quick_exception_handler.cc b/runtime/quick_exception_handler.cc index d1a4081125..9d5ce9f385 100644 --- a/runtime/quick_exception_handler.cc +++ b/runtime/quick_exception_handler.cc @@ -152,6 +152,9 @@ void QuickExceptionHandler::FindCatch(mirror::Throwable* exception) { if (instrumentation->HasExceptionCaughtListeners() && self_->IsExceptionThrownByCurrentMethod(exception)) { instrumentation->ExceptionCaughtEvent(self_, exception_ref.Get()); + // Instrumentation may have been updated. + method_tracing_active_ = is_deoptimization_ || + Runtime::Current()->GetInstrumentation()->AreExitStubsInstalled(); } } |