Remove lookupDirect/Static without context

- Removed everywhere but from LambdaDescriptor

Bug:147578480
Change-Id: Ibfe6847bb6605e5e938714b60b51c76989e13b7f
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfo.java b/src/main/java/com/android/tools/r8/graph/AppInfo.java
index 7ffcf30..7acefcd 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfo.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfo.java
@@ -285,6 +285,7 @@
    * @param method the method to lookup
    * @return The actual target for {@code method} or {@code null} if none found.
    */
+  @Deprecated // TODO(b/147578480): Remove
   public DexEncodedMethod lookupDirectTarget(DexMethod method) {
     assert checkIfObsolete();
     ResolutionResult resolutionResult = resolveMethod(method.holder, method);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizer.java b/src/main/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizer.java
index 8682fc1..c2fe04f 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizer.java
@@ -4,7 +4,6 @@
 
 package com.android.tools.r8.ir.optimize.staticizer;
 
-import com.android.tools.r8.graph.AppInfo;
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexApplication;
 import com.android.tools.r8.graph.DexClass;
@@ -458,7 +457,7 @@
     // Check constructor.
     InvokeDirect invoke = instruction.asInvokeDirect();
     DexEncodedMethod methodInvoked =
-        appView.appInfo().lookupDirectTarget(invoke.getInvokedMethod());
+        appView.appInfo().lookupDirectTarget(invoke.getInvokedMethod(), info.candidate);
     List<Value> values = invoke.inValues();
 
     if (ListUtils.lastIndexMatching(values, v -> v.getAliasedValue() == candidateValue) != 0
@@ -599,10 +598,11 @@
             }
             return candidateInfo.invalidate();
           }
-          AppInfo appInfo = appView.appInfo();
-          DexEncodedMethod methodInvoked = user.isInvokeDirect()
-              ? appInfo.lookupDirectTarget(methodReferenced)
-              : appInfo.lookupVirtualTarget(methodReferenced.holder, methodReferenced);
+          AppInfoWithLiveness appInfo = appView.appInfo();
+          DexEncodedMethod methodInvoked =
+              user.isInvokeDirect()
+                  ? appInfo.lookupDirectTarget(methodReferenced, candidateInfo.candidate)
+                  : appInfo.lookupVirtualTarget(methodReferenced.holder, methodReferenced);
           if (ListUtils.lastIndexMatching(invoke.inValues(), isAliasedValue) == 0
               && methodInvoked != null
               && methodInvoked.method.holder == candidateInfo.candidate.type) {
diff --git a/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java b/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java
index 8ea3d93..b95f778 100644
--- a/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java
+++ b/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java
@@ -16,6 +16,7 @@
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.InnerClassAttribute;
 import com.android.tools.r8.graph.ResolutionResult;
+import com.android.tools.r8.graph.ResolutionResult.SingleResolutionResult;
 import com.android.tools.r8.naming.ClassNameMinifier.ClassRenaming;
 import com.android.tools.r8.naming.FieldNameMinifier.FieldRenaming;
 import com.android.tools.r8.naming.MethodNameMinifier.MethodRenaming;
@@ -175,24 +176,11 @@
     if (holder == null || holder.isNotProgramClass()) {
       return true;
     }
-    // We don't know which invoke type this method is used for, so checks that it has been
-    // rebound either way.
-    DexEncodedMethod staticTarget = appView.appInfo().lookupStaticTarget(item);
-    DexEncodedMethod directTarget = appView.appInfo().lookupDirectTarget(item);
-    DexEncodedMethod virtualTarget = appView.appInfo().lookupVirtualTarget(item.holder, item);
-    DexClass staticTargetHolder =
-        staticTarget != null ? appView.definitionFor(staticTarget.method.holder) : null;
-    DexClass directTargetHolder =
-        directTarget != null ? appView.definitionFor(directTarget.method.holder) : null;
-    DexClass virtualTargetHolder =
-        virtualTarget != null ? appView.definitionFor(virtualTarget.method.holder) : null;
-    assert (directTarget == null && staticTarget == null && virtualTarget == null)
-        || (virtualTarget != null && virtualTarget.method == item)
-        || (directTarget != null && directTarget.method == item)
-        || (staticTarget != null && staticTarget.method == item)
-        || (directTargetHolder != null && directTargetHolder.isNotProgramClass())
-        || (virtualTargetHolder != null && virtualTargetHolder.isNotProgramClass())
-        || (staticTargetHolder != null && staticTargetHolder.isNotProgramClass())
+    SingleResolutionResult resolution =
+        appView.appInfo().resolveMethod(item.holder, item).asSingleResolution();
+    // The resolution is either unknown or resolved to the item or a visibility bridge.
+    assert resolution == null
+        || resolution.getResolvedMethod().method == item
         || appView.unneededVisibilityBridgeMethods().contains(item);
     return true;
   }
