Revert^3 "Ensure that methods requiring interpreter entrypoint always have it."

This reverts commit 4b3dec38319a8d4af51e401ca13987cf0c2dd98d.

Reason for revert: Failing on debuggable-gcstress

Bug: 62821960
Change-Id: Id143ffa2d9c379566328a03f3cbce1713ae31e51
Test: None
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index c487808..8776542 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -1296,32 +1296,22 @@
             }
             for (ArtMethod& m : klass->GetDirectMethods(kRuntimePointerSize)) {
               const void* code = m.GetEntryPointFromQuickCompiledCode();
-              if (!m.IsProxyMethod() &&
-                  !m.IsNative() &&
-                  !class_linker->IsQuickResolutionStub(code) &&
+              const void* oat_code = m.IsInvokable() ? class_linker->GetQuickOatCodeFor(&m) : code;
+              if (!class_linker->IsQuickResolutionStub(code) &&
+                  !class_linker->IsQuickGenericJniStub(code) &&
                   !class_linker->IsQuickToInterpreterBridge(code) &&
-                  m.IsInvokable()) {
-                // Since this is just a sanity check it's okay to get the oat code here regardless
-                // of whether it's usable.
-                const void* oat_code = m.GetOatMethodQuickCode(class_linker->GetImagePointerSize());
-                if (oat_code != nullptr) {
-                  DCHECK_EQ(code, oat_code) << m.PrettyMethod();
-                }
+                  !m.IsNative()) {
+                DCHECK_EQ(code, oat_code) << m.PrettyMethod();
               }
             }
             for (ArtMethod& m : klass->GetVirtualMethods(kRuntimePointerSize)) {
               const void* code = m.GetEntryPointFromQuickCompiledCode();
-              if (!m.IsProxyMethod() &&
-                  !m.IsNative() &&
-                  !class_linker->IsQuickResolutionStub(code) &&
+              const void* oat_code = m.IsInvokable() ? class_linker->GetQuickOatCodeFor(&m) : code;
+              if (!class_linker->IsQuickResolutionStub(code) &&
+                  !class_linker->IsQuickGenericJniStub(code) &&
                   !class_linker->IsQuickToInterpreterBridge(code) &&
-                  m.IsInvokable()) {
-                // Since this is just a sanity check it's okay to get the oat code here regardless
-                // of whether it's usable.
-                const void* oat_code = m.GetOatMethodQuickCode(class_linker->GetImagePointerSize());
-                if (oat_code != nullptr) {
-                  DCHECK_EQ(code, oat_code) << m.PrettyMethod();
-                }
+                  !m.IsNative()) {
+                DCHECK_EQ(code, oat_code) << m.PrettyMethod();
               }
             }
           }
@@ -2909,25 +2899,21 @@
                                          image_pointer_size_);
 }
 
-const void* ClassLinker::GetQuickEntrypointFor(ArtMethod* method) {
+// Special case to get oat code without overwriting a trampoline.
+const void* ClassLinker::GetQuickOatCodeFor(ArtMethod* method) {
   CHECK(method->IsInvokable()) << method->PrettyMethod();
   if (method->IsProxyMethod()) {
     return GetQuickProxyInvokeHandler();
   }
-  const void* oat_code = method->GetOatMethodQuickCode(GetImagePointerSize());
-  if (oat_code == nullptr) {
-    // We need either the generic jni or interpreter bridge.
-    if (method->IsNative()) {
-      return GetQuickGenericJniStub();
-    } else {
-      return GetQuickToInterpreterBridge();
-    }
-  } else if (ClassLinker::ShouldUseInterpreterEntrypoint(method, oat_code)) {
-    // We have oat code but we cannot use it for some reason.
-    return GetQuickToInterpreterBridge();
-  } else {
-    return oat_code;
+  auto* code = method->GetOatMethodQuickCode(GetImagePointerSize());
+  if (code != nullptr) {
+    return code;
   }
+  if (method->IsNative()) {
+    // No code and native? Use generic trampoline.
+    return GetQuickGenericJniStub();
+  }
+  return GetQuickToInterpreterBridge();
 }
 
 bool ClassLinker::ShouldUseInterpreterEntrypoint(ArtMethod* method, const void* quick_code) {