diff options
author | 2012-06-06 17:18:39 -0700 | |
---|---|---|
committer | 2012-06-06 17:18:39 -0700 | |
commit | a9b3bf4b42d80cfcc27b6f8da7e28ced04a1619b (patch) | |
tree | cca2c257e6fdc90e520eddc5a43d7f113ead8cfc /src/class_linker.cc | |
parent | ebe2e0f2e5145ef8433c1459b9cd60ecd853ee76 (diff) |
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
Diffstat (limited to 'src/class_linker.cc')
-rw-r--r-- | src/class_linker.cc | 7 |
1 files changed, 5 insertions, 2 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; } } |