diff --git a/src/test/java/com/android/tools/r8/graph/TargetLookupTest.java b/src/test/java/com/android/tools/r8/graph/TargetLookupTest.java
index e49d9a5..b38dd21 100644
--- a/src/test/java/com/android/tools/r8/graph/TargetLookupTest.java
+++ b/src/test/java/com/android/tools/r8/graph/TargetLookupTest.java
@@ -77,13 +77,13 @@
     );
 
     AndroidApp application = buildApplication(builder);
-    AppInfo appInfo = computeAppInfo(application);
+    AppInfoWithClassHierarchy appInfo = computeAppInfoWithClassHierarchy(application);
     CodeInspector inspector = new CodeInspector(appInfo.app());
     DexEncodedMethod method = getMethod(inspector, DEFAULT_CLASS_NAME, "int", "x",
         ImmutableList.of());
     assertNull(appInfo.lookupVirtualTarget(method.method.holder, method.method));
-    assertNull(appInfo.lookupDirectTarget(method.method));
-    assertNotNull(appInfo.lookupStaticTarget(method.method));
+    assertNull(appInfo.lookupDirectTarget(method.method, method.method.holder));
+    assertNotNull(appInfo.lookupStaticTarget(method.method, method.method.holder));
 
     if (ToolHelper.getDexVm().getVersion().isOlderThanOrEqual(DexVm.Version.V4_4_4)) {
       // Dalvik rejects at verification time instead of producing the
@@ -147,7 +147,7 @@
     );
 
     AndroidApp application = buildApplication(builder);
-    AppInfo appInfo = computeAppInfo(application);
+    AppInfoWithClassHierarchy appInfo = computeAppInfoWithClassHierarchy(application);
     CodeInspector inspector = new CodeInspector(appInfo.app());
 
     DexMethod methodXOnTestSuper =
@@ -166,12 +166,12 @@
     assertNull(appInfo.lookupVirtualTarget(classTest, methodXOnTestSuper));
     assertNull(appInfo.lookupVirtualTarget(classTest, methodXOnTest));
 
-    assertNull(appInfo.lookupDirectTarget(methodXOnTestSuper));
-    assertNull(appInfo.lookupDirectTarget(methodXOnTest));
+    assertNull(appInfo.lookupDirectTarget(methodXOnTestSuper, methodXOnTestSuper.holder));
+    assertNull(appInfo.lookupDirectTarget(methodXOnTest, methodXOnTest.holder));
 
-    assertNotNull(appInfo.lookupStaticTarget(methodXOnTestSuper));
+    assertNotNull(appInfo.lookupStaticTarget(methodXOnTestSuper, methodXOnTestSuper.holder));
     // Accessing a private target on a different type will fail resolution outright.
-    assertNull(appInfo.lookupStaticTarget(methodXOnTest));
+    assertNull(appInfo.lookupStaticTarget(methodXOnTest, methodXOnTest.holder));
 
     assertEquals("OK", runArt(application));
   }