Change soft failure into more precise missing method.

Test: test.py
Bug: 28313047
Change-Id: I82563f15266dc8c225f41cae47523d6bc8a2f832
diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc
index b263439..5238963 100644
--- a/runtime/verifier/method_verifier.cc
+++ b/runtime/verifier/method_verifier.cc
@@ -3930,7 +3930,7 @@
     }
     bool is_init = false;
     if (actual_arg_type.IsUninitializedTypes()) {
-      if (res_method) {
+      if (res_method != nullptr) {
         if (!res_method->IsConstructor()) {
           Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "'this' arg must be initialized";
           return nullptr;
@@ -4164,7 +4164,9 @@
         dex_file_->StringByTypeIdx(class_idx),
         false);
     if (reference_type.IsUnresolvedTypes()) {
-      Fail(VERIFY_ERROR_BAD_CLASS_SOFT) << "Unable to find referenced class from invoke-super";
+      // We cannot differentiate on whether this is a class change error or just
+      // a missing method. This will be handled at runtime.
+      Fail(VERIFY_ERROR_NO_METHOD) << "Unable to find referenced class from invoke-super";
       return nullptr;
     }
     if (reference_type.GetClass()->IsInterface()) {