Reland "Improve invokeinterface for nterp."

This reverts commit f1d06474baa2f7c00761db39099b89ddab71bbe4.

Bug: 177554973
Bug: 112676029

Test: test.py
Test: 815-invokeinterface-default
Test: enable text-to-speech on device, no crash

Reason for revert: Fixed issue with recursive default methods

Change-Id: I2fb9336adb6c4fc920f39aa19bfe7f0a92ce059a
diff --git a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
index 197e8ef..49dfba6 100644
--- a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
+++ b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
@@ -2447,6 +2447,7 @@
   DCHECK(!interface_method->GetDeclaringClass()->IsObjectClass());
   DCHECK(interface_method->GetDeclaringClass()->IsInterface());
   DCHECK(!interface_method->IsRuntimeMethod());
+  DCHECK(!interface_method->IsCopied());
 
   ObjPtr<mirror::Object> obj_this = raw_this_object;
   ObjPtr<mirror::Class> cls = obj_this->GetClass();