Remove dexCacheResolvedMethods, address Proxy issue

Change-Id: Iab8c7edb954d241bd5a92260db07696b9559155f
diff --git a/src/object.cc b/src/object.cc
index bb87698..22ee742 100644
--- a/src/object.cc
+++ b/src/object.cc
@@ -355,16 +355,6 @@
                  new_dex_cache_classes, false);
 }
 
-ObjectArray<Method>* Method::GetDexCacheResolvedMethods() const {
-  return GetFieldObject<ObjectArray<Method>*>(
-      OFFSET_OF_OBJECT_MEMBER(Method, dex_cache_resolved_methods_), false);
-}
-
-void Method::SetDexCacheResolvedMethods(ObjectArray<Method>* new_dex_cache_methods) {
-  SetFieldObject(OFFSET_OF_OBJECT_MEMBER(Method, dex_cache_resolved_methods_),
-                 new_dex_cache_methods, false);
-}
-
 CodeAndDirectMethods* Method::GetDexCacheCodeAndDirectMethods() const {
   return GetFieldPtr<CodeAndDirectMethods*>(
       OFFSET_OF_OBJECT_MEMBER(Method, dex_cache_code_and_direct_methods_),
@@ -421,18 +411,22 @@
     result = super_class_vtable->Get(method_index);
   } else {
     // Method didn't override superclass method so search interfaces
-    MethodHelper mh(this);
-    MethodHelper interface_mh;
-    ObjectArray<InterfaceEntry>* iftable = GetDeclaringClass()->GetIfTable();
-    for (int32_t i = 0; i < iftable->GetLength() && result == NULL; i++) {
-      InterfaceEntry* entry = iftable->Get(i);
-      Class* interface = entry->GetInterface();
-      for (size_t j = 0; j < interface->NumVirtualMethods(); ++j) {
-        Method* interface_method = interface->GetVirtualMethod(j);
-        interface_mh.ChangeMethod(interface_method);
-        if (mh.HasSameNameAndSignature(&interface_mh)) {
-          result = interface_method;
-          break;
+    if (IsProxyMethod()) {
+      result = Runtime::Current()->GetClassLinker()->FindMethodForProxy(GetDeclaringClass(), this);
+    } else {
+      MethodHelper mh(this);
+      MethodHelper interface_mh;
+      ObjectArray<InterfaceEntry>* iftable = GetDeclaringClass()->GetIfTable();
+      for (int32_t i = 0; i < iftable->GetLength() && result == NULL; i++) {
+        InterfaceEntry* entry = iftable->Get(i);
+        Class* interface = entry->GetInterface();
+        for (size_t j = 0; j < interface->NumVirtualMethods(); ++j) {
+          Method* interface_method = interface->GetVirtualMethod(j);
+          interface_mh.ChangeMethod(interface_method);
+          if (mh.HasSameNameAndSignature(&interface_mh)) {
+            result = interface_method;
+            break;
+          }
         }
       }
     }