diff options
| author | 2016-03-09 15:52:21 -0800 | |
|---|---|---|
| committer | 2016-03-09 16:19:07 -0800 | |
| commit | 1a7beaea6f5f12e8248544a6dbe74b90c3b723b5 (patch) | |
| tree | 02bb7d7f9ab89fcf54d6812e3805f705a631e94a /runtime/class_linker.cc | |
| parent | 2048b01dfec8877d672a4da41a158f68b12b5337 (diff) | |
ART: Fix assumption in class profile collection
The dex cache may contain erroneous classes. Filter, instead of
DCHECK.
Bug: 27500691
(cherry picked from commit 4309f6129795ade42591b872e44a33cec95f4e79)
Change-Id: Ic99bca3a7e54a5e7893c801ec5ac92cbf690cd67
Diffstat (limited to 'runtime/class_linker.cc')
| -rw-r--r-- | runtime/class_linker.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 01d140a0ba..d51a1f7ecc 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -7714,7 +7714,10 @@ std::set<DexCacheResolvedClasses> ClassLinker::GetResolvedClasses(bool ignore_bo } ++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(); |