Reland "Devirtualize to HInvokeStaticOrDirect."

This reverts commit 39d4df62d4e2606073d05cc363370db825ad7b9f.

Reason for revert: fix JIT-zygote issue.

Test: JIT zygote boots.

Change-Id: I895ad8e59e472fb662ca9bc5394c2fd9c6babc74
diff --git a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
index bc5a10d..eaa9f4e 100644
--- a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
+++ b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
@@ -1357,7 +1357,7 @@
       // odd situation where the ArtMethod being executed is unrelated to the
       // receiver of the method.
       called = called->GetCanonicalMethod();
-      if (invoke_type == kSuper) {
+      if (invoke_type == kSuper || invoke_type == kInterface || invoke_type == kVirtual) {
         if (called->GetDexFile() == called_method.dex_file) {
           called_method.index = called->GetDexMethodIndex();
         } else {