summaryrefslogtreecommitdiffstats
path: root/runtime/quick_exception_handler.h
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2014-05-29 21:31:50 -0700
committerIan Rogers <irogers@google.com>2014-05-30 12:46:10 -0700
commit5cf98196d488437acd1e989c08a554ef697fded1 (patch)
treedd44bc0120562169b701e80dbec413a179862beb /runtime/quick_exception_handler.h
parentb7f02280f7f56ae94fe7f01e161be0b725b6e4a9 (diff)
downloadart-5cf98196d488437acd1e989c08a554ef697fded1.tar.gz
art-5cf98196d488437acd1e989c08a554ef697fded1.tar.bz2
art-5cf98196d488437acd1e989c08a554ef697fded1.zip
Don't report down-calls as unhandled exceptions.
Bug: 15310540 Also, narrow scope of catch/deoptimize stack visitors that are specific to quick exception delivery. Change-Id: Ib13a006ce1347acb93a36b0186550d4c3ec2034b
Diffstat (limited to 'runtime/quick_exception_handler.h')
-rw-r--r--runtime/quick_exception_handler.h19
1 files changed, 15 insertions, 4 deletions
diff --git a/runtime/quick_exception_handler.h b/runtime/quick_exception_handler.h
index 2597ebd5c7..a4229b33fc 100644
--- a/runtime/quick_exception_handler.h
+++ b/runtime/quick_exception_handler.h
@@ -32,9 +32,6 @@ class Thread;
class ThrowLocation;
class ShadowFrame;
-static constexpr bool kDebugExceptionDelivery = false;
-static constexpr size_t kInvalidFrameId = 0xffffffff;
-
// Manages exception delivery for Quick backend. Not used by Portable backend.
class QuickExceptionHandler {
public:
@@ -59,6 +56,18 @@ class QuickExceptionHandler {
handler_quick_frame_pc_ = handler_quick_frame_pc;
}
+ mirror::ArtMethod* GetHandlerMethod() const {
+ return handler_method_;
+ }
+
+ void SetHandlerMethod(mirror::ArtMethod* handler_quick_method) {
+ handler_method_ = handler_quick_method;
+ }
+
+ uint32_t GetHandlerDexPc() const {
+ return handler_dex_pc_;
+ }
+
void SetHandlerDexPc(uint32_t dex_pc) {
handler_dex_pc_ = dex_pc;
}
@@ -81,7 +90,9 @@ class QuickExceptionHandler {
StackReference<mirror::ArtMethod>* handler_quick_frame_;
// PC to branch to for the handler.
uintptr_t handler_quick_frame_pc_;
- // Associated dex PC.
+ // The handler method to report to the debugger.
+ mirror::ArtMethod* handler_method_;
+ // The handler's dex PC, zero implies an uncaught exception.
uint32_t handler_dex_pc_;
// Should the exception be cleared as the catch block has no move-exception?
bool clear_exception_;