summaryrefslogtreecommitdiff
path: root/runtime/quick_exception_handler.cc
diff options
context:
space:
mode:
authorSebastien Hertz <shertz@google.com>2015-08-24 14:27:01 +0200
committerSebastien Hertz <shertz@google.com>2015-08-24 15:15:00 +0200
commitb995c0ab7d6313f32e704e79c1e7dd21f5f160d4 (patch)
tree9055d85d7cabb23dd2129e0ea9164011f5238b22 /runtime/quick_exception_handler.cc
parent009c34cba875885d9540696f33255a9b355d6e15 (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.cc3
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();
}
}