More fixes to make new Class status work properly.

InitializeClass should only check for an exception from VerifyClass if
the class is erroneous. Also, the status ordering was changed so that
kStatusRetryVerificationAtRuntime is after kStatusVerifying.

Change-Id: Ibbfb1696dfee88cb8fcef5673f7e353f30a8fe5a
diff --git a/src/class_linker.cc b/src/class_linker.cc
index e2ae0f3..3280410 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -1967,7 +1967,8 @@
     return;
   }
 
-  CHECK(klass->IsResolved()) << PrettyClass(klass);
+  CHECK(klass->GetStatus() == Class::kStatusResolved ||
+        klass->GetStatus() == Class::kStatusRetryVerificationAtRuntime) << PrettyClass(klass);
   klass->SetStatus(Class::kStatusVerifying);
 
   // Verify super class
@@ -2361,7 +2362,9 @@
         klass->GetStatus() == Class::kStatusRetryVerificationAtRuntime) {
       VerifyClass(klass);
       if (klass->GetStatus() != Class::kStatusVerified) {
-        CHECK(self->IsExceptionPending());
+        if (klass->GetStatus() == Class::kStatusError) {
+          CHECK(self->IsExceptionPending());
+        }
         return false;
       }
     }
diff --git a/src/object.cc b/src/object.cc
index 0766814..e6dae74 100644
--- a/src/object.cc
+++ b/src/object.cc
@@ -1575,8 +1575,8 @@
   "Idx",
   "Loaded",
   "Resolved",
-  "RetryVerificationAtRuntime",
   "Verifying",
+  "RetryVerificationAtRuntime",
   "Verified",
   "Initializing",
   "Initialized"
diff --git a/src/object.h b/src/object.h
index cc1d28e..7caabde 100644
--- a/src/object.h
+++ b/src/object.h
@@ -1180,8 +1180,8 @@
     kStatusIdx = 1,  // loaded, DEX idx in super_class_type_idx_ and interfaces_type_idx_
     kStatusLoaded = 2,  // DEX idx values resolved
     kStatusResolved = 3,  // part of linking
-    kStatusRetryVerificationAtRuntime = 4,  // compile time verification failed, retry at runtime
-    kStatusVerifying = 5,  // in the process of being verified
+    kStatusVerifying = 4,  // in the process of being verified
+    kStatusRetryVerificationAtRuntime = 5,  // compile time verification failed, retry at runtime
     kStatusVerified = 6,  // logically part of linking; done pre-init
     kStatusInitializing = 7,  // class init in progress
     kStatusInitialized = 8,  // ready to go