summaryrefslogtreecommitdiff
path: root/runtime/quick_exception_handler.h
diff options
context:
space:
mode:
authorAlex Light <allight@google.com>2018-06-08 14:51:09 -0700
committerAlex Light <allight@google.com>2018-07-10 08:44:17 -0700
commit2c8206ffeb07cebe2f612b8c66c0f4f4132e2be2 (patch)
tree9de26eb2e85f2ab46421caf0f1ca773dfcfca7f6 /runtime/quick_exception_handler.h
parent2d441b1253cca39bf3078422e8f0b2f4ec1bb408 (diff)
Correctly send MethodExit events from exception handlers
Due to the way that exceptions are handled it was possible for a MethodExit event to be sent multiple times for the same exception. This fixes that issue by correctly keeping track of which exception events have already been sent and correctly tracking the current exception being thrown. Test: ./test/testrunner/testrunner.py --host --runtime-option=-Xplugin:libtracefast-trampolined.so Test: ./test.py --host Change-Id: I7fa09f0f3f82181430b18805da5ba8daf68d4b89
Diffstat (limited to 'runtime/quick_exception_handler.h')
-rw-r--r--runtime/quick_exception_handler.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/runtime/quick_exception_handler.h b/runtime/quick_exception_handler.h
index 1103dab52c..5579d368a3 100644
--- a/runtime/quick_exception_handler.h
+++ b/runtime/quick_exception_handler.h
@@ -47,7 +47,8 @@ class QuickExceptionHandler {
UNREACHABLE();
}
- // Find the catch handler for the given exception.
+ // Find the catch handler for the given exception and call all required Instrumentation methods.
+ // Note this might result in the exception being caught being different from 'exception'.
void FindCatch(ObjPtr<mirror::Throwable> exception) REQUIRES_SHARED(Locks::mutator_lock_);
// Deoptimize the stack to the upcall/some code that's not deoptimizeable. For