Another single-stepping fix in JIT self-verification mode.

The counted single stepping check should be based on the
kSubModeCountedStep submode instead.

Also since the NPC value is cleared when exceptions are thrown, we can
single-step instructions that can throw as well.

Change-Id: Idbc1307ae0956016ef76186aebc6e3b89b119d9d
diff --git a/vm/compiler/codegen/arm/CodegenDriver.cpp b/vm/compiler/codegen/arm/CodegenDriver.cpp
index 1a8ac42..1e5f4c7 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.cpp
+++ b/vm/compiler/codegen/arm/CodegenDriver.cpp
@@ -1353,8 +1353,7 @@
 static void genInterpSingleStep(CompilationUnit *cUnit, MIR *mir)
 {
     int flags = dexGetFlagsFromOpcode(mir->dalvikInsn.opcode);
-    int flagsToCheck = kInstrCanBranch | kInstrCanSwitch | kInstrCanReturn |
-                       kInstrCanThrow;
+    int flagsToCheck = kInstrCanBranch | kInstrCanSwitch | kInstrCanReturn;
 
     // Single stepping is considered loop mode breaker
     if (cUnit->jitMode == kJitLoop) {
diff --git a/vm/interp/Interp.cpp b/vm/interp/Interp.cpp
index 11e9408..67566e8 100644
--- a/vm/interp/Interp.cpp
+++ b/vm/interp/Interp.cpp
@@ -1828,10 +1828,10 @@
 #endif
 
     /*
-     * SingleStep processing.  NOTE: must be the last here to allow
+     * CountedStep processing.  NOTE: must be the last here to allow
      * preceeding special case handler to manipulate single-step count.
      */
-    if (self->interpBreak.ctl.breakFlags & kInterpSingleStep) {
+    if (self->interpBreak.ctl.subMode & kSubModeCountedStep) {
         if (self->singleStepCount == 0) {
             // We've exhausted our single step count
             dvmDisableSubMode(self, kSubModeCountedStep);