diff options
Diffstat (limited to 'runtime/class_linker.cc')
-rw-r--r-- | runtime/class_linker.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index d8e309d57e..e2ef7ac671 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -3964,7 +3964,12 @@ bool ClassLinker::VerifyClassUsingOatFile(const DexFile& dex_file, oat_file_class_status = oat_dex_file->GetOatClass(class_def_index).GetStatus(); if (oat_file_class_status == mirror::Class::kStatusVerified || oat_file_class_status == mirror::Class::kStatusInitialized) { - return true; + return true; + } + // If we only verified a subset of the classes at compile time, we can end up with classes that + // were resolved by the verifier. + if (oat_file_class_status == mirror::Class::kStatusResolved) { + return false; } if (oat_file_class_status == mirror::Class::kStatusRetryVerificationAtRuntime) { // Compile time verification failed with a soft error. Compile time verification can fail |