summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/class_linker.cc7
-rw-r--r--src/object.cc2
-rw-r--r--src/object.h4
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