Verifier should not exit with exceptions pending.

Change-Id: Ibf820594883b345c55e9f636d937aae6506706d6
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 2aa9d7d..1e0cdb1 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -1290,23 +1290,17 @@
   }
 
   CHECK_EQ(klass->GetStatus(), Class::kStatusResolved);
-
   klass->SetStatus(Class::kStatusVerifying);
-  if (!DexVerifier::VerifyClass(klass)) {
-    LOG(ERROR) << "Verification failed on class "
-               << klass->GetDescriptor()->ToModifiedUtf8();
-    Object* exception = Thread::Current()->GetException();
-    // CHECK(exception != NULL) << PrettyClass(klass);
-    if (exception == NULL) {
-      UNIMPLEMENTED(ERROR) << "null verification exception for " << PrettyClass(klass);
-    } else {
-      klass->SetVerifyErrorClass(exception->GetClass());
-    }
-    klass->SetStatus(Class::kStatusError);
-    return;
-  }
 
-  klass->SetStatus(Class::kStatusVerified);
+  if (DexVerifier::VerifyClass(klass)) {
+    klass->SetStatus(Class::kStatusVerified);
+  } else {
+    LOG(ERROR) << "Verification failed on class " << PrettyClass(klass);
+    CHECK(!Thread::Current()->IsExceptionPending()) << PrettyTypeOf(Thread::Current()->GetException());
+
+    CHECK_EQ(klass->GetStatus(), Class::kStatusVerifying);
+    klass->SetStatus(Class::kStatusResolved);
+  }
 }
 
 bool ClassLinker::InitializeClass(Class* klass, bool can_run_clinit) {
diff --git a/src/compiler.cc b/src/compiler.cc
index d29e8ca..34263da 100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -183,15 +183,8 @@
     }
     CHECK(klass->IsResolved()) << PrettyClass(klass);
     class_linker->VerifyClass(klass);
-    CHECK(klass->IsVerified() || klass->IsErroneous()) << PrettyClass(klass);
-    //CHECK(!Thread::Current()->IsExceptionPending());
-    if (klass->IsErroneous()) {
-      Thread* self = Thread::Current();
-      if (self->IsExceptionPending()) {
-        UNIMPLEMENTED(WARNING) << "Verifier failed to cleanup exceptions internally";
-        self->ClearException();
-      }
-    }
+    CHECK(klass->IsVerified() || klass->IsResolved()) << PrettyClass(klass);
+    CHECK(!Thread::Current()->IsExceptionPending()) << PrettyTypeOf(Thread::Current()->GetException());
   }
   dex_file.ChangePermissions(PROT_READ);
 }