Loosen class status check after resolving.
If `ClassLinker::LinkClass()` creates a new `Class` object,
it takes an `ObjectLock` on that object but releases that
lock when it returns to the `ClassLinker::DefineClass()`.
Therefore another thread can try and fail to verify the
class and mark it as resolved erroneous. The `CHECK()` that
the class is not resolved erroneous was therefore wrong
and we remove that part.
Also dump the class status if the remaining `CHECK()` fails.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 202091046
(cherry picked from commit f9e82e5cae2c31f439ecbc505c2dcac81356405e)
Merged-In: Ida9c0d45478fbae913fcaabcc237048d28a4dd3d
Change-Id: I22f5fe458fb0f6f44ed6947725ac20b973af5ad7
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 8b13523..bc079f0 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -3232,7 +3232,7 @@
}
self->AssertNoPendingException();
CHECK(h_new_class != nullptr) << descriptor;
- CHECK(h_new_class->IsResolved() && !h_new_class->IsErroneousResolved()) << descriptor;
+ CHECK(h_new_class->IsResolved()) << descriptor << " " << h_new_class->GetStatus();
// Instrumentation may have updated entrypoints for all methods of all
// classes. However it could not update methods of this class while we