From b995c0ab7d6313f32e704e79c1e7dd21f5f160d4 Mon Sep 17 00:00:00 2001 From: Sebastien Hertz Date: Mon, 24 Aug 2015 14:27:01 +0200 Subject: 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 --- runtime/quick_exception_handler.cc | 3 +++ 1 file changed, 3 insertions(+) (limited to 'runtime/quick_exception_handler.cc') 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(); } } -- cgit v1.2.3-59-g8ed1b