Revert "Check if methods are overriding if they are seen when marking live"

This reverts commit ff3be41f81842f39328d9043e2a3e81d6e5bd1b2.

Reason for revert: Bots are failing

Change-Id: I0f71cbba332688d85911f724c4f33f5b7b50bff3
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index 8c70605..331466b 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -5,13 +5,11 @@
 
 import static com.android.tools.r8.graph.DexProgramClass.asProgramClassOrNull;
 import static com.android.tools.r8.graph.FieldAccessInfoImpl.MISSING_FIELD_ACCESS_INFO;
-import static com.android.tools.r8.graph.ResolutionResult.SingleResolutionResult.isOverriding;
 import static com.android.tools.r8.ir.desugar.LambdaDescriptor.isLambdaMetafactoryMethod;
 import static com.android.tools.r8.ir.optimize.enums.UnboxedEnumMemberRelocator.ENUM_UNBOXING_UTILITY_CLASS_SUFFIX;
 import static com.android.tools.r8.naming.IdentifierNameStringUtils.identifyIdentifier;
 import static com.android.tools.r8.naming.IdentifierNameStringUtils.isReflectionMethod;
 import static com.android.tools.r8.shaking.AnnotationRemover.shouldKeepAnnotation;
-import static com.android.tools.r8.utils.FunctionUtils.ignoreArgument;
 
 import com.android.tools.r8.Diagnostic;
 import com.android.tools.r8.cf.code.CfInstruction;
@@ -142,6 +140,7 @@
 import java.util.Collections;
 import java.util.Deque;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.IdentityHashMap;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
@@ -2364,13 +2363,11 @@
    */
   private void transitionMethodsForInstantiatedObject(
       InstantiatedObject instantiation, DexClass clazz, List<DexType> interfaces) {
-    Map<Wrapper<DexMethod>, List<DexEncodedMethod>> seen = new HashMap<>();
+    Set<Wrapper<DexMethod>> seen = new HashSet<>();
     WorkList<DexType> worklist = WorkList.newIdentityWorkList();
     worklist.addIfNotSeen(interfaces);
     // First we lookup and mark all targets on the instantiated class for each reachable method in
     // the super chain (inclusive).
-    // TODO(b/182458496): Consider changing this algorithm to a version that collects all reachable
-    //  methods and then does lookup.
     DexClass initialClass = clazz;
     while (clazz != null) {
       if (clazz.isProgramClass()) {
@@ -2408,25 +2405,14 @@
   private void markProgramMethodOverridesAsLive(
       InstantiatedObject instantiation,
       DexClass initialClass,
-      DexProgramClass currentClass,
-      Map<Wrapper<DexMethod>, List<DexEncodedMethod>> seenMethods) {
-    for (DexMethod method : getReachableVirtualTargets(currentClass)) {
-      assert method.holder == currentClass.type;
+      DexProgramClass superClass,
+      Set<Wrapper<DexMethod>> seenMethods) {
+    for (DexMethod method : getReachableVirtualTargets(superClass)) {
+      assert method.holder == superClass.type;
       Wrapper<DexMethod> signature = MethodSignatureEquivalence.get().wrap(method);
-      // TODO(b/182456011): Could reachableVirtalTarget be dex encoded methods.
-      DexEncodedMethod currentTarget = definitionFor(method, currentClass);
-      List<DexEncodedMethod> potentialOverrides =
-          seenMethods.computeIfAbsent(signature, ignoreArgument(ArrayList::new));
-      boolean notOverridingCurrentTarget = potentialOverrides.isEmpty();
-      for (DexEncodedMethod potentialOverride : potentialOverrides) {
-        if (!isOverriding(currentTarget, potentialOverride)) {
-          notOverridingCurrentTarget = true;
-          break;
-        }
-      }
-      if (notOverridingCurrentTarget) {
+      if (!seenMethods.contains(signature)) {
         SingleResolutionResult resolution =
-            appInfo.resolveMethodOn(currentClass, method).asSingleResolution();
+            appInfo.resolveMethodOn(superClass, method).asSingleResolution();
         assert resolution != null;
         assert resolution.getResolvedHolder().isProgramClass();
         if (resolution != null) {
@@ -2434,11 +2420,11 @@
               || resolution
                   .isAccessibleForVirtualDispatchFrom(initialClass.asProgramClass(), appInfo)
                   .isTrue()) {
-            potentialOverrides.add(currentTarget);
+            seenMethods.add(signature);
           }
           if (resolution.getResolvedHolder().isProgramClass()) {
             markLiveOverrides(
-                instantiation, currentClass, resolution.getResolutionPair().asProgramMethod());
+                instantiation, superClass, resolution.getResolutionPair().asProgramMethod());
           }
         }
       }
diff --git a/src/main/java/com/android/tools/r8/utils/FunctionUtils.java b/src/main/java/com/android/tools/r8/utils/FunctionUtils.java
index acd5cb3..3338dde 100644
--- a/src/main/java/com/android/tools/r8/utils/FunctionUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/FunctionUtils.java
@@ -7,7 +7,6 @@
 import java.util.function.BiFunction;
 import java.util.function.Consumer;
 import java.util.function.Function;
-import java.util.function.Supplier;
 
 public class FunctionUtils {
 
@@ -29,8 +28,4 @@
       func.apply(t).accept(argument);
     }
   }
-
-  public static <T, R> Function<T, R> ignoreArgument(Supplier<R> supplier) {
-    return ignore -> supplier.get();
-  }
 }
diff --git a/src/test/java/com/android/tools/r8/shaking/AbstractSuperClassLiveMethodTest.java b/src/test/java/com/android/tools/r8/shaking/AbstractSuperClassLiveMethodTest.java
index f9583f7..8cdd48e 100644
--- a/src/test/java/com/android/tools/r8/shaking/AbstractSuperClassLiveMethodTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/AbstractSuperClassLiveMethodTest.java
@@ -69,7 +69,8 @@
         .applyIf(
             parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isDalvik(),
             r -> r.assertSuccessWithOutputLines(EXPECTED_DALVIK),
-            r -> r.assertSuccessWithOutputLines(EXPECTED));
+            // TODO(b/182444403): Should succeed with EXPECTED.
+            r -> r.assertFailureWithErrorThatThrows(AbstractMethodError.class));
   }
 
   @NoVerticalClassMerging