Avoid cases of deriving information from unresolved types giving conflict.
Previously non-trivial merges of unresolved types resulted in conflict
(bottom), introduce a new type to represent this case. Similarly
implement a type for unresolved super classes.
Change-Id: Ib84ba082cb9409ad3acaa49dafbc6b1dd1c7772d
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 5bd69e8..df14a41 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -2045,6 +2045,11 @@
LOG(FATAL) << "Verification failed hard on class " << PrettyDescriptor(klass)
<< " at compile time, but succeeded at runtime! The verifier must be broken.";
}
+ if (!preverified && verifier_failure != verifier::MethodVerifier::kNoFailure) {
+ LOG(WARNING) << "Soft verification failure in class " << PrettyDescriptor(klass)
+ << " in " << klass->GetDexCache()->GetLocation()->ToModifiedUtf8()
+ << " because: " << error_msg;
+ }
DCHECK(!Thread::Current()->IsExceptionPending());
CHECK(verifier_failure == verifier::MethodVerifier::kNoFailure ||
Runtime::Current()->IsCompiler());