Improve JNI registration failure logging

Print INTERNAL_FATAL instead of ERROR, print the
"Failed to register native method" message last.

(cherry picked from commit 5c02d6cd0cc7e10d30d8c26166ebaaf6d313d771)

Bug: 13885477
Change-Id: I9f1a7ea45bd926f3984b8008d84c75e676a1ed10
diff --git a/runtime/jni_internal.cc b/runtime/jni_internal.cc
index fc3826b..9bb08a2 100644
--- a/runtime/jni_internal.cc
+++ b/runtime/jni_internal.cc
@@ -2109,10 +2109,12 @@
         m = c->FindVirtualMethod(name, sig);
       }
       if (m == nullptr) {
-        c->DumpClass(LOG(ERROR), mirror::Class::kDumpClassFullDetail);
-        LOG(return_errors ? ERROR : FATAL) << "Failed to register native method "
+        LOG(return_errors ? ERROR : INTERNAL_FATAL) << "Failed to register native method "
             << PrettyDescriptor(c) << "." << name << sig << " in "
             << c->GetDexCache()->GetLocation()->ToModifiedUtf8();
+        // Safe to pass in LOG(FATAL) since the log object aborts in destructor and only goes
+        // out of scope after the DumpClass is done executing.
+        c->DumpClass(LOG(return_errors ? ERROR : FATAL), mirror::Class::kDumpClassFullDetail);
         ThrowNoSuchMethodError(soa, c, name, sig, "static or non-static");
         return JNI_ERR;
       } else if (!m->IsNative()) {