Remove disabled bridge analysis code.

R=ager

Bug: 79143143
Change-Id: I9ecc65233241fd0a71abf53fb39f0ba6a33f68d5
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 3cf4664..228c0e5 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -445,9 +445,6 @@
         appViewWithLiveness.setAppInfo(new SwitchMapCollector(appViewWithLiveness, options).run());
         appViewWithLiveness.setAppInfo(
             new EnumOrdinalMapCollector(appViewWithLiveness, options).run());
-
-        // TODO(b/79143143): re-enable once fixed.
-        // graphLense = new BridgeMethodAnalysis(graphLense, appInfo.withLiveness()).run();
       }
 
       timing.begin("Create IR");
diff --git a/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java b/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java
deleted file mode 100644
index 86065d9..0000000
--- a/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.optimize;
-
-import com.android.tools.r8.errors.Unimplemented;
-import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexEncodedMethod;
-import com.android.tools.r8.graph.DexField;
-import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
-import com.android.tools.r8.ir.code.Invoke.Type;
-import com.android.tools.r8.logging.Log;
-import com.android.tools.r8.optimize.InvokeSingleTargetExtractor.InvokeKind;
-import com.android.tools.r8.shaking.Enqueuer.AppInfoWithLiveness;
-import java.util.IdentityHashMap;
-import java.util.Map;
-
-public class BridgeMethodAnalysis {
-
-  private final GraphLense lense;
-  private final AppInfoWithLiveness appInfo;
-  private final Map<DexMethod, DexMethod> bridgeTargetToBridgeMap = new IdentityHashMap<>();
-
-  public BridgeMethodAnalysis(GraphLense lense, AppInfoWithLiveness appInfo) {
-    this.lense = lense;
-    this.appInfo = appInfo;
-  }
-
-  public GraphLense run() {
-    for (DexClass clazz : appInfo.classes()) {
-      clazz.forEachMethod(this::identifyBridgeMethod);
-    }
-    return new BridgeLense(lense, bridgeTargetToBridgeMap);
-  }
-
-  private void identifyBridgeMethod(DexEncodedMethod method) {
-    // The tree pruner can mark bridge methods abstract if they are not reachable but cannot
-    // be removed.
-    if (method.accessFlags.isBridge() && !method.accessFlags.isAbstract()) {
-      InvokeSingleTargetExtractor targetExtractor =
-          new InvokeSingleTargetExtractor(appInfo.dexItemFactory);
-      method.getCode().registerCodeReferences(targetExtractor);
-      DexMethod target = targetExtractor.getTarget();
-      InvokeKind kind = targetExtractor.getKind();
-      if (target != null && target.getArity() == method.method.getArity()) {
-        assert !method.accessFlags.isPrivate() && !method.accessFlags.isConstructor();
-        if (kind == InvokeKind.STATIC) {
-          assert method.accessFlags.isStatic();
-          DexMethod actualTarget = lense.lookupMethod(target, method, Type.STATIC).getMethod();
-          DexEncodedMethod targetMethod = appInfo.lookupStaticTarget(actualTarget);
-          if (targetMethod != null) {
-            addForwarding(method, targetMethod);
-          }
-        } else if (kind == InvokeKind.VIRTUAL) {
-          // TODO(herhut): Add support for bridges with multiple targets.
-          DexMethod actualTarget = lense.lookupMethod(target, method, Type.VIRTUAL).getMethod();
-          DexEncodedMethod targetMethod = appInfo.lookupSingleVirtualTarget(actualTarget);
-          if (targetMethod != null) {
-            addForwarding(method, targetMethod);
-          }
-        }
-      }
-    }
-  }
-
-  private void addForwarding(DexEncodedMethod method, DexEncodedMethod target) {
-    // This is a single target bridge we can inline.
-    if (Log.ENABLED) {
-      Log.info(getClass(), "Adding bridge forwarding %s -> %s.", method.method,
-          target.method);
-    }
-    // If we manage to rewrite all invocations, the bridge will be the only invocation of the target
-    // of the bridge and the target will get inlined. This should happen in most cases. For the few
-    // other cases, we might have inserted some extra checkcast instructions for the return type.
-    bridgeTargetToBridgeMap.put(target.method, method.method);
-  }
-
-
-  private static class BridgeLense extends GraphLense {
-
-    private final GraphLense previousLense;
-    private final Map<DexMethod, DexMethod> bridgeTargetToBridgeMap;
-
-    private BridgeLense(GraphLense previousLense,
-        Map<DexMethod, DexMethod> bridgeTargetToBridgeMap) {
-      this.previousLense = previousLense;
-      this.bridgeTargetToBridgeMap = bridgeTargetToBridgeMap;
-    }
-
-    @Override
-    public DexField getOriginalFieldSignature(DexField field) {
-      return previousLense.getOriginalFieldSignature(field);
-    }
-
-    @Override
-    public DexMethod getOriginalMethodSignature(DexMethod method) {
-      // TODO(b/79143143): implement this when re-enable bridge analysis.
-      throw new Unimplemented("BridgeLense.getOriginalMethodSignature() not implemented");
-    }
-
-    @Override
-    public DexField getRenamedFieldSignature(DexField originalField) {
-      return previousLense.getRenamedFieldSignature(originalField);
-    }
-
-    @Override
-    public DexMethod getRenamedMethodSignature(DexMethod originalMethod) {
-      // TODO(b/79143143): implement this when re-enabling bridge analysis.
-      throw new Unimplemented("BridgeLense.getRenamedMethodSignature() not implemented");
-    }
-
-    @Override
-    public DexType lookupType(DexType type) {
-      return previousLense.lookupType(type);
-    }
-
-    @Override
-    public GraphLenseLookupResult lookupMethod(
-        DexMethod method, DexEncodedMethod context, Type type) {
-      GraphLenseLookupResult previous = previousLense.lookupMethod(method, context, type);
-      DexMethod bridge = bridgeTargetToBridgeMap.get(previous.getMethod());
-      // Do not forward calls from a bridge method to itself while the bridge method is still
-      // a bridge.
-      if (bridge == null || (context.accessFlags.isBridge() && bridge == context.method)) {
-        return previous;
-      }
-      return new GraphLenseLookupResult(bridge, type);
-    }
-
-    @Override
-    public RewrittenPrototypeDescription lookupPrototypeChanges(DexMethod method) {
-      return previousLense.lookupPrototypeChanges(method);
-    }
-
-    @Override
-    public DexField lookupField(DexField field) {
-      return previousLense.lookupField(field);
-    }
-
-    @Override
-    public boolean isContextFreeForMethods() {
-      return false;
-    }
-
-    @Override
-    public String toString() {
-      StringBuilder builder = new StringBuilder();
-      builder.append("------ BridgeMap ------").append(System.lineSeparator());
-      for (Map.Entry<DexMethod, DexMethod> entry : bridgeTargetToBridgeMap.entrySet()) {
-        builder.append(entry.getKey().toSourceString()).append(" -> ");
-        builder.append(entry.getValue().toSourceString()).append(System.lineSeparator());
-      }
-      builder.append("-----------------------").append(System.lineSeparator());
-      builder.append(previousLense.toString());
-      return builder.toString();
-    }
-  }
-}