diff options
-rw-r--r-- | src/class_linker.cc | 7 | ||||
-rw-r--r-- | src/object.cc | 2 | ||||
-rw-r--r-- | src/object.h | 4 |
3 files changed, 8 insertions, 5 deletions
diff --git a/src/class_linker.cc b/src/class_linker.cc index e2ae0f3fd1..3280410ce6 100644 --- a/src/class_linker.cc +++ b/src/class_linker.cc @@ -1967,7 +1967,8 @@ void ClassLinker::VerifyClass(Class* klass) { 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 @@ bool ClassLinker::InitializeClass(Class* klass, bool can_run_clinit, bool can_in 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 0766814b4b..e6dae74056 100644 --- a/src/object.cc +++ b/src/object.cc @@ -1575,8 +1575,8 @@ static const char* kClassStatusNames[] = { "Idx", "Loaded", "Resolved", - "RetryVerificationAtRuntime", "Verifying", + "RetryVerificationAtRuntime", "Verified", "Initializing", "Initialized" diff --git a/src/object.h b/src/object.h index cc1d28ec3d..7caabde87a 100644 --- a/src/object.h +++ b/src/object.h @@ -1180,8 +1180,8 @@ class MANAGED Class : public StaticStorageBase { 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 |