Fix exception caught listeners and frame type for deopt.

Change-Id: I5792ebe9a7772d068b6ec556b4fc27ddd44d7ca1
diff --git a/src/instrumentation.cc b/src/instrumentation.cc
index 55e93cb..982af29 100644
--- a/src/instrumentation.cc
+++ b/src/instrumentation.cc
@@ -274,6 +274,10 @@
     require_interpreter = true;
     have_dex_pc_listeners_ = true;
   }
+  if ((events & kExceptionCaught) != 0) {
+    exception_caught_listeners_.push_back(listener);
+    have_exception_caught_listeners_ = true;
+  }
   ConfigureStubs(require_entry_exit_stubs, require_interpreter);
 }
 
@@ -312,6 +316,10 @@
     have_dex_pc_listeners_ = dex_pc_listeners_.size() > 0;
     require_interpreter |= have_dex_pc_listeners_;
   }
+  if ((events & kExceptionCaught) != 0) {
+    exception_caught_listeners_.remove(listener);
+    have_exception_caught_listeners_ = exception_caught_listeners_.size() > 0;
+  }
   ConfigureStubs(require_entry_exit_stubs, require_interpreter);
 }