From 5cf98196d488437acd1e989c08a554ef697fded1 Mon Sep 17 00:00:00 2001 From: Ian Rogers Date: Thu, 29 May 2014 21:31:50 -0700 Subject: 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 --- runtime/quick_exception_handler.h | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'runtime/quick_exception_handler.h') 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* 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_; -- cgit v1.2.3-59-g8ed1b