ART: Fix assumption in class profile collection
The dex cache may contain erroneous classes. Filter, instead of
DCHECK.
Bug: 27500691
Change-Id: Ic99bca3a7e54a5e7893c801ec5ac92cbf690cd67
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index c2c64c6..149f918 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -7749,7 +7749,10 @@
}
++num_resolved;
DCHECK(!klass->IsProxyClass());
- DCHECK(klass->IsResolved());
+ if (!klass->IsResolved()) {
+ DCHECK(klass->IsErroneous());
+ continue;
+ }
mirror::DexCache* klass_dex_cache = klass->GetDexCache();
if (klass_dex_cache == dex_cache) {
const size_t class_def_idx = klass->GetDexClassDefIndex();